ETH Price: $3,406.09 (+1.64%)

Token

The BET (BET)
 

Overview

Max Total Supply

10,000,000 BET

Holders

469 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0 BET

Value
$0.00
0x987a9c0e5bdbcb6eac9ec0f08e99d86833fb7b25
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

The BET is a Player versus Player (PVP) sports betting platform designed for Web3. By removing complex odds calculations, it eliminate bookies from the equation and pit BETtors against each other in a bid to determine which team has the better value at any given moment.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
THEBET_TOKEN

Compiler Version
v0.8.15+commit.e14f2714

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.7;

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

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

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address to, 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 from,
        address to,
        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 to, uint256 amount) public virtual override returns (bool) {
        address owner = _msgSender();
        _transfer(owner, to, 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) {
        address owner = _msgSender();
        _approve(owner, spender, amount);
        return true;
    }

    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        return true;
    }

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

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

        return true;
    }

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

        _beforeTokenTransfer(from, to, amount);

        uint256 fromBalance = _balances[from];
        require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[from] = fromBalance - amount;
        }
        _balances[to] += amount;

        emit Transfer(from, to, amount);

        _afterTokenTransfer(from, to, amount);
    }

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

        _beforeTokenTransfer(address(0), account, amount);

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

        _afterTokenTransfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

        emit Transfer(account, address(0), amount);

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

    function _spendAllowance(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: insufficient allowance");
            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

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

interface IUniswapV2Router01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _transferOwnership(_msgSender());
    }

    function owner() public view virtual returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

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

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

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

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

contract THEBET_TOKEN is ERC20, Ownable {
    using SafeMath for uint256;

    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    
    uint256 public maxTransactionAmount;
    uint256 public maxWallet;
    uint256 public swapTokensThreshold;
        
    bool public limitsInEffect = true;

    bool private _isSwapping;

    uint256 private _swapFee = 6;
    uint256 private _tokensForFee;
    address private _feeReceiver;

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

    // for bots
    mapping (address => bool) public isBlacklisted;

    // any transfer *to* these addresses could be subject to a maximum transfer amount
    mapping (address => bool) private _automatedMarketMakerPairs;

    // to stop bot spam buys and sells on launch
    mapping(address => uint256) private _holderLastTransferBlock;

    /**
     * @dev Throws if called by any account other than the _feeReceiver
     */
    modifier teamOROwner() {
        require(_feeReceiver == _msgSender() || owner() == _msgSender(), "Caller is not the _feeReceiver address nor owner.");
        _;
    }

    constructor() ERC20("The BET", "BET") payable {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        
        _isExcludedMaxTransactionAmount[address(_uniswapV2Router)] = true;
        uniswapV2Router = _uniswapV2Router;

        uint256 totalSupply = 1e7 * 1e18; // 10M
        uint256 totalLiquidity = 65e5 * 1e18; // 6.5M

        maxTransactionAmount = totalSupply * 325 / 100000;
        maxWallet = totalSupply * 65 / 10000;
        swapTokensThreshold = totalSupply * 1 / 1000;

        _feeReceiver = owner();

        // exclude from paying fees or having max transaction amount
        excludeFromFees(owner(), true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);
        
        _isExcludedMaxTransactionAmount[owner()] = true;
        _isExcludedMaxTransactionAmount[address(this)] = true;
        _isExcludedMaxTransactionAmount[address(0xdead)] = true;

        _mint(address(this), totalLiquidity);
        _mint(msg.sender, totalSupply.sub(totalLiquidity));
    }

    /**
    * @dev Once live, can never be switched off
    */
    function startTrading() external teamOROwner {
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        _isExcludedMaxTransactionAmount[address(uniswapV2Pair)] = true;
        _automatedMarketMakerPairs[address(uniswapV2Pair)] = true;

        _approve(address(this), address(uniswapV2Router), balanceOf(address(this)));
        uniswapV2Router.addLiquidityETH{value: address(this).balance} (
            address(this),
            balanceOf(address(this)),
            0,
            0,
            owner(),
            block.timestamp
        );
    }

    /**
    * @dev Remove limits after token is somewhat stable
    */
    function removeLimits() external teamOROwner {
        limitsInEffect = false;
    }

    /**
    * @dev Exclude from fee calculation
    */
    function excludeFromFees(address account, bool excluded) public teamOROwner {
        isExcludedFromFees[account] = excluded;
    }
    
    /**
    * @dev Blacklist certain addresses from transfering
    */
    function blacklistAddress(address[] memory addrs, bool state) external teamOROwner {
        for (uint i = 0; i < addrs.length; i++) {
            if (addrs[i] != uniswapV2Pair && addrs[i] != address(uniswapV2Router)) 
                isBlacklisted[addrs[i]] = state;
        }
    }

    /**
    * @dev Update token fees (max set to initial fee)
    */
    function updateFees(uint256 fee) external onlyOwner {
        _swapFee = fee;

        require(_swapFee <= 6, "Must keep fees at 6% or less");
    }

    /**
    * @dev Update wallet that receives fees and newly added LP
    */
    function updateFeeReceiver(address newWallet) external teamOROwner {
        _feeReceiver = newWallet;
    }

    /**
    * @dev Very important function. 
    * Updates the threshold of how many tokens that must be in the contract calculation for fees to be taken
    */
    function updateSwapTokensThreshold(uint256 newThreshold) external teamOROwner returns (bool) {
  	    require(newThreshold >= totalSupply() * 1 / 100000, "Swap threshold cannot be lower than 0.001% total supply.");
  	    require(newThreshold <= totalSupply() * 5 / 1000, "Swap threshold cannot be higher than 0.5% total supply.");
  	    swapTokensThreshold = newThreshold;
  	    return true;
  	}

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "_transfer:: Transfer from the zero address not allowed.");
        require(to != address(0), "_transfer:: Transfer to the zero address not allowed.");
        require(!isBlacklisted[from], "_transfer:: Your address has been marked as blacklisted.");

        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }

        // all to secure a smooth launch
        if (limitsInEffect) {
            if (
                from != owner() &&
                to != owner() &&
                !_isSwapping
            ) {
                if (to != owner() && to != address(uniswapV2Router) && to != address(uniswapV2Pair)){
                    require(_holderLastTransferBlock[tx.origin] < block.number, "_transfer:: Transfer Delay enabled.  Only one purchase per block allowed.");
                    _holderLastTransferBlock[tx.origin] = block.number;
                }

                // on buy
                if (_automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) {
                    require(amount <= maxTransactionAmount, "_transfer:: Buy transfer amount exceeds the maxTransactionAmount.");
                    require(amount.add(balanceOf(to)) <= maxWallet, "_transfer:: Max wallet exceeded");
                }
                
                // on sell
                else if (_automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) {
                    require(amount <= maxTransactionAmount, "_transfer:: Sell transfer amount exceeds the maxTransactionAmount.");
                }
                else if (!_isExcludedMaxTransactionAmount[to]) {
                    require(amount.add(balanceOf(to)) <= maxWallet, "_transfer:: Max wallet exceeded");
                }
            }
        }
        
		uint256 contractTokenBalance = balanceOf(address(this));
        bool canSwap = contractTokenBalance >= swapTokensThreshold;
        if (
            canSwap &&
            !_isSwapping &&
            !_automatedMarketMakerPairs[from] &&
            !isExcludedFromFees[from] &&
            !isExcludedFromFees[to]
        ) {
            _isSwapping = true;
            swapBack();
            _isSwapping = false;
        }

        bool takeFee = !_isSwapping;

        // if any addy belongs to _isExcludedFromFee or isn't a swap then remove the fee
        if (
            isExcludedFromFees[from] || 
            isExcludedFromFees[to] || 
            (!_automatedMarketMakerPairs[from] && !_automatedMarketMakerPairs[to])
        ) takeFee = false;
        
        uint256 fees = 0;
        if (takeFee) {
            fees = amount.mul(_swapFee).div(100);
            _tokensForFee = amount.mul(_swapFee).div(100);
            
            if (fees > 0) 
                super._transfer(from, address(this), fees);
        	
        	amount -= fees;
        }

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

    function _swapTokensForEth(uint256 tokenAmount) internal {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

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

        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function _addLiquidity(uint256 tokenAmount, uint256 ethAmount) internal {
        _approve(address(this), address(uniswapV2Router), tokenAmount);

        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            _feeReceiver,
            block.timestamp
        );
    }

    function swapBack() internal {
        uint256 contractBalance = balanceOf(address(this));
        uint256 tokensForLiquidity = _tokensForFee.div(4); // 1/4th of the fee
        uint256 tokensForFee = _tokensForFee.sub(tokensForLiquidity);
        
        if (contractBalance == 0 || _tokensForFee == 0) return;
        if (contractBalance > swapTokensThreshold) contractBalance = swapTokensThreshold;
        
        // Halve the amount of liquidity tokens
        uint256 liquidityTokens = contractBalance * tokensForLiquidity / _tokensForFee / 2;
        uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens);
        
        uint256 initialETHBalance = address(this).balance;

        _swapTokensForEth(amountToSwapForETH);
        
        uint256 ethBalance = address(this).balance.sub(initialETHBalance);
        uint256 ethFee = ethBalance.mul(tokensForFee).div(_tokensForFee);
        uint256 ethLiquidity = ethBalance - ethFee;
        
        _tokensForFee = 0;

        payable(_feeReceiver).transfer(ethFee);
                
        if (liquidityTokens > 0 && ethLiquidity > 0) 
            _addLiquidity(liquidityTokens, ethLiquidity);
    }

    /**
    * @dev Transfer eth stuck in contract to _feeReceiver
    */
    function withdrawContractETH() external {
        payable(_feeReceiver).transfer(address(this).balance);
    }

    /**
    * @dev In case swap wont do it and sells/buys might be blocked
    */
    function forceSwap() external teamOROwner {
        _swapTokensForEth(balanceOf(address(this)));
    }

    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"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":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addrs","type":"address[]"},{"internalType":"bool","name":"state","type":"bool"}],"name":"blacklistAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"forceSwap","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":[{"internalType":"address","name":"","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","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":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapTokensThreshold","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":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"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":"address","name":"newWallet","type":"address"}],"name":"updateFeeReceiver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"fee","type":"uint256"}],"name":"updateFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newThreshold","type":"uint256"}],"name":"updateSwapTokensThreshold","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawContractETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526001600b60006101000a81548160ff0219169083151502179055506006600c556040518060400160405280600781526020017f54686520424554000000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f42455400000000000000000000000000000000000000000000000000000000008152508160039081620000a1919062000a6d565b508060049081620000b3919062000a6d565b505050620000d6620000ca6200040f60201b60201c565b6200041760201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d90506001601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060006a084595161401484a000000905060006a05606db4c03408968000009050620186a061014583620001bc919062000b83565b620001c8919062000c13565b600881905550612710604183620001e0919062000b83565b620001ec919062000c13565b6009819055506103e860018362000204919062000b83565b62000210919062000c13565b600a8190555062000226620004dd60201b60201c565b600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620002886200027a620004dd60201b60201c565b60016200050760201b60201c565b6200029b3060016200050760201b60201c565b620002b061dead60016200050760201b60201c565b600160106000620002c6620004dd60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601060003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016010600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620003db30826200065960201b60201c565b6200040633620003fa8385620007d160201b62001b301790919060201c565b6200065960201b60201c565b50505062000e2c565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620005176200040f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480620005bc57506200057e6200040f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620005a4620004dd60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16145b620005fe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005f59062000cd2565b60405180910390fd5b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620006cb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006c29062000d44565b60405180910390fd5b620006df60008383620007e960201b60201c565b8060026000828254620006f3919062000d66565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546200074a919062000d66565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620007b1919062000dd4565b60405180910390a3620007cd60008383620007ee60201b60201c565b5050565b60008183620007e1919062000df1565b905092915050565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200087557607f821691505b6020821081036200088b576200088a6200082d565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620008f57fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620008b6565b620009018683620008b6565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006200094e62000948620009428462000919565b62000923565b62000919565b9050919050565b6000819050919050565b6200096a836200092d565b62000982620009798262000955565b848454620008c3565b825550505050565b600090565b620009996200098a565b620009a68184846200095f565b505050565b5b81811015620009ce57620009c26000826200098f565b600181019050620009ac565b5050565b601f82111562000a1d57620009e78162000891565b620009f284620008a6565b8101602085101562000a02578190505b62000a1a62000a1185620008a6565b830182620009ab565b50505b505050565b600082821c905092915050565b600062000a426000198460080262000a22565b1980831691505092915050565b600062000a5d838362000a2f565b9150826002028217905092915050565b62000a7882620007f3565b67ffffffffffffffff81111562000a945762000a93620007fe565b5b62000aa082546200085c565b62000aad828285620009d2565b600060209050601f83116001811462000ae5576000841562000ad0578287015190505b62000adc858262000a4f565b86555062000b4c565b601f19841662000af58662000891565b60005b8281101562000b1f5784890151825560018201915060208501945060208101905062000af8565b8683101562000b3f578489015162000b3b601f89168262000a2f565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000b908262000919565b915062000b9d8362000919565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000bd95762000bd862000b54565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000c208262000919565b915062000c2d8362000919565b92508262000c405762000c3f62000be4565b5b828204905092915050565b600082825260208201905092915050565b7f43616c6c6572206973206e6f7420746865205f6665655265636569766572206160008201527f646472657373206e6f72206f776e65722e000000000000000000000000000000602082015250565b600062000cba60318362000c4b565b915062000cc78262000c5c565b604082019050919050565b6000602082019050818103600083015262000ced8162000cab565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000d2c601f8362000c4b565b915062000d398262000cf4565b602082019050919050565b6000602082019050818103600083015262000d5f8162000d1d565b9050919050565b600062000d738262000919565b915062000d808362000919565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000db85762000db762000b54565b5b828201905092915050565b62000dce8162000919565b82525050565b600060208201905062000deb600083018462000dc3565b92915050565b600062000dfe8262000919565b915062000e0b8362000919565b92508282101562000e215762000e2062000b54565b5b828203905092915050565b61462c8062000e3c6000396000f3fe6080604052600436106101c65760003560e01c806384826368116100f7578063c69bebe411610095578063df778d2611610064578063df778d261461064f578063f2fde38b14610666578063f8b45b051461068f578063fe575a87146106ba576101cd565b8063c69bebe414610593578063c8c8ebe4146105bc578063cef85139146105e7578063dd62ed3e14610612576101cd565b806395d89b41116100d157806395d89b41146104c5578063a457c2d7146104f0578063a9059cbb1461052d578063c02466681461056a576101cd565b806384826368146104345780638baa63b21461045d5780638da5cb5b1461049a576101cd565b80633dd5b2da1161016457806370a082311161013e57806370a08231146103a0578063715018a6146103dd578063751039fc146103f457806378dacee11461040b576101cd565b80633dd5b2da146103215780634a62bb65146103385780634fbee19314610363576101cd565b806323b872dd116101a057806323b872dd14610265578063293230b8146102a2578063313ce567146102b957806339509351146102e4576101cd565b806306fdde03146101d2578063095ea7b3146101fd57806318160ddd1461023a576101cd565b366101cd57005b600080fd5b3480156101de57600080fd5b506101e76106f7565b6040516101f49190613111565b60405180910390f35b34801561020957600080fd5b50610224600480360381019061021f91906131db565b610789565b6040516102319190613236565b60405180910390f35b34801561024657600080fd5b5061024f6107ac565b60405161025c9190613260565b60405180910390f35b34801561027157600080fd5b5061028c6004803603810190610287919061327b565b6107b6565b6040516102999190613236565b60405180910390f35b3480156102ae57600080fd5b506102b76107e5565b005b3480156102c557600080fd5b506102ce610c85565b6040516102db91906132ea565b60405180910390f35b3480156102f057600080fd5b5061030b600480360381019061030691906131db565b610c8e565b6040516103189190613236565b60405180910390f35b34801561032d57600080fd5b50610336610d38565b005b34801561034457600080fd5b5061034d610da3565b60405161035a9190613236565b60405180910390f35b34801561036f57600080fd5b5061038a60048036038101906103859190613305565b610db6565b6040516103979190613236565b60405180910390f35b3480156103ac57600080fd5b506103c760048036038101906103c29190613305565b610dd6565b6040516103d49190613260565b60405180910390f35b3480156103e957600080fd5b506103f2610e1e565b005b34801561040057600080fd5b50610409610ea6565b005b34801561041757600080fd5b50610432600480360381019061042d9190613332565b610f9e565b005b34801561044057600080fd5b5061045b600480360381019061045691906134d3565b61106a565b005b34801561046957600080fd5b50610484600480360381019061047f9190613332565b6112c0565b6040516104919190613236565b60405180910390f35b3480156104a657600080fd5b506104af611474565b6040516104bc919061353e565b60405180910390f35b3480156104d157600080fd5b506104da61149e565b6040516104e79190613111565b60405180910390f35b3480156104fc57600080fd5b50610517600480360381019061051291906131db565b611530565b6040516105249190613236565b60405180910390f35b34801561053957600080fd5b50610554600480360381019061054f91906131db565b61161a565b6040516105619190613236565b60405180910390f35b34801561057657600080fd5b50610591600480360381019061058c9190613559565b61163d565b005b34801561059f57600080fd5b506105ba60048036038101906105b59190613305565b611773565b005b3480156105c857600080fd5b506105d1611892565b6040516105de9190613260565b60405180910390f35b3480156105f357600080fd5b506105fc611898565b6040516106099190613260565b60405180910390f35b34801561061e57600080fd5b5061063960048036038101906106349190613599565b61189e565b6040516106469190613260565b60405180910390f35b34801561065b57600080fd5b50610664611925565b005b34801561067257600080fd5b5061068d60048036038101906106889190613305565b611a13565b005b34801561069b57600080fd5b506106a4611b0a565b6040516106b19190613260565b60405180910390f35b3480156106c657600080fd5b506106e160048036038101906106dc9190613305565b611b10565b6040516106ee9190613236565b60405180910390f35b60606003805461070690613608565b80601f016020809104026020016040519081016040528092919081815260200182805461073290613608565b801561077f5780601f106107545761010080835404028352916020019161077f565b820191906000526020600020905b81548152906001019060200180831161076257829003601f168201915b5050505050905090565b600080610794611b46565b90506107a1818585611b4e565b600191505092915050565b6000600254905090565b6000806107c1611b46565b90506107ce858285611d17565b6107d9858585611da3565b60019150509392505050565b6107ed611b46565b73ffffffffffffffffffffffffffffffffffffffff16600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480610881575061084b611b46565b73ffffffffffffffffffffffffffffffffffffffff16610869611474565b73ffffffffffffffffffffffffffffffffffffffff16145b6108c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b7906136ab565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561092d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061095191906136e0565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109fe91906136e0565b6040518363ffffffff1660e01b8152600401610a1b92919061370d565b6020604051808303816000875af1158015610a3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a5e91906136e0565b600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160106000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160126000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550610bc730600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610bc230610dd6565b611b4e565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610c1030610dd6565b600080610c1b611474565b426040518863ffffffff1660e01b8152600401610c3d9695949392919061377b565b60606040518083038185885af1158015610c5b573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610c8091906137f1565b505050565b60006012905090565b600080610c99611b46565b9050610d2d818585600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d289190613873565b611b4e565b600191505092915050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610da0573d6000803e3d6000fd5b50565b600b60009054906101000a900460ff1681565b600f6020528060005260406000206000915054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610e26611b46565b73ffffffffffffffffffffffffffffffffffffffff16610e44611474565b73ffffffffffffffffffffffffffffffffffffffff1614610e9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9190613915565b60405180910390fd5b610ea460006127f9565b565b610eae611b46565b73ffffffffffffffffffffffffffffffffffffffff16600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480610f425750610f0c611b46565b73ffffffffffffffffffffffffffffffffffffffff16610f2a611474565b73ffffffffffffffffffffffffffffffffffffffff16145b610f81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f78906136ab565b60405180910390fd5b6000600b60006101000a81548160ff021916908315150217905550565b610fa6611b46565b73ffffffffffffffffffffffffffffffffffffffff16610fc4611474565b73ffffffffffffffffffffffffffffffffffffffff161461101a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101190613915565b60405180910390fd5b80600c819055506006600c541115611067576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105e90613981565b60405180910390fd5b50565b611072611b46565b73ffffffffffffffffffffffffffffffffffffffff16600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148061110657506110d0611b46565b73ffffffffffffffffffffffffffffffffffffffff166110ee611474565b73ffffffffffffffffffffffffffffffffffffffff16145b611145576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113c906136ab565b60405180910390fd5b60005b82518110156112bb57600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1683828151811061119d5761119c6139a1565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16141580156112315750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168382815181106112105761120f6139a1565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614155b156112a857816011600085848151811061124e5761124d6139a1565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b80806112b3906139d0565b915050611148565b505050565b60006112ca611b46565b73ffffffffffffffffffffffffffffffffffffffff16600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148061135e5750611328611b46565b73ffffffffffffffffffffffffffffffffffffffff16611346611474565b73ffffffffffffffffffffffffffffffffffffffff16145b61139d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611394906136ab565b60405180910390fd5b620186a060016113ab6107ac565b6113b59190613a18565b6113bf9190613aa1565b821015611401576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f890613b44565b60405180910390fd5b6103e8600561140e6107ac565b6114189190613a18565b6114229190613aa1565b821115611464576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145b90613bd6565b60405180910390fd5b81600a8190555060019050919050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546114ad90613608565b80601f01602080910402602001604051908101604052809291908181526020018280546114d990613608565b80156115265780601f106114fb57610100808354040283529160200191611526565b820191906000526020600020905b81548152906001019060200180831161150957829003601f168201915b5050505050905090565b60008061153b611b46565b90506000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905083811015611601576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f890613c68565b60405180910390fd5b61160e8286868403611b4e565b60019250505092915050565b600080611625611b46565b9050611632818585611da3565b600191505092915050565b611645611b46565b73ffffffffffffffffffffffffffffffffffffffff16600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614806116d957506116a3611b46565b73ffffffffffffffffffffffffffffffffffffffff166116c1611474565b73ffffffffffffffffffffffffffffffffffffffff16145b611718576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170f906136ab565b60405180910390fd5b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b61177b611b46565b73ffffffffffffffffffffffffffffffffffffffff16600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148061180f57506117d9611b46565b73ffffffffffffffffffffffffffffffffffffffff166117f7611474565b73ffffffffffffffffffffffffffffffffffffffff16145b61184e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611845906136ab565b60405180910390fd5b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60085481565b600a5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61192d611b46565b73ffffffffffffffffffffffffffffffffffffffff16600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614806119c1575061198b611b46565b73ffffffffffffffffffffffffffffffffffffffff166119a9611474565b73ffffffffffffffffffffffffffffffffffffffff16145b611a00576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f7906136ab565b60405180910390fd5b611a11611a0c30610dd6565b6128bf565b565b611a1b611b46565b73ffffffffffffffffffffffffffffffffffffffff16611a39611474565b73ffffffffffffffffffffffffffffffffffffffff1614611a8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8690613915565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611afe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af590613cfa565b60405180910390fd5b611b07816127f9565b50565b60095481565b60116020528060005260406000206000915054906101000a900460ff1681565b60008183611b3e9190613d1a565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611bbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bb490613dc0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2390613e52565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611d0a9190613260565b60405180910390a3505050565b6000611d23848461189e565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611d9d5781811015611d8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8690613ebe565b60405180910390fd5b611d9c8484848403611b4e565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611e12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0990613f50565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7890613fe2565b60405180910390fd5b601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611f0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0590614074565b60405180910390fd5b60008103611f2757611f2283836000612b02565b6127f4565b600b60009054906101000a900460ff161561247e57611f44611474565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611fb25750611f82611474565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611fcb5750600b60019054906101000a900460ff16155b1561247d57611fd8611474565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156120615750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156120bb5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156121865743601360003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612141576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121389061412c565b60405180910390fd5b43601360003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156122295750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156122d757600854811115612273576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161226a906141e4565b60405180910390fd5b60095461229161228284610dd6565b83612d8190919063ffffffff16565b11156122d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122c990614250565b60405180910390fd5b61247c565b601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561237a5750601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156123c9576008548111156123c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123bb90614308565b60405180910390fd5b61247b565b601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661247a5760095461243861242984610dd6565b83612d8190919063ffffffff16565b1115612479576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247090614250565b60405180910390fd5b5b5b5b5b5b600061248930610dd6565b90506000600a5482101590508080156124af5750600b60019054906101000a900460ff16155b80156125055750601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561255b5750600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156125b15750600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156125f5576001600b60016101000a81548160ff0219169083151502179055506125d9612d97565b6000600b60016101000a81548160ff0219169083151502179055505b6000600b60019054906101000a900460ff16159050600f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806126ab5750600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806127565750601260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156127555750601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b5b1561276057600090505b600081156127e4576127906064612782600c5488612f4290919063ffffffff16565b612f5890919063ffffffff16565b90506127ba60646127ac600c5488612f4290919063ffffffff16565b612f5890919063ffffffff16565b600d8190555060008111156127d5576127d4873083612b02565b5b80856127e19190613d1a565b94505b6127ef878787612b02565b505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000600267ffffffffffffffff8111156128dc576128db613364565b5b60405190808252806020026020018201604052801561290a5781602001602082028036833780820191505090505b5090503081600081518110612922576129216139a1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129ed91906136e0565b81600181518110612a0157612a006139a1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612a6830600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611b4e565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612acc9594939291906143e6565b600060405180830381600087803b158015612ae657600080fd5b505af1158015612afa573d6000803e3d6000fd5b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612b71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b68906144b2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612be0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bd790614544565b60405180910390fd5b612beb838383612f6e565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612c71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c68906145d6565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612d049190613873565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612d689190613260565b60405180910390a3612d7b848484612f73565b50505050565b60008183612d8f9190613873565b905092915050565b6000612da230610dd6565b90506000612dbc6004600d54612f5890919063ffffffff16565b90506000612dd582600d54611b3090919063ffffffff16565b90506000831480612de857506000600d54145b15612df557505050612f40565b600a54831115612e0557600a5492505b60006002600d548486612e189190613a18565b612e229190613aa1565b612e2c9190613aa1565b90506000612e438286611b3090919063ffffffff16565b90506000479050612e53826128bf565b6000612e688247611b3090919063ffffffff16565b90506000612e93600d54612e858885612f4290919063ffffffff16565b612f5890919063ffffffff16565b905060008183612ea39190613d1a565b90506000600d81905550600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015612f15573d6000803e3d6000fd5b50600086118015612f265750600081115b15612f3657612f358682612f78565b5b5050505050505050505b565b60008183612f509190613a18565b905092915050565b60008183612f669190613aa1565b905092915050565b505050565b505050565b612fa530600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611b4e565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161302e9695949392919061377b565b60606040518083038185885af115801561304c573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061307191906137f1565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156130b2578082015181840152602081019050613097565b838111156130c1576000848401525b50505050565b6000601f19601f8301169050919050565b60006130e382613078565b6130ed8185613083565b93506130fd818560208601613094565b613106816130c7565b840191505092915050565b6000602082019050818103600083015261312b81846130d8565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061317282613147565b9050919050565b61318281613167565b811461318d57600080fd5b50565b60008135905061319f81613179565b92915050565b6000819050919050565b6131b8816131a5565b81146131c357600080fd5b50565b6000813590506131d5816131af565b92915050565b600080604083850312156131f2576131f161313d565b5b600061320085828601613190565b9250506020613211858286016131c6565b9150509250929050565b60008115159050919050565b6132308161321b565b82525050565b600060208201905061324b6000830184613227565b92915050565b61325a816131a5565b82525050565b60006020820190506132756000830184613251565b92915050565b6000806000606084860312156132945761329361313d565b5b60006132a286828701613190565b93505060206132b386828701613190565b92505060406132c4868287016131c6565b9150509250925092565b600060ff82169050919050565b6132e4816132ce565b82525050565b60006020820190506132ff60008301846132db565b92915050565b60006020828403121561331b5761331a61313d565b5b600061332984828501613190565b91505092915050565b6000602082840312156133485761334761313d565b5b6000613356848285016131c6565b91505092915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61339c826130c7565b810181811067ffffffffffffffff821117156133bb576133ba613364565b5b80604052505050565b60006133ce613133565b90506133da8282613393565b919050565b600067ffffffffffffffff8211156133fa576133f9613364565b5b602082029050602081019050919050565b600080fd5b600061342361341e846133df565b6133c4565b905080838252602082019050602084028301858111156134465761344561340b565b5b835b8181101561346f578061345b8882613190565b845260208401935050602081019050613448565b5050509392505050565b600082601f83011261348e5761348d61335f565b5b813561349e848260208601613410565b91505092915050565b6134b08161321b565b81146134bb57600080fd5b50565b6000813590506134cd816134a7565b92915050565b600080604083850312156134ea576134e961313d565b5b600083013567ffffffffffffffff81111561350857613507613142565b5b61351485828601613479565b9250506020613525858286016134be565b9150509250929050565b61353881613167565b82525050565b6000602082019050613553600083018461352f565b92915050565b600080604083850312156135705761356f61313d565b5b600061357e85828601613190565b925050602061358f858286016134be565b9150509250929050565b600080604083850312156135b0576135af61313d565b5b60006135be85828601613190565b92505060206135cf85828601613190565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061362057607f821691505b602082108103613633576136326135d9565b5b50919050565b7f43616c6c6572206973206e6f7420746865205f6665655265636569766572206160008201527f646472657373206e6f72206f776e65722e000000000000000000000000000000602082015250565b6000613695603183613083565b91506136a082613639565b604082019050919050565b600060208201905081810360008301526136c481613688565b9050919050565b6000815190506136da81613179565b92915050565b6000602082840312156136f6576136f561313d565b5b6000613704848285016136cb565b91505092915050565b6000604082019050613722600083018561352f565b61372f602083018461352f565b9392505050565b6000819050919050565b6000819050919050565b600061376561376061375b84613736565b613740565b6131a5565b9050919050565b6137758161374a565b82525050565b600060c082019050613790600083018961352f565b61379d6020830188613251565b6137aa604083018761376c565b6137b7606083018661376c565b6137c4608083018561352f565b6137d160a0830184613251565b979650505050505050565b6000815190506137eb816131af565b92915050565b60008060006060848603121561380a5761380961313d565b5b6000613818868287016137dc565b9350506020613829868287016137dc565b925050604061383a868287016137dc565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061387e826131a5565b9150613889836131a5565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156138be576138bd613844565b5b828201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006138ff602083613083565b915061390a826138c9565b602082019050919050565b6000602082019050818103600083015261392e816138f2565b9050919050565b7f4d757374206b6565702066656573206174203625206f72206c65737300000000600082015250565b600061396b601c83613083565b915061397682613935565b602082019050919050565b6000602082019050818103600083015261399a8161395e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006139db826131a5565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613a0d57613a0c613844565b5b600182019050919050565b6000613a23826131a5565b9150613a2e836131a5565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613a6757613a66613844565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613aac826131a5565b9150613ab7836131a5565b925082613ac757613ac6613a72565b5b828204905092915050565b7f53776170207468726573686f6c642063616e6e6f74206265206c6f776572207460008201527f68616e20302e3030312520746f74616c20737570706c792e0000000000000000602082015250565b6000613b2e603883613083565b9150613b3982613ad2565b604082019050919050565b60006020820190508181036000830152613b5d81613b21565b9050919050565b7f53776170207468726573686f6c642063616e6e6f74206265206869676865722060008201527f7468616e20302e352520746f74616c20737570706c792e000000000000000000602082015250565b6000613bc0603783613083565b9150613bcb82613b64565b604082019050919050565b60006020820190508181036000830152613bef81613bb3565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613c52602583613083565b9150613c5d82613bf6565b604082019050919050565b60006020820190508181036000830152613c8181613c45565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613ce4602683613083565b9150613cef82613c88565b604082019050919050565b60006020820190508181036000830152613d1381613cd7565b9050919050565b6000613d25826131a5565b9150613d30836131a5565b925082821015613d4357613d42613844565b5b828203905092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613daa602483613083565b9150613db582613d4e565b604082019050919050565b60006020820190508181036000830152613dd981613d9d565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613e3c602283613083565b9150613e4782613de0565b604082019050919050565b60006020820190508181036000830152613e6b81613e2f565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000613ea8601d83613083565b9150613eb382613e72565b602082019050919050565b60006020820190508181036000830152613ed781613e9b565b9050919050565b7f5f7472616e736665723a3a205472616e736665722066726f6d20746865207a6560008201527f726f2061646472657373206e6f7420616c6c6f7765642e000000000000000000602082015250565b6000613f3a603783613083565b9150613f4582613ede565b604082019050919050565b60006020820190508181036000830152613f6981613f2d565b9050919050565b7f5f7472616e736665723a3a205472616e7366657220746f20746865207a65726f60008201527f2061646472657373206e6f7420616c6c6f7765642e0000000000000000000000602082015250565b6000613fcc603583613083565b9150613fd782613f70565b604082019050919050565b60006020820190508181036000830152613ffb81613fbf565b9050919050565b7f5f7472616e736665723a3a20596f75722061646472657373206861732062656560008201527f6e206d61726b656420617320626c61636b6c69737465642e0000000000000000602082015250565b600061405e603883613083565b915061406982614002565b604082019050919050565b6000602082019050818103600083015261408d81614051565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b6000614116604983613083565b915061412182614094565b606082019050919050565b6000602082019050818103600083015261414581614109565b9050919050565b7f5f7472616e736665723a3a20427579207472616e7366657220616d6f756e742060008201527f6578636565647320746865206d61785472616e73616374696f6e416d6f756e7460208201527f2e00000000000000000000000000000000000000000000000000000000000000604082015250565b60006141ce604183613083565b91506141d98261414c565b606082019050919050565b600060208201905081810360008301526141fd816141c1565b9050919050565b7f5f7472616e736665723a3a204d61782077616c6c657420657863656564656400600082015250565b600061423a601f83613083565b915061424582614204565b602082019050919050565b600060208201905081810360008301526142698161422d565b9050919050565b7f5f7472616e736665723a3a2053656c6c207472616e7366657220616d6f756e7460008201527f206578636565647320746865206d61785472616e73616374696f6e416d6f756e60208201527f742e000000000000000000000000000000000000000000000000000000000000604082015250565b60006142f2604283613083565b91506142fd82614270565b606082019050919050565b60006020820190508181036000830152614321816142e5565b9050919050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61435d81613167565b82525050565b600061436f8383614354565b60208301905092915050565b6000602082019050919050565b600061439382614328565b61439d8185614333565b93506143a883614344565b8060005b838110156143d95781516143c08882614363565b97506143cb8361437b565b9250506001810190506143ac565b5085935050505092915050565b600060a0820190506143fb6000830188613251565b614408602083018761376c565b818103604083015261441a8186614388565b9050614429606083018561352f565b6144366080830184613251565b9695505050505050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061449c602583613083565b91506144a782614440565b604082019050919050565b600060208201905081810360008301526144cb8161448f565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061452e602383613083565b9150614539826144d2565b604082019050919050565b6000602082019050818103600083015261455d81614521565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006145c0602683613083565b91506145cb82614564565b604082019050919050565b600060208201905081810360008301526145ef816145b3565b905091905056fea264697066735822122028bcbf3e3455db63570d124824abbee5cc90bc95ebd1490f21e8a708b10f8cc864736f6c634300080f0033

Deployed Bytecode

0x6080604052600436106101c65760003560e01c806384826368116100f7578063c69bebe411610095578063df778d2611610064578063df778d261461064f578063f2fde38b14610666578063f8b45b051461068f578063fe575a87146106ba576101cd565b8063c69bebe414610593578063c8c8ebe4146105bc578063cef85139146105e7578063dd62ed3e14610612576101cd565b806395d89b41116100d157806395d89b41146104c5578063a457c2d7146104f0578063a9059cbb1461052d578063c02466681461056a576101cd565b806384826368146104345780638baa63b21461045d5780638da5cb5b1461049a576101cd565b80633dd5b2da1161016457806370a082311161013e57806370a08231146103a0578063715018a6146103dd578063751039fc146103f457806378dacee11461040b576101cd565b80633dd5b2da146103215780634a62bb65146103385780634fbee19314610363576101cd565b806323b872dd116101a057806323b872dd14610265578063293230b8146102a2578063313ce567146102b957806339509351146102e4576101cd565b806306fdde03146101d2578063095ea7b3146101fd57806318160ddd1461023a576101cd565b366101cd57005b600080fd5b3480156101de57600080fd5b506101e76106f7565b6040516101f49190613111565b60405180910390f35b34801561020957600080fd5b50610224600480360381019061021f91906131db565b610789565b6040516102319190613236565b60405180910390f35b34801561024657600080fd5b5061024f6107ac565b60405161025c9190613260565b60405180910390f35b34801561027157600080fd5b5061028c6004803603810190610287919061327b565b6107b6565b6040516102999190613236565b60405180910390f35b3480156102ae57600080fd5b506102b76107e5565b005b3480156102c557600080fd5b506102ce610c85565b6040516102db91906132ea565b60405180910390f35b3480156102f057600080fd5b5061030b600480360381019061030691906131db565b610c8e565b6040516103189190613236565b60405180910390f35b34801561032d57600080fd5b50610336610d38565b005b34801561034457600080fd5b5061034d610da3565b60405161035a9190613236565b60405180910390f35b34801561036f57600080fd5b5061038a60048036038101906103859190613305565b610db6565b6040516103979190613236565b60405180910390f35b3480156103ac57600080fd5b506103c760048036038101906103c29190613305565b610dd6565b6040516103d49190613260565b60405180910390f35b3480156103e957600080fd5b506103f2610e1e565b005b34801561040057600080fd5b50610409610ea6565b005b34801561041757600080fd5b50610432600480360381019061042d9190613332565b610f9e565b005b34801561044057600080fd5b5061045b600480360381019061045691906134d3565b61106a565b005b34801561046957600080fd5b50610484600480360381019061047f9190613332565b6112c0565b6040516104919190613236565b60405180910390f35b3480156104a657600080fd5b506104af611474565b6040516104bc919061353e565b60405180910390f35b3480156104d157600080fd5b506104da61149e565b6040516104e79190613111565b60405180910390f35b3480156104fc57600080fd5b50610517600480360381019061051291906131db565b611530565b6040516105249190613236565b60405180910390f35b34801561053957600080fd5b50610554600480360381019061054f91906131db565b61161a565b6040516105619190613236565b60405180910390f35b34801561057657600080fd5b50610591600480360381019061058c9190613559565b61163d565b005b34801561059f57600080fd5b506105ba60048036038101906105b59190613305565b611773565b005b3480156105c857600080fd5b506105d1611892565b6040516105de9190613260565b60405180910390f35b3480156105f357600080fd5b506105fc611898565b6040516106099190613260565b60405180910390f35b34801561061e57600080fd5b5061063960048036038101906106349190613599565b61189e565b6040516106469190613260565b60405180910390f35b34801561065b57600080fd5b50610664611925565b005b34801561067257600080fd5b5061068d60048036038101906106889190613305565b611a13565b005b34801561069b57600080fd5b506106a4611b0a565b6040516106b19190613260565b60405180910390f35b3480156106c657600080fd5b506106e160048036038101906106dc9190613305565b611b10565b6040516106ee9190613236565b60405180910390f35b60606003805461070690613608565b80601f016020809104026020016040519081016040528092919081815260200182805461073290613608565b801561077f5780601f106107545761010080835404028352916020019161077f565b820191906000526020600020905b81548152906001019060200180831161076257829003601f168201915b5050505050905090565b600080610794611b46565b90506107a1818585611b4e565b600191505092915050565b6000600254905090565b6000806107c1611b46565b90506107ce858285611d17565b6107d9858585611da3565b60019150509392505050565b6107ed611b46565b73ffffffffffffffffffffffffffffffffffffffff16600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480610881575061084b611b46565b73ffffffffffffffffffffffffffffffffffffffff16610869611474565b73ffffffffffffffffffffffffffffffffffffffff16145b6108c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b7906136ab565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561092d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061095191906136e0565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109fe91906136e0565b6040518363ffffffff1660e01b8152600401610a1b92919061370d565b6020604051808303816000875af1158015610a3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a5e91906136e0565b600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160106000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160126000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550610bc730600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610bc230610dd6565b611b4e565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610c1030610dd6565b600080610c1b611474565b426040518863ffffffff1660e01b8152600401610c3d9695949392919061377b565b60606040518083038185885af1158015610c5b573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610c8091906137f1565b505050565b60006012905090565b600080610c99611b46565b9050610d2d818585600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d289190613873565b611b4e565b600191505092915050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610da0573d6000803e3d6000fd5b50565b600b60009054906101000a900460ff1681565b600f6020528060005260406000206000915054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610e26611b46565b73ffffffffffffffffffffffffffffffffffffffff16610e44611474565b73ffffffffffffffffffffffffffffffffffffffff1614610e9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9190613915565b60405180910390fd5b610ea460006127f9565b565b610eae611b46565b73ffffffffffffffffffffffffffffffffffffffff16600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480610f425750610f0c611b46565b73ffffffffffffffffffffffffffffffffffffffff16610f2a611474565b73ffffffffffffffffffffffffffffffffffffffff16145b610f81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f78906136ab565b60405180910390fd5b6000600b60006101000a81548160ff021916908315150217905550565b610fa6611b46565b73ffffffffffffffffffffffffffffffffffffffff16610fc4611474565b73ffffffffffffffffffffffffffffffffffffffff161461101a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101190613915565b60405180910390fd5b80600c819055506006600c541115611067576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105e90613981565b60405180910390fd5b50565b611072611b46565b73ffffffffffffffffffffffffffffffffffffffff16600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148061110657506110d0611b46565b73ffffffffffffffffffffffffffffffffffffffff166110ee611474565b73ffffffffffffffffffffffffffffffffffffffff16145b611145576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113c906136ab565b60405180910390fd5b60005b82518110156112bb57600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1683828151811061119d5761119c6139a1565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16141580156112315750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168382815181106112105761120f6139a1565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614155b156112a857816011600085848151811061124e5761124d6139a1565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b80806112b3906139d0565b915050611148565b505050565b60006112ca611b46565b73ffffffffffffffffffffffffffffffffffffffff16600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148061135e5750611328611b46565b73ffffffffffffffffffffffffffffffffffffffff16611346611474565b73ffffffffffffffffffffffffffffffffffffffff16145b61139d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611394906136ab565b60405180910390fd5b620186a060016113ab6107ac565b6113b59190613a18565b6113bf9190613aa1565b821015611401576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f890613b44565b60405180910390fd5b6103e8600561140e6107ac565b6114189190613a18565b6114229190613aa1565b821115611464576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145b90613bd6565b60405180910390fd5b81600a8190555060019050919050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546114ad90613608565b80601f01602080910402602001604051908101604052809291908181526020018280546114d990613608565b80156115265780601f106114fb57610100808354040283529160200191611526565b820191906000526020600020905b81548152906001019060200180831161150957829003601f168201915b5050505050905090565b60008061153b611b46565b90506000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905083811015611601576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f890613c68565b60405180910390fd5b61160e8286868403611b4e565b60019250505092915050565b600080611625611b46565b9050611632818585611da3565b600191505092915050565b611645611b46565b73ffffffffffffffffffffffffffffffffffffffff16600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614806116d957506116a3611b46565b73ffffffffffffffffffffffffffffffffffffffff166116c1611474565b73ffffffffffffffffffffffffffffffffffffffff16145b611718576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170f906136ab565b60405180910390fd5b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b61177b611b46565b73ffffffffffffffffffffffffffffffffffffffff16600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148061180f57506117d9611b46565b73ffffffffffffffffffffffffffffffffffffffff166117f7611474565b73ffffffffffffffffffffffffffffffffffffffff16145b61184e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611845906136ab565b60405180910390fd5b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60085481565b600a5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61192d611b46565b73ffffffffffffffffffffffffffffffffffffffff16600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614806119c1575061198b611b46565b73ffffffffffffffffffffffffffffffffffffffff166119a9611474565b73ffffffffffffffffffffffffffffffffffffffff16145b611a00576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f7906136ab565b60405180910390fd5b611a11611a0c30610dd6565b6128bf565b565b611a1b611b46565b73ffffffffffffffffffffffffffffffffffffffff16611a39611474565b73ffffffffffffffffffffffffffffffffffffffff1614611a8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8690613915565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611afe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af590613cfa565b60405180910390fd5b611b07816127f9565b50565b60095481565b60116020528060005260406000206000915054906101000a900460ff1681565b60008183611b3e9190613d1a565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611bbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bb490613dc0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2390613e52565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611d0a9190613260565b60405180910390a3505050565b6000611d23848461189e565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611d9d5781811015611d8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8690613ebe565b60405180910390fd5b611d9c8484848403611b4e565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611e12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0990613f50565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7890613fe2565b60405180910390fd5b601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611f0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0590614074565b60405180910390fd5b60008103611f2757611f2283836000612b02565b6127f4565b600b60009054906101000a900460ff161561247e57611f44611474565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611fb25750611f82611474565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611fcb5750600b60019054906101000a900460ff16155b1561247d57611fd8611474565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156120615750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156120bb5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156121865743601360003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612141576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121389061412c565b60405180910390fd5b43601360003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156122295750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156122d757600854811115612273576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161226a906141e4565b60405180910390fd5b60095461229161228284610dd6565b83612d8190919063ffffffff16565b11156122d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122c990614250565b60405180910390fd5b61247c565b601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561237a5750601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156123c9576008548111156123c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123bb90614308565b60405180910390fd5b61247b565b601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661247a5760095461243861242984610dd6565b83612d8190919063ffffffff16565b1115612479576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247090614250565b60405180910390fd5b5b5b5b5b5b600061248930610dd6565b90506000600a5482101590508080156124af5750600b60019054906101000a900460ff16155b80156125055750601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561255b5750600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156125b15750600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156125f5576001600b60016101000a81548160ff0219169083151502179055506125d9612d97565b6000600b60016101000a81548160ff0219169083151502179055505b6000600b60019054906101000a900460ff16159050600f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806126ab5750600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806127565750601260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156127555750601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b5b1561276057600090505b600081156127e4576127906064612782600c5488612f4290919063ffffffff16565b612f5890919063ffffffff16565b90506127ba60646127ac600c5488612f4290919063ffffffff16565b612f5890919063ffffffff16565b600d8190555060008111156127d5576127d4873083612b02565b5b80856127e19190613d1a565b94505b6127ef878787612b02565b505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000600267ffffffffffffffff8111156128dc576128db613364565b5b60405190808252806020026020018201604052801561290a5781602001602082028036833780820191505090505b5090503081600081518110612922576129216139a1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129ed91906136e0565b81600181518110612a0157612a006139a1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612a6830600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611b4e565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612acc9594939291906143e6565b600060405180830381600087803b158015612ae657600080fd5b505af1158015612afa573d6000803e3d6000fd5b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612b71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b68906144b2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612be0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bd790614544565b60405180910390fd5b612beb838383612f6e565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612c71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c68906145d6565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612d049190613873565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612d689190613260565b60405180910390a3612d7b848484612f73565b50505050565b60008183612d8f9190613873565b905092915050565b6000612da230610dd6565b90506000612dbc6004600d54612f5890919063ffffffff16565b90506000612dd582600d54611b3090919063ffffffff16565b90506000831480612de857506000600d54145b15612df557505050612f40565b600a54831115612e0557600a5492505b60006002600d548486612e189190613a18565b612e229190613aa1565b612e2c9190613aa1565b90506000612e438286611b3090919063ffffffff16565b90506000479050612e53826128bf565b6000612e688247611b3090919063ffffffff16565b90506000612e93600d54612e858885612f4290919063ffffffff16565b612f5890919063ffffffff16565b905060008183612ea39190613d1a565b90506000600d81905550600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015612f15573d6000803e3d6000fd5b50600086118015612f265750600081115b15612f3657612f358682612f78565b5b5050505050505050505b565b60008183612f509190613a18565b905092915050565b60008183612f669190613aa1565b905092915050565b505050565b505050565b612fa530600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611b4e565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161302e9695949392919061377b565b60606040518083038185885af115801561304c573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061307191906137f1565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156130b2578082015181840152602081019050613097565b838111156130c1576000848401525b50505050565b6000601f19601f8301169050919050565b60006130e382613078565b6130ed8185613083565b93506130fd818560208601613094565b613106816130c7565b840191505092915050565b6000602082019050818103600083015261312b81846130d8565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061317282613147565b9050919050565b61318281613167565b811461318d57600080fd5b50565b60008135905061319f81613179565b92915050565b6000819050919050565b6131b8816131a5565b81146131c357600080fd5b50565b6000813590506131d5816131af565b92915050565b600080604083850312156131f2576131f161313d565b5b600061320085828601613190565b9250506020613211858286016131c6565b9150509250929050565b60008115159050919050565b6132308161321b565b82525050565b600060208201905061324b6000830184613227565b92915050565b61325a816131a5565b82525050565b60006020820190506132756000830184613251565b92915050565b6000806000606084860312156132945761329361313d565b5b60006132a286828701613190565b93505060206132b386828701613190565b92505060406132c4868287016131c6565b9150509250925092565b600060ff82169050919050565b6132e4816132ce565b82525050565b60006020820190506132ff60008301846132db565b92915050565b60006020828403121561331b5761331a61313d565b5b600061332984828501613190565b91505092915050565b6000602082840312156133485761334761313d565b5b6000613356848285016131c6565b91505092915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61339c826130c7565b810181811067ffffffffffffffff821117156133bb576133ba613364565b5b80604052505050565b60006133ce613133565b90506133da8282613393565b919050565b600067ffffffffffffffff8211156133fa576133f9613364565b5b602082029050602081019050919050565b600080fd5b600061342361341e846133df565b6133c4565b905080838252602082019050602084028301858111156134465761344561340b565b5b835b8181101561346f578061345b8882613190565b845260208401935050602081019050613448565b5050509392505050565b600082601f83011261348e5761348d61335f565b5b813561349e848260208601613410565b91505092915050565b6134b08161321b565b81146134bb57600080fd5b50565b6000813590506134cd816134a7565b92915050565b600080604083850312156134ea576134e961313d565b5b600083013567ffffffffffffffff81111561350857613507613142565b5b61351485828601613479565b9250506020613525858286016134be565b9150509250929050565b61353881613167565b82525050565b6000602082019050613553600083018461352f565b92915050565b600080604083850312156135705761356f61313d565b5b600061357e85828601613190565b925050602061358f858286016134be565b9150509250929050565b600080604083850312156135b0576135af61313d565b5b60006135be85828601613190565b92505060206135cf85828601613190565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061362057607f821691505b602082108103613633576136326135d9565b5b50919050565b7f43616c6c6572206973206e6f7420746865205f6665655265636569766572206160008201527f646472657373206e6f72206f776e65722e000000000000000000000000000000602082015250565b6000613695603183613083565b91506136a082613639565b604082019050919050565b600060208201905081810360008301526136c481613688565b9050919050565b6000815190506136da81613179565b92915050565b6000602082840312156136f6576136f561313d565b5b6000613704848285016136cb565b91505092915050565b6000604082019050613722600083018561352f565b61372f602083018461352f565b9392505050565b6000819050919050565b6000819050919050565b600061376561376061375b84613736565b613740565b6131a5565b9050919050565b6137758161374a565b82525050565b600060c082019050613790600083018961352f565b61379d6020830188613251565b6137aa604083018761376c565b6137b7606083018661376c565b6137c4608083018561352f565b6137d160a0830184613251565b979650505050505050565b6000815190506137eb816131af565b92915050565b60008060006060848603121561380a5761380961313d565b5b6000613818868287016137dc565b9350506020613829868287016137dc565b925050604061383a868287016137dc565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061387e826131a5565b9150613889836131a5565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156138be576138bd613844565b5b828201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006138ff602083613083565b915061390a826138c9565b602082019050919050565b6000602082019050818103600083015261392e816138f2565b9050919050565b7f4d757374206b6565702066656573206174203625206f72206c65737300000000600082015250565b600061396b601c83613083565b915061397682613935565b602082019050919050565b6000602082019050818103600083015261399a8161395e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006139db826131a5565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613a0d57613a0c613844565b5b600182019050919050565b6000613a23826131a5565b9150613a2e836131a5565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613a6757613a66613844565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613aac826131a5565b9150613ab7836131a5565b925082613ac757613ac6613a72565b5b828204905092915050565b7f53776170207468726573686f6c642063616e6e6f74206265206c6f776572207460008201527f68616e20302e3030312520746f74616c20737570706c792e0000000000000000602082015250565b6000613b2e603883613083565b9150613b3982613ad2565b604082019050919050565b60006020820190508181036000830152613b5d81613b21565b9050919050565b7f53776170207468726573686f6c642063616e6e6f74206265206869676865722060008201527f7468616e20302e352520746f74616c20737570706c792e000000000000000000602082015250565b6000613bc0603783613083565b9150613bcb82613b64565b604082019050919050565b60006020820190508181036000830152613bef81613bb3565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613c52602583613083565b9150613c5d82613bf6565b604082019050919050565b60006020820190508181036000830152613c8181613c45565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613ce4602683613083565b9150613cef82613c88565b604082019050919050565b60006020820190508181036000830152613d1381613cd7565b9050919050565b6000613d25826131a5565b9150613d30836131a5565b925082821015613d4357613d42613844565b5b828203905092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613daa602483613083565b9150613db582613d4e565b604082019050919050565b60006020820190508181036000830152613dd981613d9d565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613e3c602283613083565b9150613e4782613de0565b604082019050919050565b60006020820190508181036000830152613e6b81613e2f565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000613ea8601d83613083565b9150613eb382613e72565b602082019050919050565b60006020820190508181036000830152613ed781613e9b565b9050919050565b7f5f7472616e736665723a3a205472616e736665722066726f6d20746865207a6560008201527f726f2061646472657373206e6f7420616c6c6f7765642e000000000000000000602082015250565b6000613f3a603783613083565b9150613f4582613ede565b604082019050919050565b60006020820190508181036000830152613f6981613f2d565b9050919050565b7f5f7472616e736665723a3a205472616e7366657220746f20746865207a65726f60008201527f2061646472657373206e6f7420616c6c6f7765642e0000000000000000000000602082015250565b6000613fcc603583613083565b9150613fd782613f70565b604082019050919050565b60006020820190508181036000830152613ffb81613fbf565b9050919050565b7f5f7472616e736665723a3a20596f75722061646472657373206861732062656560008201527f6e206d61726b656420617320626c61636b6c69737465642e0000000000000000602082015250565b600061405e603883613083565b915061406982614002565b604082019050919050565b6000602082019050818103600083015261408d81614051565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b6000614116604983613083565b915061412182614094565b606082019050919050565b6000602082019050818103600083015261414581614109565b9050919050565b7f5f7472616e736665723a3a20427579207472616e7366657220616d6f756e742060008201527f6578636565647320746865206d61785472616e73616374696f6e416d6f756e7460208201527f2e00000000000000000000000000000000000000000000000000000000000000604082015250565b60006141ce604183613083565b91506141d98261414c565b606082019050919050565b600060208201905081810360008301526141fd816141c1565b9050919050565b7f5f7472616e736665723a3a204d61782077616c6c657420657863656564656400600082015250565b600061423a601f83613083565b915061424582614204565b602082019050919050565b600060208201905081810360008301526142698161422d565b9050919050565b7f5f7472616e736665723a3a2053656c6c207472616e7366657220616d6f756e7460008201527f206578636565647320746865206d61785472616e73616374696f6e416d6f756e60208201527f742e000000000000000000000000000000000000000000000000000000000000604082015250565b60006142f2604283613083565b91506142fd82614270565b606082019050919050565b60006020820190508181036000830152614321816142e5565b9050919050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61435d81613167565b82525050565b600061436f8383614354565b60208301905092915050565b6000602082019050919050565b600061439382614328565b61439d8185614333565b93506143a883614344565b8060005b838110156143d95781516143c08882614363565b97506143cb8361437b565b9250506001810190506143ac565b5085935050505092915050565b600060a0820190506143fb6000830188613251565b614408602083018761376c565b818103604083015261441a8186614388565b9050614429606083018561352f565b6144366080830184613251565b9695505050505050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061449c602583613083565b91506144a782614440565b604082019050919050565b600060208201905081810360008301526144cb8161448f565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061452e602383613083565b9150614539826144d2565b604082019050919050565b6000602082019050818103600083015261455d81614521565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006145c0602683613083565b91506145cb82614564565b604082019050919050565b600060208201905081810360008301526145ef816145b3565b905091905056fea264697066735822122028bcbf3e3455db63570d124824abbee5cc90bc95ebd1490f21e8a708b10f8cc864736f6c634300080f0033

Deployed Bytecode Sourcemap

9313:10508:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1633:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2565:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1954:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2774:295;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11789:638;;;;;;;;;;;;;:::i;:::-;;1853:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3077:240;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19472:112;;;;;;;;;;;;;:::i;:::-;;9610:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9846:51;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2070:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7853:103;;;;;;;;;;;;;:::i;:::-;;12509:86;;;;;;;;;;;;;:::i;:::-;;13248:152;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12880:288;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13772:404;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7630:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1741:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3325:438;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2205:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12661:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13489:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9486:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9559:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2406:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19677:104;;;;;;;;;;;;;:::i;:::-;;7964:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9528:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9995:46;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1633:100;1687:13;1720:5;1713:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1633:100;:::o;2565:201::-;2648:4;2665:13;2681:12;:10;:12::i;:::-;2665:28;;2704:32;2713:5;2720:7;2729:6;2704:8;:32::i;:::-;2754:4;2747:11;;;2565:201;;;;:::o;1954:108::-;2015:7;2042:12;;2035:19;;1954:108;:::o;2774:295::-;2905:4;2922:15;2940:12;:10;:12::i;:::-;2922:30;;2963:38;2979:4;2985:7;2994:6;2963:15;:38::i;:::-;3012:27;3022:4;3028:2;3032:6;3012:9;:27::i;:::-;3057:4;3050:11;;;2774:295;;;;;:::o;11789:638::-;10475:12;:10;:12::i;:::-;10459:28;;:12;;;;;;;;;;;:28;;;:55;;;;10502:12;:10;:12::i;:::-;10491:23;;:7;:5;:7::i;:::-;:23;;;10459:55;10451:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;11879:15:::1;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11861:55;;;11925:4;11932:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11861:94;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11845:13;;:110;;;;;;;;;;;;;;;;;;12024:4;11966:31;:55;12006:13;;;;;;;;;;;11966:55;;;;;;;;;;;;;;;;:62;;;;;;;;;;;;;;;;;;12092:4;12039:26;:50;12074:13;;;;;;;;;;;12039:50;;;;;;;;;;;;;;;;:57;;;;;;;;;;;;;;;;;;12109:75;12126:4;12141:15;;;;;;;;;;;12159:24;12177:4;12159:9;:24::i;:::-;12109:8;:75::i;:::-;12195:15;;;;;;;;;;;:31;;;12234:21;12280:4;12300:24;12318:4;12300:9;:24::i;:::-;12339:1;12355::::0;12371:7:::1;:5;:7::i;:::-;12393:15;12195:224;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;11789:638::o:0;1853:93::-;1911:5;1936:2;1929:9;;1853:93;:::o;3077:240::-;3165:4;3182:13;3198:12;:10;:12::i;:::-;3182:28;;3221:66;3230:5;3237:7;3276:10;3246:11;:18;3258:5;3246:18;;;;;;;;;;;;;;;:27;3265:7;3246:27;;;;;;;;;;;;;;;;:40;;;;:::i;:::-;3221:8;:66::i;:::-;3305:4;3298:11;;;3077:240;;;;:::o;19472:112::-;19531:12;;;;;;;;;;;19523:30;;:53;19554:21;19523:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19472:112::o;9610:33::-;;;;;;;;;;;;;:::o;9846:51::-;;;;;;;;;;;;;;;;;;;;;;:::o;2070:127::-;2144:7;2171:9;:18;2181:7;2171:18;;;;;;;;;;;;;;;;2164:25;;2070:127;;;:::o;7853:103::-;7776:12;:10;:12::i;:::-;7765:23;;:7;:5;:7::i;:::-;:23;;;7757:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7918:30:::1;7945:1;7918:18;:30::i;:::-;7853:103::o:0;12509:86::-;10475:12;:10;:12::i;:::-;10459:28;;:12;;;;;;;;;;;:28;;;:55;;;;10502:12;:10;:12::i;:::-;10491:23;;:7;:5;:7::i;:::-;:23;;;10459:55;10451:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;12582:5:::1;12565:14;;:22;;;;;;;;;;;;;;;;;;12509:86::o:0;13248:152::-;7776:12;:10;:12::i;:::-;7765:23;;:7;:5;:7::i;:::-;:23;;;7757:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13322:3:::1;13311:8;:14;;;;13358:1;13346:8;;:13;;13338:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;13248:152:::0;:::o;12880:288::-;10475:12;:10;:12::i;:::-;10459:28;;:12;;;;;;;;;;;:28;;;:55;;;;10502:12;:10;:12::i;:::-;10491:23;;:7;:5;:7::i;:::-;:23;;;10459:55;10451:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;12979:6:::1;12974:187;12995:5;:12;12991:1;:16;12974:187;;;13045:13;;;;;;;;;;;13033:25;;:5;13039:1;13033:8;;;;;;;;:::i;:::-;;;;;;;;:25;;;;:65;;;;;13082:15;;;;;;;;;;;13062:36;;:5;13068:1;13062:8;;;;;;;;:::i;:::-;;;;;;;;:36;;;;13033:65;13029:120;;;13144:5;13118:13;:23;13132:5;13138:1;13132:8;;;;;;;;:::i;:::-;;;;;;;;13118:23;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;13029:120;13009:3;;;;;:::i;:::-;;;;12974:187;;;;12880:288:::0;;:::o;13772:404::-;13859:4;10475:12;:10;:12::i;:::-;10459:28;;:12;;;;;;;;;;;:28;;;:55;;;;10502:12;:10;:12::i;:::-;10491:23;;:7;:5;:7::i;:::-;:23;;;10459:55;10451:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;13919:6:::1;13915:1;13899:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:26;;;;:::i;:::-;13883:12;:42;;13875:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;14040:4;14036:1;14020:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;14004:12;:40;;13996:108;;;;;;;;;;;;:::i;:::-;;;;;;;;;14136:12;14114:19;:34;;;;14165:4;14158:11;;13772:404:::0;;;:::o;7630:87::-;7676:7;7703:6;;;;;;;;;;;7696:13;;7630:87;:::o;1741:104::-;1797:13;1830:7;1823:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1741:104;:::o;3325:438::-;3418:4;3435:13;3451:12;:10;:12::i;:::-;3435:28;;3474:24;3501:11;:18;3513:5;3501:18;;;;;;;;;;;;;;;:27;3520:7;3501:27;;;;;;;;;;;;;;;;3474:54;;3567:15;3547:16;:35;;3539:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;3660:60;3669:5;3676:7;3704:15;3685:16;:34;3660:8;:60::i;:::-;3751:4;3744:11;;;;3325:438;;;;:::o;2205:193::-;2284:4;2301:13;2317:12;:10;:12::i;:::-;2301:28;;2340;2350:5;2357:2;2361:6;2340:9;:28::i;:::-;2386:4;2379:11;;;2205:193;;;;:::o;12661:133::-;10475:12;:10;:12::i;:::-;10459:28;;:12;;;;;;;;;;;:28;;;:55;;;;10502:12;:10;:12::i;:::-;10491:23;;:7;:5;:7::i;:::-;:23;;;10459:55;10451:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;12778:8:::1;12748:18;:27;12767:7;12748:27;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;12661:133:::0;;:::o;13489:110::-;10475:12;:10;:12::i;:::-;10459:28;;:12;;;;;;;;;;;:28;;;:55;;;;10502:12;:10;:12::i;:::-;10491:23;;:7;:5;:7::i;:::-;:23;;;10459:55;10451:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;13582:9:::1;13567:12;;:24;;;;;;;;;;;;;;;;;;13489:110:::0;:::o;9486:35::-;;;;:::o;9559:34::-;;;;:::o;2406:151::-;2495:7;2522:11;:18;2534:5;2522:18;;;;;;;;;;;;;;;:27;2541:7;2522:27;;;;;;;;;;;;;;;;2515:34;;2406:151;;;;:::o;19677:104::-;10475:12;:10;:12::i;:::-;10459:28;;:12;;;;;;;;;;;:28;;;:55;;;;10502:12;:10;:12::i;:::-;10491:23;;:7;:5;:7::i;:::-;:23;;;10459:55;10451:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;19730:43:::1;19748:24;19766:4;19748:9;:24::i;:::-;19730:17;:43::i;:::-;19677:104::o:0;7964:201::-;7776:12;:10;:12::i;:::-;7765:23;;:7;:5;:7::i;:::-;:23;;;7757:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8073:1:::1;8053:22;;:8;:22;;::::0;8045:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;8129:28;8148:8;8129:18;:28::i;:::-;7964:201:::0;:::o;9528:24::-;;;;:::o;9995:46::-;;;;;;;;;;;;;;;;;;;;;;:::o;8501:98::-;8559:7;8590:1;8586;:5;;;;:::i;:::-;8579:12;;8501:98;;;;:::o;95:::-;148:7;175:10;168:17;;95:98;:::o;5456:380::-;5609:1;5592:19;;:5;:19;;;5584:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5690:1;5671:21;;:7;:21;;;5663:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5774:6;5744:11;:18;5756:5;5744:18;;;;;;;;;;;;;;;:27;5763:7;5744:27;;;;;;;;;;;;;;;:36;;;;5812:7;5796:32;;5805:5;5796:32;;;5821:6;5796:32;;;;;;:::i;:::-;;;;;;;;5456:380;;;:::o;5844:453::-;5979:24;6006:25;6016:5;6023:7;6006:9;:25::i;:::-;5979:52;;6066:17;6046:16;:37;6042:248;;6128:6;6108:16;:26;;6100:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6212:51;6221:5;6228:7;6256:6;6237:16;:25;6212:8;:51::i;:::-;6042:248;5968:329;5844:453;;;:::o;14184:3136::-;14332:1;14316:18;;:4;:18;;;14308:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;14427:1;14413:16;;:2;:16;;;14405:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;14507:13;:19;14521:4;14507:19;;;;;;;;;;;;;;;;;;;;;;;;;14506:20;14498:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;14614:1;14604:6;:11;14600:93;;14632:28;14648:4;14654:2;14658:1;14632:15;:28::i;:::-;14675:7;;14600:93;14751:14;;;;;;;;;;;14747:1406;;;14812:7;:5;:7::i;:::-;14804:15;;:4;:15;;;;:49;;;;;14846:7;:5;:7::i;:::-;14840:13;;:2;:13;;;;14804:49;:82;;;;;14875:11;;;;;;;;;;;14874:12;14804:82;14782:1360;;;14931:7;:5;:7::i;:::-;14925:13;;:2;:13;;;;:47;;;;;14956:15;;;;;;;;;;;14942:30;;:2;:30;;;;14925:47;:79;;;;;14990:13;;;;;;;;;;;14976:28;;:2;:28;;;;14925:79;14921:336;;;15074:12;15036:24;:35;15061:9;15036:35;;;;;;;;;;;;;;;;:50;15028:136;;;;;;;;;;;;:::i;:::-;;;;;;;;;15225:12;15187:24;:35;15212:9;15187:35;;;;;;;;;;;;;;;:50;;;;14921:336;15308:26;:32;15335:4;15308:32;;;;;;;;;;;;;;;;;;;;;;;;;:72;;;;;15345:31;:35;15377:2;15345:35;;;;;;;;;;;;;;;;;;;;;;;;;15344:36;15308:72;15304:823;;;15423:20;;15413:6;:30;;15405:108;;;;;;;;;;;;:::i;:::-;;;;;;;;;15573:9;;15544:25;15555:13;15565:2;15555:9;:13::i;:::-;15544:6;:10;;:25;;;;:::i;:::-;:38;;15536:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;15304:823;;;15711:26;:30;15738:2;15711:30;;;;;;;;;;;;;;;;;;;;;;;;;:72;;;;;15746:31;:37;15778:4;15746:37;;;;;;;;;;;;;;;;;;;;;;;;;15745:38;15711:72;15707:420;;;15826:20;;15816:6;:30;;15808:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;15707:420;;;15965:31;:35;15997:2;15965:35;;;;;;;;;;;;;;;;;;;;;;;;;15960:167;;16062:9;;16033:25;16044:13;16054:2;16044:9;:13::i;:::-;16033:6;:10;;:25;;;;:::i;:::-;:38;;16025:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;15960:167;15707:420;15304:823;14782:1360;14747:1406;16167:28;16198:24;16216:4;16198:9;:24::i;:::-;16167:55;;16233:12;16272:19;;16248:20;:43;;16233:58;;16320:7;:36;;;;;16345:11;;;;;;;;;;;16344:12;16320:36;:86;;;;;16374:26;:32;16401:4;16374:32;;;;;;;;;;;;;;;;;;;;;;;;;16373:33;16320:86;:128;;;;;16424:18;:24;16443:4;16424:24;;;;;;;;;;;;;;;;;;;;;;;;;16423:25;16320:128;:168;;;;;16466:18;:22;16485:2;16466:22;;;;;;;;;;;;;;;;;;;;;;;;;16465:23;16320:168;16302:302;;;16529:4;16515:11;;:18;;;;;;;;;;;;;;;;;;16548:10;:8;:10::i;:::-;16587:5;16573:11;;:19;;;;;;;;;;;;;;;;;;16302:302;16616:12;16632:11;;;;;;;;;;;16631:12;16616:27;;16764:18;:24;16783:4;16764:24;;;;;;;;;;;;;;;;;;;;;;;;;:64;;;;16806:18;:22;16825:2;16806:22;;;;;;;;;;;;;;;;;;;;;;;;;16764:64;:152;;;;16848:26;:32;16875:4;16848:32;;;;;;;;;;;;;;;;;;;;;;;;;16847:33;:68;;;;;16885:26;:30;16912:2;16885:30;;;;;;;;;;;;;;;;;;;;;;;;;16884:31;16847:68;16764:152;16746:197;;;16938:5;16928:15;;16746:197;16964:12;16995:7;16991:276;;;17026:29;17051:3;17026:20;17037:8;;17026:6;:10;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;17019:36;;17086:29;17111:3;17086:20;17097:8;;17086:6;:10;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;17070:13;:45;;;;17155:1;17148:4;:8;17144:74;;;17176:42;17192:4;17206;17213;17176:15;:42::i;:::-;17144:74;17251:4;17241:14;;;;;:::i;:::-;;;16991:276;17279:33;17295:4;17301:2;17305:6;17279:15;:33::i;:::-;14297:3023;;;;14184:3136;;;;:::o;8173:191::-;8247:16;8266:6;;;;;;;;;;;8247:25;;8292:8;8283:6;;:17;;;;;;;;;;;;;;;;;;8347:8;8316:40;;8337:8;8316:40;;;;;;;;;;;;8236:128;8173:191;:::o;17328:477::-;17396:21;17434:1;17420:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17396:40;;17465:4;17447;17452:1;17447:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;17491:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17481:4;17486:1;17481:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;17526:62;17543:4;17558:15;;;;;;;;;;;17576:11;17526:8;:62::i;:::-;17601:15;;;;;;;;;;;:66;;;17682:11;17708:1;17724:4;17751;17771:15;17601:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17385:420;17328:477;:::o;3771:671::-;3918:1;3902:18;;:4;:18;;;3894:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;3995:1;3981:16;;:2;:16;;;3973:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;4050:38;4071:4;4077:2;4081:6;4050:20;:38::i;:::-;4101:19;4123:9;:15;4133:4;4123:15;;;;;;;;;;;;;;;;4101:37;;4172:6;4157:11;:21;;4149:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;4289:6;4275:11;:20;4257:9;:15;4267:4;4257:15;;;;;;;;;;;;;;;:38;;;;4334:6;4317:9;:13;4327:2;4317:13;;;;;;;;;;;;;;;;:23;;;;;;;:::i;:::-;;;;;;;;4373:2;4358:26;;4367:4;4358:26;;;4377:6;4358:26;;;;;;:::i;:::-;;;;;;;;4397:37;4417:4;4423:2;4427:6;4397:19;:37::i;:::-;3883:559;3771:671;;;:::o;8395:98::-;8453:7;8484:1;8480;:5;;;;:::i;:::-;8473:12;;8395:98;;;;:::o;18190:1198::-;18230:23;18256:24;18274:4;18256:9;:24::i;:::-;18230:50;;18291:26;18320:20;18338:1;18320:13;;:17;;:20;;;;:::i;:::-;18291:49;;18371:20;18394:37;18412:18;18394:13;;:17;;:37;;;;:::i;:::-;18371:60;;18475:1;18456:15;:20;:42;;;;18497:1;18480:13;;:18;18456:42;18452:55;;;18500:7;;;;;18452:55;18539:19;;18521:15;:37;18517:80;;;18578:19;;18560:37;;18517:80;18667:23;18748:1;18732:13;;18711:18;18693:15;:36;;;;:::i;:::-;:52;;;;:::i;:::-;:56;;;;:::i;:::-;18667:82;;18760:26;18789:36;18809:15;18789;:19;;:36;;;;:::i;:::-;18760:65;;18846:25;18874:21;18846:49;;18908:37;18926:18;18908:17;:37::i;:::-;18966:18;18987:44;19013:17;18987:21;:25;;:44;;;;:::i;:::-;18966:65;;19042:14;19059:47;19092:13;;19059:28;19074:12;19059:10;:14;;:28;;;;:::i;:::-;:32;;:47;;;;:::i;:::-;19042:64;;19117:20;19153:6;19140:10;:19;;;;:::i;:::-;19117:42;;19196:1;19180:13;:17;;;;19218:12;;;;;;;;;;;19210:30;;:38;19241:6;19210:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19299:1;19281:15;:19;:39;;;;;19319:1;19304:12;:16;19281:39;19277:103;;;19336:44;19350:15;19367:12;19336:13;:44::i;:::-;19277:103;18219:1169;;;;;;;;;18190:1198;:::o;8607:98::-;8665:7;8696:1;8692;:5;;;;:::i;:::-;8685:12;;8607:98;;;;:::o;8713:::-;8771:7;8802:1;8798;:5;;;;:::i;:::-;8791:12;;8713:98;;;;:::o;6305:125::-;;;;:::o;6438:124::-;;;;:::o;17813:369::-;17896:62;17913:4;17928:15;;;;;;;;;;;17946:11;17896:8;:62::i;:::-;17971:15;;;;;;;;;;;:31;;;18010:9;18043:4;18063:11;18089:1;18105;18121:12;;;;;;;;;;;18148:15;17971:203;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;17813:369;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1397:75::-;1430:6;1463:2;1457:9;1447:19;;1397:75;:::o;1478:117::-;1587:1;1584;1577:12;1601:117;1710:1;1707;1700:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:118::-;3581:24;3599:5;3581:24;:::i;:::-;3576:3;3569:37;3494:118;;:::o;3618:222::-;3711:4;3749:2;3738:9;3734:18;3726:26;;3762:71;3830:1;3819:9;3815:17;3806:6;3762:71;:::i;:::-;3618:222;;;;:::o;3846:619::-;3923:6;3931;3939;3988:2;3976:9;3967:7;3963:23;3959:32;3956:119;;;3994:79;;:::i;:::-;3956:119;4114:1;4139:53;4184:7;4175:6;4164:9;4160:22;4139:53;:::i;:::-;4129:63;;4085:117;4241:2;4267:53;4312:7;4303:6;4292:9;4288:22;4267:53;:::i;:::-;4257:63;;4212:118;4369:2;4395:53;4440:7;4431:6;4420:9;4416:22;4395:53;:::i;:::-;4385:63;;4340:118;3846:619;;;;;:::o;4471:86::-;4506:7;4546:4;4539:5;4535:16;4524:27;;4471:86;;;:::o;4563:112::-;4646:22;4662:5;4646:22;:::i;:::-;4641:3;4634:35;4563:112;;:::o;4681:214::-;4770:4;4808:2;4797:9;4793:18;4785:26;;4821:67;4885:1;4874:9;4870:17;4861:6;4821:67;:::i;:::-;4681:214;;;;:::o;4901:329::-;4960:6;5009:2;4997:9;4988:7;4984:23;4980:32;4977:119;;;5015:79;;:::i;:::-;4977:119;5135:1;5160:53;5205:7;5196:6;5185:9;5181:22;5160:53;:::i;:::-;5150:63;;5106:117;4901:329;;;;:::o;5236:::-;5295:6;5344:2;5332:9;5323:7;5319:23;5315:32;5312:119;;;5350:79;;:::i;:::-;5312:119;5470:1;5495:53;5540:7;5531:6;5520:9;5516:22;5495:53;:::i;:::-;5485:63;;5441:117;5236:329;;;;:::o;5571:117::-;5680:1;5677;5670:12;5694:180;5742:77;5739:1;5732:88;5839:4;5836:1;5829:15;5863:4;5860:1;5853:15;5880:281;5963:27;5985:4;5963:27;:::i;:::-;5955:6;5951:40;6093:6;6081:10;6078:22;6057:18;6045:10;6042:34;6039:62;6036:88;;;6104:18;;:::i;:::-;6036:88;6144:10;6140:2;6133:22;5923:238;5880:281;;:::o;6167:129::-;6201:6;6228:20;;:::i;:::-;6218:30;;6257:33;6285:4;6277:6;6257:33;:::i;:::-;6167:129;;;:::o;6302:311::-;6379:4;6469:18;6461:6;6458:30;6455:56;;;6491:18;;:::i;:::-;6455:56;6541:4;6533:6;6529:17;6521:25;;6601:4;6595;6591:15;6583:23;;6302:311;;;:::o;6619:117::-;6728:1;6725;6718:12;6759:710;6855:5;6880:81;6896:64;6953:6;6896:64;:::i;:::-;6880:81;:::i;:::-;6871:90;;6981:5;7010:6;7003:5;6996:21;7044:4;7037:5;7033:16;7026:23;;7097:4;7089:6;7085:17;7077:6;7073:30;7126:3;7118:6;7115:15;7112:122;;;7145:79;;:::i;:::-;7112:122;7260:6;7243:220;7277:6;7272:3;7269:15;7243:220;;;7352:3;7381:37;7414:3;7402:10;7381:37;:::i;:::-;7376:3;7369:50;7448:4;7443:3;7439:14;7432:21;;7319:144;7303:4;7298:3;7294:14;7287:21;;7243:220;;;7247:21;6861:608;;6759:710;;;;;:::o;7492:370::-;7563:5;7612:3;7605:4;7597:6;7593:17;7589:27;7579:122;;7620:79;;:::i;:::-;7579:122;7737:6;7724:20;7762:94;7852:3;7844:6;7837:4;7829:6;7825:17;7762:94;:::i;:::-;7753:103;;7569:293;7492:370;;;;:::o;7868:116::-;7938:21;7953:5;7938:21;:::i;:::-;7931:5;7928:32;7918:60;;7974:1;7971;7964:12;7918:60;7868:116;:::o;7990:133::-;8033:5;8071:6;8058:20;8049:29;;8087:30;8111:5;8087:30;:::i;:::-;7990:133;;;;:::o;8129:678::-;8219:6;8227;8276:2;8264:9;8255:7;8251:23;8247:32;8244:119;;;8282:79;;:::i;:::-;8244:119;8430:1;8419:9;8415:17;8402:31;8460:18;8452:6;8449:30;8446:117;;;8482:79;;:::i;:::-;8446:117;8587:78;8657:7;8648:6;8637:9;8633:22;8587:78;:::i;:::-;8577:88;;8373:302;8714:2;8740:50;8782:7;8773:6;8762:9;8758:22;8740:50;:::i;:::-;8730:60;;8685:115;8129:678;;;;;:::o;8813:118::-;8900:24;8918:5;8900:24;:::i;:::-;8895:3;8888:37;8813:118;;:::o;8937:222::-;9030:4;9068:2;9057:9;9053:18;9045:26;;9081:71;9149:1;9138:9;9134:17;9125:6;9081:71;:::i;:::-;8937:222;;;;:::o;9165:468::-;9230:6;9238;9287:2;9275:9;9266:7;9262:23;9258:32;9255:119;;;9293:79;;:::i;:::-;9255:119;9413:1;9438:53;9483:7;9474:6;9463:9;9459:22;9438:53;:::i;:::-;9428:63;;9384:117;9540:2;9566:50;9608:7;9599:6;9588:9;9584:22;9566:50;:::i;:::-;9556:60;;9511:115;9165:468;;;;;:::o;9639:474::-;9707:6;9715;9764:2;9752:9;9743:7;9739:23;9735:32;9732:119;;;9770:79;;:::i;:::-;9732:119;9890:1;9915:53;9960:7;9951:6;9940:9;9936:22;9915:53;:::i;:::-;9905:63;;9861:117;10017:2;10043:53;10088:7;10079:6;10068:9;10064:22;10043:53;:::i;:::-;10033:63;;9988:118;9639:474;;;;;:::o;10119:180::-;10167:77;10164:1;10157:88;10264:4;10261:1;10254:15;10288:4;10285:1;10278:15;10305:320;10349:6;10386:1;10380:4;10376:12;10366:22;;10433:1;10427:4;10423:12;10454:18;10444:81;;10510:4;10502:6;10498:17;10488:27;;10444:81;10572:2;10564:6;10561:14;10541:18;10538:38;10535:84;;10591:18;;:::i;:::-;10535:84;10356:269;10305:320;;;:::o;10631:236::-;10771:34;10767:1;10759:6;10755:14;10748:58;10840:19;10835:2;10827:6;10823:15;10816:44;10631:236;:::o;10873:366::-;11015:3;11036:67;11100:2;11095:3;11036:67;:::i;:::-;11029:74;;11112:93;11201:3;11112:93;:::i;:::-;11230:2;11225:3;11221:12;11214:19;;10873:366;;;:::o;11245:419::-;11411:4;11449:2;11438:9;11434:18;11426:26;;11498:9;11492:4;11488:20;11484:1;11473:9;11469:17;11462:47;11526:131;11652:4;11526:131;:::i;:::-;11518:139;;11245:419;;;:::o;11670:143::-;11727:5;11758:6;11752:13;11743:22;;11774:33;11801:5;11774:33;:::i;:::-;11670:143;;;;:::o;11819:351::-;11889:6;11938:2;11926:9;11917:7;11913:23;11909:32;11906:119;;;11944:79;;:::i;:::-;11906:119;12064:1;12089:64;12145:7;12136:6;12125:9;12121:22;12089:64;:::i;:::-;12079:74;;12035:128;11819:351;;;;:::o;12176:332::-;12297:4;12335:2;12324:9;12320:18;12312:26;;12348:71;12416:1;12405:9;12401:17;12392:6;12348:71;:::i;:::-;12429:72;12497:2;12486:9;12482:18;12473:6;12429:72;:::i;:::-;12176:332;;;;;:::o;12514:85::-;12559:7;12588:5;12577:16;;12514:85;;;:::o;12605:60::-;12633:3;12654:5;12647:12;;12605:60;;;:::o;12671:158::-;12729:9;12762:61;12780:42;12789:32;12815:5;12789:32;:::i;:::-;12780:42;:::i;:::-;12762:61;:::i;:::-;12749:74;;12671:158;;;:::o;12835:147::-;12930:45;12969:5;12930:45;:::i;:::-;12925:3;12918:58;12835:147;;:::o;12988:807::-;13237:4;13275:3;13264:9;13260:19;13252:27;;13289:71;13357:1;13346:9;13342:17;13333:6;13289:71;:::i;:::-;13370:72;13438:2;13427:9;13423:18;13414:6;13370:72;:::i;:::-;13452:80;13528:2;13517:9;13513:18;13504:6;13452:80;:::i;:::-;13542;13618:2;13607:9;13603:18;13594:6;13542:80;:::i;:::-;13632:73;13700:3;13689:9;13685:19;13676:6;13632:73;:::i;:::-;13715;13783:3;13772:9;13768:19;13759:6;13715:73;:::i;:::-;12988:807;;;;;;;;;:::o;13801:143::-;13858:5;13889:6;13883:13;13874:22;;13905:33;13932:5;13905:33;:::i;:::-;13801:143;;;;:::o;13950:663::-;14038:6;14046;14054;14103:2;14091:9;14082:7;14078:23;14074:32;14071:119;;;14109:79;;:::i;:::-;14071:119;14229:1;14254:64;14310:7;14301:6;14290:9;14286:22;14254:64;:::i;:::-;14244:74;;14200:128;14367:2;14393:64;14449:7;14440:6;14429:9;14425:22;14393:64;:::i;:::-;14383:74;;14338:129;14506:2;14532:64;14588:7;14579:6;14568:9;14564:22;14532:64;:::i;:::-;14522:74;;14477:129;13950:663;;;;;:::o;14619:180::-;14667:77;14664:1;14657:88;14764:4;14761:1;14754:15;14788:4;14785:1;14778:15;14805:305;14845:3;14864:20;14882:1;14864:20;:::i;:::-;14859:25;;14898:20;14916:1;14898:20;:::i;:::-;14893:25;;15052:1;14984:66;14980:74;14977:1;14974:81;14971:107;;;15058:18;;:::i;:::-;14971:107;15102:1;15099;15095:9;15088:16;;14805:305;;;;:::o;15116:182::-;15256:34;15252:1;15244:6;15240:14;15233:58;15116:182;:::o;15304:366::-;15446:3;15467:67;15531:2;15526:3;15467:67;:::i;:::-;15460:74;;15543:93;15632:3;15543:93;:::i;:::-;15661:2;15656:3;15652:12;15645:19;;15304:366;;;:::o;15676:419::-;15842:4;15880:2;15869:9;15865:18;15857:26;;15929:9;15923:4;15919:20;15915:1;15904:9;15900:17;15893:47;15957:131;16083:4;15957:131;:::i;:::-;15949:139;;15676:419;;;:::o;16101:178::-;16241:30;16237:1;16229:6;16225:14;16218:54;16101:178;:::o;16285:366::-;16427:3;16448:67;16512:2;16507:3;16448:67;:::i;:::-;16441:74;;16524:93;16613:3;16524:93;:::i;:::-;16642:2;16637:3;16633:12;16626:19;;16285:366;;;:::o;16657:419::-;16823:4;16861:2;16850:9;16846:18;16838:26;;16910:9;16904:4;16900:20;16896:1;16885:9;16881:17;16874:47;16938:131;17064:4;16938:131;:::i;:::-;16930:139;;16657:419;;;:::o;17082:180::-;17130:77;17127:1;17120:88;17227:4;17224:1;17217:15;17251:4;17248:1;17241:15;17268:233;17307:3;17330:24;17348:5;17330:24;:::i;:::-;17321:33;;17376:66;17369:5;17366:77;17363:103;;17446:18;;:::i;:::-;17363:103;17493:1;17486:5;17482:13;17475:20;;17268:233;;;:::o;17507:348::-;17547:7;17570:20;17588:1;17570:20;:::i;:::-;17565:25;;17604:20;17622:1;17604:20;:::i;:::-;17599:25;;17792:1;17724:66;17720:74;17717:1;17714:81;17709:1;17702:9;17695:17;17691:105;17688:131;;;17799:18;;:::i;:::-;17688:131;17847:1;17844;17840:9;17829:20;;17507:348;;;;:::o;17861:180::-;17909:77;17906:1;17899:88;18006:4;18003:1;17996:15;18030:4;18027:1;18020:15;18047:185;18087:1;18104:20;18122:1;18104:20;:::i;:::-;18099:25;;18138:20;18156:1;18138:20;:::i;:::-;18133:25;;18177:1;18167:35;;18182:18;;:::i;:::-;18167:35;18224:1;18221;18217:9;18212:14;;18047:185;;;;:::o;18238:243::-;18378:34;18374:1;18366:6;18362:14;18355:58;18447:26;18442:2;18434:6;18430:15;18423:51;18238:243;:::o;18487:366::-;18629:3;18650:67;18714:2;18709:3;18650:67;:::i;:::-;18643:74;;18726:93;18815:3;18726:93;:::i;:::-;18844:2;18839:3;18835:12;18828:19;;18487:366;;;:::o;18859:419::-;19025:4;19063:2;19052:9;19048:18;19040:26;;19112:9;19106:4;19102:20;19098:1;19087:9;19083:17;19076:47;19140:131;19266:4;19140:131;:::i;:::-;19132:139;;18859:419;;;:::o;19284:242::-;19424:34;19420:1;19412:6;19408:14;19401:58;19493:25;19488:2;19480:6;19476:15;19469:50;19284:242;:::o;19532:366::-;19674:3;19695:67;19759:2;19754:3;19695:67;:::i;:::-;19688:74;;19771:93;19860:3;19771:93;:::i;:::-;19889:2;19884:3;19880:12;19873:19;;19532:366;;;:::o;19904:419::-;20070:4;20108:2;20097:9;20093:18;20085:26;;20157:9;20151:4;20147:20;20143:1;20132:9;20128:17;20121:47;20185:131;20311:4;20185:131;:::i;:::-;20177:139;;19904:419;;;:::o;20329:224::-;20469:34;20465:1;20457:6;20453:14;20446:58;20538:7;20533:2;20525:6;20521:15;20514:32;20329:224;:::o;20559:366::-;20701:3;20722:67;20786:2;20781:3;20722:67;:::i;:::-;20715:74;;20798:93;20887:3;20798:93;:::i;:::-;20916:2;20911:3;20907:12;20900:19;;20559:366;;;:::o;20931:419::-;21097:4;21135:2;21124:9;21120:18;21112:26;;21184:9;21178:4;21174:20;21170:1;21159:9;21155:17;21148:47;21212:131;21338:4;21212:131;:::i;:::-;21204:139;;20931:419;;;:::o;21356:225::-;21496:34;21492:1;21484:6;21480:14;21473:58;21565:8;21560:2;21552:6;21548:15;21541:33;21356:225;:::o;21587:366::-;21729:3;21750:67;21814:2;21809:3;21750:67;:::i;:::-;21743:74;;21826:93;21915:3;21826:93;:::i;:::-;21944:2;21939:3;21935:12;21928:19;;21587:366;;;:::o;21959:419::-;22125:4;22163:2;22152:9;22148:18;22140:26;;22212:9;22206:4;22202:20;22198:1;22187:9;22183:17;22176:47;22240:131;22366:4;22240:131;:::i;:::-;22232:139;;21959:419;;;:::o;22384:191::-;22424:4;22444:20;22462:1;22444:20;:::i;:::-;22439:25;;22478:20;22496:1;22478:20;:::i;:::-;22473:25;;22517:1;22514;22511:8;22508:34;;;22522:18;;:::i;:::-;22508:34;22567:1;22564;22560:9;22552:17;;22384:191;;;;:::o;22581:223::-;22721:34;22717:1;22709:6;22705:14;22698:58;22790:6;22785:2;22777:6;22773:15;22766:31;22581:223;:::o;22810:366::-;22952:3;22973:67;23037:2;23032:3;22973:67;:::i;:::-;22966:74;;23049:93;23138:3;23049:93;:::i;:::-;23167:2;23162:3;23158:12;23151:19;;22810:366;;;:::o;23182:419::-;23348:4;23386:2;23375:9;23371:18;23363:26;;23435:9;23429:4;23425:20;23421:1;23410:9;23406:17;23399:47;23463:131;23589:4;23463:131;:::i;:::-;23455:139;;23182:419;;;:::o;23607:221::-;23747:34;23743:1;23735:6;23731:14;23724:58;23816:4;23811:2;23803:6;23799:15;23792:29;23607:221;:::o;23834:366::-;23976:3;23997:67;24061:2;24056:3;23997:67;:::i;:::-;23990:74;;24073:93;24162:3;24073:93;:::i;:::-;24191:2;24186:3;24182:12;24175:19;;23834:366;;;:::o;24206:419::-;24372:4;24410:2;24399:9;24395:18;24387:26;;24459:9;24453:4;24449:20;24445:1;24434:9;24430:17;24423:47;24487:131;24613:4;24487:131;:::i;:::-;24479:139;;24206:419;;;:::o;24631:179::-;24771:31;24767:1;24759:6;24755:14;24748:55;24631:179;:::o;24816:366::-;24958:3;24979:67;25043:2;25038:3;24979:67;:::i;:::-;24972:74;;25055:93;25144:3;25055:93;:::i;:::-;25173:2;25168:3;25164:12;25157:19;;24816:366;;;:::o;25188:419::-;25354:4;25392:2;25381:9;25377:18;25369:26;;25441:9;25435:4;25431:20;25427:1;25416:9;25412:17;25405:47;25469:131;25595:4;25469:131;:::i;:::-;25461:139;;25188:419;;;:::o;25613:242::-;25753:34;25749:1;25741:6;25737:14;25730:58;25822:25;25817:2;25809:6;25805:15;25798:50;25613:242;:::o;25861:366::-;26003:3;26024:67;26088:2;26083:3;26024:67;:::i;:::-;26017:74;;26100:93;26189:3;26100:93;:::i;:::-;26218:2;26213:3;26209:12;26202:19;;25861:366;;;:::o;26233:419::-;26399:4;26437:2;26426:9;26422:18;26414:26;;26486:9;26480:4;26476:20;26472:1;26461:9;26457:17;26450:47;26514:131;26640:4;26514:131;:::i;:::-;26506:139;;26233:419;;;:::o;26658:240::-;26798:34;26794:1;26786:6;26782:14;26775:58;26867:23;26862:2;26854:6;26850:15;26843:48;26658:240;:::o;26904:366::-;27046:3;27067:67;27131:2;27126:3;27067:67;:::i;:::-;27060:74;;27143:93;27232:3;27143:93;:::i;:::-;27261:2;27256:3;27252:12;27245:19;;26904:366;;;:::o;27276:419::-;27442:4;27480:2;27469:9;27465:18;27457:26;;27529:9;27523:4;27519:20;27515:1;27504:9;27500:17;27493:47;27557:131;27683:4;27557:131;:::i;:::-;27549:139;;27276:419;;;:::o;27701:243::-;27841:34;27837:1;27829:6;27825:14;27818:58;27910:26;27905:2;27897:6;27893:15;27886:51;27701:243;:::o;27950:366::-;28092:3;28113:67;28177:2;28172:3;28113:67;:::i;:::-;28106:74;;28189:93;28278:3;28189:93;:::i;:::-;28307:2;28302:3;28298:12;28291:19;;27950:366;;;:::o;28322:419::-;28488:4;28526:2;28515:9;28511:18;28503:26;;28575:9;28569:4;28565:20;28561:1;28550:9;28546:17;28539:47;28603:131;28729:4;28603:131;:::i;:::-;28595:139;;28322:419;;;:::o;28747:297::-;28887:34;28883:1;28875:6;28871:14;28864:58;28956:34;28951:2;28943:6;28939:15;28932:59;29025:11;29020:2;29012:6;29008:15;29001:36;28747:297;:::o;29050:366::-;29192:3;29213:67;29277:2;29272:3;29213:67;:::i;:::-;29206:74;;29289:93;29378:3;29289:93;:::i;:::-;29407:2;29402:3;29398:12;29391:19;;29050:366;;;:::o;29422:419::-;29588:4;29626:2;29615:9;29611:18;29603:26;;29675:9;29669:4;29665:20;29661:1;29650:9;29646:17;29639:47;29703:131;29829:4;29703:131;:::i;:::-;29695:139;;29422:419;;;:::o;29847:289::-;29987:34;29983:1;29975:6;29971:14;29964:58;30056:34;30051:2;30043:6;30039:15;30032:59;30125:3;30120:2;30112:6;30108:15;30101:28;29847:289;:::o;30142:366::-;30284:3;30305:67;30369:2;30364:3;30305:67;:::i;:::-;30298:74;;30381:93;30470:3;30381:93;:::i;:::-;30499:2;30494:3;30490:12;30483:19;;30142:366;;;:::o;30514:419::-;30680:4;30718:2;30707:9;30703:18;30695:26;;30767:9;30761:4;30757:20;30753:1;30742:9;30738:17;30731:47;30795:131;30921:4;30795:131;:::i;:::-;30787:139;;30514:419;;;:::o;30939:181::-;31079:33;31075:1;31067:6;31063:14;31056:57;30939:181;:::o;31126:366::-;31268:3;31289:67;31353:2;31348:3;31289:67;:::i;:::-;31282:74;;31365:93;31454:3;31365:93;:::i;:::-;31483:2;31478:3;31474:12;31467:19;;31126:366;;;:::o;31498:419::-;31664:4;31702:2;31691:9;31687:18;31679:26;;31751:9;31745:4;31741:20;31737:1;31726:9;31722:17;31715:47;31779:131;31905:4;31779:131;:::i;:::-;31771:139;;31498:419;;;:::o;31923:290::-;32063:34;32059:1;32051:6;32047:14;32040:58;32132:34;32127:2;32119:6;32115:15;32108:59;32201:4;32196:2;32188:6;32184:15;32177:29;31923:290;:::o;32219:366::-;32361:3;32382:67;32446:2;32441:3;32382:67;:::i;:::-;32375:74;;32458:93;32547:3;32458:93;:::i;:::-;32576:2;32571:3;32567:12;32560:19;;32219:366;;;:::o;32591:419::-;32757:4;32795:2;32784:9;32780:18;32772:26;;32844:9;32838:4;32834:20;32830:1;32819:9;32815:17;32808:47;32872:131;32998:4;32872:131;:::i;:::-;32864:139;;32591:419;;;:::o;33016:114::-;33083:6;33117:5;33111:12;33101:22;;33016:114;;;:::o;33136:184::-;33235:11;33269:6;33264:3;33257:19;33309:4;33304:3;33300:14;33285:29;;33136:184;;;;:::o;33326:132::-;33393:4;33416:3;33408:11;;33446:4;33441:3;33437:14;33429:22;;33326:132;;;:::o;33464:108::-;33541:24;33559:5;33541:24;:::i;:::-;33536:3;33529:37;33464:108;;:::o;33578:179::-;33647:10;33668:46;33710:3;33702:6;33668:46;:::i;:::-;33746:4;33741:3;33737:14;33723:28;;33578:179;;;;:::o;33763:113::-;33833:4;33865;33860:3;33856:14;33848:22;;33763:113;;;:::o;33912:732::-;34031:3;34060:54;34108:5;34060:54;:::i;:::-;34130:86;34209:6;34204:3;34130:86;:::i;:::-;34123:93;;34240:56;34290:5;34240:56;:::i;:::-;34319:7;34350:1;34335:284;34360:6;34357:1;34354:13;34335:284;;;34436:6;34430:13;34463:63;34522:3;34507:13;34463:63;:::i;:::-;34456:70;;34549:60;34602:6;34549:60;:::i;:::-;34539:70;;34395:224;34382:1;34379;34375:9;34370:14;;34335:284;;;34339:14;34635:3;34628:10;;34036:608;;;33912:732;;;;:::o;34650:831::-;34913:4;34951:3;34940:9;34936:19;34928:27;;34965:71;35033:1;35022:9;35018:17;35009:6;34965:71;:::i;:::-;35046:80;35122:2;35111:9;35107:18;35098:6;35046:80;:::i;:::-;35173:9;35167:4;35163:20;35158:2;35147:9;35143:18;35136:48;35201:108;35304:4;35295:6;35201:108;:::i;:::-;35193:116;;35319:72;35387:2;35376:9;35372:18;35363:6;35319:72;:::i;:::-;35401:73;35469:3;35458:9;35454:19;35445:6;35401:73;:::i;:::-;34650:831;;;;;;;;:::o;35487:224::-;35627:34;35623:1;35615:6;35611:14;35604:58;35696:7;35691:2;35683:6;35679:15;35672:32;35487:224;:::o;35717:366::-;35859:3;35880:67;35944:2;35939:3;35880:67;:::i;:::-;35873:74;;35956:93;36045:3;35956:93;:::i;:::-;36074:2;36069:3;36065:12;36058:19;;35717:366;;;:::o;36089:419::-;36255:4;36293:2;36282:9;36278:18;36270:26;;36342:9;36336:4;36332:20;36328:1;36317:9;36313:17;36306:47;36370:131;36496:4;36370:131;:::i;:::-;36362:139;;36089:419;;;:::o;36514:222::-;36654:34;36650:1;36642:6;36638:14;36631:58;36723:5;36718:2;36710:6;36706:15;36699:30;36514:222;:::o;36742:366::-;36884:3;36905:67;36969:2;36964:3;36905:67;:::i;:::-;36898:74;;36981:93;37070:3;36981:93;:::i;:::-;37099:2;37094:3;37090:12;37083:19;;36742:366;;;:::o;37114:419::-;37280:4;37318:2;37307:9;37303:18;37295:26;;37367:9;37361:4;37357:20;37353:1;37342:9;37338:17;37331:47;37395:131;37521:4;37395:131;:::i;:::-;37387:139;;37114:419;;;:::o;37539:225::-;37679:34;37675:1;37667:6;37663:14;37656:58;37748:8;37743:2;37735:6;37731:15;37724:33;37539:225;:::o;37770:366::-;37912:3;37933:67;37997:2;37992:3;37933:67;:::i;:::-;37926:74;;38009:93;38098:3;38009:93;:::i;:::-;38127:2;38122:3;38118:12;38111:19;;37770:366;;;:::o;38142:419::-;38308:4;38346:2;38335:9;38331:18;38323:26;;38395:9;38389:4;38385:20;38381:1;38370:9;38366:17;38359:47;38423:131;38549:4;38423:131;:::i;:::-;38415:139;;38142:419;;;:::o

Swarm Source

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