ETH Price: $3,607.56 (+4.53%)
 

Overview

Max Total Supply

10,000,000 KAREN

Holders

55

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
12,628.283603325514620917 KAREN

Value
$0.00
0x03f1951c23b0d1523db7ddc39c3b107aad416914
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
KAREN

Compiler Version
v0.8.16+commit.07a7930e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

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

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

// SPDX-License-Identifier: Unlicensed

// t.me/karenfromnashville
// karenfromnashville.com

pragma solidity ^0.8.16;

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

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

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

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

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

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

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

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

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

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

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

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

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

}

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

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

abstract contract Ownable is Context {
    address internal _owner;
    address private _previousOwner;

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

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

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

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

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

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

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

interface IuniswapV2Router01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
}

interface IUniswapV2Router02 is IuniswapV2Router01 {
}

contract KAREN is Context, IERC20, Ownable {

    using SafeMath for uint256;
    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    mapping(address => bool) private _isExcluded;
    mapping(address => bool) private _isExcludedFromMaxWallet;

    address[] private _excluded;
    address public _marketingWalletAddress;
    address constant _burnAddress = 0x000000000000000000000000000000000000dEaD;
    uint256 private constant MAX = ~uint256(0);
    uint256 private _tTotal;
    uint256 private _rTotal;
    uint256 private _tFeeTotal;
    string private _name;
    string private _symbol;
    uint256 private _decimals;

    uint256 private _buyTaxFee = 0;
    uint256 private _buyMarketingFee = 5000;
    uint256 private _buyBurnFee = 0;

    uint256 private _sellTaxFee = 0;
    uint256 private _sellMarketingFee = 5000;
    uint256 private _sellBurnFee = 0;

    uint256 public _taxFee = _buyTaxFee;
    uint256 public _marketingFee = _buyMarketingFee;
    uint256 public _burnFee = _buyBurnFee;

    uint256 private _previousTaxFee = _taxFee;
    uint256 private _previousMarketingFee = _marketingFee;
    uint256 private _previousBurnFee = _burnFee;

    IUniswapV2Router02  public uniswapV2Router ;
    address public uniswapV2Pair;
    uint256 public maxWalletBalance;
    bool public tradingEnabled = true;

    constructor() {
        _name = "KarenFromNashville"; //  
        _symbol = "KAREN"; // 
        _decimals = 18; // 
        _tTotal = 10000000 * 10**_decimals; //  
        maxWalletBalance = 10000000  * 10**_decimals; //   
        _rTotal = (MAX - (MAX % _tTotal));
        _marketingWalletAddress =  0xbded47c930F21359E7200E6944172cDe2f20f623;  // 
        _rOwned[_msgSender()] = _rTotal;

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

        _isExcludedFromFee[_msgSender()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_marketingWalletAddress] = true;

        _isExcludedFromMaxWallet[owner()] = true;
        _isExcludedFromMaxWallet[address(this)] = true;
        _isExcludedFromMaxWallet[_burnAddress] = true;
        _isExcludedFromMaxWallet[_marketingWalletAddress]= true;

        _isExcluded[_burnAddress] = true;
        _isExcluded[uniswapV2Pair ] = true;

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

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

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

    function decimals() public view returns (uint256) {
        return _decimals;
    }

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

    function balanceOf(address account) public view override returns (uint256) {
        if (_isExcluded[account]) return _tOwned[account];
        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 increaseAllowance(address spender, uint256 addedValue)
        public
        virtual
        returns (bool)
    {
        _approve(
            _msgSender(),
            spender,
            _allowances[_msgSender()][spender].add(addedValue)
        );
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue)
        public
        virtual
        returns (bool)
    {
        _approve(
            _msgSender(),
            spender,
            _allowances[_msgSender()][spender].sub(
                subtractedValue,
                "ERC20: decreased allowance below zero"
            )
        );
        return true;
    }

    function isExcludedFromReward(address account) public view returns (bool) {
        return _isExcluded[account];
    }

    function totalFees() public view returns (uint256) {
        return _tFeeTotal;
    }

    function deliver(uint256 tAmount) public {
        address sender = _msgSender();
        require(
            !_isExcluded[sender],
            "Excluded addresses cannot call this function"
        );
        (uint256 rAmount, , , , , , ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rTotal = _rTotal.sub(rAmount);
        _tFeeTotal = _tFeeTotal.add(tAmount);
    }

    function reflectionFromToken(uint256 tAmount, bool deductTransferFee)
        public
        view
        returns (uint256)
    {
        require(tAmount <= _tTotal, "Amount must be less than supply");
        if (!deductTransferFee) {
            (uint256 rAmount, , , , , , ) = _getValues(tAmount);
            return rAmount;
        } else {
            (, uint256 rTransferAmount, , , , , ) = _getValues(tAmount);
            return rTransferAmount;
        }
    }

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

    function excludeFromReward(address account) public onlyOwner {
        require(!_isExcluded[account], "Account is already excluded");
        if (_rOwned[account] > 0) {
            _tOwned[account] = tokenFromReflection(_rOwned[account]);
        }
        _isExcluded[account] = true;
        _excluded.push(account);
    }

    function includeInReward(address account) external onlyOwner {
        require(_isExcluded[account], "Account is already included");
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_excluded[i] == account) {
                _excluded[i] = _excluded[_excluded.length - 1];
                _tOwned[account] = 0;
                _isExcluded[account] = false;
                _excluded.pop();
                break;
            }
        }
    }

    function _transferBothExcluded(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tBurn,
            uint256 tMarket
        ) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeBurn(tBurn);
        _takeMarketing(tMarket);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function excludeFromFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = true;
    }

     function enableTrading() external onlyOwner {
        tradingEnabled = true;
    }

    function includeInFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = false;
    }

    function includeAndExcludedFromMaxWallet(address account, bool value) public onlyOwner {
            _isExcludedFromMaxWallet[account] = value;
    }

    function isExcludedFromMaxWallet(address account) public view returns(bool){
            return _isExcludedFromMaxWallet[account];
    }

    function setSellFeePercent(
        uint256 tFee,
        uint256 mFee,
        uint256 cFee
    ) external onlyOwner {
        _sellTaxFee = tFee;
        _taxFee = _sellTaxFee;
        _sellMarketingFee = mFee;
        _marketingFee = _sellMarketingFee;
        _sellBurnFee = cFee;
        _burnFee = _sellBurnFee;
    }

    function setBuyFeePercent(
        uint256 tFee,
        uint256 mFee,
        uint256 cFee
    ) external onlyOwner {
        _buyTaxFee = tFee;
        _taxFee = _buyTaxFee;
        _buyMarketingFee = mFee;
        _marketingFee = _buyMarketingFee;
        _buyBurnFee = cFee;
        _burnFee = _buyBurnFee;
    }

    function setMarketingWalletAddress(address _addr) external onlyOwner {
        _marketingWalletAddress = _addr;
    }

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

    function _getValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tBurn,
            uint256 tMarket
        ) = _getTValues(tAmount);
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(
            tAmount,
            tFee,
            tBurn,
            tMarket,
            _getRate()
        );
        return (
            rAmount,
            rTransferAmount,
            rFee,
            tTransferAmount,
            tFee,
            tBurn,
            tMarket
        );
    }

    function _getTValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = calculateTaxFee(tAmount);
        uint256 tBurn = calculateBurn(tAmount);
        uint256 tMarket = calculateMarketingFee(tAmount);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tBurn).sub(
            tMarket
        );
        return (tTransferAmount, tFee, tBurn, tMarket);
    }

    function _getRValues(
        uint256 tAmount,
        uint256 tFee,
        uint256 tBurn,
        uint256 tMarket,
        uint256 currentRate
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rBurn = tBurn.mul(currentRate);
        uint256 rMarket= tMarket.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rBurn).sub(
            rMarket
        );
        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;
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (
                _rOwned[_excluded[i]] > rSupply ||
                _tOwned[_excluded[i]] > tSupply
            ) return (_rTotal, _tTotal);
            rSupply = rSupply.sub(_rOwned[_excluded[i]]);
            tSupply = tSupply.sub(_tOwned[_excluded[i]]);
        }
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

    function _takeBurn(uint256 tBurn)
        private
    {
         uint256 currentRate = _getRate();
        uint256 rBurn = tBurn.mul(
            currentRate
        );
        _rOwned[_burnAddress] = _rOwned[_burnAddress].add(
            rBurn
        );
        if (_isExcluded[_burnAddress])
            _tOwned[_burnAddress] = _tOwned[_burnAddress].add(
                tBurn
            );
    }

    function _takeMarketing(uint256 tMarket) private {
        uint256 currentRate = _getRate();
        uint256 rMarket = tMarket.mul(currentRate);
        _rOwned[_marketingWalletAddress] = _rOwned[_marketingWalletAddress].add(
            rMarket
        );
        if (_isExcluded[_marketingWalletAddress])
            _tOwned[_marketingWalletAddress] = _tOwned[_marketingWalletAddress].add(
                tMarket
            );
    }

    function calculateTaxFee(uint256 _amount) private view returns (uint256) {
        return _amount.mul(_taxFee).div(10**4);
    }

    function calculateMarketingFee(uint256 _amount)
        private
        view
        returns (uint256)
    {
        return _amount.mul(_marketingFee).div(10**4);
    }

    function calculateBurn(uint256 _amount)
        private
        view
        returns (uint256)
    {
        return _amount.mul(_burnFee).div(10**4);
    }

    function removeAllFee() private {
        _previousTaxFee = _taxFee;
        _previousMarketingFee = _marketingFee;
        _previousBurnFee = _burnFee;

        _taxFee = 0;
        _marketingFee = 0;
        _burnFee = 0;
    }

    function restoreAllFee() private {
        _taxFee = _previousTaxFee;
        _marketingFee = _previousMarketingFee;
        _burnFee = _previousBurnFee;
    }

    function isExcludedFromFee(address account) public view returns (bool) {
        return _isExcludedFromFee[account];
    }

    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() && !tradingEnabled) {
            require(tradingEnabled, "Trading is not enabled yet");
        }

         if (
                from != owner() &&
                to != address(this) &&
                to != _burnAddress &&
                to != uniswapV2Pair
            ) {
                uint256 currentBalance = balanceOf(to);
                require(
                    _isExcludedFromMaxWallet[to] ||
                        (currentBalance + amount <= maxWalletBalance),
                    "ERC20: Reached Max wallet holding"
                );
            }
        
        bool takeFee = true;
        if (_isExcludedFromFee[from] || _isExcludedFromFee[to]) {
            takeFee = false;
        } else {
            if (from == uniswapV2Pair ) {
                _taxFee = _buyTaxFee;
                _marketingFee = _buyMarketingFee;
                _burnFee = _buyBurnFee;
            } else if (to == uniswapV2Pair ) {
                _taxFee = _sellTaxFee;
                _marketingFee = _sellMarketingFee;
                _burnFee = _sellBurnFee;
            } else {
                _taxFee = 0;
                _marketingFee = 0;
                _burnFee = 0;
            }
        }
       
        _tokenTransfer(from, to, amount, takeFee);

    }

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

        if (_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferFromExcluded(sender, recipient, amount);
        } else if (!_isExcluded[sender] && _isExcluded[recipient]) {
            _transferToExcluded(sender, recipient, amount);
        } else if (!_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferStandard(sender, recipient, amount);
        } else if (_isExcluded[sender] && _isExcluded[recipient]) {
            _transferBothExcluded(sender, recipient, amount);
        } else {
            _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 tBurn,
            uint256 tMarket
        ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeBurn(tBurn);
        _takeMarketing(tMarket);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferToExcluded(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tBurn,
            uint256 tMarket
        ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeBurn(tBurn);
        _takeMarketing(tMarket);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferFromExcluded(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tBurn,
            uint256 tMarket
        ) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeBurn(tBurn);
        _takeMarketing(tMarket);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_burnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingWalletAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"includeAndExcludedFromMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromMaxWallet","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tFee","type":"uint256"},{"internalType":"uint256","name":"mFee","type":"uint256"},{"internalType":"uint256","name":"cFee","type":"uint256"}],"name":"setBuyFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"setMarketingWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tFee","type":"uint256"},{"internalType":"uint256","name":"mFee","type":"uint256"},{"internalType":"uint256","name":"cFee","type":"uint256"}],"name":"setSellFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"}]

60806040526000601055611388601155600060125560006013556113886014556000601555601054601655601154601755601254601855601654601955601754601a55601854601b556001601f60006101000a81548160ff0219169083151502179055503480156200007057600080fd5b50620000816200095e60201b60201c565b6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36040518060400160405280601281526020017f4b6172656e46726f6d4e61736876696c6c650000000000000000000000000000815250600d908162000181919062000c09565b506040518060400160405280600581526020017f4b4152454e000000000000000000000000000000000000000000000000000000815250600e9081620001c8919062000c09565b506012600f81905550600f54600a620001e2919062000e73565b62989680620001f2919062000ec4565b600a81905550600f54600a62000209919062000e73565b6298968062000219919062000ec4565b601e81905550600a5460001962000231919062000f54565b60001962000240919062000f8c565b600b8190555073bded47c930f21359e7200e6944172cde2f20f623600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600b5460026000620002b26200095e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000355573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200037b919062001031565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003e3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000409919062001031565b6040518363ffffffff1660e01b81526004016200042892919062001074565b6020604051808303816000875af115801562000448573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200046e919062001031565b601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620004ff6200095e60201b60201c565b6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160056000620005546200095e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760006200068d6200096660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016006600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160066000601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620008ee6200095e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600a546040516200094f9190620010b2565b60405180910390a350620010cf565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000a1157607f821691505b60208210810362000a275762000a26620009c9565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000a917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000a52565b62000a9d868362000a52565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000aea62000ae462000ade8462000ab5565b62000abf565b62000ab5565b9050919050565b6000819050919050565b62000b068362000ac9565b62000b1e62000b158262000af1565b84845462000a5f565b825550505050565b600090565b62000b3562000b26565b62000b4281848462000afb565b505050565b5b8181101562000b6a5762000b5e60008262000b2b565b60018101905062000b48565b5050565b601f82111562000bb95762000b838162000a2d565b62000b8e8462000a42565b8101602085101562000b9e578190505b62000bb662000bad8562000a42565b83018262000b47565b50505b505050565b600082821c905092915050565b600062000bde6000198460080262000bbe565b1980831691505092915050565b600062000bf9838362000bcb565b9150826002028217905092915050565b62000c14826200098f565b67ffffffffffffffff81111562000c305762000c2f6200099a565b5b62000c3c8254620009f8565b62000c4982828562000b6e565b600060209050601f83116001811462000c81576000841562000c6c578287015190505b62000c78858262000beb565b86555062000ce8565b601f19841662000c918662000a2d565b60005b8281101562000cbb5784890151825560018201915060208501945060208101905062000c94565b8683101562000cdb578489015162000cd7601f89168262000bcb565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000d7e5780860481111562000d565762000d5562000cf0565b5b600185161562000d665780820291505b808102905062000d768562000d1f565b945062000d36565b94509492505050565b60008262000d99576001905062000e6c565b8162000da9576000905062000e6c565b816001811462000dc2576002811462000dcd5762000e03565b600191505062000e6c565b60ff84111562000de25762000de162000cf0565b5b8360020a91508482111562000dfc5762000dfb62000cf0565b5b5062000e6c565b5060208310610133831016604e8410600b841016171562000e3d5782820a90508381111562000e375762000e3662000cf0565b5b62000e6c565b62000e4c848484600162000d2c565b9250905081840481111562000e665762000e6562000cf0565b5b81810290505b9392505050565b600062000e808262000ab5565b915062000e8d8362000ab5565b925062000ebc7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000d87565b905092915050565b600062000ed18262000ab5565b915062000ede8362000ab5565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000f1a5762000f1962000cf0565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000f618262000ab5565b915062000f6e8362000ab5565b92508262000f815762000f8062000f25565b5b828206905092915050565b600062000f998262000ab5565b915062000fa68362000ab5565b925082820390508181111562000fc15762000fc062000cf0565b5b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000ff98262000fcc565b9050919050565b6200100b8162000fec565b81146200101757600080fd5b50565b6000815190506200102b8162001000565b92915050565b6000602082840312156200104a576200104962000fc7565b5b60006200105a848285016200101a565b91505092915050565b6200106e8162000fec565b82525050565b60006040820190506200108b600083018562001063565b6200109a602083018462001063565b9392505050565b620010ac8162000ab5565b82525050565b6000602082019050620010c96000830184620010a1565b92915050565b614b7a80620010df6000396000f3fe608060405234801561001057600080fd5b50600436106102325760003560e01c80634ada218b116101305780638da5cb5b116100b8578063be19674b1161007c578063be19674b146106a5578063c0b0fda2146106c1578063dd62ed3e146106df578063ea2f0b371461070f578063f2fde38b1461072b57610232565b80638da5cb5b146105eb57806395d89b4114610609578063a457c2d714610627578063a9059cbb14610657578063bbde77c11461068757610232565b80636dd3d39f116100ff5780636dd3d39f1461054757806370a0823114610577578063715018a6146105a757806388f82020146105b15780638a8c523c146105e157610232565b80634ada218b146104c15780634cb80fd5146104df57806352390c02146104fb5780635342acb41461051757610232565b8063313ce567116101be5780634144d9e4116101825780634144d9e41461041d578063437823ec1461043b5780634549b0391461045757806348eb61b61461048757806349bd5a5e146104a357610232565b8063313ce567146103795780633685d4191461039757806339509351146103b35780633b124fe7146103e35780633bd5d1731461040157610232565b80631694505e116102055780631694505e146102bf57806318160ddd146102dd57806322976e0d146102fb57806323b872dd146103195780632d8381191461034957610232565b806306fdde0314610237578063095ea7b31461025557806313114a9d14610285578063151cd1c2146102a3575b600080fd5b61023f610747565b60405161024c9190613d77565b60405180910390f35b61026f600480360381019061026a9190613e32565b6107d9565b60405161027c9190613e8d565b60405180910390f35b61028d6107f7565b60405161029a9190613eb7565b60405180910390f35b6102bd60048036038101906102b89190613ed2565b610801565b005b6102c76108b2565b6040516102d49190613f84565b60405180910390f35b6102e56108d8565b6040516102f29190613eb7565b60405180910390f35b6103036108e2565b6040516103109190613eb7565b60405180910390f35b610333600480360381019061032e9190613f9f565b6108e8565b6040516103409190613e8d565b60405180910390f35b610363600480360381019061035e9190613ff2565b6109c1565b6040516103709190613eb7565b60405180910390f35b610381610a2f565b60405161038e9190613eb7565b60405180910390f35b6103b160048036038101906103ac919061401f565b610a39565b005b6103cd60048036038101906103c89190613e32565b610d6e565b6040516103da9190613e8d565b60405180910390f35b6103eb610e21565b6040516103f89190613eb7565b60405180910390f35b61041b60048036038101906104169190613ff2565b610e27565b005b610425610fa3565b604051610432919061405b565b60405180910390f35b6104556004803603810190610450919061401f565b610fc9565b005b610471600480360381019061046c91906140a2565b6110a0565b60405161047e9190613eb7565b60405180910390f35b6104a1600480360381019061049c91906140e2565b611126565b005b6104ab6111fd565b6040516104b8919061405b565b60405180910390f35b6104c9611223565b6040516104d69190613e8d565b60405180910390f35b6104f960048036038101906104f4919061401f565b611236565b005b6105156004803603810190610510919061401f565b6112f6565b005b610531600480360381019061052c919061401f565b611591565b60405161053e9190613e8d565b60405180910390f35b610561600480360381019061055c919061401f565b6115e7565b60405161056e9190613e8d565b60405180910390f35b610591600480360381019061058c919061401f565b61163d565b60405161059e9190613eb7565b60405180910390f35b6105af611728565b005b6105cb60048036038101906105c6919061401f565b611862565b6040516105d89190613e8d565b60405180910390f35b6105e96118b8565b005b6105f3611951565b604051610600919061405b565b60405180910390f35b61061161197a565b60405161061e9190613d77565b60405180910390f35b610641600480360381019061063c9190613e32565b611a0c565b60405161064e9190613e8d565b60405180910390f35b610671600480360381019061066c9190613e32565b611ad9565b60405161067e9190613e8d565b60405180910390f35b61068f611af7565b60405161069c9190613eb7565b60405180910390f35b6106bf60048036038101906106ba9190613ed2565b611afd565b005b6106c9611bae565b6040516106d69190613eb7565b60405180910390f35b6106f960048036038101906106f49190614122565b611bb4565b6040516107069190613eb7565b60405180910390f35b6107296004803603810190610724919061401f565b611c3b565b005b6107456004803603810190610740919061401f565b611d12565b005b6060600d805461075690614191565b80601f016020809104026020016040519081016040528092919081815260200182805461078290614191565b80156107cf5780601f106107a4576101008083540402835291602001916107cf565b820191906000526020600020905b8154815290600101906020018083116107b257829003601f168201915b5050505050905090565b60006107ed6107e6611eba565b8484611ec2565b6001905092915050565b6000600c54905090565b610809611eba565b73ffffffffffffffffffffffffffffffffffffffff16610827611951565b73ffffffffffffffffffffffffffffffffffffffff161461087d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108749061420e565b60405180910390fd5b826013819055506013546016819055508160148190555060145460178190555080601581905550601554601881905550505050565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600a54905090565b60175481565b60006108f584848461208b565b6109b684610901611eba565b6109b185604051806060016040528060288152602001614af860289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610967611eba565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125d89092919063ffffffff16565b611ec2565b600190509392505050565b6000600b54821115610a08576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ff906142a0565b60405180910390fd5b6000610a1261262d565b9050610a27818461265890919063ffffffff16565b915050919050565b6000600f54905090565b610a41611eba565b73ffffffffffffffffffffffffffffffffffffffff16610a5f611951565b73ffffffffffffffffffffffffffffffffffffffff1614610ab5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aac9061420e565b60405180910390fd5b600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610b41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b389061430c565b60405180910390fd5b60005b600880549050811015610d6a578173ffffffffffffffffffffffffffffffffffffffff1660088281548110610b7c57610b7b61432c565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610d575760086001600880549050610bd6919061438a565b81548110610be757610be661432c565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660088281548110610c2657610c2561432c565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506008805480610d1d57610d1c6143be565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055610d6a565b8080610d62906143ed565b915050610b44565b5050565b6000610e17610d7b611eba565b84610e128560046000610d8c611eba565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461266e90919063ffffffff16565b611ec2565b6001905092915050565b60165481565b6000610e31611eba565b9050600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610ec0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb7906144a7565b60405180910390fd5b6000610ecb83612684565b5050505050509050610f2581600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126ec90919063ffffffff16565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610f7d81600b546126ec90919063ffffffff16565b600b81905550610f9883600c5461266e90919063ffffffff16565b600c81905550505050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610fd1611eba565b73ffffffffffffffffffffffffffffffffffffffff16610fef611951565b73ffffffffffffffffffffffffffffffffffffffff1614611045576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103c9061420e565b60405180910390fd5b6001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600a548311156110e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110de90614513565b60405180910390fd5b816111085760006110f784612684565b505050505050905080915050611120565b600061111384612684565b5050505050915050809150505b92915050565b61112e611eba565b73ffffffffffffffffffffffffffffffffffffffff1661114c611951565b73ffffffffffffffffffffffffffffffffffffffff16146111a2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111999061420e565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601f60009054906101000a900460ff1681565b61123e611eba565b73ffffffffffffffffffffffffffffffffffffffff1661125c611951565b73ffffffffffffffffffffffffffffffffffffffff16146112b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a99061420e565b60405180910390fd5b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6112fe611eba565b73ffffffffffffffffffffffffffffffffffffffff1661131c611951565b73ffffffffffffffffffffffffffffffffffffffff1614611372576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113699061420e565b60405180910390fd5b600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156113ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f69061457f565b60405180910390fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156114d35761148f600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546109c1565b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506008819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156116d857600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050611723565b611720600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546109c1565b90505b919050565b611730611eba565b73ffffffffffffffffffffffffffffffffffffffff1661174e611951565b73ffffffffffffffffffffffffffffffffffffffff16146117a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179b9061420e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6118c0611eba565b73ffffffffffffffffffffffffffffffffffffffff166118de611951565b73ffffffffffffffffffffffffffffffffffffffff1614611934576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192b9061420e565b60405180910390fd5b6001601f60006101000a81548160ff021916908315150217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600e805461198990614191565b80601f01602080910402602001604051908101604052809291908181526020018280546119b590614191565b8015611a025780601f106119d757610100808354040283529160200191611a02565b820191906000526020600020905b8154815290600101906020018083116119e557829003601f168201915b5050505050905090565b6000611acf611a19611eba565b84611aca85604051806060016040528060258152602001614b206025913960046000611a43611eba565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125d89092919063ffffffff16565b611ec2565b6001905092915050565b6000611aed611ae6611eba565b848461208b565b6001905092915050565b601e5481565b611b05611eba565b73ffffffffffffffffffffffffffffffffffffffff16611b23611951565b73ffffffffffffffffffffffffffffffffffffffff1614611b79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b709061420e565b60405180910390fd5b826010819055506010546016819055508160118190555060115460178190555080601281905550601254601881905550505050565b60185481565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611c43611eba565b73ffffffffffffffffffffffffffffffffffffffff16611c61611951565b73ffffffffffffffffffffffffffffffffffffffff1614611cb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cae9061420e565b60405180910390fd5b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611d1a611eba565b73ffffffffffffffffffffffffffffffffffffffff16611d38611951565b73ffffffffffffffffffffffffffffffffffffffff1614611d8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d859061420e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611dfd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611df490614611565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f28906146a3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611fa0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9790614735565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161207e9190613eb7565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036120fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f1906147c7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612169576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216090614859565b60405180910390fd5b600081116121ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a3906148eb565b60405180910390fd5b6121b4611951565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156121fc5750601f60009054906101000a900460ff16155b1561225157601f60009054906101000a900460ff16612250576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161224790614957565b60405180910390fd5b5b612259611951565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156122c057503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156122fa575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156123545750601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561240c5760006123648361163d565b9050600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806123cb5750601e5482826123c89190614977565b11155b61240a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161240190614a1d565b60405180910390fd5b505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806124b35750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156124c157600090506125c6565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612536576010546016819055506011546017819055506012546018819055506125c5565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036125ab576013546016819055506014546017819055506015546018819055506125c4565b6000601681905550600060178190555060006018819055505b5b5b6125d284848484612702565b50505050565b6000838311158290612620576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126179190613d77565b60405180910390fd5b5082840390509392505050565b600080600061263a612a13565b91509150612651818361265890919063ffffffff16565b9250505090565b600081836126669190614a6c565b905092915050565b6000818361267c9190614977565b905092915050565b600080600080600080600080600080600061269e8c612cc6565b935093509350935060008060006126bf8f8787876126ba61262d565b612d45565b925092509250828282898989899d509d509d509d509d509d509d5050505050505050919395979092949650565b600081836126fa919061438a565b905092915050565b806127105761270f612df9565b5b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156127b35750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156127c8576127c3848484612e2e565b6129ff565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561286b5750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156128805761287b84848461309c565b6129fe565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156129245750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156129395761293484848461330a565b6129fd565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156129db5750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156129f0576129eb8484846134e3565b6129fc565b6129fb84848461330a565b5b5b5b5b80612a0d57612a0c6137e6565b5b50505050565b6000806000600b5490506000600a54905060005b600880549050811015612c8957826002600060088481548110612a4d57612a4c61432c565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180612b3b5750816003600060088481548110612ad357612ad261432c565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b15612b5257600b54600a5494509450505050612cc2565b612be26002600060088481548110612b6d57612b6c61432c565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846126ec90919063ffffffff16565b9250612c746003600060088481548110612bff57612bfe61432c565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836126ec90919063ffffffff16565b91508080612c81906143ed565b915050612a27565b50612ca1600a54600b5461265890919063ffffffff16565b821015612cb957600b54600a54935093505050612cc2565b81819350935050505b9091565b6000806000806000612cd786613803565b90506000612ce487613835565b90506000612cf188613867565b90506000612d2c82612d1e85612d10888e6126ec90919063ffffffff16565b6126ec90919063ffffffff16565b6126ec90919063ffffffff16565b9050808484849750975097509750505050509193509193565b600080600080612d5e858a61389990919063ffffffff16565b90506000612d75868a61389990919063ffffffff16565b90506000612d8c878a61389990919063ffffffff16565b90506000612da3888a61389990919063ffffffff16565b90506000612dde82612dd085612dc2888a6126ec90919063ffffffff16565b6126ec90919063ffffffff16565b6126ec90919063ffffffff16565b90508481859750975097505050505050955095509592505050565b601654601981905550601754601a81905550601854601b81905550600060168190555060006017819055506000601881905550565b6000806000806000806000612e4288612684565b9650965096509650965096509650612ea288600360008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126ec90919063ffffffff16565b600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612f3787600260008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126ec90919063ffffffff16565b600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612fcc86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461266e90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613018826138af565b61302181613a5e565b61302b8584613cad565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516130889190613eb7565b60405180910390a350505050505050505050565b60008060008060008060006130b088612684565b965096509650965096509650965061311087600260008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126ec90919063ffffffff16565b600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506131a584600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461266e90919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061323a86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461266e90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613286826138af565b61328f81613a5e565b6132998584613cad565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516132f69190613eb7565b60405180910390a350505050505050505050565b600080600080600080600061331e88612684565b965096509650965096509650965061337e87600260008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126ec90919063ffffffff16565b600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061341386600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461266e90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061345f826138af565b61346881613a5e565b6134728584613cad565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516134cf9190613eb7565b60405180910390a350505050505050505050565b60008060008060008060006134f788612684565b965096509650965096509650965061355788600360008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126ec90919063ffffffff16565b600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506135ec87600260008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126ec90919063ffffffff16565b600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061368184600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461266e90919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061371686600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461266e90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613762826138af565b61376b81613a5e565b6137758584613cad565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516137d29190613eb7565b60405180910390a350505050505050505050565b601954601681905550601a54601781905550601b54601881905550565b600061382e6127106138206016548561389990919063ffffffff16565b61265890919063ffffffff16565b9050919050565b60006138606127106138526018548561389990919063ffffffff16565b61265890919063ffffffff16565b9050919050565b60006138926127106138846017548561389990919063ffffffff16565b61265890919063ffffffff16565b9050919050565b600081836138a79190614a9d565b905092915050565b60006138b961262d565b905060006138d0828461389990919063ffffffff16565b9050613926816002600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461266e90919063ffffffff16565b6002600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506006600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613a5957613a13836003600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461266e90919063ffffffff16565b6003600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b6000613a6861262d565b90506000613a7f828461389990919063ffffffff16565b9050613af58160026000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461266e90919063ffffffff16565b60026000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060066000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613ca857613c428360036000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461266e90919063ffffffff16565b60036000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b613cc282600b546126ec90919063ffffffff16565b600b81905550613cdd81600c5461266e90919063ffffffff16565b600c819055505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613d21578082015181840152602081019050613d06565b60008484015250505050565b6000601f19601f8301169050919050565b6000613d4982613ce7565b613d538185613cf2565b9350613d63818560208601613d03565b613d6c81613d2d565b840191505092915050565b60006020820190508181036000830152613d918184613d3e565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613dc982613d9e565b9050919050565b613dd981613dbe565b8114613de457600080fd5b50565b600081359050613df681613dd0565b92915050565b6000819050919050565b613e0f81613dfc565b8114613e1a57600080fd5b50565b600081359050613e2c81613e06565b92915050565b60008060408385031215613e4957613e48613d99565b5b6000613e5785828601613de7565b9250506020613e6885828601613e1d565b9150509250929050565b60008115159050919050565b613e8781613e72565b82525050565b6000602082019050613ea26000830184613e7e565b92915050565b613eb181613dfc565b82525050565b6000602082019050613ecc6000830184613ea8565b92915050565b600080600060608486031215613eeb57613eea613d99565b5b6000613ef986828701613e1d565b9350506020613f0a86828701613e1d565b9250506040613f1b86828701613e1d565b9150509250925092565b6000819050919050565b6000613f4a613f45613f4084613d9e565b613f25565b613d9e565b9050919050565b6000613f5c82613f2f565b9050919050565b6000613f6e82613f51565b9050919050565b613f7e81613f63565b82525050565b6000602082019050613f996000830184613f75565b92915050565b600080600060608486031215613fb857613fb7613d99565b5b6000613fc686828701613de7565b9350506020613fd786828701613de7565b9250506040613fe886828701613e1d565b9150509250925092565b60006020828403121561400857614007613d99565b5b600061401684828501613e1d565b91505092915050565b60006020828403121561403557614034613d99565b5b600061404384828501613de7565b91505092915050565b61405581613dbe565b82525050565b6000602082019050614070600083018461404c565b92915050565b61407f81613e72565b811461408a57600080fd5b50565b60008135905061409c81614076565b92915050565b600080604083850312156140b9576140b8613d99565b5b60006140c785828601613e1d565b92505060206140d88582860161408d565b9150509250929050565b600080604083850312156140f9576140f8613d99565b5b600061410785828601613de7565b92505060206141188582860161408d565b9150509250929050565b6000806040838503121561413957614138613d99565b5b600061414785828601613de7565b925050602061415885828601613de7565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806141a957607f821691505b6020821081036141bc576141bb614162565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006141f8602083613cf2565b9150614203826141c2565b602082019050919050565b60006020820190508181036000830152614227816141eb565b9050919050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b600061428a602a83613cf2565b91506142958261422e565b604082019050919050565b600060208201905081810360008301526142b98161427d565b9050919050565b7f4163636f756e7420697320616c726561647920696e636c756465640000000000600082015250565b60006142f6601b83613cf2565b9150614301826142c0565b602082019050919050565b60006020820190508181036000830152614325816142e9565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061439582613dfc565b91506143a083613dfc565b92508282039050818111156143b8576143b761435b565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b60006143f882613dfc565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361442a5761442961435b565b5b600182019050919050565b7f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460008201527f6869732066756e6374696f6e0000000000000000000000000000000000000000602082015250565b6000614491602c83613cf2565b915061449c82614435565b604082019050919050565b600060208201905081810360008301526144c081614484565b9050919050565b7f416d6f756e74206d757374206265206c657373207468616e20737570706c7900600082015250565b60006144fd601f83613cf2565b9150614508826144c7565b602082019050919050565b6000602082019050818103600083015261452c816144f0565b9050919050565b7f4163636f756e7420697320616c7265616479206578636c756465640000000000600082015250565b6000614569601b83613cf2565b915061457482614533565b602082019050919050565b600060208201905081810360008301526145988161455c565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006145fb602683613cf2565b91506146068261459f565b604082019050919050565b6000602082019050818103600083015261462a816145ee565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061468d602483613cf2565b915061469882614631565b604082019050919050565b600060208201905081810360008301526146bc81614680565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061471f602283613cf2565b915061472a826146c3565b604082019050919050565b6000602082019050818103600083015261474e81614712565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006147b1602583613cf2565b91506147bc82614755565b604082019050919050565b600060208201905081810360008301526147e0816147a4565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614843602383613cf2565b915061484e826147e7565b604082019050919050565b6000602082019050818103600083015261487281614836565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006148d5602983613cf2565b91506148e082614879565b604082019050919050565b60006020820190508181036000830152614904816148c8565b9050919050565b7f54726164696e67206973206e6f7420656e61626c656420796574000000000000600082015250565b6000614941601a83613cf2565b915061494c8261490b565b602082019050919050565b6000602082019050818103600083015261497081614934565b9050919050565b600061498282613dfc565b915061498d83613dfc565b92508282019050808211156149a5576149a461435b565b5b92915050565b7f45524332303a2052656163686564204d61782077616c6c657420686f6c64696e60008201527f6700000000000000000000000000000000000000000000000000000000000000602082015250565b6000614a07602183613cf2565b9150614a12826149ab565b604082019050919050565b60006020820190508181036000830152614a36816149fa565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614a7782613dfc565b9150614a8283613dfc565b925082614a9257614a91614a3d565b5b828204905092915050565b6000614aa882613dfc565b9150614ab383613dfc565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614aec57614aeb61435b565b5b82820290509291505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220437f03880ea475e722889b0d5e33c7451fd453154b585566847392002b9207ab64736f6c63430008100033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106102325760003560e01c80634ada218b116101305780638da5cb5b116100b8578063be19674b1161007c578063be19674b146106a5578063c0b0fda2146106c1578063dd62ed3e146106df578063ea2f0b371461070f578063f2fde38b1461072b57610232565b80638da5cb5b146105eb57806395d89b4114610609578063a457c2d714610627578063a9059cbb14610657578063bbde77c11461068757610232565b80636dd3d39f116100ff5780636dd3d39f1461054757806370a0823114610577578063715018a6146105a757806388f82020146105b15780638a8c523c146105e157610232565b80634ada218b146104c15780634cb80fd5146104df57806352390c02146104fb5780635342acb41461051757610232565b8063313ce567116101be5780634144d9e4116101825780634144d9e41461041d578063437823ec1461043b5780634549b0391461045757806348eb61b61461048757806349bd5a5e146104a357610232565b8063313ce567146103795780633685d4191461039757806339509351146103b35780633b124fe7146103e35780633bd5d1731461040157610232565b80631694505e116102055780631694505e146102bf57806318160ddd146102dd57806322976e0d146102fb57806323b872dd146103195780632d8381191461034957610232565b806306fdde0314610237578063095ea7b31461025557806313114a9d14610285578063151cd1c2146102a3575b600080fd5b61023f610747565b60405161024c9190613d77565b60405180910390f35b61026f600480360381019061026a9190613e32565b6107d9565b60405161027c9190613e8d565b60405180910390f35b61028d6107f7565b60405161029a9190613eb7565b60405180910390f35b6102bd60048036038101906102b89190613ed2565b610801565b005b6102c76108b2565b6040516102d49190613f84565b60405180910390f35b6102e56108d8565b6040516102f29190613eb7565b60405180910390f35b6103036108e2565b6040516103109190613eb7565b60405180910390f35b610333600480360381019061032e9190613f9f565b6108e8565b6040516103409190613e8d565b60405180910390f35b610363600480360381019061035e9190613ff2565b6109c1565b6040516103709190613eb7565b60405180910390f35b610381610a2f565b60405161038e9190613eb7565b60405180910390f35b6103b160048036038101906103ac919061401f565b610a39565b005b6103cd60048036038101906103c89190613e32565b610d6e565b6040516103da9190613e8d565b60405180910390f35b6103eb610e21565b6040516103f89190613eb7565b60405180910390f35b61041b60048036038101906104169190613ff2565b610e27565b005b610425610fa3565b604051610432919061405b565b60405180910390f35b6104556004803603810190610450919061401f565b610fc9565b005b610471600480360381019061046c91906140a2565b6110a0565b60405161047e9190613eb7565b60405180910390f35b6104a1600480360381019061049c91906140e2565b611126565b005b6104ab6111fd565b6040516104b8919061405b565b60405180910390f35b6104c9611223565b6040516104d69190613e8d565b60405180910390f35b6104f960048036038101906104f4919061401f565b611236565b005b6105156004803603810190610510919061401f565b6112f6565b005b610531600480360381019061052c919061401f565b611591565b60405161053e9190613e8d565b60405180910390f35b610561600480360381019061055c919061401f565b6115e7565b60405161056e9190613e8d565b60405180910390f35b610591600480360381019061058c919061401f565b61163d565b60405161059e9190613eb7565b60405180910390f35b6105af611728565b005b6105cb60048036038101906105c6919061401f565b611862565b6040516105d89190613e8d565b60405180910390f35b6105e96118b8565b005b6105f3611951565b604051610600919061405b565b60405180910390f35b61061161197a565b60405161061e9190613d77565b60405180910390f35b610641600480360381019061063c9190613e32565b611a0c565b60405161064e9190613e8d565b60405180910390f35b610671600480360381019061066c9190613e32565b611ad9565b60405161067e9190613e8d565b60405180910390f35b61068f611af7565b60405161069c9190613eb7565b60405180910390f35b6106bf60048036038101906106ba9190613ed2565b611afd565b005b6106c9611bae565b6040516106d69190613eb7565b60405180910390f35b6106f960048036038101906106f49190614122565b611bb4565b6040516107069190613eb7565b60405180910390f35b6107296004803603810190610724919061401f565b611c3b565b005b6107456004803603810190610740919061401f565b611d12565b005b6060600d805461075690614191565b80601f016020809104026020016040519081016040528092919081815260200182805461078290614191565b80156107cf5780601f106107a4576101008083540402835291602001916107cf565b820191906000526020600020905b8154815290600101906020018083116107b257829003601f168201915b5050505050905090565b60006107ed6107e6611eba565b8484611ec2565b6001905092915050565b6000600c54905090565b610809611eba565b73ffffffffffffffffffffffffffffffffffffffff16610827611951565b73ffffffffffffffffffffffffffffffffffffffff161461087d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108749061420e565b60405180910390fd5b826013819055506013546016819055508160148190555060145460178190555080601581905550601554601881905550505050565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600a54905090565b60175481565b60006108f584848461208b565b6109b684610901611eba565b6109b185604051806060016040528060288152602001614af860289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610967611eba565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125d89092919063ffffffff16565b611ec2565b600190509392505050565b6000600b54821115610a08576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ff906142a0565b60405180910390fd5b6000610a1261262d565b9050610a27818461265890919063ffffffff16565b915050919050565b6000600f54905090565b610a41611eba565b73ffffffffffffffffffffffffffffffffffffffff16610a5f611951565b73ffffffffffffffffffffffffffffffffffffffff1614610ab5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aac9061420e565b60405180910390fd5b600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610b41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b389061430c565b60405180910390fd5b60005b600880549050811015610d6a578173ffffffffffffffffffffffffffffffffffffffff1660088281548110610b7c57610b7b61432c565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610d575760086001600880549050610bd6919061438a565b81548110610be757610be661432c565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660088281548110610c2657610c2561432c565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506008805480610d1d57610d1c6143be565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055610d6a565b8080610d62906143ed565b915050610b44565b5050565b6000610e17610d7b611eba565b84610e128560046000610d8c611eba565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461266e90919063ffffffff16565b611ec2565b6001905092915050565b60165481565b6000610e31611eba565b9050600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610ec0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb7906144a7565b60405180910390fd5b6000610ecb83612684565b5050505050509050610f2581600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126ec90919063ffffffff16565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610f7d81600b546126ec90919063ffffffff16565b600b81905550610f9883600c5461266e90919063ffffffff16565b600c81905550505050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610fd1611eba565b73ffffffffffffffffffffffffffffffffffffffff16610fef611951565b73ffffffffffffffffffffffffffffffffffffffff1614611045576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103c9061420e565b60405180910390fd5b6001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600a548311156110e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110de90614513565b60405180910390fd5b816111085760006110f784612684565b505050505050905080915050611120565b600061111384612684565b5050505050915050809150505b92915050565b61112e611eba565b73ffffffffffffffffffffffffffffffffffffffff1661114c611951565b73ffffffffffffffffffffffffffffffffffffffff16146111a2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111999061420e565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601f60009054906101000a900460ff1681565b61123e611eba565b73ffffffffffffffffffffffffffffffffffffffff1661125c611951565b73ffffffffffffffffffffffffffffffffffffffff16146112b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a99061420e565b60405180910390fd5b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6112fe611eba565b73ffffffffffffffffffffffffffffffffffffffff1661131c611951565b73ffffffffffffffffffffffffffffffffffffffff1614611372576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113699061420e565b60405180910390fd5b600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156113ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f69061457f565b60405180910390fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156114d35761148f600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546109c1565b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506008819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156116d857600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050611723565b611720600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546109c1565b90505b919050565b611730611eba565b73ffffffffffffffffffffffffffffffffffffffff1661174e611951565b73ffffffffffffffffffffffffffffffffffffffff16146117a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179b9061420e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6118c0611eba565b73ffffffffffffffffffffffffffffffffffffffff166118de611951565b73ffffffffffffffffffffffffffffffffffffffff1614611934576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192b9061420e565b60405180910390fd5b6001601f60006101000a81548160ff021916908315150217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600e805461198990614191565b80601f01602080910402602001604051908101604052809291908181526020018280546119b590614191565b8015611a025780601f106119d757610100808354040283529160200191611a02565b820191906000526020600020905b8154815290600101906020018083116119e557829003601f168201915b5050505050905090565b6000611acf611a19611eba565b84611aca85604051806060016040528060258152602001614b206025913960046000611a43611eba565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125d89092919063ffffffff16565b611ec2565b6001905092915050565b6000611aed611ae6611eba565b848461208b565b6001905092915050565b601e5481565b611b05611eba565b73ffffffffffffffffffffffffffffffffffffffff16611b23611951565b73ffffffffffffffffffffffffffffffffffffffff1614611b79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b709061420e565b60405180910390fd5b826010819055506010546016819055508160118190555060115460178190555080601281905550601254601881905550505050565b60185481565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611c43611eba565b73ffffffffffffffffffffffffffffffffffffffff16611c61611951565b73ffffffffffffffffffffffffffffffffffffffff1614611cb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cae9061420e565b60405180910390fd5b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611d1a611eba565b73ffffffffffffffffffffffffffffffffffffffff16611d38611951565b73ffffffffffffffffffffffffffffffffffffffff1614611d8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d859061420e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611dfd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611df490614611565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f28906146a3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611fa0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9790614735565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161207e9190613eb7565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036120fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f1906147c7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612169576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216090614859565b60405180910390fd5b600081116121ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a3906148eb565b60405180910390fd5b6121b4611951565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156121fc5750601f60009054906101000a900460ff16155b1561225157601f60009054906101000a900460ff16612250576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161224790614957565b60405180910390fd5b5b612259611951565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156122c057503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156122fa575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156123545750601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561240c5760006123648361163d565b9050600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806123cb5750601e5482826123c89190614977565b11155b61240a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161240190614a1d565b60405180910390fd5b505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806124b35750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156124c157600090506125c6565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612536576010546016819055506011546017819055506012546018819055506125c5565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036125ab576013546016819055506014546017819055506015546018819055506125c4565b6000601681905550600060178190555060006018819055505b5b5b6125d284848484612702565b50505050565b6000838311158290612620576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126179190613d77565b60405180910390fd5b5082840390509392505050565b600080600061263a612a13565b91509150612651818361265890919063ffffffff16565b9250505090565b600081836126669190614a6c565b905092915050565b6000818361267c9190614977565b905092915050565b600080600080600080600080600080600061269e8c612cc6565b935093509350935060008060006126bf8f8787876126ba61262d565b612d45565b925092509250828282898989899d509d509d509d509d509d509d5050505050505050919395979092949650565b600081836126fa919061438a565b905092915050565b806127105761270f612df9565b5b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156127b35750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156127c8576127c3848484612e2e565b6129ff565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561286b5750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156128805761287b84848461309c565b6129fe565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156129245750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156129395761293484848461330a565b6129fd565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156129db5750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156129f0576129eb8484846134e3565b6129fc565b6129fb84848461330a565b5b5b5b5b80612a0d57612a0c6137e6565b5b50505050565b6000806000600b5490506000600a54905060005b600880549050811015612c8957826002600060088481548110612a4d57612a4c61432c565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180612b3b5750816003600060088481548110612ad357612ad261432c565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b15612b5257600b54600a5494509450505050612cc2565b612be26002600060088481548110612b6d57612b6c61432c565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846126ec90919063ffffffff16565b9250612c746003600060088481548110612bff57612bfe61432c565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836126ec90919063ffffffff16565b91508080612c81906143ed565b915050612a27565b50612ca1600a54600b5461265890919063ffffffff16565b821015612cb957600b54600a54935093505050612cc2565b81819350935050505b9091565b6000806000806000612cd786613803565b90506000612ce487613835565b90506000612cf188613867565b90506000612d2c82612d1e85612d10888e6126ec90919063ffffffff16565b6126ec90919063ffffffff16565b6126ec90919063ffffffff16565b9050808484849750975097509750505050509193509193565b600080600080612d5e858a61389990919063ffffffff16565b90506000612d75868a61389990919063ffffffff16565b90506000612d8c878a61389990919063ffffffff16565b90506000612da3888a61389990919063ffffffff16565b90506000612dde82612dd085612dc2888a6126ec90919063ffffffff16565b6126ec90919063ffffffff16565b6126ec90919063ffffffff16565b90508481859750975097505050505050955095509592505050565b601654601981905550601754601a81905550601854601b81905550600060168190555060006017819055506000601881905550565b6000806000806000806000612e4288612684565b9650965096509650965096509650612ea288600360008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126ec90919063ffffffff16565b600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612f3787600260008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126ec90919063ffffffff16565b600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612fcc86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461266e90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613018826138af565b61302181613a5e565b61302b8584613cad565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516130889190613eb7565b60405180910390a350505050505050505050565b60008060008060008060006130b088612684565b965096509650965096509650965061311087600260008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126ec90919063ffffffff16565b600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506131a584600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461266e90919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061323a86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461266e90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613286826138af565b61328f81613a5e565b6132998584613cad565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516132f69190613eb7565b60405180910390a350505050505050505050565b600080600080600080600061331e88612684565b965096509650965096509650965061337e87600260008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126ec90919063ffffffff16565b600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061341386600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461266e90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061345f826138af565b61346881613a5e565b6134728584613cad565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516134cf9190613eb7565b60405180910390a350505050505050505050565b60008060008060008060006134f788612684565b965096509650965096509650965061355788600360008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126ec90919063ffffffff16565b600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506135ec87600260008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126ec90919063ffffffff16565b600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061368184600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461266e90919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061371686600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461266e90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613762826138af565b61376b81613a5e565b6137758584613cad565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516137d29190613eb7565b60405180910390a350505050505050505050565b601954601681905550601a54601781905550601b54601881905550565b600061382e6127106138206016548561389990919063ffffffff16565b61265890919063ffffffff16565b9050919050565b60006138606127106138526018548561389990919063ffffffff16565b61265890919063ffffffff16565b9050919050565b60006138926127106138846017548561389990919063ffffffff16565b61265890919063ffffffff16565b9050919050565b600081836138a79190614a9d565b905092915050565b60006138b961262d565b905060006138d0828461389990919063ffffffff16565b9050613926816002600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461266e90919063ffffffff16565b6002600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506006600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613a5957613a13836003600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461266e90919063ffffffff16565b6003600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b6000613a6861262d565b90506000613a7f828461389990919063ffffffff16565b9050613af58160026000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461266e90919063ffffffff16565b60026000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060066000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613ca857613c428360036000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461266e90919063ffffffff16565b60036000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b613cc282600b546126ec90919063ffffffff16565b600b81905550613cdd81600c5461266e90919063ffffffff16565b600c819055505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613d21578082015181840152602081019050613d06565b60008484015250505050565b6000601f19601f8301169050919050565b6000613d4982613ce7565b613d538185613cf2565b9350613d63818560208601613d03565b613d6c81613d2d565b840191505092915050565b60006020820190508181036000830152613d918184613d3e565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613dc982613d9e565b9050919050565b613dd981613dbe565b8114613de457600080fd5b50565b600081359050613df681613dd0565b92915050565b6000819050919050565b613e0f81613dfc565b8114613e1a57600080fd5b50565b600081359050613e2c81613e06565b92915050565b60008060408385031215613e4957613e48613d99565b5b6000613e5785828601613de7565b9250506020613e6885828601613e1d565b9150509250929050565b60008115159050919050565b613e8781613e72565b82525050565b6000602082019050613ea26000830184613e7e565b92915050565b613eb181613dfc565b82525050565b6000602082019050613ecc6000830184613ea8565b92915050565b600080600060608486031215613eeb57613eea613d99565b5b6000613ef986828701613e1d565b9350506020613f0a86828701613e1d565b9250506040613f1b86828701613e1d565b9150509250925092565b6000819050919050565b6000613f4a613f45613f4084613d9e565b613f25565b613d9e565b9050919050565b6000613f5c82613f2f565b9050919050565b6000613f6e82613f51565b9050919050565b613f7e81613f63565b82525050565b6000602082019050613f996000830184613f75565b92915050565b600080600060608486031215613fb857613fb7613d99565b5b6000613fc686828701613de7565b9350506020613fd786828701613de7565b9250506040613fe886828701613e1d565b9150509250925092565b60006020828403121561400857614007613d99565b5b600061401684828501613e1d565b91505092915050565b60006020828403121561403557614034613d99565b5b600061404384828501613de7565b91505092915050565b61405581613dbe565b82525050565b6000602082019050614070600083018461404c565b92915050565b61407f81613e72565b811461408a57600080fd5b50565b60008135905061409c81614076565b92915050565b600080604083850312156140b9576140b8613d99565b5b60006140c785828601613e1d565b92505060206140d88582860161408d565b9150509250929050565b600080604083850312156140f9576140f8613d99565b5b600061410785828601613de7565b92505060206141188582860161408d565b9150509250929050565b6000806040838503121561413957614138613d99565b5b600061414785828601613de7565b925050602061415885828601613de7565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806141a957607f821691505b6020821081036141bc576141bb614162565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006141f8602083613cf2565b9150614203826141c2565b602082019050919050565b60006020820190508181036000830152614227816141eb565b9050919050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b600061428a602a83613cf2565b91506142958261422e565b604082019050919050565b600060208201905081810360008301526142b98161427d565b9050919050565b7f4163636f756e7420697320616c726561647920696e636c756465640000000000600082015250565b60006142f6601b83613cf2565b9150614301826142c0565b602082019050919050565b60006020820190508181036000830152614325816142e9565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061439582613dfc565b91506143a083613dfc565b92508282039050818111156143b8576143b761435b565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b60006143f882613dfc565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361442a5761442961435b565b5b600182019050919050565b7f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460008201527f6869732066756e6374696f6e0000000000000000000000000000000000000000602082015250565b6000614491602c83613cf2565b915061449c82614435565b604082019050919050565b600060208201905081810360008301526144c081614484565b9050919050565b7f416d6f756e74206d757374206265206c657373207468616e20737570706c7900600082015250565b60006144fd601f83613cf2565b9150614508826144c7565b602082019050919050565b6000602082019050818103600083015261452c816144f0565b9050919050565b7f4163636f756e7420697320616c7265616479206578636c756465640000000000600082015250565b6000614569601b83613cf2565b915061457482614533565b602082019050919050565b600060208201905081810360008301526145988161455c565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006145fb602683613cf2565b91506146068261459f565b604082019050919050565b6000602082019050818103600083015261462a816145ee565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061468d602483613cf2565b915061469882614631565b604082019050919050565b600060208201905081810360008301526146bc81614680565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061471f602283613cf2565b915061472a826146c3565b604082019050919050565b6000602082019050818103600083015261474e81614712565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006147b1602583613cf2565b91506147bc82614755565b604082019050919050565b600060208201905081810360008301526147e0816147a4565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614843602383613cf2565b915061484e826147e7565b604082019050919050565b6000602082019050818103600083015261487281614836565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006148d5602983613cf2565b91506148e082614879565b604082019050919050565b60006020820190508181036000830152614904816148c8565b9050919050565b7f54726164696e67206973206e6f7420656e61626c656420796574000000000000600082015250565b6000614941601a83613cf2565b915061494c8261490b565b602082019050919050565b6000602082019050818103600083015261497081614934565b9050919050565b600061498282613dfc565b915061498d83613dfc565b92508282019050808211156149a5576149a461435b565b5b92915050565b7f45524332303a2052656163686564204d61782077616c6c657420686f6c64696e60008201527f6700000000000000000000000000000000000000000000000000000000000000602082015250565b6000614a07602183613cf2565b9150614a12826149ab565b604082019050919050565b60006020820190508181036000830152614a36816149fa565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614a7782613dfc565b9150614a8283613dfc565b925082614a9257614a91614a3d565b5b828204905092915050565b6000614aa882613dfc565b9150614ab383613dfc565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614aec57614aeb61435b565b5b82820290509291505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220437f03880ea475e722889b0d5e33c7451fd453154b585566847392002b9207ab64736f6c63430008100033

Deployed Bytecode Sourcemap

3575:19721:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6438:83;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7425:193;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8924:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12543:334;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4952:42;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6717:95;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4692:47;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7626:446;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9939:322;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6624:85;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10609:477;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8080:300;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4650:35;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9019:421;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4043:38;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11908:111;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9448:483;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12238:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5002:28;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5075:33;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13220:119;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10269:332;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18081:124;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12397:138;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6820:198;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2779:148;;;:::i;:::-;;8796:120;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12028:84;;;:::i;:::-;;2556:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6529;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8388:400;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7026:199;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5037:31;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12885:327;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4746:37;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7233:184;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12120:110;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2935:281;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6438:83;6475:13;6508:5;6501:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6438:83;:::o;7425:193::-;7527:4;7549:39;7558:12;:10;:12::i;:::-;7572:7;7581:6;7549:8;:39::i;:::-;7606:4;7599:11;;7425:193;;;;:::o;8924:87::-;8966:7;8993:10;;8986:17;;8924:87;:::o;12543:334::-;2702:12;:10;:12::i;:::-;2691:23;;:7;:5;:7::i;:::-;:23;;;2683:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12690:4:::1;12676:11;:18;;;;12715:11;;12705:7;:21;;;;12757:4;12737:17;:24;;;;12788:17;;12772:13;:33;;;;12831:4;12816:12;:19;;;;12857:12;;12846:8;:23;;;;12543:334:::0;;;:::o;4952:42::-;;;;;;;;;;;;;:::o;6717:95::-;6770:7;6797;;6790:14;;6717:95;:::o;4692:47::-;;;;:::o;7626:446::-;7758:4;7775:36;7785:6;7793:9;7804:6;7775:9;:36::i;:::-;7822:220;7845:6;7866:12;:10;:12::i;:::-;7893:138;7949:6;7893:138;;;;;;;;;;;;;;;;;:11;:19;7905:6;7893:19;;;;;;;;;;;;;;;:33;7913:12;:10;:12::i;:::-;7893:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;7822:8;:220::i;:::-;8060:4;8053:11;;7626:446;;;;;:::o;9939:322::-;10033:7;10091;;10080;:18;;10058:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;10179:19;10201:10;:8;:10::i;:::-;10179:32;;10229:24;10241:11;10229:7;:11;;:24;;;;:::i;:::-;10222:31;;;9939:322;;;:::o;6624:85::-;6665:7;6692:9;;6685:16;;6624:85;:::o;10609:477::-;2702:12;:10;:12::i;:::-;2691:23;;:7;:5;:7::i;:::-;:23;;;2683:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10689:11:::1;:20;10701:7;10689:20;;;;;;;;;;;;;;;;;;;;;;;;;10681:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;10757:9;10752:327;10776:9;:16;;;;10772:1;:20;10752:327;;;10834:7;10818:23;;:9;10828:1;10818:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:23;;::::0;10814:254:::1;;10877:9;10906:1;10887:9;:16;;;;:20;;;;:::i;:::-;10877:31;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10862:9;10872:1;10862:12;;;;;;;;:::i;:::-;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;10946:1;10927:7;:16;10935:7;10927:16;;;;;;;;;;;;;;;:20;;;;10989:5;10966:11;:20;10978:7;10966:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;11013:9;:15;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;11047:5;;10814:254;10794:3;;;;;:::i;:::-;;;;10752:327;;;;10609:477:::0;:::o;8080:300::-;8195:4;8217:133;8240:12;:10;:12::i;:::-;8267:7;8289:50;8328:10;8289:11;:25;8301:12;:10;:12::i;:::-;8289:25;;;;;;;;;;;;;;;:34;8315:7;8289:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;8217:8;:133::i;:::-;8368:4;8361:11;;8080:300;;;;:::o;4650:35::-;;;;:::o;9019:421::-;9071:14;9088:12;:10;:12::i;:::-;9071:29;;9134:11;:19;9146:6;9134:19;;;;;;;;;;;;;;;;;;;;;;;;;9133:20;9111:114;;;;;;;;;;;;:::i;:::-;;;;;;;;;9237:15;9268:19;9279:7;9268:10;:19::i;:::-;9236:51;;;;;;;;9316:28;9336:7;9316;:15;9324:6;9316:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;9298:7;:15;9306:6;9298:15;;;;;;;;;;;;;;;:46;;;;9365:20;9377:7;9365;;:11;;:20;;;;:::i;:::-;9355:7;:30;;;;9409:23;9424:7;9409:10;;:14;;:23;;;;:::i;:::-;9396:10;:36;;;;9060:380;;9019:421;:::o;4043:38::-;;;;;;;;;;;;;:::o;11908:111::-;2702:12;:10;:12::i;:::-;2691:23;;:7;:5;:7::i;:::-;:23;;;2683:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12007:4:::1;11977:18;:27;11996:7;11977:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;11908:111:::0;:::o;9448:483::-;9566:7;9610;;9599;:18;;9591:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;9669:17;9664:260;;9704:15;9735:19;9746:7;9735:10;:19::i;:::-;9703:51;;;;;;;;9776:7;9769:14;;;;;9664:260;9819:23;9856:19;9867:7;9856:10;:19::i;:::-;9816:59;;;;;;;;9897:15;9890:22;;;9448:483;;;;;:::o;12238:151::-;2702:12;:10;:12::i;:::-;2691:23;;:7;:5;:7::i;:::-;:23;;;2683:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12376:5:::1;12340:24;:33;12365:7;12340:33;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;12238:151:::0;;:::o;5002:28::-;;;;;;;;;;;;;:::o;5075:33::-;;;;;;;;;;;;;:::o;13220:119::-;2702:12;:10;:12::i;:::-;2691:23;;:7;:5;:7::i;:::-;:23;;;2683:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13326:5:::1;13300:23;;:31;;;;;;;;;;;;;;;;;;13220:119:::0;:::o;10269:332::-;2702:12;:10;:12::i;:::-;2691:23;;:7;:5;:7::i;:::-;:23;;;2683:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10350:11:::1;:20;10362:7;10350:20;;;;;;;;;;;;;;;;;;;;;;;;;10349:21;10341:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;10436:1;10417:7;:16;10425:7;10417:16;;;;;;;;;;;;;;;;:20;10413:109;;;10473:37;10493:7;:16;10501:7;10493:16;;;;;;;;;;;;;;;;10473:19;:37::i;:::-;10454:7;:16;10462:7;10454:16;;;;;;;;;;;;;;;:56;;;;10413:109;10555:4;10532:11;:20;10544:7;10532:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;10570:9;10585:7;10570:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10269:332:::0;:::o;18081:124::-;18146:4;18170:18;:27;18189:7;18170:27;;;;;;;;;;;;;;;;;;;;;;;;;18163:34;;18081:124;;;:::o;12397:138::-;12467:4;12494:24;:33;12519:7;12494:33;;;;;;;;;;;;;;;;;;;;;;;;;12487:40;;12397:138;;;:::o;6820:198::-;6886:7;6910:11;:20;6922:7;6910:20;;;;;;;;;;;;;;;;;;;;;;;;;6906:49;;;6939:7;:16;6947:7;6939:16;;;;;;;;;;;;;;;;6932:23;;;;6906:49;6973:37;6993:7;:16;7001:7;6993:16;;;;;;;;;;;;;;;;6973:19;:37::i;:::-;6966:44;;6820:198;;;;:::o;2779:148::-;2702:12;:10;:12::i;:::-;2691:23;;:7;:5;:7::i;:::-;:23;;;2683:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2886:1:::1;2849:40;;2870:6;::::0;::::1;;;;;;;;2849:40;;;;;;;;;;;;2917:1;2900:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2779:148::o:0;8796:120::-;8864:4;8888:11;:20;8900:7;8888:20;;;;;;;;;;;;;;;;;;;;;;;;;8881:27;;8796:120;;;:::o;12028:84::-;2702:12;:10;:12::i;:::-;2691:23;;:7;:5;:7::i;:::-;:23;;;2683:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12100:4:::1;12083:14;;:21;;;;;;;;;;;;;;;;;;12028:84::o:0;2556:87::-;2602:7;2629:6;;;;;;;;;;;2622:13;;2556:87;:::o;6529:::-;6568:13;6601:7;6594:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6529:87;:::o;8388:400::-;8508:4;8530:228;8553:12;:10;:12::i;:::-;8580:7;8602:145;8659:15;8602:145;;;;;;;;;;;;;;;;;:11;:25;8614:12;:10;:12::i;:::-;8602:25;;;;;;;;;;;;;;;:34;8628:7;8602:34;;;;;;;;;;;;;;;;:38;;:145;;;;;:::i;:::-;8530:8;:228::i;:::-;8776:4;8769:11;;8388:400;;;;:::o;7026:199::-;7131:4;7153:42;7163:12;:10;:12::i;:::-;7177:9;7188:6;7153:9;:42::i;:::-;7213:4;7206:11;;7026:199;;;;:::o;5037:31::-;;;;:::o;12885:327::-;2702:12;:10;:12::i;:::-;2691:23;;:7;:5;:7::i;:::-;:23;;;2683:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13030:4:::1;13017:10;:17;;;;13055:10;;13045:7;:20;;;;13095:4;13076:16;:23;;;;13126:16;;13110:13;:32;;;;13167:4;13153:11;:18;;;;13193:11;;13182:8;:22;;;;12885:327:::0;;;:::o;4746:37::-;;;;:::o;7233:184::-;7350:7;7382:11;:18;7394:5;7382:18;;;;;;;;;;;;;;;:27;7401:7;7382:27;;;;;;;;;;;;;;;;7375:34;;7233:184;;;;:::o;12120:110::-;2702:12;:10;:12::i;:::-;2691:23;;:7;:5;:7::i;:::-;:23;;;2683:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12217:5:::1;12187:18;:27;12206:7;12187:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;12120:110:::0;:::o;2935:281::-;2702:12;:10;:12::i;:::-;2691:23;;:7;:5;:7::i;:::-;:23;;;2683:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;3058:1:::1;3038:22;;:8;:22;;::::0;3016:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;3171:8;3142:38;;3163:6;::::0;::::1;;;;;;;;3142:38;;;;;;;;;;;;3200:8;3191:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;2935:281:::0;:::o;1978:98::-;2031:7;2058:10;2051:17;;1978:98;:::o;18213:371::-;18357:1;18340:19;;:5;:19;;;18332:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18438:1;18419:21;;:7;:21;;;18411:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18522:6;18492:11;:18;18504:5;18492:18;;;;;;;;;;;;;;;:27;18511:7;18492:27;;;;;;;;;;;;;;;:36;;;;18560:7;18544:32;;18553:5;18544:32;;;18569:6;18544:32;;;;;;:::i;:::-;;;;;;;;18213:371;;;:::o;18592:1675::-;18730:1;18714:18;;:4;:18;;;18706:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18807:1;18793:16;;:2;:16;;;18785:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;18877:1;18868:6;:10;18860:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;18947:7;:5;:7::i;:::-;18939:15;;:4;:15;;;;:34;;;;;18959:14;;;;;;;;;;;18958:15;18939:34;18935:120;;;18998:14;;;;;;;;;;;18990:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;18935:120;19098:7;:5;:7::i;:::-;19090:15;;:4;:15;;;;:55;;;;;19140:4;19126:19;;:2;:19;;;;19090:55;:94;;;;;4120:42;19166:18;;:2;:18;;;;19090:94;:134;;;;;19211:13;;;;;;;;;;;19205:19;;:2;:19;;;;19090:134;19068:473;;;19259:22;19284:13;19294:2;19284:9;:13::i;:::-;19259:38;;19346:24;:28;19371:2;19346:28;;;;;;;;;;;;;;;;;;;;;;;;;:102;;;;19431:16;;19421:6;19404:14;:23;;;;:::i;:::-;:43;;19346:102;19316:209;;;;;;;;;;;;:::i;:::-;;;;;;;;;19240:301;19068:473;19561:12;19576:4;19561:19;;19595:18;:24;19614:4;19595:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;19623:18;:22;19642:2;19623:22;;;;;;;;;;;;;;;;;;;;;;;;;19595:50;19591:606;;;19672:5;19662:15;;19591:606;;;19722:13;;;;;;;;;;;19714:21;;:4;:21;;;19710:476;;19767:10;;19757:7;:20;;;;19812:16;;19796:13;:32;;;;19858:11;;19847:8;:22;;;;19710:476;;;19901:13;;;;;;;;;;;19895:19;;:2;:19;;;19891:295;;19946:11;;19936:7;:21;;;;19992:17;;19976:13;:33;;;;20039:12;;20028:8;:23;;;;19891:295;;;20102:1;20092:7;:11;;;;20138:1;20122:13;:17;;;;20169:1;20158:8;:12;;;;19891:295;19710:476;19591:606;20216:41;20231:4;20237:2;20241:6;20249:7;20216:14;:41::i;:::-;18695:1572;18592:1675;;;:::o;1449:240::-;1569:7;1627:1;1622;:6;;1630:12;1614:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1669:1;1665;:5;1658:12;;1449:240;;;;;:::o;15514:164::-;15556:7;15577:15;15594;15613:19;:17;:19::i;:::-;15576:56;;;;15650:20;15662:7;15650;:11;;:20;;;;:::i;:::-;15643:27;;;;15514:164;:::o;1343:98::-;1401:7;1432:1;1428;:5;;;;:::i;:::-;1421:12;;1343:98;;;;:::o;1025:::-;1083:7;1114:1;1110;:5;;;;:::i;:::-;1103:12;;1025:98;;;;:::o;13502:823::-;13602:7;13624;13646;13668;13690;13712;13734;13784:23;13822:12;13849:13;13877:15;13906:20;13918:7;13906:11;:20::i;:::-;13769:157;;;;;;;;13938:15;13955:23;13980:12;13996:130;14022:7;14044:4;14063:5;14083:7;14105:10;:8;:10::i;:::-;13996:11;:130::i;:::-;13937:189;;;;;;14159:7;14181:15;14211:4;14230:15;14260:4;14279:5;14299:7;14137:180;;;;;;;;;;;;;;;;;;;;;13502:823;;;;;;;;;:::o;1131:98::-;1189:7;1220:1;1216;:5;;;;:::i;:::-;1209:12;;1131:98;;;;:::o;20275:838::-;20431:7;20426:28;;20440:14;:12;:14::i;:::-;20426:28;20471:11;:19;20483:6;20471:19;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;20495:11;:22;20507:9;20495:22;;;;;;;;;;;;;;;;;;;;;;;;;20494:23;20471:46;20467:597;;;20534:48;20556:6;20564:9;20575:6;20534:21;:48::i;:::-;20467:597;;;20605:11;:19;20617:6;20605:19;;;;;;;;;;;;;;;;;;;;;;;;;20604:20;:46;;;;;20628:11;:22;20640:9;20628:22;;;;;;;;;;;;;;;;;;;;;;;;;20604:46;20600:464;;;20667:46;20687:6;20695:9;20706:6;20667:19;:46::i;:::-;20600:464;;;20736:11;:19;20748:6;20736:19;;;;;;;;;;;;;;;;;;;;;;;;;20735:20;:47;;;;;20760:11;:22;20772:9;20760:22;;;;;;;;;;;;;;;;;;;;;;;;;20759:23;20735:47;20731:333;;;20799:44;20817:6;20825:9;20836:6;20799:17;:44::i;:::-;20731:333;;;20865:11;:19;20877:6;20865:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;20888:11;:22;20900:9;20888:22;;;;;;;;;;;;;;;;;;;;;;;;;20865:45;20861:203;;;20927:48;20949:6;20957:9;20968:6;20927:21;:48::i;:::-;20861:203;;;21008:44;21026:6;21034:9;21045:6;21008:17;:44::i;:::-;20861:203;20731:333;20600:464;20467:597;21081:7;21076:29;;21090:15;:13;:15::i;:::-;21076:29;20275:838;;;;:::o;15686:605::-;15737:7;15746;15766:15;15784:7;;15766:25;;15802:15;15820:7;;15802:25;;15843:9;15838:338;15862:9;:16;;;;15858:1;:20;15838:338;;;15946:7;15922;:21;15930:9;15940:1;15930:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15922:21;;;;;;;;;;;;;;;;:31;:83;;;;15998:7;15974;:21;15982:9;15992:1;15982:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15974:21;;;;;;;;;;;;;;;;:31;15922:83;15900:146;;;16029:7;;16038;;16021:25;;;;;;;;;15900:146;16071:34;16083:7;:21;16091:9;16101:1;16091:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16083:21;;;;;;;;;;;;;;;;16071:7;:11;;:34;;;;:::i;:::-;16061:44;;16130:34;16142:7;:21;16150:9;16160:1;16150:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16142:21;;;;;;;;;;;;;;;;16130:7;:11;;:34;;;;:::i;:::-;16120:44;;15880:3;;;;;:::i;:::-;;;;15838:338;;;;16200:20;16212:7;;16200;;:11;;:20;;;;:::i;:::-;16190:7;:30;16186:61;;;16230:7;;16239;;16222:25;;;;;;;;16186:61;16266:7;16275;16258:25;;;;;;15686:605;;;:::o;14333:516::-;14434:7;14456;14478;14500;14535:12;14550:24;14566:7;14550:15;:24::i;:::-;14535:39;;14585:13;14601:22;14615:7;14601:13;:22::i;:::-;14585:38;;14634:15;14652:30;14674:7;14652:21;:30::i;:::-;14634:48;;14693:23;14719:65;14766:7;14719:28;14741:5;14719:17;14731:4;14719:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;:32;;:65;;;;:::i;:::-;14693:91;;14803:15;14820:4;14826:5;14833:7;14795:46;;;;;;;;;;;;14333:516;;;;;:::o;14857:649::-;15077:7;15099;15121;15156:15;15174:24;15186:11;15174:7;:11;;:24;;;;:::i;:::-;15156:42;;15209:12;15224:21;15233:11;15224:4;:8;;:21;;;;:::i;:::-;15209:36;;15256:13;15272:22;15282:11;15272:5;:9;;:22;;;;:::i;:::-;15256:38;;15305:15;15322:24;15334:11;15322:7;:11;;:24;;;;:::i;:::-;15305:41;;15357:23;15383:65;15430:7;15383:28;15405:5;15383:17;15395:4;15383:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;:32;;:65;;;;:::i;:::-;15357:91;;15467:7;15476:15;15493:4;15459:39;;;;;;;;;;;14857:649;;;;;;;;;:::o;17665:237::-;17726:7;;17708:15;:25;;;;17768:13;;17744:21;:37;;;;17811:8;;17792:16;:27;;;;17842:1;17832:7;:11;;;;17870:1;17854:13;:17;;;;17893:1;17882:8;:12;;;;17665:237::o;22558:735::-;22709:15;22739:23;22777:12;22804:23;22842:12;22869:13;22897:15;22926:19;22937:7;22926:10;:19::i;:::-;22694:251;;;;;;;;;;;;;;22974:28;22994:7;22974;:15;22982:6;22974:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;22956:7;:15;22964:6;22956:15;;;;;;;;;;;;;;;:46;;;;23031:28;23051:7;23031;:15;23039:6;23031:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;23013:7;:15;23021:6;23013:15;;;;;;;;;;;;;;;:46;;;;23091:39;23114:15;23091:7;:18;23099:9;23091:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;23070:7;:18;23078:9;23070:18;;;;;;;;;;;;;;;:60;;;;23141:16;23151:5;23141:9;:16::i;:::-;23168:23;23183:7;23168:14;:23::i;:::-;23202;23214:4;23220;23202:11;:23::i;:::-;23258:9;23241:44;;23250:6;23241:44;;;23269:15;23241:44;;;;;;:::i;:::-;;;;;;;;22683:610;;;;;;;22558:735;;;:::o;21803:747::-;21952:15;21982:23;22020:12;22047:23;22085:12;22112:13;22140:15;22169:19;22180:7;22169:10;:19::i;:::-;21937:251;;;;;;;;;;;;;;22217:28;22237:7;22217;:15;22225:6;22217:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;22199:7;:15;22207:6;22199:15;;;;;;;;;;;;;;;:46;;;;22277:39;22300:15;22277:7;:18;22285:9;22277:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;22256:7;:18;22264:9;22256:18;;;;;;;;;;;;;;;:60;;;;22348:39;22371:15;22348:7;:18;22356:9;22348:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;22327:7;:18;22335:9;22327:18;;;;;;;;;;;;;;;:60;;;;22398:16;22408:5;22398:9;:16::i;:::-;22425:23;22440:7;22425:14;:23::i;:::-;22459;22471:4;22477;22459:11;:23::i;:::-;22515:9;22498:44;;22507:6;22498:44;;;22526:15;22498:44;;;;;;:::i;:::-;;;;;;;;21926:624;;;;;;;21803:747;;;:::o;21121:674::-;21268:15;21298:23;21336:12;21363:23;21401:12;21428:13;21456:15;21485:19;21496:7;21485:10;:19::i;:::-;21253:251;;;;;;;;;;;;;;21533:28;21553:7;21533;:15;21541:6;21533:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;21515:7;:15;21523:6;21515:15;;;;;;;;;;;;;;;:46;;;;21593:39;21616:15;21593:7;:18;21601:9;21593:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;21572:7;:18;21580:9;21572:18;;;;;;;;;;;;;;;:60;;;;21643:16;21653:5;21643:9;:16::i;:::-;21670:23;21685:7;21670:14;:23::i;:::-;21704;21716:4;21722;21704:11;:23::i;:::-;21760:9;21743:44;;21752:6;21743:44;;;21771:15;21743:44;;;;;;:::i;:::-;;;;;;;;21242:553;;;;;;;21121:674;;;:::o;11094:806::-;11245:15;11275:23;11313:12;11340:23;11378:12;11405:13;11433:15;11462:19;11473:7;11462:10;:19::i;:::-;11230:251;;;;;;;;;;;;;;11510:28;11530:7;11510;:15;11518:6;11510:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;11492:7;:15;11500:6;11492:15;;;;;;;;;;;;;;;:46;;;;11567:28;11587:7;11567;:15;11575:6;11567:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;11549:7;:15;11557:6;11549:15;;;;;;;;;;;;;;;:46;;;;11627:39;11650:15;11627:7;:18;11635:9;11627:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;11606:7;:18;11614:9;11606:18;;;;;;;;;;;;;;;:60;;;;11698:39;11721:15;11698:7;:18;11706:9;11698:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;11677:7;:18;11685:9;11677:18;;;;;;;;;;;;;;;:60;;;;11748:16;11758:5;11748:9;:16::i;:::-;11775:23;11790:7;11775:14;:23::i;:::-;11809;11821:4;11827;11809:11;:23::i;:::-;11865:9;11848:44;;11857:6;11848:44;;;11876:15;11848:44;;;;;;:::i;:::-;;;;;;;;11219:681;;;;;;;11094:806;;;:::o;17910:163::-;17964:15;;17954:7;:25;;;;18006:21;;17990:13;:37;;;;18049:16;;18038:8;:27;;;;17910:163::o;17176:130::-;17240:7;17267:31;17292:5;17267:20;17279:7;;17267;:11;;:20;;;;:::i;:::-;:24;;:31;;;;:::i;:::-;17260:38;;17176:130;;;:::o;17496:161::-;17585:7;17617:32;17643:5;17617:21;17629:8;;17617:7;:11;;:21;;;;:::i;:::-;:25;;:32;;;;:::i;:::-;17610:39;;17496:161;;;:::o;17314:174::-;17411:7;17443:37;17474:5;17443:26;17455:13;;17443:7;:11;;:26;;;;:::i;:::-;:30;;:37;;;;:::i;:::-;17436:44;;17314:174;;;:::o;1237:98::-;1295:7;1326:1;1322;:5;;;;:::i;:::-;1315:12;;1237:98;;;;:::o;16299:415::-;16367:19;16389:10;:8;:10::i;:::-;16367:32;;16410:13;16426:46;16450:11;16426:5;:9;;:46;;;;:::i;:::-;16410:62;;16507:56;16547:5;16507:7;:21;4120:42;16507:21;;;;;;;;;;;;;;;;:25;;:56;;;;:::i;:::-;16483:7;:21;4120:42;16483:21;;;;;;;;;;;;;;;:80;;;;16578:11;:25;4120:42;16578:25;;;;;;;;;;;;;;;;;;;;;;;;;16574:132;;;16642:64;16686:5;16642:7;:21;4120:42;16642:21;;;;;;;;;;;;;;;;:25;;:64;;;;:::i;:::-;16618:7;:21;4120:42;16618:21;;;;;;;;;;;;;;;:88;;;;16574:132;16355:359;;16299:415;:::o;16722:446::-;16782:19;16804:10;:8;:10::i;:::-;16782:32;;16825:15;16843:24;16855:11;16843:7;:11;;:24;;;;:::i;:::-;16825:42;;16913:69;16964:7;16913;:32;16921:23;;;;;;;;;;;16913:32;;;;;;;;;;;;;;;;:36;;:69;;;;:::i;:::-;16878:7;:32;16886:23;;;;;;;;;;;16878:32;;;;;;;;;;;;;;;:104;;;;16997:11;:36;17009:23;;;;;;;;;;;16997:36;;;;;;;;;;;;;;;;;;;;;;;;;16993:167;;;17083:77;17138:7;17083;:32;17091:23;;;;;;;;;;;17083:32;;;;;;;;;;;;;;;;:36;;:77;;;;:::i;:::-;17048:7;:32;17056:23;;;;;;;;;;;17048:32;;;;;;;;;;;;;;;:112;;;;16993:167;16771:397;;16722:446;:::o;13347:147::-;13425:17;13437:4;13425:7;;:11;;:17;;;;:::i;:::-;13415:7;:27;;;;13466:20;13481:4;13466:10;;:14;;:20;;;;:::i;:::-;13453:10;:33;;;;13347:147;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:60::-;4451:3;4472:5;4465:12;;4423:60;;;:::o;4489:142::-;4539:9;4572:53;4590:34;4599:24;4617:5;4599:24;:::i;:::-;4590:34;:::i;:::-;4572:53;:::i;:::-;4559:66;;4489:142;;;:::o;4637:126::-;4687:9;4720:37;4751:5;4720:37;:::i;:::-;4707:50;;4637:126;;;:::o;4769:152::-;4845:9;4878:37;4909:5;4878:37;:::i;:::-;4865:50;;4769:152;;;:::o;4927:183::-;5040:63;5097:5;5040:63;:::i;:::-;5035:3;5028:76;4927:183;;:::o;5116:274::-;5235:4;5273:2;5262:9;5258:18;5250:26;;5286:97;5380:1;5369:9;5365:17;5356:6;5286:97;:::i;:::-;5116:274;;;;:::o;5396:619::-;5473:6;5481;5489;5538:2;5526:9;5517:7;5513:23;5509:32;5506:119;;;5544:79;;:::i;:::-;5506:119;5664:1;5689:53;5734:7;5725:6;5714:9;5710:22;5689:53;:::i;:::-;5679:63;;5635:117;5791:2;5817:53;5862:7;5853:6;5842:9;5838:22;5817:53;:::i;:::-;5807:63;;5762:118;5919:2;5945:53;5990:7;5981:6;5970:9;5966:22;5945:53;:::i;:::-;5935:63;;5890:118;5396:619;;;;;:::o;6021:329::-;6080:6;6129:2;6117:9;6108:7;6104:23;6100:32;6097:119;;;6135:79;;:::i;:::-;6097:119;6255:1;6280:53;6325:7;6316:6;6305:9;6301:22;6280:53;:::i;:::-;6270:63;;6226:117;6021:329;;;;:::o;6356:::-;6415:6;6464:2;6452:9;6443:7;6439:23;6435:32;6432:119;;;6470:79;;:::i;:::-;6432:119;6590:1;6615:53;6660:7;6651:6;6640:9;6636:22;6615:53;:::i;:::-;6605:63;;6561:117;6356:329;;;;:::o;6691:118::-;6778:24;6796:5;6778:24;:::i;:::-;6773:3;6766:37;6691:118;;:::o;6815:222::-;6908:4;6946:2;6935:9;6931:18;6923:26;;6959:71;7027:1;7016:9;7012:17;7003:6;6959:71;:::i;:::-;6815:222;;;;:::o;7043:116::-;7113:21;7128:5;7113:21;:::i;:::-;7106:5;7103:32;7093:60;;7149:1;7146;7139:12;7093:60;7043:116;:::o;7165:133::-;7208:5;7246:6;7233:20;7224:29;;7262:30;7286:5;7262:30;:::i;:::-;7165:133;;;;:::o;7304:468::-;7369:6;7377;7426:2;7414:9;7405:7;7401:23;7397:32;7394:119;;;7432:79;;:::i;:::-;7394:119;7552:1;7577:53;7622:7;7613:6;7602:9;7598:22;7577:53;:::i;:::-;7567:63;;7523:117;7679:2;7705:50;7747:7;7738:6;7727:9;7723:22;7705:50;:::i;:::-;7695:60;;7650:115;7304:468;;;;;:::o;7778:::-;7843:6;7851;7900:2;7888:9;7879:7;7875:23;7871:32;7868:119;;;7906:79;;:::i;:::-;7868:119;8026:1;8051:53;8096:7;8087:6;8076:9;8072:22;8051:53;:::i;:::-;8041:63;;7997:117;8153:2;8179:50;8221:7;8212:6;8201:9;8197:22;8179:50;:::i;:::-;8169:60;;8124:115;7778:468;;;;;:::o;8252:474::-;8320:6;8328;8377:2;8365:9;8356:7;8352:23;8348:32;8345:119;;;8383:79;;:::i;:::-;8345:119;8503:1;8528:53;8573:7;8564:6;8553:9;8549:22;8528:53;:::i;:::-;8518:63;;8474:117;8630:2;8656:53;8701:7;8692:6;8681:9;8677:22;8656:53;:::i;:::-;8646:63;;8601:118;8252:474;;;;;:::o;8732:180::-;8780:77;8777:1;8770:88;8877:4;8874:1;8867:15;8901:4;8898:1;8891:15;8918:320;8962:6;8999:1;8993:4;8989:12;8979:22;;9046:1;9040:4;9036:12;9067:18;9057:81;;9123:4;9115:6;9111:17;9101:27;;9057:81;9185:2;9177:6;9174:14;9154:18;9151:38;9148:84;;9204:18;;:::i;:::-;9148:84;8969:269;8918:320;;;:::o;9244:182::-;9384:34;9380:1;9372:6;9368:14;9361:58;9244:182;:::o;9432:366::-;9574:3;9595:67;9659:2;9654:3;9595:67;:::i;:::-;9588:74;;9671:93;9760:3;9671:93;:::i;:::-;9789:2;9784:3;9780:12;9773:19;;9432:366;;;:::o;9804:419::-;9970:4;10008:2;9997:9;9993:18;9985:26;;10057:9;10051:4;10047:20;10043:1;10032:9;10028:17;10021:47;10085:131;10211:4;10085:131;:::i;:::-;10077:139;;9804:419;;;:::o;10229:229::-;10369:34;10365:1;10357:6;10353:14;10346:58;10438:12;10433:2;10425:6;10421:15;10414:37;10229:229;:::o;10464:366::-;10606:3;10627:67;10691:2;10686:3;10627:67;:::i;:::-;10620:74;;10703:93;10792:3;10703:93;:::i;:::-;10821:2;10816:3;10812:12;10805:19;;10464:366;;;:::o;10836:419::-;11002:4;11040:2;11029:9;11025:18;11017:26;;11089:9;11083:4;11079:20;11075:1;11064:9;11060:17;11053:47;11117:131;11243:4;11117:131;:::i;:::-;11109:139;;10836:419;;;:::o;11261:177::-;11401:29;11397:1;11389:6;11385:14;11378:53;11261:177;:::o;11444:366::-;11586:3;11607:67;11671:2;11666:3;11607:67;:::i;:::-;11600:74;;11683:93;11772:3;11683:93;:::i;:::-;11801:2;11796:3;11792:12;11785:19;;11444:366;;;:::o;11816:419::-;11982:4;12020:2;12009:9;12005:18;11997:26;;12069:9;12063:4;12059:20;12055:1;12044:9;12040:17;12033:47;12097:131;12223:4;12097:131;:::i;:::-;12089:139;;11816:419;;;:::o;12241:180::-;12289:77;12286:1;12279:88;12386:4;12383:1;12376:15;12410:4;12407:1;12400:15;12427:180;12475:77;12472:1;12465:88;12572:4;12569:1;12562:15;12596:4;12593:1;12586:15;12613:194;12653:4;12673:20;12691:1;12673:20;:::i;:::-;12668:25;;12707:20;12725:1;12707:20;:::i;:::-;12702:25;;12751:1;12748;12744:9;12736:17;;12775:1;12769:4;12766:11;12763:37;;;12780:18;;:::i;:::-;12763:37;12613:194;;;;:::o;12813:180::-;12861:77;12858:1;12851:88;12958:4;12955:1;12948:15;12982:4;12979:1;12972:15;12999:233;13038:3;13061:24;13079:5;13061:24;:::i;:::-;13052:33;;13107:66;13100:5;13097:77;13094:103;;13177:18;;:::i;:::-;13094:103;13224:1;13217:5;13213:13;13206:20;;12999:233;;;:::o;13238:231::-;13378:34;13374:1;13366:6;13362:14;13355:58;13447:14;13442:2;13434:6;13430:15;13423:39;13238:231;:::o;13475:366::-;13617:3;13638:67;13702:2;13697:3;13638:67;:::i;:::-;13631:74;;13714:93;13803:3;13714:93;:::i;:::-;13832:2;13827:3;13823:12;13816:19;;13475:366;;;:::o;13847:419::-;14013:4;14051:2;14040:9;14036:18;14028:26;;14100:9;14094:4;14090:20;14086:1;14075:9;14071:17;14064:47;14128:131;14254:4;14128:131;:::i;:::-;14120:139;;13847:419;;;:::o;14272:181::-;14412:33;14408:1;14400:6;14396:14;14389:57;14272:181;:::o;14459:366::-;14601:3;14622:67;14686:2;14681:3;14622:67;:::i;:::-;14615:74;;14698:93;14787:3;14698:93;:::i;:::-;14816:2;14811:3;14807:12;14800:19;;14459:366;;;:::o;14831:419::-;14997:4;15035:2;15024:9;15020:18;15012:26;;15084:9;15078:4;15074:20;15070:1;15059:9;15055:17;15048:47;15112:131;15238:4;15112:131;:::i;:::-;15104:139;;14831:419;;;:::o;15256:177::-;15396:29;15392:1;15384:6;15380:14;15373:53;15256:177;:::o;15439:366::-;15581:3;15602:67;15666:2;15661:3;15602:67;:::i;:::-;15595:74;;15678:93;15767:3;15678:93;:::i;:::-;15796:2;15791:3;15787:12;15780:19;;15439:366;;;:::o;15811:419::-;15977:4;16015:2;16004:9;16000:18;15992:26;;16064:9;16058:4;16054:20;16050:1;16039:9;16035:17;16028:47;16092:131;16218:4;16092:131;:::i;:::-;16084:139;;15811:419;;;:::o;16236:225::-;16376:34;16372:1;16364:6;16360:14;16353:58;16445:8;16440:2;16432:6;16428:15;16421:33;16236:225;:::o;16467:366::-;16609:3;16630:67;16694:2;16689:3;16630:67;:::i;:::-;16623:74;;16706:93;16795:3;16706:93;:::i;:::-;16824:2;16819:3;16815:12;16808:19;;16467:366;;;:::o;16839:419::-;17005:4;17043:2;17032:9;17028:18;17020:26;;17092:9;17086:4;17082:20;17078:1;17067:9;17063:17;17056:47;17120:131;17246:4;17120:131;:::i;:::-;17112:139;;16839:419;;;:::o;17264:223::-;17404:34;17400:1;17392:6;17388:14;17381:58;17473:6;17468:2;17460:6;17456:15;17449:31;17264:223;:::o;17493:366::-;17635:3;17656:67;17720:2;17715:3;17656:67;:::i;:::-;17649:74;;17732:93;17821:3;17732:93;:::i;:::-;17850:2;17845:3;17841:12;17834:19;;17493:366;;;:::o;17865:419::-;18031:4;18069:2;18058:9;18054:18;18046:26;;18118:9;18112:4;18108:20;18104:1;18093:9;18089:17;18082:47;18146:131;18272:4;18146:131;:::i;:::-;18138:139;;17865:419;;;:::o;18290:221::-;18430:34;18426:1;18418:6;18414:14;18407:58;18499:4;18494:2;18486:6;18482:15;18475:29;18290:221;:::o;18517:366::-;18659:3;18680:67;18744:2;18739:3;18680:67;:::i;:::-;18673:74;;18756:93;18845:3;18756:93;:::i;:::-;18874:2;18869:3;18865:12;18858:19;;18517:366;;;:::o;18889:419::-;19055:4;19093:2;19082:9;19078:18;19070:26;;19142:9;19136:4;19132:20;19128:1;19117:9;19113:17;19106:47;19170:131;19296:4;19170:131;:::i;:::-;19162:139;;18889:419;;;:::o;19314:224::-;19454:34;19450:1;19442:6;19438:14;19431:58;19523:7;19518:2;19510:6;19506:15;19499:32;19314:224;:::o;19544:366::-;19686:3;19707:67;19771:2;19766:3;19707:67;:::i;:::-;19700:74;;19783:93;19872:3;19783:93;:::i;:::-;19901:2;19896:3;19892:12;19885:19;;19544:366;;;:::o;19916:419::-;20082:4;20120:2;20109:9;20105:18;20097:26;;20169:9;20163:4;20159:20;20155:1;20144:9;20140:17;20133:47;20197:131;20323:4;20197:131;:::i;:::-;20189:139;;19916:419;;;:::o;20341:222::-;20481:34;20477:1;20469:6;20465:14;20458:58;20550:5;20545:2;20537:6;20533:15;20526:30;20341:222;:::o;20569:366::-;20711:3;20732:67;20796:2;20791:3;20732:67;:::i;:::-;20725:74;;20808:93;20897:3;20808:93;:::i;:::-;20926:2;20921:3;20917:12;20910:19;;20569:366;;;:::o;20941:419::-;21107:4;21145:2;21134:9;21130:18;21122:26;;21194:9;21188:4;21184:20;21180:1;21169:9;21165:17;21158:47;21222:131;21348:4;21222:131;:::i;:::-;21214:139;;20941:419;;;:::o;21366:228::-;21506:34;21502:1;21494:6;21490:14;21483:58;21575:11;21570:2;21562:6;21558:15;21551:36;21366:228;:::o;21600:366::-;21742:3;21763:67;21827:2;21822:3;21763:67;:::i;:::-;21756:74;;21839:93;21928:3;21839:93;:::i;:::-;21957:2;21952:3;21948:12;21941:19;;21600:366;;;:::o;21972:419::-;22138:4;22176:2;22165:9;22161:18;22153:26;;22225:9;22219:4;22215:20;22211:1;22200:9;22196:17;22189:47;22253:131;22379:4;22253:131;:::i;:::-;22245:139;;21972:419;;;:::o;22397:176::-;22537:28;22533:1;22525:6;22521:14;22514:52;22397:176;:::o;22579:366::-;22721:3;22742:67;22806:2;22801:3;22742:67;:::i;:::-;22735:74;;22818:93;22907:3;22818:93;:::i;:::-;22936:2;22931:3;22927:12;22920:19;;22579:366;;;:::o;22951:419::-;23117:4;23155:2;23144:9;23140:18;23132:26;;23204:9;23198:4;23194:20;23190:1;23179:9;23175:17;23168:47;23232:131;23358:4;23232:131;:::i;:::-;23224:139;;22951:419;;;:::o;23376:191::-;23416:3;23435:20;23453:1;23435:20;:::i;:::-;23430:25;;23469:20;23487:1;23469:20;:::i;:::-;23464:25;;23512:1;23509;23505:9;23498:16;;23533:3;23530:1;23527:10;23524:36;;;23540:18;;:::i;:::-;23524:36;23376:191;;;;:::o;23573:220::-;23713:34;23709:1;23701:6;23697:14;23690:58;23782:3;23777:2;23769:6;23765:15;23758:28;23573:220;:::o;23799:366::-;23941:3;23962:67;24026:2;24021:3;23962:67;:::i;:::-;23955:74;;24038:93;24127:3;24038:93;:::i;:::-;24156:2;24151:3;24147:12;24140:19;;23799:366;;;:::o;24171:419::-;24337:4;24375:2;24364:9;24360:18;24352:26;;24424:9;24418:4;24414:20;24410:1;24399:9;24395:17;24388:47;24452:131;24578:4;24452:131;:::i;:::-;24444:139;;24171:419;;;:::o;24596:180::-;24644:77;24641:1;24634:88;24741:4;24738:1;24731:15;24765:4;24762:1;24755:15;24782:185;24822:1;24839:20;24857:1;24839:20;:::i;:::-;24834:25;;24873:20;24891:1;24873:20;:::i;:::-;24868:25;;24912:1;24902:35;;24917:18;;:::i;:::-;24902:35;24959:1;24956;24952:9;24947:14;;24782:185;;;;:::o;24973:348::-;25013:7;25036:20;25054:1;25036:20;:::i;:::-;25031:25;;25070:20;25088:1;25070:20;:::i;:::-;25065:25;;25258:1;25190:66;25186:74;25183:1;25180:81;25175:1;25168:9;25161:17;25157:105;25154:131;;;25265:18;;:::i;:::-;25154:131;25313:1;25310;25306:9;25295:20;;24973:348;;;;:::o

Swarm Source

ipfs://437f03880ea475e722889b0d5e33c7451fd453154b585566847392002b9207ab
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.