ETH Price: $3,176.62 (+2.33%)

Token

Saja (Saja)
 

Overview

Max Total Supply

1,000,000,000,000,000,000 Saja

Holders

3,973

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0 Saja

Value
$0.00
0x354cda1853020580968ff45bab285509d1242f1f
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:
Saja

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-10-02
*/

pragma solidity ^0.6.12;
// SPDX-License-Identifier: Unlicensed
interface IERC20 {

    function totalSupply() external view returns (uint256);

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

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

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

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

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

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

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

library SafeMath {

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

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

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

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {

        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

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

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

        return c;
    }

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

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

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

    function _msgData() internal view virtual returns (bytes memory) {
        this;
        // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

library Address {

    function isContract(address account) internal view returns (bool) {
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        assembly {codehash := extcodehash(account)}
        return (codehash != accountHash && codehash != 0x0);
    }

    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success,) = recipient.call{value : amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, "Address: low-level call failed");
    }

    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        return _functionCallWithValue(target, data, value, errorMessage);
    }

    function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{value : weiValue}(data);
        if (success) {
            return returndata;
        } else {

            if (returndata.length > 0) {

                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    uint256 private _lockTime;

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

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

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

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

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

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

    function geUnlockTime() public view returns (uint256) {
        return _lockTime;
    }

    function lock(uint256 time) public virtual onlyOwner {
        _previousOwner = _owner;
        _owner = address(0);
        _lockTime = now + time;
        emit OwnershipTransferred(_owner, address(0));
    }

    function unlock() public virtual {
        require(_previousOwner == msg.sender, "You don't have permission to unlock");
        require(now > _lockTime, "Contract is locked until 7 days");
        emit OwnershipTransferred(_owner, _previousOwner);
        _owner = _previousOwner;
    }
}

contract Saja is Context, IERC20, Ownable {
    using SafeMath for uint256;
    using Address for address;

    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;
    address[] private _excluded;

    uint256 private constant MAX = ~uint256(0);
    uint256 private _tTotal = 1000000000000 * 10 ** 6 * 10 ** 9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;

    string private _name = "Saja";
    string private _symbol = "Saja";
    uint8 private _decimals = 9;

    uint256 public _taxFee = 1;
    uint256 private _previousTaxFee = _taxFee;

    uint256 public _liquidityFee = 0;
    uint256 private _previousLiquidityFee = _liquidityFee;

    uint256 public _marketingFee = 0;
    uint256 private _previousMarketingFee = _marketingFee;

    uint256 public _charityFee = 0;
    uint256 private _previousCharityFee = _charityFee;

    uint256 public _burnFee = 0;
    uint256 private _previousBurnFee = _burnFee;

    address public _marketingWallet;
    address public _charityWallet;
    address public _deadAddress;

    bool public swapAndLiquifyEnabled = true;

    uint256 public _maxTxAmount = 5000000000 * 10 ** 6 * 10 ** 9;
    uint256 private numTokensSellToAddToLiquidity = 5000000000 * 10 ** 6 * 10 ** 9;


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

        _marketingWallet = 0x9934AA2AF6604aD463afD2a9F5e0C24b84481268;
        _charityWallet = 0x6780313D958B535BB103386919a02c835207f2a0;
        _deadAddress = 0x000000000000000000000000000000000000dEaD;


        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = 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 (uint8) {
        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 excluded");
        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 tLiquidity) = _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);
        _takeLiquidity(tLiquidity);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

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

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

    function setFees(uint256 taxFee, uint256 liquidityFee, uint256 marketingFee, uint256 charityFee, uint256 burnFee) external onlyOwner {
        _taxFee = taxFee;
        _liquidityFee = liquidityFee;
        _marketingFee = marketingFee;
        _charityFee = charityFee;
        _burnFee = burnFee;
    }

    function setMaxTxPercent(uint256 maxTxPercent) external onlyOwner() {
        _maxTxAmount = _tTotal.mul(maxTxPercent).div(
            10 ** 2
        );
    }

    receive() external payable {}

    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 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getTValues(tAmount);
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tLiquidity, _getRate());
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tLiquidity);
    }

    function _getTValues(uint256 tAmount) private view returns (uint256, uint256, uint256) {
        uint256 tFee = calculateTaxFee(tAmount);
        uint256 tLiquidity = calculateLiquidityFee(tAmount);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tLiquidity);
        return (tTransferAmount, tFee, tLiquidity);
    }

    function _getRValues(uint256 tAmount, uint256 tFee, uint256 tLiquidity, uint256 currentRate) private pure returns (uint256, uint256, uint256) {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rLiquidity = tLiquidity.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rLiquidity);
        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 _takeLiquidity(uint256 tLiquidity) private {
        uint256 currentRate = _getRate();
        uint256 rLiquidity = tLiquidity.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity);
        if (_isExcluded[address(this)])
            _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity);
    }

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

    function calculateLiquidityFee(uint256 _amount) private view returns (uint256) {
        return _amount.mul(_liquidityFee).div(
            10 ** 2
        );
    }

    function removeAllFee() private {
        if (_taxFee == 0 && _liquidityFee == 0 && _marketingFee == 0 && _burnFee == 0 && _charityFee == 0) return;

        _previousTaxFee = _taxFee;
        _previousLiquidityFee = _liquidityFee;
        _previousMarketingFee = _marketingFee;
        _previousCharityFee = _charityFee;
        _previousBurnFee = _burnFee;

        _taxFee = 0;
        _liquidityFee = 0;
        _marketingFee = 0;
        _charityFee = 0;
        _burnFee = 0;
    }

    function restoreAllFee() private {
        _taxFee = _previousTaxFee;
        _liquidityFee = _previousLiquidityFee;
        _marketingFee = _previousMarketingFee;
        _charityFee = _previousCharityFee;
        _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() && to != owner())
            require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");

        uint256 contractTokenBalance = balanceOf(address(this));
        uint256 marketingFee = amount * _marketingFee / 100;
        uint256 burnFee = amount * _burnFee / 100;
        uint charityFee = amount * _charityFee /100;

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

        bool overMinTokenBalance = contractTokenBalance >= numTokensSellToAddToLiquidity;
        if (overMinTokenBalance) {
            contractTokenBalance = numTokensSellToAddToLiquidity;
        }

        bool takeFee = true;

        if (_isExcludedFromFee[from] || _isExcludedFromFee[to]) {
            takeFee = false;
        }
        if (marketingFee > 0) {
            _tokenTransfer(from, _marketingWallet, marketingFee, takeFee);
        }
        if (charityFee > 0) {
            _tokenTransfer(from, _charityWallet, charityFee, takeFee);
        }
        if (burnFee > 0) {
            _tokenTransfer(from, _deadAddress, burnFee, takeFee);
        }

        _tokenTransfer(from, to, amount .sub(marketingFee) .sub(burnFee).sub(charityFee), 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 tLiquidity) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeLiquidity(tLiquidity);
        _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 tLiquidity) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeLiquidity(tLiquidity);
        _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 tLiquidity) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeLiquidity(tLiquidity);
        _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":"_charityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_charityWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityFee","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":"_marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","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":[],"name":"geUnlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","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":"taxFee","type":"uint256"},{"internalType":"uint256","name":"liquidityFee","type":"uint256"},{"internalType":"uint256","name":"marketingFee","type":"uint256"},{"internalType":"uint256","name":"charityFee","type":"uint256"},{"internalType":"uint256","name":"burnFee","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxPercent","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":[{"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":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526b033b2e3c9fd0803ce8000000600955600954600019816200002257fe5b0660001903600a556040518060400160405280600481526020017f53616a6100000000000000000000000000000000000000000000000000000000815250600c908051906020019062000077929190620004bf565b506040518060400160405280600481526020017f53616a6100000000000000000000000000000000000000000000000000000000815250600d9080519060200190620000c5929190620004bf565b506009600e60006101000a81548160ff021916908360ff1602179055506001600f55600f5460105560006011556011546012556000601355601354601455600060155560155460165560006017556017546018556001601b60146101000a81548160ff0219169083151502179055506a0422ca8b0a00a425000000601c556a0422ca8b0a00a425000000601d553480156200015f57600080fd5b506000620001726200048e60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600a5460036000620002276200048e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550739934aa2af6604ad463afd2a9f5e0c24b84481268601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550736780313d958b535bb103386919a02c835207f2a0601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160066000620003686200049660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620004216200048e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009546040518082815260200191505060405180910390a362000565565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200050257805160ff191683800117855562000533565b8280016001018555821562000533579182015b828111156200053257825182559160200191906001019062000515565b5b50905062000542919062000546565b5090565b5b808211156200056157600081600090555060010162000547565b5090565b61494080620005756000396000f3fe6080604052600436106102345760003560e01c80635342acb41161012e578063a69df4b5116100ab578063d543dbeb1161006f578063d543dbeb14610c33578063dd46706414610c6e578063dd62ed3e14610ca9578063ea2f0b3714610d2e578063f2fde38b14610d7f5761023b565b8063a69df4b514610b14578063a9059cbb14610b2b578063b6c5232414610b9c578063c0b0fda214610bc7578063c93eb86614610bf25761023b565b806388f82020116100f257806388f820201461092a5780638da5cb5b1461099157806395d89b41146109d2578063962dfc7514610a62578063a457c2d714610aa35761023b565b80635342acb4146107f15780636bc87c3a1461085857806370a0823114610883578063715018a6146108e85780637d1db4a5146108ff5761023b565b80633685d419116101bc578063437823ec11610180578063437823ec1461068657806343a18909146106d75780634549b039146107185780634a74bb021461077357806352390c02146107a05761023b565b80633685d4191461053357806339509351146105845780633b124fe7146105f55780633bd5d1731461062057806340f8007a1461065b5761023b565b806318160ddd1161020357806318160ddd146103cf57806322976e0d146103fa57806323b872dd146104255780632d838119146104b6578063313ce567146105055761023b565b806304a66b481461024057806306fdde03146102a3578063095ea7b31461033357806313114a9d146103a45761023b565b3661023b57005b600080fd5b34801561024c57600080fd5b506102a1600480360360a081101561026357600080fd5b810190808035906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190505050610dd0565b005b3480156102af57600080fd5b506102b8610ec2565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102f85780820151818401526020810190506102dd565b50505050905090810190601f1680156103255780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561033f57600080fd5b5061038c6004803603604081101561035657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f64565b60405180821515815260200191505060405180910390f35b3480156103b057600080fd5b506103b9610f82565b6040518082815260200191505060405180910390f35b3480156103db57600080fd5b506103e4610f8c565b6040518082815260200191505060405180910390f35b34801561040657600080fd5b5061040f610f96565b6040518082815260200191505060405180910390f35b34801561043157600080fd5b5061049e6004803603606081101561044857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f9c565b60405180821515815260200191505060405180910390f35b3480156104c257600080fd5b506104ef600480360360208110156104d957600080fd5b8101908080359060200190929190505050611075565b6040518082815260200191505060405180910390f35b34801561051157600080fd5b5061051a6110f9565b604051808260ff16815260200191505060405180910390f35b34801561053f57600080fd5b506105826004803603602081101561055657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611110565b005b34801561059057600080fd5b506105dd600480360360408110156105a757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061149a565b60405180821515815260200191505060405180910390f35b34801561060157600080fd5b5061060a61154d565b6040518082815260200191505060405180910390f35b34801561062c57600080fd5b506106596004803603602081101561064357600080fd5b8101908080359060200190929190505050611553565b005b34801561066757600080fd5b506106706116e4565b6040518082815260200191505060405180910390f35b34801561069257600080fd5b506106d5600480360360208110156106a957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506116ea565b005b3480156106e357600080fd5b506106ec61180d565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561072457600080fd5b5061075d6004803603604081101561073b57600080fd5b8101908080359060200190929190803515159060200190929190505050611833565b6040518082815260200191505060405180910390f35b34801561077f57600080fd5b506107886118ea565b60405180821515815260200191505060405180910390f35b3480156107ac57600080fd5b506107ef600480360360208110156107c357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506118fd565b005b3480156107fd57600080fd5b506108406004803603602081101561081457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c17565b60405180821515815260200191505060405180910390f35b34801561086457600080fd5b5061086d611c6d565b6040518082815260200191505060405180910390f35b34801561088f57600080fd5b506108d2600480360360208110156108a657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c73565b6040518082815260200191505060405180910390f35b3480156108f457600080fd5b506108fd611d5e565b005b34801561090b57600080fd5b50610914611ee4565b6040518082815260200191505060405180910390f35b34801561093657600080fd5b506109796004803603602081101561094d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611eea565b60405180821515815260200191505060405180910390f35b34801561099d57600080fd5b506109a6611f40565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156109de57600080fd5b506109e7611f69565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610a27578082015181840152602081019050610a0c565b50505050905090810190601f168015610a545780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610a6e57600080fd5b50610a7761200b565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610aaf57600080fd5b50610afc60048036036040811015610ac657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612031565b60405180821515815260200191505060405180910390f35b348015610b2057600080fd5b50610b296120fe565b005b348015610b3757600080fd5b50610b8460048036036040811015610b4e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061231b565b60405180821515815260200191505060405180910390f35b348015610ba857600080fd5b50610bb1612339565b6040518082815260200191505060405180910390f35b348015610bd357600080fd5b50610bdc612343565b6040518082815260200191505060405180910390f35b348015610bfe57600080fd5b50610c07612349565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610c3f57600080fd5b50610c6c60048036036020811015610c5657600080fd5b810190808035906020019092919050505061236f565b005b348015610c7a57600080fd5b50610ca760048036036020811015610c9157600080fd5b8101908080359060200190929190505050612468565b005b348015610cb557600080fd5b50610d1860048036036040811015610ccc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612659565b6040518082815260200191505060405180910390f35b348015610d3a57600080fd5b50610d7d60048036036020811015610d5157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506126e0565b005b348015610d8b57600080fd5b50610dce60048036036020811015610da257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612803565b005b610dd8612a0e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e98576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b84600f81905550836011819055508260138190555081601581905550806017819055505050505050565b6060600c8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610f5a5780601f10610f2f57610100808354040283529160200191610f5a565b820191906000526020600020905b815481529060010190602001808311610f3d57829003601f168201915b5050505050905090565b6000610f78610f71612a0e565b8484612a16565b6001905092915050565b6000600b54905090565b6000600954905090565b60135481565b6000610fa9848484612c0d565b61106a84610fb5612a0e565b611065856040518060600160405280602881526020016147fd60289139600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061101b612a0e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461305a9092919063ffffffff16565b612a16565b600190509392505050565b6000600a548211156110d2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180614742602a913960400191505060405180910390fd5b60006110dc61311a565b90506110f1818461314590919063ffffffff16565b915050919050565b6000600e60009054906101000a900460ff16905090565b611118612a0e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611297576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b60005b600880549050811015611496578173ffffffffffffffffffffffffffffffffffffffff16600882815481106112cb57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156114895760086001600880549050038154811061132757fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166008828154811061135f57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600880548061144f57fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055611496565b808060010191505061129a565b5050565b60006115436114a7612a0e565b8461153e85600560006114b8612a0e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461318f90919063ffffffff16565b612a16565b6001905092915050565b600f5481565b600061155d612a0e565b9050600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611602576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180614897602c913960400191505060405180910390fd5b600061160d83613217565b5050505050905061166681600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461327390919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506116be81600a5461327390919063ffffffff16565b600a819055506116d983600b5461318f90919063ffffffff16565b600b81905550505050565b60155481565b6116f2612a0e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006009548311156118ad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f416d6f756e74206d757374206265206c657373207468616e20737570706c790081525060200191505060405180910390fd5b816118cd5760006118bd84613217565b50505050509050809150506118e4565b60006118d884613217565b50505050915050809150505b92915050565b601b60149054906101000a900460ff1681565b611905612a0e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611a85576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115611b5957611b15600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611075565b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506008819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60115481565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611d0e57600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050611d59565b611d56600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611075565b90505b919050565b611d66612a0e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e26576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b601c5481565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600d8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156120015780601f10611fd657610100808354040283529160200191612001565b820191906000526020600020905b815481529060010190602001808311611fe457829003601f168201915b5050505050905090565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006120f461203e612a0e565b846120ef856040518060600160405280602581526020016148e66025913960056000612068612a0e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461305a9092919063ffffffff16565b612a16565b6001905092915050565b3373ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121a4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806148c36023913960400191505060405180910390fd5b600254421161221b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f436f6e7472616374206973206c6f636b656420756e74696c203720646179730081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600061232f612328612a0e565b8484612c0d565b6001905092915050565b6000600254905090565b60175481565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612377612a0e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612437576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b61245f6064612451836009546132bd90919063ffffffff16565b61314590919063ffffffff16565b601c8190555050565b612470612a0e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612530576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550804201600281905550600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6126e8612a0e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146127a8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61280b612a0e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146128cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612951576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061476c6026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612a9c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806148736024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612b22576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806147926022913960400191505060405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612c93576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061484e6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612d19576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602381526020018061471f6023913960400191505060405180910390fd5b60008111612d72576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806148256029913960400191505060405180910390fd5b612d7a611f40565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612de85750612db8611f40565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612e4957601c54811115612e48576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806147b46028913960400191505060405180910390fd5b5b6000612e5430611c73565b905060006064601354840281612e6657fe5b04905060006064601754850281612e7957fe5b04905060006064601554860281612e8c57fe5b049050601c548410612e9e57601c5493505b6000601d5485101590508015612eb457601d5494505b600060019050600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612f5b5750600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612f6557600090505b6000851115612f9d57612f9c89601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168784613343565b5b6000831115612fd557612fd489601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168584613343565b5b600084111561300d5761300c89601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168684613343565b5b61304f89896130498661303b8961302d8c8f61327390919063ffffffff16565b61327390919063ffffffff16565b61327390919063ffffffff16565b84613343565b505050505050505050565b6000838311158290613107576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156130cc5780820151818401526020810190506130b1565b50505050905090810190601f1680156130f95780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000806000613127613654565b9150915061313e818361314590919063ffffffff16565b9250505090565b600061318783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506138e5565b905092915050565b60008082840190508381101561320d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600080600080600080600080600061322e8a6139ab565b925092509250600080600061324c8d868661324761311a565b613a05565b9250925092508282828888889b509b509b509b509b509b5050505050505091939550919395565b60006132b583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061305a565b905092915050565b6000808314156132d0576000905061333d565b60008284029050828482816132e157fe5b0414613338576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806147dc6021913960400191505060405180910390fd5b809150505b92915050565b8061335157613350613a8e565b5b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156133f45750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561340957613404848484613b2e565b613640565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156134ac5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156134c1576134bc848484613d8e565b61363f565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156135655750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561357a57613575848484613fee565b61363e565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561361c5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156136315761362c8484846141b9565b61363d565b61363c848484613fee565b5b5b5b5b8061364e5761364d6144ae565b5b50505050565b6000806000600a5490506000600954905060005b6008805490508110156138a85782600360006008848154811061368757fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054118061376e575081600460006008848154811061370657fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b1561378557600a54600954945094505050506138e1565b61380e600360006008848154811061379957fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548461327390919063ffffffff16565b9250613899600460006008848154811061382457fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361327390919063ffffffff16565b91508080600101915050613668565b506138c0600954600a5461314590919063ffffffff16565b8210156138d857600a546009549350935050506138e1565b81819350935050505b9091565b60008083118290613991576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561395657808201518184015260208101905061393b565b50505050905090810190601f1680156139835780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161399d57fe5b049050809150509392505050565b6000806000806139ba856144dd565b905060006139c78661450e565b905060006139f0826139e2858a61327390919063ffffffff16565b61327390919063ffffffff16565b90508083839550955095505050509193909250565b600080600080613a1e85896132bd90919063ffffffff16565b90506000613a3586896132bd90919063ffffffff16565b90506000613a4c87896132bd90919063ffffffff16565b90506000613a7582613a67858761327390919063ffffffff16565b61327390919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000600f54148015613aa257506000601154145b8015613ab057506000601354145b8015613abe57506000601754145b8015613acc57506000601554145b15613ad657613b2c565b600f546010819055506011546012819055506013546014819055506015546016819055506017546018819055506000600f8190555060006011819055506000601381905550600060158190555060006017819055505b565b600080600080600080613b4087613217565b955095509550955095509550613b9e87600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461327390919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613c3386600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461327390919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613cc885600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461318f90919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613d148161453f565b613d1e84836146e4565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b600080600080600080613da087613217565b955095509550955095509550613dfe86600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461327390919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613e9383600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461318f90919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613f2885600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461318f90919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613f748161453f565b613f7e84836146e4565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b60008060008060008061400087613217565b95509550955095509550955061405e86600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461327390919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506140f385600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461318f90919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061413f8161453f565b61414984836146e4565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b6000806000806000806141cb87613217565b95509550955095509550955061422987600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461327390919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506142be86600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461327390919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061435383600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461318f90919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506143e885600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461318f90919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506144348161453f565b61443e84836146e4565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b601054600f81905550601254601181905550601454601381905550601654601581905550601854601781905550565b600061450760646144f9600f54856132bd90919063ffffffff16565b61314590919063ffffffff16565b9050919050565b6000614538606461452a601154856132bd90919063ffffffff16565b61314590919063ffffffff16565b9050919050565b600061454961311a565b9050600061456082846132bd90919063ffffffff16565b90506145b481600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461318f90919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156146df5761469b83600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461318f90919063ffffffff16565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b6146f982600a5461327390919063ffffffff16565b600a8190555061471481600b5461318f90919063ffffffff16565b600b81905550505056fe45524332303a207472616e7366657220746f20746865207a65726f2061646472657373416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573735472616e7366657220616d6f756e74206578636565647320746865206d61785478416d6f756e742e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63655472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573734578636c75646564206164647265737365732063616e6e6f742063616c6c20746869732066756e6374696f6e596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6f636b45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220f168b584b4131de268373be2727748ce72b397588ce1b39c9fef035ef164517364736f6c634300060c0033

Deployed Bytecode

0x6080604052600436106102345760003560e01c80635342acb41161012e578063a69df4b5116100ab578063d543dbeb1161006f578063d543dbeb14610c33578063dd46706414610c6e578063dd62ed3e14610ca9578063ea2f0b3714610d2e578063f2fde38b14610d7f5761023b565b8063a69df4b514610b14578063a9059cbb14610b2b578063b6c5232414610b9c578063c0b0fda214610bc7578063c93eb86614610bf25761023b565b806388f82020116100f257806388f820201461092a5780638da5cb5b1461099157806395d89b41146109d2578063962dfc7514610a62578063a457c2d714610aa35761023b565b80635342acb4146107f15780636bc87c3a1461085857806370a0823114610883578063715018a6146108e85780637d1db4a5146108ff5761023b565b80633685d419116101bc578063437823ec11610180578063437823ec1461068657806343a18909146106d75780634549b039146107185780634a74bb021461077357806352390c02146107a05761023b565b80633685d4191461053357806339509351146105845780633b124fe7146105f55780633bd5d1731461062057806340f8007a1461065b5761023b565b806318160ddd1161020357806318160ddd146103cf57806322976e0d146103fa57806323b872dd146104255780632d838119146104b6578063313ce567146105055761023b565b806304a66b481461024057806306fdde03146102a3578063095ea7b31461033357806313114a9d146103a45761023b565b3661023b57005b600080fd5b34801561024c57600080fd5b506102a1600480360360a081101561026357600080fd5b810190808035906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190505050610dd0565b005b3480156102af57600080fd5b506102b8610ec2565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102f85780820151818401526020810190506102dd565b50505050905090810190601f1680156103255780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561033f57600080fd5b5061038c6004803603604081101561035657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f64565b60405180821515815260200191505060405180910390f35b3480156103b057600080fd5b506103b9610f82565b6040518082815260200191505060405180910390f35b3480156103db57600080fd5b506103e4610f8c565b6040518082815260200191505060405180910390f35b34801561040657600080fd5b5061040f610f96565b6040518082815260200191505060405180910390f35b34801561043157600080fd5b5061049e6004803603606081101561044857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f9c565b60405180821515815260200191505060405180910390f35b3480156104c257600080fd5b506104ef600480360360208110156104d957600080fd5b8101908080359060200190929190505050611075565b6040518082815260200191505060405180910390f35b34801561051157600080fd5b5061051a6110f9565b604051808260ff16815260200191505060405180910390f35b34801561053f57600080fd5b506105826004803603602081101561055657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611110565b005b34801561059057600080fd5b506105dd600480360360408110156105a757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061149a565b60405180821515815260200191505060405180910390f35b34801561060157600080fd5b5061060a61154d565b6040518082815260200191505060405180910390f35b34801561062c57600080fd5b506106596004803603602081101561064357600080fd5b8101908080359060200190929190505050611553565b005b34801561066757600080fd5b506106706116e4565b6040518082815260200191505060405180910390f35b34801561069257600080fd5b506106d5600480360360208110156106a957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506116ea565b005b3480156106e357600080fd5b506106ec61180d565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561072457600080fd5b5061075d6004803603604081101561073b57600080fd5b8101908080359060200190929190803515159060200190929190505050611833565b6040518082815260200191505060405180910390f35b34801561077f57600080fd5b506107886118ea565b60405180821515815260200191505060405180910390f35b3480156107ac57600080fd5b506107ef600480360360208110156107c357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506118fd565b005b3480156107fd57600080fd5b506108406004803603602081101561081457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c17565b60405180821515815260200191505060405180910390f35b34801561086457600080fd5b5061086d611c6d565b6040518082815260200191505060405180910390f35b34801561088f57600080fd5b506108d2600480360360208110156108a657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c73565b6040518082815260200191505060405180910390f35b3480156108f457600080fd5b506108fd611d5e565b005b34801561090b57600080fd5b50610914611ee4565b6040518082815260200191505060405180910390f35b34801561093657600080fd5b506109796004803603602081101561094d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611eea565b60405180821515815260200191505060405180910390f35b34801561099d57600080fd5b506109a6611f40565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156109de57600080fd5b506109e7611f69565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610a27578082015181840152602081019050610a0c565b50505050905090810190601f168015610a545780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610a6e57600080fd5b50610a7761200b565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610aaf57600080fd5b50610afc60048036036040811015610ac657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612031565b60405180821515815260200191505060405180910390f35b348015610b2057600080fd5b50610b296120fe565b005b348015610b3757600080fd5b50610b8460048036036040811015610b4e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061231b565b60405180821515815260200191505060405180910390f35b348015610ba857600080fd5b50610bb1612339565b6040518082815260200191505060405180910390f35b348015610bd357600080fd5b50610bdc612343565b6040518082815260200191505060405180910390f35b348015610bfe57600080fd5b50610c07612349565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610c3f57600080fd5b50610c6c60048036036020811015610c5657600080fd5b810190808035906020019092919050505061236f565b005b348015610c7a57600080fd5b50610ca760048036036020811015610c9157600080fd5b8101908080359060200190929190505050612468565b005b348015610cb557600080fd5b50610d1860048036036040811015610ccc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612659565b6040518082815260200191505060405180910390f35b348015610d3a57600080fd5b50610d7d60048036036020811015610d5157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506126e0565b005b348015610d8b57600080fd5b50610dce60048036036020811015610da257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612803565b005b610dd8612a0e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e98576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b84600f81905550836011819055508260138190555081601581905550806017819055505050505050565b6060600c8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610f5a5780601f10610f2f57610100808354040283529160200191610f5a565b820191906000526020600020905b815481529060010190602001808311610f3d57829003601f168201915b5050505050905090565b6000610f78610f71612a0e565b8484612a16565b6001905092915050565b6000600b54905090565b6000600954905090565b60135481565b6000610fa9848484612c0d565b61106a84610fb5612a0e565b611065856040518060600160405280602881526020016147fd60289139600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061101b612a0e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461305a9092919063ffffffff16565b612a16565b600190509392505050565b6000600a548211156110d2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180614742602a913960400191505060405180910390fd5b60006110dc61311a565b90506110f1818461314590919063ffffffff16565b915050919050565b6000600e60009054906101000a900460ff16905090565b611118612a0e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611297576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b60005b600880549050811015611496578173ffffffffffffffffffffffffffffffffffffffff16600882815481106112cb57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156114895760086001600880549050038154811061132757fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166008828154811061135f57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600880548061144f57fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055611496565b808060010191505061129a565b5050565b60006115436114a7612a0e565b8461153e85600560006114b8612a0e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461318f90919063ffffffff16565b612a16565b6001905092915050565b600f5481565b600061155d612a0e565b9050600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611602576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180614897602c913960400191505060405180910390fd5b600061160d83613217565b5050505050905061166681600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461327390919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506116be81600a5461327390919063ffffffff16565b600a819055506116d983600b5461318f90919063ffffffff16565b600b81905550505050565b60155481565b6116f2612a0e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006009548311156118ad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f416d6f756e74206d757374206265206c657373207468616e20737570706c790081525060200191505060405180910390fd5b816118cd5760006118bd84613217565b50505050509050809150506118e4565b60006118d884613217565b50505050915050809150505b92915050565b601b60149054906101000a900460ff1681565b611905612a0e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611a85576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115611b5957611b15600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611075565b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506008819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60115481565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611d0e57600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050611d59565b611d56600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611075565b90505b919050565b611d66612a0e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e26576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b601c5481565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600d8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156120015780601f10611fd657610100808354040283529160200191612001565b820191906000526020600020905b815481529060010190602001808311611fe457829003601f168201915b5050505050905090565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006120f461203e612a0e565b846120ef856040518060600160405280602581526020016148e66025913960056000612068612a0e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461305a9092919063ffffffff16565b612a16565b6001905092915050565b3373ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121a4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806148c36023913960400191505060405180910390fd5b600254421161221b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f436f6e7472616374206973206c6f636b656420756e74696c203720646179730081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600061232f612328612a0e565b8484612c0d565b6001905092915050565b6000600254905090565b60175481565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612377612a0e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612437576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b61245f6064612451836009546132bd90919063ffffffff16565b61314590919063ffffffff16565b601c8190555050565b612470612a0e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612530576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550804201600281905550600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6126e8612a0e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146127a8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61280b612a0e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146128cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612951576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061476c6026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612a9c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806148736024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612b22576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806147926022913960400191505060405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612c93576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061484e6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612d19576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602381526020018061471f6023913960400191505060405180910390fd5b60008111612d72576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806148256029913960400191505060405180910390fd5b612d7a611f40565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612de85750612db8611f40565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612e4957601c54811115612e48576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806147b46028913960400191505060405180910390fd5b5b6000612e5430611c73565b905060006064601354840281612e6657fe5b04905060006064601754850281612e7957fe5b04905060006064601554860281612e8c57fe5b049050601c548410612e9e57601c5493505b6000601d5485101590508015612eb457601d5494505b600060019050600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612f5b5750600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612f6557600090505b6000851115612f9d57612f9c89601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168784613343565b5b6000831115612fd557612fd489601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168584613343565b5b600084111561300d5761300c89601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168684613343565b5b61304f89896130498661303b8961302d8c8f61327390919063ffffffff16565b61327390919063ffffffff16565b61327390919063ffffffff16565b84613343565b505050505050505050565b6000838311158290613107576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156130cc5780820151818401526020810190506130b1565b50505050905090810190601f1680156130f95780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000806000613127613654565b9150915061313e818361314590919063ffffffff16565b9250505090565b600061318783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506138e5565b905092915050565b60008082840190508381101561320d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600080600080600080600080600061322e8a6139ab565b925092509250600080600061324c8d868661324761311a565b613a05565b9250925092508282828888889b509b509b509b509b509b5050505050505091939550919395565b60006132b583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061305a565b905092915050565b6000808314156132d0576000905061333d565b60008284029050828482816132e157fe5b0414613338576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806147dc6021913960400191505060405180910390fd5b809150505b92915050565b8061335157613350613a8e565b5b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156133f45750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561340957613404848484613b2e565b613640565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156134ac5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156134c1576134bc848484613d8e565b61363f565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156135655750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561357a57613575848484613fee565b61363e565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561361c5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156136315761362c8484846141b9565b61363d565b61363c848484613fee565b5b5b5b5b8061364e5761364d6144ae565b5b50505050565b6000806000600a5490506000600954905060005b6008805490508110156138a85782600360006008848154811061368757fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054118061376e575081600460006008848154811061370657fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b1561378557600a54600954945094505050506138e1565b61380e600360006008848154811061379957fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548461327390919063ffffffff16565b9250613899600460006008848154811061382457fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361327390919063ffffffff16565b91508080600101915050613668565b506138c0600954600a5461314590919063ffffffff16565b8210156138d857600a546009549350935050506138e1565b81819350935050505b9091565b60008083118290613991576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561395657808201518184015260208101905061393b565b50505050905090810190601f1680156139835780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161399d57fe5b049050809150509392505050565b6000806000806139ba856144dd565b905060006139c78661450e565b905060006139f0826139e2858a61327390919063ffffffff16565b61327390919063ffffffff16565b90508083839550955095505050509193909250565b600080600080613a1e85896132bd90919063ffffffff16565b90506000613a3586896132bd90919063ffffffff16565b90506000613a4c87896132bd90919063ffffffff16565b90506000613a7582613a67858761327390919063ffffffff16565b61327390919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000600f54148015613aa257506000601154145b8015613ab057506000601354145b8015613abe57506000601754145b8015613acc57506000601554145b15613ad657613b2c565b600f546010819055506011546012819055506013546014819055506015546016819055506017546018819055506000600f8190555060006011819055506000601381905550600060158190555060006017819055505b565b600080600080600080613b4087613217565b955095509550955095509550613b9e87600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461327390919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613c3386600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461327390919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613cc885600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461318f90919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613d148161453f565b613d1e84836146e4565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b600080600080600080613da087613217565b955095509550955095509550613dfe86600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461327390919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613e9383600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461318f90919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613f2885600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461318f90919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613f748161453f565b613f7e84836146e4565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b60008060008060008061400087613217565b95509550955095509550955061405e86600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461327390919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506140f385600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461318f90919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061413f8161453f565b61414984836146e4565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b6000806000806000806141cb87613217565b95509550955095509550955061422987600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461327390919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506142be86600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461327390919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061435383600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461318f90919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506143e885600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461318f90919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506144348161453f565b61443e84836146e4565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b601054600f81905550601254601181905550601454601381905550601654601581905550601854601781905550565b600061450760646144f9600f54856132bd90919063ffffffff16565b61314590919063ffffffff16565b9050919050565b6000614538606461452a601154856132bd90919063ffffffff16565b61314590919063ffffffff16565b9050919050565b600061454961311a565b9050600061456082846132bd90919063ffffffff16565b90506145b481600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461318f90919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156146df5761469b83600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461318f90919063ffffffff16565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b6146f982600a5461327390919063ffffffff16565b600a8190555061471481600b5461318f90919063ffffffff16565b600b81905550505056fe45524332303a207472616e7366657220746f20746865207a65726f2061646472657373416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573735472616e7366657220616d6f756e74206578636565647320746865206d61785478416d6f756e742e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63655472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573734578636c75646564206164647265737365732063616e6e6f742063616c6c20746869732066756e6374696f6e596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6f636b45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220f168b584b4131de268373be2727748ce72b397588ce1b39c9fef035ef164517364736f6c634300060c0033

Deployed Bytecode Sourcemap

6582:15588:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13500:310;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;8571:83;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9483:161;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;10604:87;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8848:95;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;7521:32;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9652:313;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;11529:253;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8757:83;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;12134:479;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;9973:218;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;7337:26;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10699:377;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;7622:30;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13263:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;7841:29;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;11084:437;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;7913:40;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;11790:336;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17597:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;7420:32;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8951:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5556:148;;;;;;;;;;;;;:::i;:::-;;7962:60;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10476:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;5342:79;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;8662:87;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7803:31;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;10199:269;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;6283:292;;;;;;;;;;;;;:::i;:::-;;9157:167;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;5964:89;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;7717:27;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;7877;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;13818:164;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6061:214;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;9332:143;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13382:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5712:244;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13500:310;5479:12;:10;:12::i;:::-;5469:22;;:6;;;;;;;;;;:22;;;5461:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13654:6:::1;13644:7;:16;;;;13687:12;13671:13;:28;;;;13726:12;13710:13;:28;;;;13763:10;13749:11;:24;;;;13795:7;13784:8;:18;;;;13500:310:::0;;;;;:::o;8571:83::-;8608:13;8641:5;8634:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8571:83;:::o;9483:161::-;9558:4;9575:39;9584:12;:10;:12::i;:::-;9598:7;9607:6;9575:8;:39::i;:::-;9632:4;9625:11;;9483:161;;;;:::o;10604:87::-;10646:7;10673:10;;10666:17;;10604:87;:::o;8848:95::-;8901:7;8928;;8921:14;;8848:95;:::o;7521:32::-;;;;:::o;9652:313::-;9750:4;9767:36;9777:6;9785:9;9796:6;9767:9;:36::i;:::-;9814:121;9823:6;9831:12;:10;:12::i;:::-;9845:89;9883:6;9845:89;;;;;;;;;;;;;;;;;:11;:19;9857:6;9845:19;;;;;;;;;;;;;;;:33;9865:12;:10;:12::i;:::-;9845:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;9814:8;:121::i;:::-;9953:4;9946:11;;9652:313;;;;;:::o;11529:253::-;11596:7;11635;;11624;:18;;11616:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11700:19;11722:10;:8;:10::i;:::-;11700:32;;11750:24;11762:11;11750:7;:11;;:24;;;;:::i;:::-;11743:31;;;11529:253;;;:::o;8757:83::-;8798:5;8823:9;;;;;;;;;;;8816:16;;8757:83;:::o;12134:479::-;5479:12;:10;:12::i;:::-;5469:22;;:6;;;;;;;;;;:22;;;5461:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12216:11:::1;:20;12228:7;12216:20;;;;;;;;;;;;;;;;;;;;;;;;;12208:60;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;12284:9;12279:327;12303:9;:16;;;;12299:1;:20;12279:327;;;12361:7;12345:23;;:9;12355:1;12345:12;;;;;;;;;;;;;;;;;;;;;;;;;:23;;;12341:254;;;12404:9;12433:1;12414:9;:16;;;;:20;12404:31;;;;;;;;;;;;;;;;;;;;;;;;;12389:9;12399:1;12389:12;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;12473:1;12454:7;:16;12462:7;12454:16;;;;;;;;;;;;;;;:20;;;;12516:5;12493:11;:20;12505:7;12493:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;12540:9;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12574:5;;12341:254;12321:3;;;;;;;12279:327;;;;12134:479:::0;:::o;9973:218::-;10061:4;10078:83;10087:12;:10;:12::i;:::-;10101:7;10110:50;10149:10;10110:11;:25;10122:12;:10;:12::i;:::-;10110:25;;;;;;;;;;;;;;;:34;10136:7;10110:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;10078:8;:83::i;:::-;10179:4;10172:11;;9973:218;;;;:::o;7337:26::-;;;;:::o;10699:377::-;10751:14;10768:12;:10;:12::i;:::-;10751:29;;10800:11;:19;10812:6;10800:19;;;;;;;;;;;;;;;;;;;;;;;;;10799:20;10791:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10880:15;10904:19;10915:7;10904:10;:19::i;:::-;10879:44;;;;;;;10952:28;10972:7;10952;:15;10960:6;10952:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;10934:7;:15;10942:6;10934:15;;;;;;;;;;;;;;;:46;;;;11001:20;11013:7;11001;;:11;;:20;;;;:::i;:::-;10991:7;:30;;;;11045:23;11060:7;11045:10;;:14;;:23;;;;:::i;:::-;11032:10;:36;;;;10699:377;;;:::o;7622:30::-;;;;:::o;13263:111::-;5479:12;:10;:12::i;:::-;5469:22;;:6;;;;;;;;;;:22;;;5461:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13362:4:::1;13332:18;:27;13351:7;13332:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;13263:111:::0;:::o;7841:29::-;;;;;;;;;;;;;:::o;11084:437::-;11175:7;11214;;11203;:18;;11195:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11273:17;11268:246;;11308:15;11332:19;11343:7;11332:10;:19::i;:::-;11307:44;;;;;;;11373:7;11366:14;;;;;11268:246;11415:23;11446:19;11457:7;11446:10;:19::i;:::-;11413:52;;;;;;;11487:15;11480:22;;;11084:437;;;;;:::o;7913:40::-;;;;;;;;;;;;;:::o;11790:336::-;5479:12;:10;:12::i;:::-;5469:22;;:6;;;;;;;;;;:22;;;5461:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11875:11:::1;:20;11887:7;11875:20;;;;;;;;;;;;;;;;;;;;;;;;;11874:21;11866:61;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;11961:1;11942:7;:16;11950:7;11942:16;;;;;;;;;;;;;;;;:20;11938:109;;;11998:37;12018:7;:16;12026:7;12018:16;;;;;;;;;;;;;;;;11998:19;:37::i;:::-;11979:7;:16;11987:7;11979:16;;;;;;;;;;;;;;;:56;;;;11938:109;12080:4;12057:11;:20;12069:7;12057:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;12095:9;12110:7;12095:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11790:336:::0;:::o;17597:124::-;17662:4;17686:18;:27;17705:7;17686:27;;;;;;;;;;;;;;;;;;;;;;;;;17679:34;;17597:124;;;:::o;7420:32::-;;;;:::o;8951:198::-;9017:7;9041:11;:20;9053:7;9041:20;;;;;;;;;;;;;;;;;;;;;;;;;9037:49;;;9070:7;:16;9078:7;9070:16;;;;;;;;;;;;;;;;9063:23;;;;9037:49;9104:37;9124:7;:16;9132:7;9124:16;;;;;;;;;;;;;;;;9104:19;:37::i;:::-;9097:44;;8951:198;;;;:::o;5556:148::-;5479:12;:10;:12::i;:::-;5469:22;;:6;;;;;;;;;;:22;;;5461:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5663:1:::1;5626:40;;5647:6;::::0;::::1;;;;;;;;5626:40;;;;;;;;;;;;5694:1;5677:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;5556:148::o:0;7962:60::-;;;;:::o;10476:120::-;10544:4;10568:11;:20;10580:7;10568:20;;;;;;;;;;;;;;;;;;;;;;;;;10561:27;;10476:120;;;:::o;5342:79::-;5380:7;5407:6;;;;;;;;;;;5400:13;;5342:79;:::o;8662:87::-;8701:13;8734:7;8727:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8662:87;:::o;7803:31::-;;;;;;;;;;;;;:::o;10199:269::-;10292:4;10309:129;10318:12;:10;:12::i;:::-;10332:7;10341:96;10380:15;10341:96;;;;;;;;;;;;;;;;;:11;:25;10353:12;:10;:12::i;:::-;10341:25;;;;;;;;;;;;;;;:34;10367:7;10341:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;10309:8;:129::i;:::-;10456:4;10449:11;;10199:269;;;;:::o;6283:292::-;6353:10;6335:28;;:14;;;;;;;;;;;:28;;;6327:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6428:9;;6422:3;:15;6414:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6518:14;;;;;;;;;;;6489:44;;6510:6;;;;;;;;;;6489:44;;;;;;;;;;;;6553:14;;;;;;;;;;;6544:6;;:23;;;;;;;;;;;;;;;;;;6283:292::o;9157:167::-;9235:4;9252:42;9262:12;:10;:12::i;:::-;9276:9;9287:6;9252:9;:42::i;:::-;9312:4;9305:11;;9157:167;;;;:::o;5964:89::-;6009:7;6036:9;;6029:16;;5964:89;:::o;7717:27::-;;;;:::o;7877:::-;;;;;;;;;;;;;:::o;13818:164::-;5479:12;:10;:12::i;:::-;5469:22;;:6;;;;;;;;;;:22;;;5461:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13912:62:::1;13956:7;13912:25;13924:12;13912:7;;:11;;:25;;;;:::i;:::-;:29;;:62;;;;:::i;:::-;13897:12;:77;;;;13818:164:::0;:::o;6061:214::-;5479:12;:10;:12::i;:::-;5469:22;;:6;;;;;;;;;;:22;;;5461:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6142:6:::1;::::0;::::1;;;;;;;;6125:14;;:23;;;;;;;;;;;;;;;;;;6176:1;6159:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;6207:4;6201:3;:10;6189:9;:22;;;;6264:1;6227:40;;6248:6;::::0;::::1;;;;;;;;6227:40;;;;;;;;;;;;6061:214:::0;:::o;9332:143::-;9413:7;9440:11;:18;9452:5;9440:18;;;;;;;;;;;;;;;:27;9459:7;9440:27;;;;;;;;;;;;;;;;9433:34;;9332:143;;;;:::o;13382:110::-;5479:12;:10;:12::i;:::-;5469:22;;:6;;;;;;;;;;:22;;;5461:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13479:5:::1;13449:18;:27;13468:7;13449:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;13382:110:::0;:::o;5712:244::-;5479:12;:10;:12::i;:::-;5469:22;;:6;;;;;;;;;;:22;;;5461:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5821:1:::1;5801:22;;:8;:22;;;;5793:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5911:8;5882:38;;5903:6;::::0;::::1;;;;;;;;5882:38;;;;;;;;;;;;5940:8;5931:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;5712:244:::0;:::o;2261:106::-;2314:15;2349:10;2342:17;;2261:106;:::o;17729:337::-;17839:1;17822:19;;:5;:19;;;;17814:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17920:1;17901:21;;:7;:21;;;;17893:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18004:6;17974:11;:18;17986:5;17974:18;;;;;;;;;;;;;;;:27;17993:7;17974:27;;;;;;;;;;;;;;;:36;;;;18042:7;18026:32;;18035:5;18026:32;;;18051:6;18026:32;;;;;;;;;;;;;;;;;;17729:337;;;:::o;18074:1598::-;18178:1;18162:18;;:4;:18;;;;18154:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18255:1;18241:16;;:2;:16;;;;18233:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18325:1;18316:6;:10;18308:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18395:7;:5;:7::i;:::-;18387:15;;:4;:15;;;;:32;;;;;18412:7;:5;:7::i;:::-;18406:13;;:2;:13;;;;18387:32;18383:126;;;18452:12;;18442:6;:22;;18434:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18383:126;18522:28;18553:24;18571:4;18553:9;:24::i;:::-;18522:55;;18588:20;18636:3;18620:13;;18611:6;:22;:28;;;;;;18588:51;;18650:15;18688:3;18677:8;;18668:6;:17;:23;;;;;;18650:41;;18702:15;18742:3;18729:11;;18720:6;:20;:25;;;;;;18702:43;;18786:12;;18762:20;:36;18758:113;;18847:12;;18824:35;;18758:113;18883:24;18934:29;;18910:20;:53;;18883:80;;18978:19;18974:104;;;19037:29;;19014:52;;18974:104;19090:12;19105:4;19090:19;;19126:18;:24;19145:4;19126:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;19154:18;:22;19173:2;19154:22;;;;;;;;;;;;;;;;;;;;;;;;;19126:50;19122:98;;;19203:5;19193:15;;19122:98;19249:1;19234:12;:16;19230:110;;;19267:61;19282:4;19288:16;;;;;;;;;;;19306:12;19320:7;19267:14;:61::i;:::-;19230:110;19367:1;19354:10;:14;19350:104;;;19385:57;19400:4;19406:14;;;;;;;;;;;19422:10;19434:7;19385:14;:57::i;:::-;19350:104;19478:1;19468:7;:11;19464:96;;;19496:52;19511:4;19517:12;;;;;;;;;;;19531:7;19540;19496:14;:52::i;:::-;19464:96;19572:90;19587:4;19593:2;19597:55;19641:10;19597:39;19628:7;19597:25;19609:12;19597:6;:11;;:25;;;;:::i;:::-;:30;;:39;;;;:::i;:::-;:43;;:55;;;;:::i;:::-;19654:7;19572:14;:90::i;:::-;18074:1598;;;;;;;;;:::o;1118:192::-;1204:7;1237:1;1232;:6;;1240:12;1224:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1264:9;1280:1;1276;:5;1264:17;;1301:1;1294:8;;;1118:192;;;;;:::o;15384:164::-;15426:7;15447:15;15464;15483:19;:17;:19::i;:::-;15446:56;;;;15520:20;15532:7;15520;:11;;:20;;;;:::i;:::-;15513:27;;;;15384:164;:::o;1578:132::-;1636:7;1663:39;1667:1;1670;1663:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1656:46;;1578:132;;;;:::o;785:181::-;843:7;863:9;879:1;875;:5;863:17;;904:1;899;:6;;891:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;957:1;950:8;;;785:181;;;;:::o;14182:419::-;14241:7;14250;14259;14268;14277;14286;14307:23;14332:12;14346:18;14368:20;14380:7;14368:11;:20::i;:::-;14306:82;;;;;;14400:15;14417:23;14442:12;14458:50;14470:7;14479:4;14485:10;14497;:8;:10::i;:::-;14458:11;:50::i;:::-;14399:109;;;;;;14527:7;14536:15;14553:4;14559:15;14576:4;14582:10;14519:74;;;;;;;;;;;;;;;;;;14182:419;;;;;;;:::o;974:136::-;1032:7;1059:43;1063:1;1066;1059:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1052:50;;974:136;;;;:::o;1318:252::-;1376:7;1407:1;1402;:6;1398:47;;;1432:1;1425:8;;;;1398:47;1457:9;1473:1;1469;:5;1457:17;;1502:1;1497;1493;:5;;;;;;:10;1485:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1561:1;1554:8;;;1318:252;;;;;:::o;19680:821::-;19793:7;19788:41;;19815:14;:12;:14::i;:::-;19788:41;19846:11;:19;19858:6;19846:19;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;19870:11;:22;19882:9;19870:22;;;;;;;;;;;;;;;;;;;;;;;;;19869:23;19846:46;19842:597;;;19909:48;19931:6;19939:9;19950:6;19909:21;:48::i;:::-;19842:597;;;19980:11;:19;19992:6;19980:19;;;;;;;;;;;;;;;;;;;;;;;;;19979:20;:46;;;;;20003:11;:22;20015:9;20003:22;;;;;;;;;;;;;;;;;;;;;;;;;19979:46;19975:464;;;20042:46;20062:6;20070:9;20081:6;20042:19;:46::i;:::-;19975:464;;;20111:11;:19;20123:6;20111:19;;;;;;;;;;;;;;;;;;;;;;;;;20110:20;:47;;;;;20135:11;:22;20147:9;20135:22;;;;;;;;;;;;;;;;;;;;;;;;;20134:23;20110:47;20106:333;;;20174:44;20192:6;20200:9;20211:6;20174:17;:44::i;:::-;20106:333;;;20240:11;:19;20252:6;20240:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;20263:11;:22;20275:9;20263:22;;;;;;;;;;;;;;;;;;;;;;;;;20240:45;20236:203;;;20302:48;20324:6;20332:9;20343:6;20302:21;:48::i;:::-;20236:203;;;20383:44;20401:6;20409:9;20420:6;20383:17;:44::i;:::-;20236:203;20106:333;19975:464;19842:597;20456:7;20451:42;;20478:15;:13;:15::i;:::-;20451:42;19680:821;;;;:::o;15556:556::-;15607:7;15616;15636:15;15654:7;;15636:25;;15672:15;15690:7;;15672:25;;15713:9;15708:289;15732:9;:16;;;;15728:1;:20;15708:289;;;15798:7;15774;:21;15782:9;15792:1;15782:12;;;;;;;;;;;;;;;;;;;;;;;;;15774:21;;;;;;;;;;;;;;;;:31;:66;;;;15833:7;15809;:21;15817:9;15827:1;15817:12;;;;;;;;;;;;;;;;;;;;;;;;;15809:21;;;;;;;;;;;;;;;;:31;15774:66;15770:97;;;15850:7;;15859;;15842:25;;;;;;;;;15770:97;15892:34;15904:7;:21;15912:9;15922:1;15912:12;;;;;;;;;;;;;;;;;;;;;;;;;15904:21;;;;;;;;;;;;;;;;15892:7;:11;;:34;;;;:::i;:::-;15882:44;;15951:34;15963:7;:21;15971:9;15981:1;15971:12;;;;;;;;;;;;;;;;;;;;;;;;;15963:21;;;;;;;;;;;;;;;;15951:7;:11;;:34;;;;:::i;:::-;15941:44;;15750:3;;;;;;;15708:289;;;;16021:20;16033:7;;16021;;:11;;:20;;;;:::i;:::-;16011:7;:30;16007:61;;;16051:7;;16060;;16043:25;;;;;;;;16007:61;16087:7;16096;16079:25;;;;;;15556:556;;;:::o;1718:191::-;1804:7;1836:1;1832;:5;1839:12;1824:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1863:9;1879:1;1875;:5;;;;;;1863:17;;1900:1;1893:8;;;1718:191;;;;;:::o;14609:330::-;14669:7;14678;14687;14707:12;14722:24;14738:7;14722:15;:24::i;:::-;14707:39;;14757:18;14778:30;14800:7;14778:21;:30::i;:::-;14757:51;;14819:23;14845:33;14867:10;14845:17;14857:4;14845:7;:11;;:17;;;;:::i;:::-;:21;;:33;;;;:::i;:::-;14819:59;;14897:15;14914:4;14920:10;14889:42;;;;;;;;;14609:330;;;;;:::o;14947:429::-;15062:7;15071;15080;15100:15;15118:24;15130:11;15118:7;:11;;:24;;;;:::i;:::-;15100:42;;15153:12;15168:21;15177:11;15168:4;:8;;:21;;;;:::i;:::-;15153:36;;15200:18;15221:27;15236:11;15221:10;:14;;:27;;;;:::i;:::-;15200:48;;15259:23;15285:33;15307:10;15285:17;15297:4;15285:7;:11;;:17;;;;:::i;:::-;:21;;:33;;;;:::i;:::-;15259:59;;15337:7;15346:15;15363:4;15329:39;;;;;;;;;;14947:429;;;;;;;;:::o;16823:501::-;16881:1;16870:7;;:12;:34;;;;;16903:1;16886:13;;:18;16870:34;:56;;;;;16925:1;16908:13;;:18;16870:56;:73;;;;;16942:1;16930:8;;:13;16870:73;:93;;;;;16962:1;16947:11;;:16;16870:93;16866:106;;;16965:7;;16866:106;17002:7;;16984:15;:25;;;;17044:13;;17020:21;:37;;;;17092:13;;17068:21;:37;;;;17138:11;;17116:19;:33;;;;17179:8;;17160:16;:27;;;;17210:1;17200:7;:11;;;;17238:1;17222:13;:17;;;;17266:1;17250:13;:17;;;;17292:1;17278:11;:15;;;;17315:1;17304:8;:12;;;;16823:501;:::o;21602:563::-;21705:15;21722:23;21747:12;21761:23;21786:12;21800:18;21822:19;21833:7;21822:10;:19::i;:::-;21704:137;;;;;;;;;;;;21870:28;21890:7;21870;:15;21878:6;21870:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;21852:7;:15;21860:6;21852:15;;;;;;;;;;;;;;;:46;;;;21927:28;21947:7;21927;:15;21935:6;21927:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;21909:7;:15;21917:6;21909:15;;;;;;;;;;;;;;;:46;;;;21987:39;22010:15;21987:7;:18;21995:9;21987:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;21966:7;:18;21974:9;21966:18;;;;;;;;;;;;;;;:60;;;;22037:26;22052:10;22037:14;:26::i;:::-;22074:23;22086:4;22092;22074:11;:23::i;:::-;22130:9;22113:44;;22122:6;22113:44;;;22141:15;22113:44;;;;;;;;;;;;;;;;;;21602:563;;;;;;;;;:::o;21019:575::-;21120:15;21137:23;21162:12;21176:23;21201:12;21215:18;21237:19;21248:7;21237:10;:19::i;:::-;21119:137;;;;;;;;;;;;21285:28;21305:7;21285;:15;21293:6;21285:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;21267:7;:15;21275:6;21267:15;;;;;;;;;;;;;;;:46;;;;21345:39;21368:15;21345:7;:18;21353:9;21345:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;21324:7;:18;21332:9;21324:18;;;;;;;;;;;;;;;:60;;;;21416:39;21439:15;21416:7;:18;21424:9;21416:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;21395:7;:18;21403:9;21395:18;;;;;;;;;;;;;;;:60;;;;21466:26;21481:10;21466:14;:26::i;:::-;21503:23;21515:4;21521;21503:11;:23::i;:::-;21559:9;21542:44;;21551:6;21542:44;;;21570:15;21542:44;;;;;;;;;;;;;;;;;;21019:575;;;;;;;;;:::o;20509:502::-;20608:15;20625:23;20650:12;20664:23;20689:12;20703:18;20725:19;20736:7;20725:10;:19::i;:::-;20607:137;;;;;;;;;;;;20773:28;20793:7;20773;:15;20781:6;20773:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;20755:7;:15;20763:6;20755:15;;;;;;;;;;;;;;;:46;;;;20833:39;20856:15;20833:7;:18;20841:9;20833:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;20812:7;:18;20820:9;20812:18;;;;;;;;;;;;;;;:60;;;;20883:26;20898:10;20883:14;:26::i;:::-;20920:23;20932:4;20938;20920:11;:23::i;:::-;20976:9;20959:44;;20968:6;20959:44;;;20987:15;20959:44;;;;;;;;;;;;;;;;;;20509:502;;;;;;;;;:::o;12621:634::-;12724:15;12741:23;12766:12;12780:23;12805:12;12819:18;12841:19;12852:7;12841:10;:19::i;:::-;12723:137;;;;;;;;;;;;12889:28;12909:7;12889;:15;12897:6;12889:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;12871:7;:15;12879:6;12871:15;;;;;;;;;;;;;;;:46;;;;12946:28;12966:7;12946;:15;12954:6;12946:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;12928:7;:15;12936:6;12928:15;;;;;;;;;;;;;;;:46;;;;13006:39;13029:15;13006:7;:18;13014:9;13006:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;12985:7;:18;12993:9;12985:18;;;;;;;;;;;;;;;:60;;;;13077:39;13100:15;13077:7;:18;13085:9;13077:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;13056:7;:18;13064:9;13056:18;;;;;;;;;;;;;;;:60;;;;13127:26;13142:10;13127:14;:26::i;:::-;13164:23;13176:4;13182;13164:11;:23::i;:::-;13220:9;13203:44;;13212:6;13203:44;;;13231:15;13203:44;;;;;;;;;;;;;;;;;;12621:634;;;;;;;;;:::o;17332:257::-;17386:15;;17376:7;:25;;;;17428:21;;17412:13;:37;;;;17476:21;;17460:13;:37;;;;17522:19;;17508:11;:33;;;;17563:16;;17552:8;:27;;;;17332:257::o;16483:156::-;16547:7;16574:57;16613:7;16574:20;16586:7;;16574;:11;;:20;;;;:::i;:::-;:24;;:57;;;;:::i;:::-;16567:64;;16483:156;;;:::o;16647:168::-;16717:7;16744:63;16789:7;16744:26;16756:13;;16744:7;:11;;:26;;;;:::i;:::-;:30;;:63;;;;:::i;:::-;16737:70;;16647:168;;;:::o;16120:355::-;16183:19;16205:10;:8;:10::i;:::-;16183:32;;16226:18;16247:27;16262:11;16247:10;:14;;:27;;;;:::i;:::-;16226:48;;16310:38;16337:10;16310:7;:22;16326:4;16310:22;;;;;;;;;;;;;;;;:26;;:38;;;;:::i;:::-;16285:7;:22;16301:4;16285:22;;;;;;;;;;;;;;;:63;;;;16363:11;:26;16383:4;16363:26;;;;;;;;;;;;;;;;;;;;;;;;;16359:108;;;16429:38;16456:10;16429:7;:22;16445:4;16429:22;;;;;;;;;;;;;;;;:26;;:38;;;;:::i;:::-;16404:7;:22;16420:4;16404:22;;;;;;;;;;;;;;;:63;;;;16359:108;16120:355;;;:::o;14027:147::-;14105:17;14117:4;14105:7;;:11;;:17;;;;:::i;:::-;14095:7;:27;;;;14146:20;14161:4;14146:10;;:14;;:20;;;;:::i;:::-;14133:10;:33;;;;14027:147;;:::o

Swarm Source

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