ETH Price: $2,264.68 (-5.00%)

Token

EVERY (THING)
 

Overview

Max Total Supply

10,000,000,000 THING

Holders

172

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
2,354.964118354 THING

Value
$0.00
0x7373586a2c16b89c7c35b43f885953316e0cbd5c
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:
EVERYTHING

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: Unlicensed

/**


        Who doesn’t want to own EVERYTHING and get reflections of EVERYTHING!
        No DEV TAX! Punish sellers! Kill everything and sell everything to pump EVERYTHING!
    
         https://medium.com/@everythingkillererc/im-thing-stop-trading-everything-now-e8584b65647
         https://t.me/EVERYTHINGERC
         https://everythingkiller.com/


*/

//
pragma solidity ^0.8.9;

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

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );
}
interface IUniswapV2Factory {
    function createPair(address tokenA, address tokenB)
        external
        returns (address pair);
}

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
    );
}
library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }

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

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

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

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

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

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

}
contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

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

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

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

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

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


/**


*/


}
contract EVERYTHING is Context, IERC20, Ownable {

    using SafeMath for uint256;

    string private constant _name = "EVERY";
    string private constant _symbol = "THING";
    uint8 private constant _decimals = 9;

    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 10000000000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _redisFeeOnBuy = 0;
    uint256 private _taxFeeOnBuy = 0;
    uint256 private _redisFeeOnSell = 5;
    uint256 private _taxFeeOnSell = 0;

    //Original Fee
    uint256 private _redisFee = _redisFeeOnSell;
    uint256 private _taxFee = _taxFeeOnSell;

    uint256 private _previousredisFee = _redisFee;
    uint256 private _previoustaxFee = _taxFee;

    mapping(address => bool) public bots; mapping (address => uint256) public _buyMap;
    address payable private _developmentAddress = payable(0xD252faFcf5743f288Db4Ec0881600D55a507Afd1);
    address payable private _marketingAddress = payable(0xD252faFcf5743f288Db4Ec0881600D55a507Afd1);

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

    bool private tradingOpen = false;
    bool private inSwap = false;
    bool private swapEnabled = true;

    uint256 public _maxTxAmount = 100000000 * 10**9;
    uint256 public _maxWalletSize = 100000000 * 10**9;
    uint256 public _swapTokensAtAmount = 10000000 * 10**9;

    event MaxTxAmountUpdated(uint256 _maxTxAmount);

    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor() {
        _rOwned[_msgSender()] = _rTotal;

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);//
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_developmentAddress] = true;
        _isExcludedFromFee[_marketingAddress] = true;

        emit Transfer(address(0), _msgSender(), _tTotal);
    }

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

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

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

    function totalSupply() public pure override returns (uint256) {
        return _tTotal;
    }

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

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

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(
            sender,
            _msgSender(),
            _allowances[sender][_msgSender()].sub(
                amount,
                "ERC20: transfer amount exceeds allowance"
            )
        );
        return true;
    }

    function tokenFromReflection(uint256 rAmount)
        private
        view
        returns (uint256)
    {
        require(
            rAmount <= _rTotal,
            "Amount must be less than total reflections"
        );
        uint256 currentRate = _getRate();
        return rAmount.div(currentRate);
    }

    function removeAllFee() private {
        if (_redisFee == 0 && _taxFee == 0) return;

        _previousredisFee = _redisFee;
        _previoustaxFee = _taxFee;

        _redisFee = 0;
        _taxFee = 0;
    }

    function restoreAllFee() private {
        _redisFee = _previousredisFee;
        _taxFee = _previoustaxFee;
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");

        if (from != owner() && to != owner()) {

            //Trade start check
            if (!tradingOpen) {
                require(from == owner(), "TOKEN: This account cannot send tokens until trading is enabled");
            }

            require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit");
            require(!bots[from] && !bots[to], "TOKEN: Your account is blacklisted!");

            if(to != uniswapV2Pair) {
                require(balanceOf(to) + amount <= _maxWalletSize, "TOKEN: Balance exceeds wallet size!");
            }

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

            if(contractTokenBalance >= _maxTxAmount)
            {
                contractTokenBalance = _maxTxAmount;
            }

            if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }

        bool takeFee = true;

        //Transfer Tokens
        if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapV2Pair && to != uniswapV2Pair)) {
            takeFee = false;
        } else {

            //Set Fee for Buys
            if(from == uniswapV2Pair && to != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnBuy;
                _taxFee = _taxFeeOnBuy;
            }

            //Set Fee for Sells
            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnSell;
                _taxFee = _taxFeeOnSell;
            }

        }

        _tokenTransfer(from, to, amount, takeFee);
    }

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function sendETHToFee(uint256 amount) private {
        _marketingAddress.transfer(amount);
    }

    function openTrading() public onlyOwner(){
    require(!tradingOpen, "trading is already open");
    tradingOpen = true;
    }
    

    function manualswap() external {
        require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress);
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }

    function manualsend() external {
        require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }

    function blockBot(address bot) public onlyOwner {
        require(bot != address(uniswapV2Pair));
        require(bot != address(uniswapV2Router));

        bots[bot] = true;
    }

    function unblockBot(address notbot) public onlyOwner {
        bots[notbot] = false;
    }

    function setMarketingWallet(address payable newMarketingWallet) public onlyOwner{
        _marketingAddress = newMarketingWallet;
    }

    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (!takeFee) removeAllFee();
        _transferStandard(sender, recipient, amount);
        if (!takeFee) restoreAllFee();
    }

    function _transferStandard(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tTeam
        ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeTeam(tTeam);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _takeTeam(uint256 tTeam) private {
        uint256 currentRate = _getRate();
        uint256 rTeam = tTeam.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
    }

    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

    receive() external payable {}

    function _getValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) =
            _getTValues(tAmount, _redisFee, _taxFee);
        uint256 currentRate = _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) =
            _getRValues(tAmount, tFee, tTeam, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }

    function _getTValues(
        uint256 tAmount,
        uint256 redisFee,
        uint256 taxFee
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = tAmount.mul(redisFee).div(100);
        uint256 tTeam = tAmount.mul(taxFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
        return (tTransferAmount, tFee, tTeam);
    }

    function _getRValues(
        uint256 tAmount,
        uint256 tFee,
        uint256 tTeam,
        uint256 currentRate
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTeam = tTeam.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam);
        return (rAmount, rTransferAmount, rFee);
    }

    function _getRate() private view returns (uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }

    function _getCurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

    function setFee(uint256 redisFeeOnBuy, uint256 redisFeeOnSell, uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner {
        //max fees should not exceed 12%
        require(redisFeeOnBuy + taxFeeOnBuy <= 12);
        require(redisFeeOnSell + taxFeeOnSell <= 12);

        _redisFeeOnBuy = redisFeeOnBuy;
        _redisFeeOnSell = redisFeeOnSell;
        _taxFeeOnBuy = taxFeeOnBuy;
        _taxFeeOnSell = taxFeeOnSell;
    }

    function setMinSwapTokensThreshold(uint256 swapTokensAtAmount) public onlyOwner {
        _swapTokensAtAmount = swapTokensAtAmount;
    }

    function toggleSwap(bool _swapEnabled) public onlyOwner {
        swapEnabled = _swapEnabled;
    }

    function setMaxTxnAmount(uint256 maxTxAmount) public onlyOwner {
        require(maxTxAmount >= 50000000 * 10**9, "Max TX amount must be bigger than 0.5%!");
        _maxTxAmount = maxTxAmount;
    }

    function setMaxWalletSize(uint256 maxWalletSize) public onlyOwner {
        require(maxWalletSize >= 100000000 * 10**9, "Wallet size must be bigger than 1%!");
        _maxWalletSize = maxWalletSize;
    }

    function excludeMultipleAccountsFromFees(address[] calldata accounts, bool excluded) public onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFromFee[accounts[i]] = excluded;
        }
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_buyMap","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":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"bot","type":"address"}],"name":"blockBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"redisFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"redisFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newMarketingWallet","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","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":[{"internalType":"address","name":"notbot","type":"address"}],"name":"unblockBot","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"},{"stateMutability":"payable","type":"receive"}]

6080604052678ac7230489e800006000196200001c91906200075c565b6000196200002b9190620007c3565b600655600060085560006009556005600a556000600b55600a54600c55600b54600d55600c54600e55600d54600f5573d252fafcf5743f288db4ec0881600d55a507afd1601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073d252fafcf5743f288db4ec0881600d55a507afd1601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601560146101000a81548160ff02191690831515021790555060006015806101000a81548160ff0219169083151502179055506001601560166101000a81548160ff02191690831515021790555067016345785d8a000060165567016345785d8a0000601755662386f26fc100006018553480156200018457600080fd5b50600062000197620006f260201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600654600260006200024c620006f260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200032b57600080fd5b505afa15801562000340573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000366919062000868565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620003c957600080fd5b505afa158015620003de573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000404919062000868565b6040518363ffffffff1660e01b815260040162000423929190620008ab565b602060405180830381600087803b1580156200043e57600080fd5b505af115801562000453573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000479919062000868565b601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160056000620004cf620006fa60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200067c620006f260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef678ac7230489e80000604051620006e39190620008e9565b60405180910390a35062000906565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620007698262000723565b9150620007768362000723565b9250826200078957620007886200072d565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620007d08262000723565b9150620007dd8362000723565b925082821015620007f357620007f262000794565b5b828203905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620008308262000803565b9050919050565b620008428162000823565b81146200084e57600080fd5b50565b600081519050620008628162000837565b92915050565b600060208284031215620008815762000880620007fe565b5b6000620008918482850162000851565b91505092915050565b620008a58162000823565b82525050565b6000604082019050620008c260008301856200089a565b620008d160208301846200089a565b9392505050565b620008e38162000723565b82525050565b6000602082019050620009006000830184620008d8565b92915050565b61410980620009166000396000f3fe6080604052600436106101dc5760003560e01c80637d1db4a511610102578063bfd7928411610095578063dd62ed3e11610064578063dd62ed3e1461067f578063e70ef8a4146106bc578063ea1644d5146106e5578063f2fde38b1461070e576101e3565b8063bfd79284146105eb578063c3c8cd8014610628578063c492f0461461063f578063c9567bf914610668576101e3565b806395d89b41116100d157806395d89b411461053157806398a5c3151461055c578063a2a957bb14610585578063a9059cbb146105ae576101e3565b80637d1db4a5146104735780637f2feddc1461049e5780638da5cb5b146104db5780638f9a55c014610506576101e3565b806349bd5a5e1161017a5780636fc3eaec116101495780636fc3eaec146103df57806370a08231146103f6578063715018a61461043357806374010ece1461044a576101e3565b806349bd5a5e146103395780635d098b38146103645780636b9990531461038d5780636d8aa8f8146103b6576101e3565b806318160ddd116101b657806318160ddd1461027b57806323b872dd146102a65780632fd689e3146102e3578063313ce5671461030e576101e3565b806306fdde03146101e8578063095ea7b3146102135780631694505e14610250576101e3565b366101e357005b600080fd5b3480156101f457600080fd5b506101fd610737565b60405161020a9190612eca565b60405180910390f35b34801561021f57600080fd5b5061023a60048036038101906102359190612f8a565b610774565b6040516102479190612fe5565b60405180910390f35b34801561025c57600080fd5b50610265610792565b604051610272919061305f565b60405180910390f35b34801561028757600080fd5b506102906107b8565b60405161029d9190613089565b60405180910390f35b3480156102b257600080fd5b506102cd60048036038101906102c891906130a4565b6107c8565b6040516102da9190612fe5565b60405180910390f35b3480156102ef57600080fd5b506102f86108a1565b6040516103059190613089565b60405180910390f35b34801561031a57600080fd5b506103236108a7565b6040516103309190613113565b60405180910390f35b34801561034557600080fd5b5061034e6108b0565b60405161035b919061313d565b60405180910390f35b34801561037057600080fd5b5061038b60048036038101906103869190613196565b6108d6565b005b34801561039957600080fd5b506103b460048036038101906103af91906131c3565b6109af565b005b3480156103c257600080fd5b506103dd60048036038101906103d8919061321c565b610a9f565b005b3480156103eb57600080fd5b506103f4610b51565b005b34801561040257600080fd5b5061041d600480360381019061041891906131c3565b610c22565b60405161042a9190613089565b60405180910390f35b34801561043f57600080fd5b50610448610c73565b005b34801561045657600080fd5b50610471600480360381019061046c9190613249565b610dc6565b005b34801561047f57600080fd5b50610488610eaf565b6040516104959190613089565b60405180910390f35b3480156104aa57600080fd5b506104c560048036038101906104c091906131c3565b610eb5565b6040516104d29190613089565b60405180910390f35b3480156104e757600080fd5b506104f0610ecd565b6040516104fd919061313d565b60405180910390f35b34801561051257600080fd5b5061051b610ef6565b6040516105289190613089565b60405180910390f35b34801561053d57600080fd5b50610546610efc565b6040516105539190612eca565b60405180910390f35b34801561056857600080fd5b50610583600480360381019061057e9190613249565b610f39565b005b34801561059157600080fd5b506105ac60048036038101906105a79190613276565b610fd8565b005b3480156105ba57600080fd5b506105d560048036038101906105d09190612f8a565b6110c1565b6040516105e29190612fe5565b60405180910390f35b3480156105f757600080fd5b50610612600480360381019061060d91906131c3565b6110df565b60405161061f9190612fe5565b60405180910390f35b34801561063457600080fd5b5061063d6110ff565b005b34801561064b57600080fd5b5061066660048036038101906106619190613342565b6111d8565b005b34801561067457600080fd5b5061067d611312565b005b34801561068b57600080fd5b506106a660048036038101906106a191906133a2565b611414565b6040516106b39190613089565b60405180910390f35b3480156106c857600080fd5b506106e360048036038101906106de91906131c3565b61149b565b005b3480156106f157600080fd5b5061070c60048036038101906107079190613249565b611641565b005b34801561071a57600080fd5b50610735600480360381019061073091906131c3565b61172b565b005b60606040518060400160405280600581526020017f4556455259000000000000000000000000000000000000000000000000000000815250905090565b60006107886107816118ed565b84846118f5565b6001905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000678ac7230489e80000905090565b60006107d5848484611ac0565b610896846107e16118ed565b610891856040518060600160405280602881526020016140ac60289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006108476118ed565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123469092919063ffffffff16565b6118f5565b600190509392505050565b60185481565b60006009905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6108de6118ed565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461096b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109629061342e565b60405180910390fd5b80601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6109b76118ed565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3b9061342e565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610aa76118ed565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2b9061342e565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610b926118ed565b73ffffffffffffffffffffffffffffffffffffffff161480610c085750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610bf06118ed565b73ffffffffffffffffffffffffffffffffffffffff16145b610c1157600080fd5b6000479050610c1f816123aa565b50565b6000610c6c600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612416565b9050919050565b610c7b6118ed565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cff9061342e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610dce6118ed565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e529061342e565b60405180910390fd5b66b1a2bc2ec50000811015610ea5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9c906134c0565b60405180910390fd5b8060168190555050565b60165481565b60116020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60175481565b60606040518060400160405280600581526020017f5448494e47000000000000000000000000000000000000000000000000000000815250905090565b610f416118ed565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc59061342e565b60405180910390fd5b8060188190555050565b610fe06118ed565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461106d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110649061342e565b60405180910390fd5b600c828561107b919061350f565b111561108657600080fd5b600c8184611094919061350f565b111561109f57600080fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b60006110d56110ce6118ed565b8484611ac0565b6001905092915050565b60106020528060005260406000206000915054906101000a900460ff1681565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166111406118ed565b73ffffffffffffffffffffffffffffffffffffffff1614806111b65750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661119e6118ed565b73ffffffffffffffffffffffffffffffffffffffff16145b6111bf57600080fd5b60006111ca30610c22565b90506111d581612484565b50565b6111e06118ed565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461126d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112649061342e565b60405180910390fd5b60005b8383905081101561130c57816005600086868581811061129357611292613565565b5b90506020020160208101906112a891906131c3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061130490613594565b915050611270565b50505050565b61131a6118ed565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139e9061342e565b60405180910390fd5b601560149054906101000a900460ff16156113f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ee90613629565b60405180910390fd5b6001601560146101000a81548160ff021916908315150217905550565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6114a36118ed565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611530576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115279061342e565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561158b57600080fd5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156115e657600080fd5b6001601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6116496118ed565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116cd9061342e565b60405180910390fd5b67016345785d8a0000811015611721576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611718906136bb565b60405180910390fd5b8060178190555050565b6117336118ed565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b79061342e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611830576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118279061374d565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611965576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195c906137df565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156119d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119cc90613871565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611ab39190613089565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611b30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2790613903565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611ba0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9790613995565b60405180910390fd5b60008111611be3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bda90613a27565b60405180910390fd5b611beb610ecd565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611c595750611c29610ecd565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561204557601560149054906101000a900460ff16611ce857611c7a610ecd565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611ce7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cde90613ab9565b60405180910390fd5b5b601654811115611d2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2490613b25565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611dd15750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611e10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0790613bb7565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611ebe5760175481611e7284610c22565b611e7c919061350f565b1115611ebd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eb490613c49565b60405180910390fd5b5b6000611ec930610c22565b9050600060185482101590506016548210611ee45760165491505b808015611efc575060158054906101000a900460ff16155b8015611f565750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611f6e5750601560169054906101000a900460ff165b8015611fc45750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561201a5750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156120425761202882612484565b600047905060008111156120405761203f476123aa565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806120ec5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061219f5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561219e5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b156121ad5760009050612334565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156122585750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561227057600854600c81905550600954600d819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561231b5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561233357600a54600c81905550600b54600d819055505b5b6123408484848461270a565b50505050565b600083831115829061238e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123859190612eca565b60405180910390fd5b506000838561239d9190613c69565b9050809150509392505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612412573d6000803e3d6000fd5b5050565b600060065482111561245d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245490613d0f565b60405180910390fd5b6000612467612737565b905061247c818461276290919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156124bb576124ba613d2f565b5b6040519080825280602002602001820160405280156124e95781602001602082028036833780820191505090505b509050308160008151811061250157612500613565565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156125a357600080fd5b505afa1580156125b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125db9190613d73565b816001815181106125ef576125ee613565565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061265630601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846118f5565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016126ba959493929190613e99565b600060405180830381600087803b1580156126d457600080fd5b505af11580156126e8573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b80612718576127176127ac565b5b6127238484846127ef565b80612731576127306129ba565b5b50505050565b60008060006127446129ce565b9150915061275b818361276290919063ffffffff16565b9250505090565b60006127a483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612a2d565b905092915050565b6000600c541480156127c057506000600d54145b156127ca576127ed565b600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b60008060008060008061280187612a90565b95509550955095509550955061285f86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612af890919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506128f485600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b4290919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061294081612ba0565b61294a8483612c5d565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516129a79190613089565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b600080600060065490506000678ac7230489e800009050612a02678ac7230489e8000060065461276290919063ffffffff16565b821015612a2057600654678ac7230489e80000935093505050612a29565b81819350935050505b9091565b60008083118290612a74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a6b9190612eca565b60405180910390fd5b5060008385612a839190613f22565b9050809150509392505050565b6000806000806000806000806000612aad8a600c54600d54612c97565b9250925092506000612abd612737565b90506000806000612ad08e878787612d2d565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000612b3a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612346565b905092915050565b6000808284612b51919061350f565b905083811015612b96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b8d90613f9f565b60405180910390fd5b8091505092915050565b6000612baa612737565b90506000612bc18284612db690919063ffffffff16565b9050612c1581600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b4290919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612c7282600654612af890919063ffffffff16565b600681905550612c8d81600754612b4290919063ffffffff16565b6007819055505050565b600080600080612cc36064612cb5888a612db690919063ffffffff16565b61276290919063ffffffff16565b90506000612ced6064612cdf888b612db690919063ffffffff16565b61276290919063ffffffff16565b90506000612d1682612d08858c612af890919063ffffffff16565b612af890919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612d468589612db690919063ffffffff16565b90506000612d5d8689612db690919063ffffffff16565b90506000612d748789612db690919063ffffffff16565b90506000612d9d82612d8f8587612af890919063ffffffff16565b612af890919063ffffffff16565b9050838184965096509650505050509450945094915050565b600080831415612dc95760009050612e2b565b60008284612dd79190613fbf565b9050828482612de69190613f22565b14612e26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e1d9061408b565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612e6b578082015181840152602081019050612e50565b83811115612e7a576000848401525b50505050565b6000601f19601f8301169050919050565b6000612e9c82612e31565b612ea68185612e3c565b9350612eb6818560208601612e4d565b612ebf81612e80565b840191505092915050565b60006020820190508181036000830152612ee48184612e91565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612f2182612ef6565b9050919050565b612f3181612f16565b8114612f3c57600080fd5b50565b600081359050612f4e81612f28565b92915050565b6000819050919050565b612f6781612f54565b8114612f7257600080fd5b50565b600081359050612f8481612f5e565b92915050565b60008060408385031215612fa157612fa0612eec565b5b6000612faf85828601612f3f565b9250506020612fc085828601612f75565b9150509250929050565b60008115159050919050565b612fdf81612fca565b82525050565b6000602082019050612ffa6000830184612fd6565b92915050565b6000819050919050565b600061302561302061301b84612ef6565b613000565b612ef6565b9050919050565b60006130378261300a565b9050919050565b60006130498261302c565b9050919050565b6130598161303e565b82525050565b60006020820190506130746000830184613050565b92915050565b61308381612f54565b82525050565b600060208201905061309e600083018461307a565b92915050565b6000806000606084860312156130bd576130bc612eec565b5b60006130cb86828701612f3f565b93505060206130dc86828701612f3f565b92505060406130ed86828701612f75565b9150509250925092565b600060ff82169050919050565b61310d816130f7565b82525050565b60006020820190506131286000830184613104565b92915050565b61313781612f16565b82525050565b6000602082019050613152600083018461312e565b92915050565b600061316382612ef6565b9050919050565b61317381613158565b811461317e57600080fd5b50565b6000813590506131908161316a565b92915050565b6000602082840312156131ac576131ab612eec565b5b60006131ba84828501613181565b91505092915050565b6000602082840312156131d9576131d8612eec565b5b60006131e784828501612f3f565b91505092915050565b6131f981612fca565b811461320457600080fd5b50565b600081359050613216816131f0565b92915050565b60006020828403121561323257613231612eec565b5b600061324084828501613207565b91505092915050565b60006020828403121561325f5761325e612eec565b5b600061326d84828501612f75565b91505092915050565b600080600080608085870312156132905761328f612eec565b5b600061329e87828801612f75565b94505060206132af87828801612f75565b93505060406132c087828801612f75565b92505060606132d187828801612f75565b91505092959194509250565b600080fd5b600080fd5b600080fd5b60008083601f840112613302576133016132dd565b5b8235905067ffffffffffffffff81111561331f5761331e6132e2565b5b60208301915083602082028301111561333b5761333a6132e7565b5b9250929050565b60008060006040848603121561335b5761335a612eec565b5b600084013567ffffffffffffffff81111561337957613378612ef1565b5b613385868287016132ec565b9350935050602061339886828701613207565b9150509250925092565b600080604083850312156133b9576133b8612eec565b5b60006133c785828601612f3f565b92505060206133d885828601612f3f565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613418602083612e3c565b9150613423826133e2565b602082019050919050565b600060208201905081810360008301526134478161340b565b9050919050565b7f4d617820545820616d6f756e74206d757374206265206269676765722074686160008201527f6e20302e35252100000000000000000000000000000000000000000000000000602082015250565b60006134aa602783612e3c565b91506134b58261344e565b604082019050919050565b600060208201905081810360008301526134d98161349d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061351a82612f54565b915061352583612f54565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561355a576135596134e0565b5b828201905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061359f82612f54565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156135d2576135d16134e0565b5b600182019050919050565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b6000613613601783612e3c565b915061361e826135dd565b602082019050919050565b6000602082019050818103600083015261364281613606565b9050919050565b7f57616c6c65742073697a65206d75737420626520626967676572207468616e2060008201527f3125210000000000000000000000000000000000000000000000000000000000602082015250565b60006136a5602383612e3c565b91506136b082613649565b604082019050919050565b600060208201905081810360008301526136d481613698565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613737602683612e3c565b9150613742826136db565b604082019050919050565b600060208201905081810360008301526137668161372a565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006137c9602483612e3c565b91506137d48261376d565b604082019050919050565b600060208201905081810360008301526137f8816137bc565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061385b602283612e3c565b9150613866826137ff565b604082019050919050565b6000602082019050818103600083015261388a8161384e565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006138ed602583612e3c565b91506138f882613891565b604082019050919050565b6000602082019050818103600083015261391c816138e0565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061397f602383612e3c565b915061398a82613923565b604082019050919050565b600060208201905081810360008301526139ae81613972565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613a11602983612e3c565b9150613a1c826139b5565b604082019050919050565b60006020820190508181036000830152613a4081613a04565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000613aa3603f83612e3c565b9150613aae82613a47565b604082019050919050565b60006020820190508181036000830152613ad281613a96565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000613b0f601c83612e3c565b9150613b1a82613ad9565b602082019050919050565b60006020820190508181036000830152613b3e81613b02565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b6000613ba1602383612e3c565b9150613bac82613b45565b604082019050919050565b60006020820190508181036000830152613bd081613b94565b9050919050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b6000613c33602383612e3c565b9150613c3e82613bd7565b604082019050919050565b60006020820190508181036000830152613c6281613c26565b9050919050565b6000613c7482612f54565b9150613c7f83612f54565b925082821015613c9257613c916134e0565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613cf9602a83612e3c565b9150613d0482613c9d565b604082019050919050565b60006020820190508181036000830152613d2881613cec565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050613d6d81612f28565b92915050565b600060208284031215613d8957613d88612eec565b5b6000613d9784828501613d5e565b91505092915050565b6000819050919050565b6000613dc5613dc0613dbb84613da0565b613000565b612f54565b9050919050565b613dd581613daa565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613e1081612f16565b82525050565b6000613e228383613e07565b60208301905092915050565b6000602082019050919050565b6000613e4682613ddb565b613e508185613de6565b9350613e5b83613df7565b8060005b83811015613e8c578151613e738882613e16565b9750613e7e83613e2e565b925050600181019050613e5f565b5085935050505092915050565b600060a082019050613eae600083018861307a565b613ebb6020830187613dcc565b8181036040830152613ecd8186613e3b565b9050613edc606083018561312e565b613ee9608083018461307a565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613f2d82612f54565b9150613f3883612f54565b925082613f4857613f47613ef3565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613f89601b83612e3c565b9150613f9482613f53565b602082019050919050565b60006020820190508181036000830152613fb881613f7c565b9050919050565b6000613fca82612f54565b9150613fd583612f54565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561400e5761400d6134e0565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000614075602183612e3c565b915061408082614019565b604082019050919050565b600060208201905081810360008301526140a481614068565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220d43b05eaa3d0be1bfc6f542792db66d28a35ad47355ad987f8eea5482dc2560c64736f6c63430008090033

Deployed Bytecode

0x6080604052600436106101dc5760003560e01c80637d1db4a511610102578063bfd7928411610095578063dd62ed3e11610064578063dd62ed3e1461067f578063e70ef8a4146106bc578063ea1644d5146106e5578063f2fde38b1461070e576101e3565b8063bfd79284146105eb578063c3c8cd8014610628578063c492f0461461063f578063c9567bf914610668576101e3565b806395d89b41116100d157806395d89b411461053157806398a5c3151461055c578063a2a957bb14610585578063a9059cbb146105ae576101e3565b80637d1db4a5146104735780637f2feddc1461049e5780638da5cb5b146104db5780638f9a55c014610506576101e3565b806349bd5a5e1161017a5780636fc3eaec116101495780636fc3eaec146103df57806370a08231146103f6578063715018a61461043357806374010ece1461044a576101e3565b806349bd5a5e146103395780635d098b38146103645780636b9990531461038d5780636d8aa8f8146103b6576101e3565b806318160ddd116101b657806318160ddd1461027b57806323b872dd146102a65780632fd689e3146102e3578063313ce5671461030e576101e3565b806306fdde03146101e8578063095ea7b3146102135780631694505e14610250576101e3565b366101e357005b600080fd5b3480156101f457600080fd5b506101fd610737565b60405161020a9190612eca565b60405180910390f35b34801561021f57600080fd5b5061023a60048036038101906102359190612f8a565b610774565b6040516102479190612fe5565b60405180910390f35b34801561025c57600080fd5b50610265610792565b604051610272919061305f565b60405180910390f35b34801561028757600080fd5b506102906107b8565b60405161029d9190613089565b60405180910390f35b3480156102b257600080fd5b506102cd60048036038101906102c891906130a4565b6107c8565b6040516102da9190612fe5565b60405180910390f35b3480156102ef57600080fd5b506102f86108a1565b6040516103059190613089565b60405180910390f35b34801561031a57600080fd5b506103236108a7565b6040516103309190613113565b60405180910390f35b34801561034557600080fd5b5061034e6108b0565b60405161035b919061313d565b60405180910390f35b34801561037057600080fd5b5061038b60048036038101906103869190613196565b6108d6565b005b34801561039957600080fd5b506103b460048036038101906103af91906131c3565b6109af565b005b3480156103c257600080fd5b506103dd60048036038101906103d8919061321c565b610a9f565b005b3480156103eb57600080fd5b506103f4610b51565b005b34801561040257600080fd5b5061041d600480360381019061041891906131c3565b610c22565b60405161042a9190613089565b60405180910390f35b34801561043f57600080fd5b50610448610c73565b005b34801561045657600080fd5b50610471600480360381019061046c9190613249565b610dc6565b005b34801561047f57600080fd5b50610488610eaf565b6040516104959190613089565b60405180910390f35b3480156104aa57600080fd5b506104c560048036038101906104c091906131c3565b610eb5565b6040516104d29190613089565b60405180910390f35b3480156104e757600080fd5b506104f0610ecd565b6040516104fd919061313d565b60405180910390f35b34801561051257600080fd5b5061051b610ef6565b6040516105289190613089565b60405180910390f35b34801561053d57600080fd5b50610546610efc565b6040516105539190612eca565b60405180910390f35b34801561056857600080fd5b50610583600480360381019061057e9190613249565b610f39565b005b34801561059157600080fd5b506105ac60048036038101906105a79190613276565b610fd8565b005b3480156105ba57600080fd5b506105d560048036038101906105d09190612f8a565b6110c1565b6040516105e29190612fe5565b60405180910390f35b3480156105f757600080fd5b50610612600480360381019061060d91906131c3565b6110df565b60405161061f9190612fe5565b60405180910390f35b34801561063457600080fd5b5061063d6110ff565b005b34801561064b57600080fd5b5061066660048036038101906106619190613342565b6111d8565b005b34801561067457600080fd5b5061067d611312565b005b34801561068b57600080fd5b506106a660048036038101906106a191906133a2565b611414565b6040516106b39190613089565b60405180910390f35b3480156106c857600080fd5b506106e360048036038101906106de91906131c3565b61149b565b005b3480156106f157600080fd5b5061070c60048036038101906107079190613249565b611641565b005b34801561071a57600080fd5b50610735600480360381019061073091906131c3565b61172b565b005b60606040518060400160405280600581526020017f4556455259000000000000000000000000000000000000000000000000000000815250905090565b60006107886107816118ed565b84846118f5565b6001905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000678ac7230489e80000905090565b60006107d5848484611ac0565b610896846107e16118ed565b610891856040518060600160405280602881526020016140ac60289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006108476118ed565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123469092919063ffffffff16565b6118f5565b600190509392505050565b60185481565b60006009905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6108de6118ed565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461096b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109629061342e565b60405180910390fd5b80601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6109b76118ed565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3b9061342e565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610aa76118ed565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2b9061342e565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610b926118ed565b73ffffffffffffffffffffffffffffffffffffffff161480610c085750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610bf06118ed565b73ffffffffffffffffffffffffffffffffffffffff16145b610c1157600080fd5b6000479050610c1f816123aa565b50565b6000610c6c600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612416565b9050919050565b610c7b6118ed565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cff9061342e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610dce6118ed565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e529061342e565b60405180910390fd5b66b1a2bc2ec50000811015610ea5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9c906134c0565b60405180910390fd5b8060168190555050565b60165481565b60116020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60175481565b60606040518060400160405280600581526020017f5448494e47000000000000000000000000000000000000000000000000000000815250905090565b610f416118ed565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc59061342e565b60405180910390fd5b8060188190555050565b610fe06118ed565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461106d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110649061342e565b60405180910390fd5b600c828561107b919061350f565b111561108657600080fd5b600c8184611094919061350f565b111561109f57600080fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b60006110d56110ce6118ed565b8484611ac0565b6001905092915050565b60106020528060005260406000206000915054906101000a900460ff1681565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166111406118ed565b73ffffffffffffffffffffffffffffffffffffffff1614806111b65750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661119e6118ed565b73ffffffffffffffffffffffffffffffffffffffff16145b6111bf57600080fd5b60006111ca30610c22565b90506111d581612484565b50565b6111e06118ed565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461126d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112649061342e565b60405180910390fd5b60005b8383905081101561130c57816005600086868581811061129357611292613565565b5b90506020020160208101906112a891906131c3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061130490613594565b915050611270565b50505050565b61131a6118ed565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139e9061342e565b60405180910390fd5b601560149054906101000a900460ff16156113f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ee90613629565b60405180910390fd5b6001601560146101000a81548160ff021916908315150217905550565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6114a36118ed565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611530576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115279061342e565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561158b57600080fd5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156115e657600080fd5b6001601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6116496118ed565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116cd9061342e565b60405180910390fd5b67016345785d8a0000811015611721576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611718906136bb565b60405180910390fd5b8060178190555050565b6117336118ed565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b79061342e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611830576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118279061374d565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611965576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195c906137df565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156119d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119cc90613871565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611ab39190613089565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611b30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2790613903565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611ba0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9790613995565b60405180910390fd5b60008111611be3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bda90613a27565b60405180910390fd5b611beb610ecd565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611c595750611c29610ecd565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561204557601560149054906101000a900460ff16611ce857611c7a610ecd565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611ce7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cde90613ab9565b60405180910390fd5b5b601654811115611d2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2490613b25565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611dd15750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611e10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0790613bb7565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611ebe5760175481611e7284610c22565b611e7c919061350f565b1115611ebd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eb490613c49565b60405180910390fd5b5b6000611ec930610c22565b9050600060185482101590506016548210611ee45760165491505b808015611efc575060158054906101000a900460ff16155b8015611f565750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611f6e5750601560169054906101000a900460ff165b8015611fc45750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561201a5750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156120425761202882612484565b600047905060008111156120405761203f476123aa565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806120ec5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061219f5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561219e5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b156121ad5760009050612334565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156122585750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561227057600854600c81905550600954600d819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561231b5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561233357600a54600c81905550600b54600d819055505b5b6123408484848461270a565b50505050565b600083831115829061238e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123859190612eca565b60405180910390fd5b506000838561239d9190613c69565b9050809150509392505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612412573d6000803e3d6000fd5b5050565b600060065482111561245d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245490613d0f565b60405180910390fd5b6000612467612737565b905061247c818461276290919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156124bb576124ba613d2f565b5b6040519080825280602002602001820160405280156124e95781602001602082028036833780820191505090505b509050308160008151811061250157612500613565565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156125a357600080fd5b505afa1580156125b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125db9190613d73565b816001815181106125ef576125ee613565565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061265630601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846118f5565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016126ba959493929190613e99565b600060405180830381600087803b1580156126d457600080fd5b505af11580156126e8573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b80612718576127176127ac565b5b6127238484846127ef565b80612731576127306129ba565b5b50505050565b60008060006127446129ce565b9150915061275b818361276290919063ffffffff16565b9250505090565b60006127a483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612a2d565b905092915050565b6000600c541480156127c057506000600d54145b156127ca576127ed565b600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b60008060008060008061280187612a90565b95509550955095509550955061285f86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612af890919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506128f485600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b4290919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061294081612ba0565b61294a8483612c5d565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516129a79190613089565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b600080600060065490506000678ac7230489e800009050612a02678ac7230489e8000060065461276290919063ffffffff16565b821015612a2057600654678ac7230489e80000935093505050612a29565b81819350935050505b9091565b60008083118290612a74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a6b9190612eca565b60405180910390fd5b5060008385612a839190613f22565b9050809150509392505050565b6000806000806000806000806000612aad8a600c54600d54612c97565b9250925092506000612abd612737565b90506000806000612ad08e878787612d2d565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000612b3a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612346565b905092915050565b6000808284612b51919061350f565b905083811015612b96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b8d90613f9f565b60405180910390fd5b8091505092915050565b6000612baa612737565b90506000612bc18284612db690919063ffffffff16565b9050612c1581600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b4290919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612c7282600654612af890919063ffffffff16565b600681905550612c8d81600754612b4290919063ffffffff16565b6007819055505050565b600080600080612cc36064612cb5888a612db690919063ffffffff16565b61276290919063ffffffff16565b90506000612ced6064612cdf888b612db690919063ffffffff16565b61276290919063ffffffff16565b90506000612d1682612d08858c612af890919063ffffffff16565b612af890919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612d468589612db690919063ffffffff16565b90506000612d5d8689612db690919063ffffffff16565b90506000612d748789612db690919063ffffffff16565b90506000612d9d82612d8f8587612af890919063ffffffff16565b612af890919063ffffffff16565b9050838184965096509650505050509450945094915050565b600080831415612dc95760009050612e2b565b60008284612dd79190613fbf565b9050828482612de69190613f22565b14612e26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e1d9061408b565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612e6b578082015181840152602081019050612e50565b83811115612e7a576000848401525b50505050565b6000601f19601f8301169050919050565b6000612e9c82612e31565b612ea68185612e3c565b9350612eb6818560208601612e4d565b612ebf81612e80565b840191505092915050565b60006020820190508181036000830152612ee48184612e91565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612f2182612ef6565b9050919050565b612f3181612f16565b8114612f3c57600080fd5b50565b600081359050612f4e81612f28565b92915050565b6000819050919050565b612f6781612f54565b8114612f7257600080fd5b50565b600081359050612f8481612f5e565b92915050565b60008060408385031215612fa157612fa0612eec565b5b6000612faf85828601612f3f565b9250506020612fc085828601612f75565b9150509250929050565b60008115159050919050565b612fdf81612fca565b82525050565b6000602082019050612ffa6000830184612fd6565b92915050565b6000819050919050565b600061302561302061301b84612ef6565b613000565b612ef6565b9050919050565b60006130378261300a565b9050919050565b60006130498261302c565b9050919050565b6130598161303e565b82525050565b60006020820190506130746000830184613050565b92915050565b61308381612f54565b82525050565b600060208201905061309e600083018461307a565b92915050565b6000806000606084860312156130bd576130bc612eec565b5b60006130cb86828701612f3f565b93505060206130dc86828701612f3f565b92505060406130ed86828701612f75565b9150509250925092565b600060ff82169050919050565b61310d816130f7565b82525050565b60006020820190506131286000830184613104565b92915050565b61313781612f16565b82525050565b6000602082019050613152600083018461312e565b92915050565b600061316382612ef6565b9050919050565b61317381613158565b811461317e57600080fd5b50565b6000813590506131908161316a565b92915050565b6000602082840312156131ac576131ab612eec565b5b60006131ba84828501613181565b91505092915050565b6000602082840312156131d9576131d8612eec565b5b60006131e784828501612f3f565b91505092915050565b6131f981612fca565b811461320457600080fd5b50565b600081359050613216816131f0565b92915050565b60006020828403121561323257613231612eec565b5b600061324084828501613207565b91505092915050565b60006020828403121561325f5761325e612eec565b5b600061326d84828501612f75565b91505092915050565b600080600080608085870312156132905761328f612eec565b5b600061329e87828801612f75565b94505060206132af87828801612f75565b93505060406132c087828801612f75565b92505060606132d187828801612f75565b91505092959194509250565b600080fd5b600080fd5b600080fd5b60008083601f840112613302576133016132dd565b5b8235905067ffffffffffffffff81111561331f5761331e6132e2565b5b60208301915083602082028301111561333b5761333a6132e7565b5b9250929050565b60008060006040848603121561335b5761335a612eec565b5b600084013567ffffffffffffffff81111561337957613378612ef1565b5b613385868287016132ec565b9350935050602061339886828701613207565b9150509250925092565b600080604083850312156133b9576133b8612eec565b5b60006133c785828601612f3f565b92505060206133d885828601612f3f565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613418602083612e3c565b9150613423826133e2565b602082019050919050565b600060208201905081810360008301526134478161340b565b9050919050565b7f4d617820545820616d6f756e74206d757374206265206269676765722074686160008201527f6e20302e35252100000000000000000000000000000000000000000000000000602082015250565b60006134aa602783612e3c565b91506134b58261344e565b604082019050919050565b600060208201905081810360008301526134d98161349d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061351a82612f54565b915061352583612f54565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561355a576135596134e0565b5b828201905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061359f82612f54565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156135d2576135d16134e0565b5b600182019050919050565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b6000613613601783612e3c565b915061361e826135dd565b602082019050919050565b6000602082019050818103600083015261364281613606565b9050919050565b7f57616c6c65742073697a65206d75737420626520626967676572207468616e2060008201527f3125210000000000000000000000000000000000000000000000000000000000602082015250565b60006136a5602383612e3c565b91506136b082613649565b604082019050919050565b600060208201905081810360008301526136d481613698565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613737602683612e3c565b9150613742826136db565b604082019050919050565b600060208201905081810360008301526137668161372a565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006137c9602483612e3c565b91506137d48261376d565b604082019050919050565b600060208201905081810360008301526137f8816137bc565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061385b602283612e3c565b9150613866826137ff565b604082019050919050565b6000602082019050818103600083015261388a8161384e565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006138ed602583612e3c565b91506138f882613891565b604082019050919050565b6000602082019050818103600083015261391c816138e0565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061397f602383612e3c565b915061398a82613923565b604082019050919050565b600060208201905081810360008301526139ae81613972565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613a11602983612e3c565b9150613a1c826139b5565b604082019050919050565b60006020820190508181036000830152613a4081613a04565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000613aa3603f83612e3c565b9150613aae82613a47565b604082019050919050565b60006020820190508181036000830152613ad281613a96565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000613b0f601c83612e3c565b9150613b1a82613ad9565b602082019050919050565b60006020820190508181036000830152613b3e81613b02565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b6000613ba1602383612e3c565b9150613bac82613b45565b604082019050919050565b60006020820190508181036000830152613bd081613b94565b9050919050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b6000613c33602383612e3c565b9150613c3e82613bd7565b604082019050919050565b60006020820190508181036000830152613c6281613c26565b9050919050565b6000613c7482612f54565b9150613c7f83612f54565b925082821015613c9257613c916134e0565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613cf9602a83612e3c565b9150613d0482613c9d565b604082019050919050565b60006020820190508181036000830152613d2881613cec565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050613d6d81612f28565b92915050565b600060208284031215613d8957613d88612eec565b5b6000613d9784828501613d5e565b91505092915050565b6000819050919050565b6000613dc5613dc0613dbb84613da0565b613000565b612f54565b9050919050565b613dd581613daa565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613e1081612f16565b82525050565b6000613e228383613e07565b60208301905092915050565b6000602082019050919050565b6000613e4682613ddb565b613e508185613de6565b9350613e5b83613df7565b8060005b83811015613e8c578151613e738882613e16565b9750613e7e83613e2e565b925050600181019050613e5f565b5085935050505092915050565b600060a082019050613eae600083018861307a565b613ebb6020830187613dcc565b8181036040830152613ecd8186613e3b565b9050613edc606083018561312e565b613ee9608083018461307a565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613f2d82612f54565b9150613f3883612f54565b925082613f4857613f47613ef3565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613f89601b83612e3c565b9150613f9482613f53565b602082019050919050565b60006020820190508181036000830152613fb881613f7c565b9050919050565b6000613fca82612f54565b9150613fd583612f54565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561400e5761400d6134e0565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000614075602183612e3c565b915061408082614019565b604082019050919050565b600060208201905081810360008301526140a481614068565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220d43b05eaa3d0be1bfc6f542792db66d28a35ad47355ad987f8eea5482dc2560c64736f6c63430008090033

Deployed Bytecode Sourcemap

4462:13920:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6967:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7892:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5804:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7244:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8093:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6112:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7153:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5852:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13467:137;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13367:92;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17608:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12931:235;;;;;;;;;;;;;:::i;:::-;;7347:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4036:148;;;;;;;;;;;;;:::i;:::-;;17717:202;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6002:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5546:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3822:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6056:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7058:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17461:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17010:443;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7493:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5508:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12687:236;;;;;;;;;;;;;:::i;:::-;;18143:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12544:129;;;;;;;;;;;;;:::i;:::-;;7700:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13174:185;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17927:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4192:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6967:83;7004:13;7037:5;;;;;;;;;;;;;;;;;7030:12;;6967:83;:::o;7892:193::-;7994:4;8016:39;8025:12;:10;:12::i;:::-;8039:7;8048:6;8016:8;:39::i;:::-;8073:4;8066:11;;7892:193;;;;:::o;5804:41::-;;;;;;;;;;;;;:::o;7244:95::-;7297:7;5009:19;7317:14;;7244:95;:::o;8093:446::-;8225:4;8242:36;8252:6;8260:9;8271:6;8242:9;:36::i;:::-;8289:220;8312:6;8333:12;:10;:12::i;:::-;8360:138;8416:6;8360:138;;;;;;;;;;;;;;;;;:11;:19;8372:6;8360:19;;;;;;;;;;;;;;;:33;8380:12;:10;:12::i;:::-;8360:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;8289:8;:220::i;:::-;8527:4;8520:11;;8093:446;;;;;:::o;6112:53::-;;;;:::o;7153:83::-;7194:5;4683:1;7212:16;;7153:83;:::o;5852:28::-;;;;;;;;;;;;;:::o;13467:137::-;3959:12;:10;:12::i;:::-;3949:22;;:6;;;;;;;;;;:22;;;3941:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13578:18:::1;13558:17;;:38;;;;;;;;;;;;;;;;;;13467:137:::0;:::o;13367:92::-;3959:12;:10;:12::i;:::-;3949:22;;:6;;;;;;;;;;:22;;;3941:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13446:5:::1;13431:4;:12;13436:6;13431:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;13367:92:::0;:::o;17608:101::-;3959:12;:10;:12::i;:::-;3949:22;;:6;;;;;;;;;;:22;;;3941:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17689:12:::1;17675:11;;:26;;;;;;;;;;;;;;;;;;17608:101:::0;:::o;12931:235::-;12997:19;;;;;;;;;;;12981:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;13036:17;;;;;;;;;;;13020:33;;:12;:10;:12::i;:::-;:33;;;12981:72;12973:81;;;;;;13065:26;13094:21;13065:50;;13126:32;13139:18;13126:12;:32::i;:::-;12962:204;12931:235::o;7347:138::-;7413:7;7440:37;7460:7;:16;7468:7;7460:16;;;;;;;;;;;;;;;;7440:19;:37::i;:::-;7433:44;;7347:138;;;:::o;4036:148::-;3959:12;:10;:12::i;:::-;3949:22;;:6;;;;;;;;;;:22;;;3941:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4143:1:::1;4106:40;;4127:6;::::0;::::1;;;;;;;;4106:40;;;;;;;;;;;;4174:1;4157:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;4036:148::o:0;17717:202::-;3959:12;:10;:12::i;:::-;3949:22;;:6;;;;;;;;;;:22;;;3941:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17814:16:::1;17799:11;:31;;17791:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;17900:11;17885:12;:26;;;;17717:202:::0;:::o;6002:47::-;;;;:::o;5546:43::-;;;;;;;;;;;;;;;;;:::o;3822:79::-;3860:7;3887:6;;;;;;;;;;;3880:13;;3822:79;:::o;6056:49::-;;;;:::o;7058:87::-;7097:13;7130:7;;;;;;;;;;;;;;;;;7123:14;;7058:87;:::o;17461:139::-;3959:12;:10;:12::i;:::-;3949:22;;:6;;;;;;;;;;:22;;;3941:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17574:18:::1;17552:19;:40;;;;17461:139:::0;:::o;17010:443::-;3959:12;:10;:12::i;:::-;3949:22;;:6;;;;;;;;;;:22;;;3941:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17225:2:::1;17210:11;17194:13;:27;;;;:::i;:::-;:33;;17186:42;;;::::0;::::1;;17280:2;17264:12;17247:14;:29;;;;:::i;:::-;:35;;17239:44;;;::::0;::::1;;17313:13;17296:14;:30;;;;17355:14;17337:15;:32;;;;17395:11;17380:12;:26;;;;17433:12;17417:13;:28;;;;17010:443:::0;;;;:::o;7493:199::-;7598:4;7620:42;7630:12;:10;:12::i;:::-;7644:9;7655:6;7620:9;:42::i;:::-;7680:4;7673:11;;7493:199;;;;:::o;5508:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;12687:236::-;12753:19;;;;;;;;;;;12737:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12792:17;;;;;;;;;;;12776:33;;:12;:10;:12::i;:::-;:33;;;12737:72;12729:81;;;;;;12821:23;12847:24;12865:4;12847:9;:24::i;:::-;12821:50;;12882:33;12899:15;12882:16;:33::i;:::-;12718:205;12687:236::o;18143:234::-;3959:12;:10;:12::i;:::-;3949:22;;:6;;;;;;;;;;:22;;;3941:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18260:9:::1;18256:114;18279:8;;:15;;18275:1;:19;18256:114;;;18350:8;18316:18;:31;18335:8;;18344:1;18335:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;18316:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;18296:3;;;;;:::i;:::-;;;;18256:114;;;;18143:234:::0;;;:::o;12544:129::-;3959:12;:10;:12::i;:::-;3949:22;;:6;;;;;;;;;;:22;;;3941:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12601:11:::1;;;;;;;;;;;12600:12;12592:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;12661:4;12647:11;;:18;;;;;;;;;;;;;;;;;;12544:129::o:0;7700:184::-;7817:7;7849:11;:18;7861:5;7849:18;;;;;;;;;;;;;;;:27;7868:7;7849:27;;;;;;;;;;;;;;;;7842:34;;7700:184;;;;:::o;13174:185::-;3959:12;:10;:12::i;:::-;3949:22;;:6;;;;;;;;;;:22;;;3941:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13256:13:::1;;;;;;;;;;;13241:29;;:3;:29;;;;13233:38;;;::::0;::::1;;13305:15;;;;;;;;;;;13290:31;;:3;:31;;;;13282:40;;;::::0;::::1;;13347:4;13335;:9;13340:3;13335:9;;;;;;;;;;;;;;;;:16;;;;;;;;;;;;;;;;;;13174:185:::0;:::o;17927:208::-;3959:12;:10;:12::i;:::-;3949:22;;:6;;;;;;;;;;:22;;;3941:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18029:17:::1;18012:13;:34;;18004:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;18114:13;18097:14;:30;;;;17927:208:::0;:::o;4192:244::-;3959:12;:10;:12::i;:::-;3949:22;;:6;;;;;;;;;;:22;;;3941:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4301:1:::1;4281:22;;:8;:22;;;;4273:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;4391:8;4362:38;;4383:6;::::0;::::1;;;;;;;;4362:38;;;;;;;;;;;;4420:8;4411:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;4192:244:::0;:::o;3338:98::-;3391:7;3418:10;3411:17;;3338:98;:::o;9230:369::-;9374:1;9357:19;;:5;:19;;;;9349:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9455:1;9436:21;;:7;:21;;;;9428:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9537:6;9507:11;:18;9519:5;9507:18;;;;;;;;;;;;;;;:27;9526:7;9507:27;;;;;;;;;;;;;;;:36;;;;9575:7;9559:32;;9568:5;9559:32;;;9584:6;9559:32;;;;;;:::i;:::-;;;;;;;;9230:369;;;:::o;9607:2331::-;9745:1;9729:18;;:4;:18;;;;9721:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9822:1;9808:16;;:2;:16;;;;9800:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9892:1;9883:6;:10;9875:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9964:7;:5;:7::i;:::-;9956:15;;:4;:15;;;;:32;;;;;9981:7;:5;:7::i;:::-;9975:13;;:2;:13;;;;9956:32;9952:1260;;;10045:11;;;;;;;;;;;10040:144;;10093:7;:5;:7::i;:::-;10085:15;;:4;:15;;;10077:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;10040:144;10218:12;;10208:6;:22;;10200:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;10287:4;:10;10292:4;10287:10;;;;;;;;;;;;;;;;;;;;;;;;;10286:11;:24;;;;;10302:4;:8;10307:2;10302:8;;;;;;;;;;;;;;;;;;;;;;;;;10301:9;10286:24;10278:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;10376:13;;;;;;;;;;;10370:19;;:2;:19;;;10367:147;;10444:14;;10434:6;10418:13;10428:2;10418:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;10410:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;10367:147;10530:28;10561:24;10579:4;10561:9;:24::i;:::-;10530:55;;10600:12;10639:19;;10615:20;:43;;10600:58;;10702:12;;10678:20;:36;10675:124;;10771:12;;10748:35;;10675:124;10819:7;:18;;;;;10831:6;;;;;;;;;;10830:7;10819:18;:43;;;;;10849:13;;;;;;;;;;;10841:21;;:4;:21;;;;10819:43;:58;;;;;10866:11;;;;;;;;;;;10819:58;:87;;;;;10882:18;:24;10901:4;10882:24;;;;;;;;;;;;;;;;;;;;;;;;;10881:25;10819:87;:114;;;;;10911:18;:22;10930:2;10911:22;;;;;;;;;;;;;;;;;;;;;;;;;10910:23;10819:114;10815:386;;;10954:38;10971:20;10954:16;:38::i;:::-;11011:26;11040:21;11011:50;;11105:1;11084:18;:22;11080:106;;;11131:35;11144:21;11131:12;:35::i;:::-;11080:106;10935:266;10815:386;9990:1222;;9952:1260;11224:12;11239:4;11224:19;;11288:18;:24;11307:4;11288:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;11316:18;:22;11335:2;11316:22;;;;;;;;;;;;;;;;;;;;;;;;;11288:50;11287:102;;;;11352:13;;;;;;;;;;;11344:21;;:4;:21;;;;:44;;;;;11375:13;;;;;;;;;;;11369:19;;:2;:19;;;;11344:44;11287:102;11283:594;;;11416:5;11406:15;;11283:594;;;11499:13;;;;;;;;;;;11491:21;;:4;:21;;;:55;;;;;11530:15;;;;;;;;;;;11516:30;;:2;:30;;;;11491:55;11488:162;;;11579:14;;11567:9;:26;;;;11622:12;;11612:7;:22;;;;11488:162;11709:13;;;;;;;;;;;11703:19;;:2;:19;;;:55;;;;;11742:15;;;;;;;;;;;11726:32;;:4;:32;;;;11703:55;11699:165;;;11791:15;;11779:9;:27;;;;11835:13;;11825:7;:23;;;;11699:165;11283:594;11889:41;11904:4;11910:2;11914:6;11922:7;11889:14;:41::i;:::-;9710:2228;9607:2331;;;:::o;2449:224::-;2569:7;2602:1;2597;:6;;2605:12;2589:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2629:9;2645:1;2641;:5;;;;:::i;:::-;2629:17;;2664:1;2657:8;;;2449:224;;;;;:::o;12437:99::-;12494:17;;;;;;;;;;;:26;;:34;12521:6;12494:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12437:99;:::o;8547:323::-;8642:7;8700;;8689;:18;;8667:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;8788:19;8810:10;:8;:10::i;:::-;8788:32;;8838:24;8850:11;8838:7;:11;;:24;;;;:::i;:::-;8831:31;;;8547:323;;;:::o;11946:483::-;6270:4;6261:6;;:13;;;;;;;;;;;;;;;;;;12024:21:::1;12062:1;12048:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12024:40;;12093:4;12075;12080:1;12075:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;12119:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12109:4;12114:1;12109:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;12152:62;12169:4;12184:15;;;;;;;;;;;12202:11;12152:8;:62::i;:::-;12225:15;;;;;;;;;;;:66;;;12306:11;12332:1;12348:4;12375;12395:15;12225:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;12013:416;6306:5:::0;6297:6;;:14;;;;;;;;;;;;;;;;;;11946:483;:::o;13612:282::-;13768:7;13763:28;;13777:14;:12;:14::i;:::-;13763:28;13802:44;13820:6;13828:9;13839:6;13802:17;:44::i;:::-;13862:7;13857:29;;13871:15;:13;:15::i;:::-;13857:29;13612:282;;;;:::o;16573:164::-;16615:7;16636:15;16653;16672:19;:17;:19::i;:::-;16635:56;;;;16709:20;16721:7;16709;:11;;:20;;;;:::i;:::-;16702:27;;;;16573:164;:::o;2935:132::-;2993:7;3020:39;3024:1;3027;3020:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3013:46;;2935:132;;;;:::o;8878:219::-;8938:1;8925:9;;:14;:30;;;;;8954:1;8943:7;;:12;8925:30;8921:43;;;8957:7;;8921:43;8996:9;;8976:17;:29;;;;9034:7;;9016:15;:25;;;;9066:1;9054:9;:13;;;;9088:1;9078:7;:11;;;;8878:219;:::o;13902:610::-;14049:15;14079:23;14117:12;14144:23;14182:12;14209:13;14236:19;14247:7;14236:10;:19::i;:::-;14034:221;;;;;;;;;;;;14284:28;14304:7;14284;:15;14292:6;14284:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;14266:7;:15;14274:6;14266:15;;;;;;;;;;;;;;;:46;;;;14344:39;14367:15;14344:7;:18;14352:9;14344:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;14323:7;:18;14331:9;14323:18;;;;;;;;;;;;;;;:60;;;;14394:16;14404:5;14394:9;:16::i;:::-;14421:23;14433:4;14439;14421:11;:23::i;:::-;14477:9;14460:44;;14469:6;14460:44;;;14488:15;14460:44;;;;;;:::i;:::-;;;;;;;;14023:489;;;;;;13902:610;;;:::o;9105:117::-;9161:17;;9149:9;:29;;;;9199:15;;9189:7;:25;;;;9105:117::o;16745:257::-;16796:7;16805;16825:15;16843:7;;16825:25;;16861:15;5009:19;16861:25;;16911:20;5009:19;16911:7;;:11;;:20;;;;:::i;:::-;16901:7;:30;16897:61;;;16941:7;;5009:19;16933:25;;;;;;;;16897:61;16977:7;16986;16969:25;;;;;;16745:257;;;:::o;3075:223::-;3195:7;3227:1;3223;:5;3230:12;3215:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3254:9;3270:1;3266;:5;;;;:::i;:::-;3254:17;;3289:1;3282:8;;;3075:223;;;;;:::o;14931:615::-;15031:7;15053;15075;15097;15119;15141;15177:23;15202:12;15216:13;15246:40;15258:7;15267:9;;15278:7;;15246:11;:40::i;:::-;15176:110;;;;;;15297:19;15319:10;:8;:10::i;:::-;15297:32;;15341:15;15358:23;15383:12;15412:46;15424:7;15433:4;15439:5;15446:11;15412;:46::i;:::-;15340:118;;;;;;15477:7;15486:15;15503:4;15509:15;15526:4;15532:5;15469:69;;;;;;;;;;;;;;;;;;;14931:615;;;;;;;:::o;2305:136::-;2363:7;2390:43;2394:1;2397;2390:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2383:50;;2305:136;;;;:::o;2118:179::-;2176:7;2196:9;2212:1;2208;:5;;;;:::i;:::-;2196:17;;2237:1;2232;:6;;2224:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2288:1;2281:8;;;2118:179;;;;:::o;14520:211::-;14573:19;14595:10;:8;:10::i;:::-;14573:32;;14616:13;14632:22;14642:11;14632:5;:9;;:22;;;;:::i;:::-;14616:38;;14690:33;14717:5;14690:7;:22;14706:4;14690:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;14665:7;:22;14681:4;14665:22;;;;;;;;;;;;;;;:58;;;;14562:169;;14520:211;:::o;14739:147::-;14817:17;14829:4;14817:7;;:11;;:17;;;;:::i;:::-;14807:7;:27;;;;14858:20;14873:4;14858:10;;:14;;:20;;;;:::i;:::-;14845:10;:33;;;;14739:147;;:::o;15554:469::-;15723:7;15745;15767;15802:12;15817:30;15843:3;15817:21;15829:8;15817:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;15802:45;;15858:13;15874:28;15898:3;15874:19;15886:6;15874:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;15858:44;;15913:23;15939:28;15961:5;15939:17;15951:4;15939:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15913:54;;15986:15;16003:4;16009:5;15978:37;;;;;;;;;15554:469;;;;;;;:::o;16031:534::-;16225:7;16247;16269;16304:15;16322:24;16334:11;16322:7;:11;;:24;;;;:::i;:::-;16304:42;;16357:12;16372:21;16381:11;16372:4;:8;;:21;;;;:::i;:::-;16357:36;;16404:13;16420:22;16430:11;16420:5;:9;;:22;;;;:::i;:::-;16404:38;;16453:23;16479:28;16501:5;16479:17;16491:4;16479:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;16453:54;;16526:7;16535:15;16552:4;16518:39;;;;;;;;;;16031:534;;;;;;;;:::o;2681:246::-;2739:7;2768:1;2763;:6;2759:47;;;2793:1;2786:8;;;;2759:47;2816:9;2832:1;2828;:5;;;;:::i;:::-;2816:17;;2861:1;2856;2852;:5;;;;:::i;:::-;:10;2844:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2918:1;2911:8;;;2681:246;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1478:117::-;1587:1;1584;1577:12;1601:117;1710:1;1707;1700:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:60::-;3522:3;3543:5;3536:12;;3494:60;;;:::o;3560:142::-;3610:9;3643:53;3661:34;3670:24;3688:5;3670:24;:::i;:::-;3661:34;:::i;:::-;3643:53;:::i;:::-;3630:66;;3560:142;;;:::o;3708:126::-;3758:9;3791:37;3822:5;3791:37;:::i;:::-;3778:50;;3708:126;;;:::o;3840:151::-;3915:9;3948:37;3979:5;3948:37;:::i;:::-;3935:50;;3840:151;;;:::o;3997:181::-;4109:62;4165:5;4109:62;:::i;:::-;4104:3;4097:75;3997:181;;:::o;4184:272::-;4302:4;4340:2;4329:9;4325:18;4317:26;;4353:96;4446:1;4435:9;4431:17;4422:6;4353:96;:::i;:::-;4184:272;;;;:::o;4462:118::-;4549:24;4567:5;4549:24;:::i;:::-;4544:3;4537:37;4462:118;;:::o;4586:222::-;4679:4;4717:2;4706:9;4702:18;4694:26;;4730:71;4798:1;4787:9;4783:17;4774:6;4730:71;:::i;:::-;4586:222;;;;:::o;4814:619::-;4891:6;4899;4907;4956:2;4944:9;4935:7;4931:23;4927:32;4924:119;;;4962:79;;:::i;:::-;4924:119;5082:1;5107:53;5152:7;5143:6;5132:9;5128:22;5107:53;:::i;:::-;5097:63;;5053:117;5209:2;5235:53;5280:7;5271:6;5260:9;5256:22;5235:53;:::i;:::-;5225:63;;5180:118;5337:2;5363:53;5408:7;5399:6;5388:9;5384:22;5363:53;:::i;:::-;5353:63;;5308:118;4814:619;;;;;:::o;5439:86::-;5474:7;5514:4;5507:5;5503:16;5492:27;;5439:86;;;:::o;5531:112::-;5614:22;5630:5;5614:22;:::i;:::-;5609:3;5602:35;5531:112;;:::o;5649:214::-;5738:4;5776:2;5765:9;5761:18;5753:26;;5789:67;5853:1;5842:9;5838:17;5829:6;5789:67;:::i;:::-;5649:214;;;;:::o;5869:118::-;5956:24;5974:5;5956:24;:::i;:::-;5951:3;5944:37;5869:118;;:::o;5993:222::-;6086:4;6124:2;6113:9;6109:18;6101:26;;6137:71;6205:1;6194:9;6190:17;6181:6;6137:71;:::i;:::-;5993:222;;;;:::o;6221:104::-;6266:7;6295:24;6313:5;6295:24;:::i;:::-;6284:35;;6221:104;;;:::o;6331:138::-;6412:32;6438:5;6412:32;:::i;:::-;6405:5;6402:43;6392:71;;6459:1;6456;6449:12;6392:71;6331:138;:::o;6475:155::-;6529:5;6567:6;6554:20;6545:29;;6583:41;6618:5;6583:41;:::i;:::-;6475:155;;;;:::o;6636:345::-;6703:6;6752:2;6740:9;6731:7;6727:23;6723:32;6720:119;;;6758:79;;:::i;:::-;6720:119;6878:1;6903:61;6956:7;6947:6;6936:9;6932:22;6903:61;:::i;:::-;6893:71;;6849:125;6636:345;;;;:::o;6987:329::-;7046:6;7095:2;7083:9;7074:7;7070:23;7066:32;7063:119;;;7101:79;;:::i;:::-;7063:119;7221:1;7246:53;7291:7;7282:6;7271:9;7267:22;7246:53;:::i;:::-;7236:63;;7192:117;6987:329;;;;:::o;7322:116::-;7392:21;7407:5;7392:21;:::i;:::-;7385:5;7382:32;7372:60;;7428:1;7425;7418:12;7372:60;7322:116;:::o;7444:133::-;7487:5;7525:6;7512:20;7503:29;;7541:30;7565:5;7541:30;:::i;:::-;7444:133;;;;:::o;7583:323::-;7639:6;7688:2;7676:9;7667:7;7663:23;7659:32;7656:119;;;7694:79;;:::i;:::-;7656:119;7814:1;7839:50;7881:7;7872:6;7861:9;7857:22;7839:50;:::i;:::-;7829:60;;7785:114;7583:323;;;;:::o;7912:329::-;7971:6;8020:2;8008:9;7999:7;7995:23;7991:32;7988:119;;;8026:79;;:::i;:::-;7988:119;8146:1;8171:53;8216:7;8207:6;8196:9;8192:22;8171:53;:::i;:::-;8161:63;;8117:117;7912:329;;;;:::o;8247:765::-;8333:6;8341;8349;8357;8406:3;8394:9;8385:7;8381:23;8377:33;8374:120;;;8413:79;;:::i;:::-;8374:120;8533:1;8558:53;8603:7;8594:6;8583:9;8579:22;8558:53;:::i;:::-;8548:63;;8504:117;8660:2;8686:53;8731:7;8722:6;8711:9;8707:22;8686:53;:::i;:::-;8676:63;;8631:118;8788:2;8814:53;8859:7;8850:6;8839:9;8835:22;8814:53;:::i;:::-;8804:63;;8759:118;8916:2;8942:53;8987:7;8978:6;8967:9;8963:22;8942:53;:::i;:::-;8932:63;;8887:118;8247:765;;;;;;;:::o;9018:117::-;9127:1;9124;9117:12;9141:117;9250:1;9247;9240:12;9264:117;9373:1;9370;9363:12;9404:568;9477:8;9487:6;9537:3;9530:4;9522:6;9518:17;9514:27;9504:122;;9545:79;;:::i;:::-;9504:122;9658:6;9645:20;9635:30;;9688:18;9680:6;9677:30;9674:117;;;9710:79;;:::i;:::-;9674:117;9824:4;9816:6;9812:17;9800:29;;9878:3;9870:4;9862:6;9858:17;9848:8;9844:32;9841:41;9838:128;;;9885:79;;:::i;:::-;9838:128;9404:568;;;;;:::o;9978:698::-;10070:6;10078;10086;10135:2;10123:9;10114:7;10110:23;10106:32;10103:119;;;10141:79;;:::i;:::-;10103:119;10289:1;10278:9;10274:17;10261:31;10319:18;10311:6;10308:30;10305:117;;;10341:79;;:::i;:::-;10305:117;10454:80;10526:7;10517:6;10506:9;10502:22;10454:80;:::i;:::-;10436:98;;;;10232:312;10583:2;10609:50;10651:7;10642:6;10631:9;10627:22;10609:50;:::i;:::-;10599:60;;10554:115;9978:698;;;;;:::o;10682:474::-;10750:6;10758;10807:2;10795:9;10786:7;10782:23;10778:32;10775:119;;;10813:79;;:::i;:::-;10775:119;10933:1;10958:53;11003:7;10994:6;10983:9;10979:22;10958:53;:::i;:::-;10948:63;;10904:117;11060:2;11086:53;11131:7;11122:6;11111:9;11107:22;11086:53;:::i;:::-;11076:63;;11031:118;10682:474;;;;;:::o;11162:182::-;11302:34;11298:1;11290:6;11286:14;11279:58;11162:182;:::o;11350:366::-;11492:3;11513:67;11577:2;11572:3;11513:67;:::i;:::-;11506:74;;11589:93;11678:3;11589:93;:::i;:::-;11707:2;11702:3;11698:12;11691:19;;11350:366;;;:::o;11722:419::-;11888:4;11926:2;11915:9;11911:18;11903:26;;11975:9;11969:4;11965:20;11961:1;11950:9;11946:17;11939:47;12003:131;12129:4;12003:131;:::i;:::-;11995:139;;11722:419;;;:::o;12147:226::-;12287:34;12283:1;12275:6;12271:14;12264:58;12356:9;12351:2;12343:6;12339:15;12332:34;12147:226;:::o;12379:366::-;12521:3;12542:67;12606:2;12601:3;12542:67;:::i;:::-;12535:74;;12618:93;12707:3;12618:93;:::i;:::-;12736:2;12731:3;12727:12;12720:19;;12379:366;;;:::o;12751:419::-;12917:4;12955:2;12944:9;12940:18;12932:26;;13004:9;12998:4;12994:20;12990:1;12979:9;12975:17;12968:47;13032:131;13158:4;13032:131;:::i;:::-;13024:139;;12751:419;;;:::o;13176:180::-;13224:77;13221:1;13214:88;13321:4;13318:1;13311:15;13345:4;13342:1;13335:15;13362:305;13402:3;13421:20;13439:1;13421:20;:::i;:::-;13416:25;;13455:20;13473:1;13455:20;:::i;:::-;13450:25;;13609:1;13541:66;13537:74;13534:1;13531:81;13528:107;;;13615:18;;:::i;:::-;13528:107;13659:1;13656;13652:9;13645:16;;13362:305;;;;:::o;13673:180::-;13721:77;13718:1;13711:88;13818:4;13815:1;13808:15;13842:4;13839:1;13832:15;13859:233;13898:3;13921:24;13939:5;13921:24;:::i;:::-;13912:33;;13967:66;13960:5;13957:77;13954:103;;;14037:18;;:::i;:::-;13954:103;14084:1;14077:5;14073:13;14066:20;;13859:233;;;:::o;14098:173::-;14238:25;14234:1;14226:6;14222:14;14215:49;14098:173;:::o;14277:366::-;14419:3;14440:67;14504:2;14499:3;14440:67;:::i;:::-;14433:74;;14516:93;14605:3;14516:93;:::i;:::-;14634:2;14629:3;14625:12;14618:19;;14277:366;;;:::o;14649:419::-;14815:4;14853:2;14842:9;14838:18;14830:26;;14902:9;14896:4;14892:20;14888:1;14877:9;14873:17;14866:47;14930:131;15056:4;14930:131;:::i;:::-;14922:139;;14649:419;;;:::o;15074:222::-;15214:34;15210:1;15202:6;15198:14;15191:58;15283:5;15278:2;15270:6;15266:15;15259:30;15074:222;:::o;15302:366::-;15444:3;15465:67;15529:2;15524:3;15465:67;:::i;:::-;15458:74;;15541:93;15630:3;15541:93;:::i;:::-;15659:2;15654:3;15650:12;15643:19;;15302:366;;;:::o;15674:419::-;15840:4;15878:2;15867:9;15863:18;15855:26;;15927:9;15921:4;15917:20;15913:1;15902:9;15898:17;15891:47;15955:131;16081:4;15955:131;:::i;:::-;15947:139;;15674:419;;;:::o;16099:225::-;16239:34;16235:1;16227:6;16223:14;16216:58;16308:8;16303:2;16295:6;16291:15;16284:33;16099:225;:::o;16330:366::-;16472:3;16493:67;16557:2;16552:3;16493:67;:::i;:::-;16486:74;;16569:93;16658:3;16569:93;:::i;:::-;16687:2;16682:3;16678:12;16671:19;;16330:366;;;:::o;16702:419::-;16868:4;16906:2;16895:9;16891:18;16883:26;;16955:9;16949:4;16945:20;16941:1;16930:9;16926:17;16919:47;16983:131;17109:4;16983:131;:::i;:::-;16975:139;;16702:419;;;:::o;17127:223::-;17267:34;17263:1;17255:6;17251:14;17244:58;17336:6;17331:2;17323:6;17319:15;17312:31;17127:223;:::o;17356:366::-;17498:3;17519:67;17583:2;17578:3;17519:67;:::i;:::-;17512:74;;17595:93;17684:3;17595:93;:::i;:::-;17713:2;17708:3;17704:12;17697:19;;17356:366;;;:::o;17728:419::-;17894:4;17932:2;17921:9;17917:18;17909:26;;17981:9;17975:4;17971:20;17967:1;17956:9;17952:17;17945:47;18009:131;18135:4;18009:131;:::i;:::-;18001:139;;17728:419;;;:::o;18153:221::-;18293:34;18289:1;18281:6;18277:14;18270:58;18362:4;18357:2;18349:6;18345:15;18338:29;18153:221;:::o;18380:366::-;18522:3;18543:67;18607:2;18602:3;18543:67;:::i;:::-;18536:74;;18619:93;18708:3;18619:93;:::i;:::-;18737:2;18732:3;18728:12;18721:19;;18380:366;;;:::o;18752:419::-;18918:4;18956:2;18945:9;18941:18;18933:26;;19005:9;18999:4;18995:20;18991:1;18980:9;18976:17;18969:47;19033:131;19159:4;19033:131;:::i;:::-;19025:139;;18752:419;;;:::o;19177:224::-;19317:34;19313:1;19305:6;19301:14;19294:58;19386:7;19381:2;19373:6;19369:15;19362:32;19177:224;:::o;19407:366::-;19549:3;19570:67;19634:2;19629:3;19570:67;:::i;:::-;19563:74;;19646:93;19735:3;19646:93;:::i;:::-;19764:2;19759:3;19755:12;19748:19;;19407:366;;;:::o;19779:419::-;19945:4;19983:2;19972:9;19968:18;19960:26;;20032:9;20026:4;20022:20;20018:1;20007:9;20003:17;19996:47;20060:131;20186:4;20060:131;:::i;:::-;20052:139;;19779:419;;;:::o;20204:222::-;20344:34;20340:1;20332:6;20328:14;20321:58;20413:5;20408:2;20400:6;20396:15;20389:30;20204:222;:::o;20432:366::-;20574:3;20595:67;20659:2;20654:3;20595:67;:::i;:::-;20588:74;;20671:93;20760:3;20671:93;:::i;:::-;20789:2;20784:3;20780:12;20773:19;;20432:366;;;:::o;20804:419::-;20970:4;21008:2;20997:9;20993:18;20985:26;;21057:9;21051:4;21047:20;21043:1;21032:9;21028:17;21021:47;21085:131;21211:4;21085:131;:::i;:::-;21077:139;;20804:419;;;:::o;21229:228::-;21369:34;21365:1;21357:6;21353:14;21346:58;21438:11;21433:2;21425:6;21421:15;21414:36;21229:228;:::o;21463:366::-;21605:3;21626:67;21690:2;21685:3;21626:67;:::i;:::-;21619:74;;21702:93;21791:3;21702:93;:::i;:::-;21820:2;21815:3;21811:12;21804:19;;21463:366;;;:::o;21835:419::-;22001:4;22039:2;22028:9;22024:18;22016:26;;22088:9;22082:4;22078:20;22074:1;22063:9;22059:17;22052:47;22116:131;22242:4;22116:131;:::i;:::-;22108:139;;21835:419;;;:::o;22260:250::-;22400:34;22396:1;22388:6;22384:14;22377:58;22469:33;22464:2;22456:6;22452:15;22445:58;22260:250;:::o;22516:366::-;22658:3;22679:67;22743:2;22738:3;22679:67;:::i;:::-;22672:74;;22755:93;22844:3;22755:93;:::i;:::-;22873:2;22868:3;22864:12;22857:19;;22516:366;;;:::o;22888:419::-;23054:4;23092:2;23081:9;23077:18;23069:26;;23141:9;23135:4;23131:20;23127:1;23116:9;23112:17;23105:47;23169:131;23295:4;23169:131;:::i;:::-;23161:139;;22888:419;;;:::o;23313:178::-;23453:30;23449:1;23441:6;23437:14;23430:54;23313:178;:::o;23497:366::-;23639:3;23660:67;23724:2;23719:3;23660:67;:::i;:::-;23653:74;;23736:93;23825:3;23736:93;:::i;:::-;23854:2;23849:3;23845:12;23838:19;;23497:366;;;:::o;23869:419::-;24035:4;24073:2;24062:9;24058:18;24050:26;;24122:9;24116:4;24112:20;24108:1;24097:9;24093:17;24086:47;24150:131;24276:4;24150:131;:::i;:::-;24142:139;;23869:419;;;:::o;24294:222::-;24434:34;24430:1;24422:6;24418:14;24411:58;24503:5;24498:2;24490:6;24486:15;24479:30;24294:222;:::o;24522:366::-;24664:3;24685:67;24749:2;24744:3;24685:67;:::i;:::-;24678:74;;24761:93;24850:3;24761:93;:::i;:::-;24879:2;24874:3;24870:12;24863:19;;24522:366;;;:::o;24894:419::-;25060:4;25098:2;25087:9;25083:18;25075:26;;25147:9;25141:4;25137:20;25133:1;25122:9;25118:17;25111:47;25175:131;25301:4;25175:131;:::i;:::-;25167:139;;24894:419;;;:::o;25319:222::-;25459:34;25455:1;25447:6;25443:14;25436:58;25528:5;25523:2;25515:6;25511:15;25504:30;25319:222;:::o;25547:366::-;25689:3;25710:67;25774:2;25769:3;25710:67;:::i;:::-;25703:74;;25786:93;25875:3;25786:93;:::i;:::-;25904:2;25899:3;25895:12;25888:19;;25547:366;;;:::o;25919:419::-;26085:4;26123:2;26112:9;26108:18;26100:26;;26172:9;26166:4;26162:20;26158:1;26147:9;26143:17;26136:47;26200:131;26326:4;26200:131;:::i;:::-;26192:139;;25919:419;;;:::o;26344:191::-;26384:4;26404:20;26422:1;26404:20;:::i;:::-;26399:25;;26438:20;26456:1;26438:20;:::i;:::-;26433:25;;26477:1;26474;26471:8;26468:34;;;26482:18;;:::i;:::-;26468:34;26527:1;26524;26520:9;26512:17;;26344:191;;;;:::o;26541:229::-;26681:34;26677:1;26669:6;26665:14;26658:58;26750:12;26745:2;26737:6;26733:15;26726:37;26541:229;:::o;26776:366::-;26918:3;26939:67;27003:2;26998:3;26939:67;:::i;:::-;26932:74;;27015:93;27104:3;27015:93;:::i;:::-;27133:2;27128:3;27124:12;27117:19;;26776:366;;;:::o;27148:419::-;27314:4;27352:2;27341:9;27337:18;27329:26;;27401:9;27395:4;27391:20;27387:1;27376:9;27372:17;27365:47;27429:131;27555:4;27429:131;:::i;:::-;27421:139;;27148:419;;;:::o;27573:180::-;27621:77;27618:1;27611:88;27718:4;27715:1;27708:15;27742:4;27739:1;27732:15;27759:143;27816:5;27847:6;27841:13;27832:22;;27863:33;27890:5;27863:33;:::i;:::-;27759:143;;;;:::o;27908:351::-;27978:6;28027:2;28015:9;28006:7;28002:23;27998:32;27995:119;;;28033:79;;:::i;:::-;27995:119;28153:1;28178:64;28234:7;28225:6;28214:9;28210:22;28178:64;:::i;:::-;28168:74;;28124:128;27908:351;;;;:::o;28265:85::-;28310:7;28339:5;28328:16;;28265:85;;;:::o;28356:158::-;28414:9;28447:61;28465:42;28474:32;28500:5;28474:32;:::i;:::-;28465:42;:::i;:::-;28447:61;:::i;:::-;28434:74;;28356:158;;;:::o;28520:147::-;28615:45;28654:5;28615:45;:::i;:::-;28610:3;28603:58;28520:147;;:::o;28673:114::-;28740:6;28774:5;28768:12;28758:22;;28673:114;;;:::o;28793:184::-;28892:11;28926:6;28921:3;28914:19;28966:4;28961:3;28957:14;28942:29;;28793:184;;;;:::o;28983:132::-;29050:4;29073:3;29065:11;;29103:4;29098:3;29094:14;29086:22;;28983:132;;;:::o;29121:108::-;29198:24;29216:5;29198:24;:::i;:::-;29193:3;29186:37;29121:108;;:::o;29235:179::-;29304:10;29325:46;29367:3;29359:6;29325:46;:::i;:::-;29403:4;29398:3;29394:14;29380:28;;29235:179;;;;:::o;29420:113::-;29490:4;29522;29517:3;29513:14;29505:22;;29420:113;;;:::o;29569:732::-;29688:3;29717:54;29765:5;29717:54;:::i;:::-;29787:86;29866:6;29861:3;29787:86;:::i;:::-;29780:93;;29897:56;29947:5;29897:56;:::i;:::-;29976:7;30007:1;29992:284;30017:6;30014:1;30011:13;29992:284;;;30093:6;30087:13;30120:63;30179:3;30164:13;30120:63;:::i;:::-;30113:70;;30206:60;30259:6;30206:60;:::i;:::-;30196:70;;30052:224;30039:1;30036;30032:9;30027:14;;29992:284;;;29996:14;30292:3;30285:10;;29693:608;;;29569:732;;;;:::o;30307:831::-;30570:4;30608:3;30597:9;30593:19;30585:27;;30622:71;30690:1;30679:9;30675:17;30666:6;30622:71;:::i;:::-;30703:80;30779:2;30768:9;30764:18;30755:6;30703:80;:::i;:::-;30830:9;30824:4;30820:20;30815:2;30804:9;30800:18;30793:48;30858:108;30961:4;30952:6;30858:108;:::i;:::-;30850:116;;30976:72;31044:2;31033:9;31029:18;31020:6;30976:72;:::i;:::-;31058:73;31126:3;31115:9;31111:19;31102:6;31058:73;:::i;:::-;30307:831;;;;;;;;:::o;31144:180::-;31192:77;31189:1;31182:88;31289:4;31286:1;31279:15;31313:4;31310:1;31303:15;31330:185;31370:1;31387:20;31405:1;31387:20;:::i;:::-;31382:25;;31421:20;31439:1;31421:20;:::i;:::-;31416:25;;31460:1;31450:35;;31465:18;;:::i;:::-;31450:35;31507:1;31504;31500:9;31495:14;;31330:185;;;;:::o;31521:177::-;31661:29;31657:1;31649:6;31645:14;31638:53;31521:177;:::o;31704:366::-;31846:3;31867:67;31931:2;31926:3;31867:67;:::i;:::-;31860:74;;31943:93;32032:3;31943:93;:::i;:::-;32061:2;32056:3;32052:12;32045:19;;31704:366;;;:::o;32076:419::-;32242:4;32280:2;32269:9;32265:18;32257:26;;32329:9;32323:4;32319:20;32315:1;32304:9;32300:17;32293:47;32357:131;32483:4;32357:131;:::i;:::-;32349:139;;32076:419;;;:::o;32501:348::-;32541:7;32564:20;32582:1;32564:20;:::i;:::-;32559:25;;32598:20;32616:1;32598:20;:::i;:::-;32593:25;;32786:1;32718:66;32714:74;32711:1;32708:81;32703:1;32696:9;32689:17;32685:105;32682:131;;;32793:18;;:::i;:::-;32682:131;32841:1;32838;32834:9;32823:20;;32501:348;;;;:::o;32855:220::-;32995:34;32991:1;32983:6;32979:14;32972:58;33064:3;33059:2;33051:6;33047:15;33040:28;32855:220;:::o;33081:366::-;33223:3;33244:67;33308:2;33303:3;33244:67;:::i;:::-;33237:74;;33320:93;33409:3;33320:93;:::i;:::-;33438:2;33433:3;33429:12;33422:19;;33081:366;;;:::o;33453:419::-;33619:4;33657:2;33646:9;33642:18;33634:26;;33706:9;33700:4;33696:20;33692:1;33681:9;33677:17;33670:47;33734:131;33860:4;33734:131;:::i;:::-;33726:139;;33453:419;;;:::o

Swarm Source

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