ETH Price: $3,432.75 (+1.00%)

Token

Natsukashii (NATSU)
 

Overview

Max Total Supply

1,000,000,000 NATSU

Holders

71

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
williamwallet.eth
Balance
1,344,102.988700201 NATSU

Value
$0.00
0xe12d731750e222ec53b001e00d978901b134cfc9
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:
Natsu

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-09-21
*/

// SPDX-License-Identifier: Unlicensed

pragma solidity ^0.8.4;

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

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

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

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

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

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

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

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

}

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _transferOwnership(_msgSender());
    }

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

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

    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

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

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
} 

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

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}

contract Natsu is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _rOwned;
    mapping (address => uint256) private _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private bots;

    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 1000 * 1e6 * 1e9; 
    uint256 public _maxWalletSize;
    uint256 public _maxTxn;
    uint256 private _firstBlock;

    bool public botProtection = false;
    bool public cooldownEnabled = false;

    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _sellTax;
    uint256 private _buyTax;
    uint256 public SWAPamount = 7 * 1e5 * 1e9; // .07%
    
    uint256 private _feeAddr1;
    uint256 private _feeAddr2;
    address payable private dev;
    address payable private mktg;


    event maxWalletSizeamountUpdated(uint _maxWalletSize);
    event maxTxnUpdate(uint _maxTxn);
    event SWAPamountUpdated(uint SWAPamount);

    mapping(address => uint256) private cooldown;
    mapping (address => uint256) private _lastTX;


    string private constant _name = "Natsukashii";
    string private constant _symbol = "NATSU";
    uint8 private constant _decimals = 9;
    
    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;
   
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }
    constructor () {
        dev = payable(0x9Abf7E858F586EF7cbc489dDCE1be29b4E6193ED);
        mktg = payable(0x9Abf7E858F586EF7cbc489dDCE1be29b4E6193ED);

        _rOwned[address(this)] = _rTotal;
        _sellTax =20;
        _buyTax = 5;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[dev] = true;
        _isExcludedFromFee[address(0)] = true;


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

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

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

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

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

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

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

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

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

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

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

    function _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(!bots[from] && !bots[to]);
        require(amount > 0, "Transfer amount must be greater than zero");
        
        if (! _isExcludedFromFee[to] && ! _isExcludedFromFee[from]) {
            _feeAddr1 = 0;
            _feeAddr2 = _buyTax;
        }

        if (to != uniswapV2Pair && ! _isExcludedFromFee[to] && ! _isExcludedFromFee[from]) {
            require(amount + balanceOf(to) <= _maxWalletSize, "Over max wallet size.");
            require(amount <= _maxTxn, "Buy transfer amount exceeds the maxTransactionAmount.");

        }

        if (from == uniswapV2Pair && to != address(uniswapV2Router)) {
            if (block.number <= (_firstBlock + 1)) {
                bots[to] = true;
            } 
        }

        if (from != owner() && to != owner()) {
            if (cooldownEnabled) {
                if (from != address(this) && to != address(this) && from != address(uniswapV2Router) && to != address(uniswapV2Router)) {
                    require(msg.sender == address(uniswapV2Router) || msg.sender == uniswapV2Pair, "ERR: Uniswap only");
                }
            
                if( to != owner() && to != address(this) && to != address(uniswapV2Router) && to != uniswapV2Pair) {
                    require(_lastTX[tx.origin] <= (block.timestamp + 5 minutes), "Cooldown in effect");
                    _lastTX[tx.origin] = block.timestamp;
                }
            }
                    
        }

        if (to == uniswapV2Pair && from != address(uniswapV2Router) && ! _isExcludedFromFee[from]) {
            require(!bots[from] && !bots[to]);
            _feeAddr1 = 0;
            _feeAddr2 = _sellTax;
        }

        if (_isExcludedFromFee[from] || _isExcludedFromFee[to]) {
            _feeAddr1 = 0;
            _feeAddr2 = 0;
        }

        uint256 contractTokenBalance = balanceOf(address(this));
        if (!inSwap && from != uniswapV2Pair && swapEnabled) {
            if (contractTokenBalance > SWAPamount) {
                swapTokensForEth(contractTokenBalance);
            }
            
            uint256 contractETHBalance = address(this).balance;
            if(contractETHBalance > 0) {
                sendETHToFee(address(this).balance);
            }
        }    
		
        _tokenTransfer(from,to,amount);
    }

    function setCooldownEnabled(bool onoff) external onlyOwner() {
        cooldownEnabled = onoff;
    }

    function toggleBotProtection(bool onoff) external onlyOwner() {
        botProtection = onoff;
    }

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

    function updateFees(uint256 sellTax, uint256 reflections, uint256 buyTax) external onlyOwner {
        _feeAddr1 = reflections;
        _sellTax = sellTax;
        _buyTax = buyTax;
        require(reflections <= 5, "Must keep fees at 5% or less");
        require(sellTax <= 15, "Must keep fees at 18% or less");
        require(buyTax <= 10, "Must keep fees at 10% or less");
    }
    
    function liftMax() external {
        require(_msgSender() == dev);
        _maxWalletSize = _tTotal;
        _maxTxn = _tTotal;
        
    }

    function sendETHToFee(uint256 amount) private {
        dev.transfer((amount).div(5).mul(3));
        mktg.transfer((amount).div(5).mul(2));

    }

    function setMarketingWallet(address payable walletAddress) public onlyOwner {
        mktg = walletAddress;
    }

    function updateSWAPamount(uint256 newNum) external {
        require(_msgSender() == dev);
        SWAPamount = newNum;
    }

    function updateMaxWalletamount(uint256 newNum) external onlyOwner {
        _maxWalletSize = newNum;
    }

    function updateMaxTxn(uint256 newNum) external onlyOwner {
        _maxTxn = newNum;
    }
    
    function _tokenTransfer(address sender, address recipient, uint256 amount) private {
        _transferStandard(sender, recipient, amount);
    }

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

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

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

    receive() external payable {}
    
    function manualswap() external {
        require(_msgSender() == dev);
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }
    
    function manualsend() external {
        require(_msgSender() == dev);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }
    
    function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256) {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getTValues(tAmount, _feeAddr1, _feeAddr2);
        uint256 currentRate =  _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tTeam, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }

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

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

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

    function openTrading() external onlyOwner() {
        require(!tradingOpen,"trading is already open");
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        swapEnabled = true;
        _maxWalletSize = 30 * 1e6 * 1e9; //2%
        _maxTxn = 20 * 1e6 * 1e9;
        _firstBlock = block.number;
        cooldownEnabled = true;
        tradingOpen = true;
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
    }


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

    function setBots(address[] memory bots_) public onlyOwner {
        for (uint i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }
    
    function delBot(address notbot) public onlyOwner {
        bots[notbot] = false;
    }
}

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":false,"internalType":"uint256","name":"SWAPamount","type":"uint256"}],"name":"SWAPamountUpdated","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxn","type":"uint256"}],"name":"maxTxnUpdate","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxWalletSize","type":"uint256"}],"name":"maxWalletSizeamountUpdated","type":"event"},{"inputs":[],"name":"SWAPamount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","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":"botProtection","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cooldownEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"delBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"liftMax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"setBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setCooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"walletAddress","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"toggleBotProtection","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"sellTax","type":"uint256"},{"internalType":"uint256","name":"reflections","type":"uint256"},{"internalType":"uint256","name":"buyTax","type":"uint256"}],"name":"updateFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletamount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateSWAPamount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526009805461ffff1916905562000025670de0b6b3a76400006000196200021c565b6200003390600019620001f8565b600a5566027ca57357c000600e556016805461ffff60a81b191690553480156200005c57600080fd5b506200006833620001a8565b60118054739abf7e858f586ef7cbc489ddce1be29b4e6193ed6001600160a01b03199182168117909255601280549091169091179055600a543060009081526001602081905260408220929092556014600c556005600d55600490620000d66000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055308082526004909452828120805486166001908117909155601154909216815282812080548616831790558080527f17ef568e3e12ab5b9c7254a8d58478811de00f9e6eb34345acd53bf8fd09d3ec8054909516909117909355519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906200019a90670de0b6b3a7640000815260200190565b60405180910390a36200023d565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000828210156200021757634e487b7160e01b81526011600452602481fd5b500390565b6000826200023857634e487b7160e01b81526012600452602481fd5b500690565b61225f806200024d6000396000f3fe6080604052600436106101d15760003560e01c80638da5cb5b116100f7578063bdf4f83111610095578063dd62ed3e11610064578063dd62ed3e1461051b578063e13071d714610561578063ea3105d914610581578063f2fde38b1461059657600080fd5b8063bdf4f831146104bb578063c3a6912e146104db578063c3c8cd80146104f1578063c9567bf91461050657600080fd5b8063a9059cbb116100d1578063a9059cbb14610442578063a985ceef14610462578063b515566a14610481578063bb58a973146104a157600080fd5b80638da5cb5b146103d65780638f9a55c0146103fe57806395d89b411461041457600080fd5b8063313ce5671161016f5780636fc3eaec1161013e5780636fc3eaec1461036c57806370a0823114610381578063715018a6146103a1578063753e3aa9146103b657600080fd5b8063313ce567146102fa5780635932ead1146103165780635cbde150146103365780635d098b381461034c57600080fd5b806322429085116101ab578063224290851461027857806323b872dd1461029a578063273123b7146102ba5780632bc4d48b146102da57600080fd5b806306fdde03146101dd578063095ea7b31461022357806318160ddd1461025357600080fd5b366101d857005b600080fd5b3480156101e957600080fd5b5060408051808201909152600b81526a4e617473756b617368696960a81b60208201525b60405161021a9190612031565b60405180910390f35b34801561022f57600080fd5b5061024361023e366004611e97565b6105b6565b604051901515815260200161021a565b34801561025f57600080fd5b50670de0b6b3a76400005b60405190815260200161021a565b34801561028457600080fd5b50610298610293366004611fd9565b6105cd565b005b3480156102a657600080fd5b506102436102b5366004611e57565b610707565b3480156102c657600080fd5b506102986102d5366004611de7565b610770565b3480156102e657600080fd5b506102986102f5366004611fc1565b6107bb565b34801561030657600080fd5b506040516009815260200161021a565b34801561032257600080fd5b50610298610331366004611f89565b6107ea565b34801561034257600080fd5b5061026a600e5481565b34801561035857600080fd5b50610298610367366004611de7565b61082e565b34801561037857600080fd5b5061029861087a565b34801561038d57600080fd5b5061026a61039c366004611de7565b6108a7565b3480156103ad57600080fd5b506102986108c9565b3480156103c257600080fd5b506102986103d1366004611fc1565b6108ff565b3480156103e257600080fd5b506000546040516001600160a01b03909116815260200161021a565b34801561040a57600080fd5b5061026a60065481565b34801561042057600080fd5b506040805180820190915260058152644e4154535560d81b602082015261020d565b34801561044e57600080fd5b5061024361045d366004611e97565b61092e565b34801561046e57600080fd5b5060095461024390610100900460ff1681565b34801561048d57600080fd5b5061029861049c366004611ec2565b61093b565b3480156104ad57600080fd5b506009546102439060ff1681565b3480156104c757600080fd5b506102986104d6366004611f89565b6109df565b3480156104e757600080fd5b5061026a60075481565b3480156104fd57600080fd5b50610298610a1c565b34801561051257600080fd5b50610298610a52565b34801561052757600080fd5b5061026a610536366004611e1f565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561056d57600080fd5b5061029861057c366004611fc1565b610e2f565b34801561058d57600080fd5b50610298610e54565b3480156105a257600080fd5b506102986105b1366004611de7565b610e87565b60006105c3338484610f1f565b5060015b92915050565b6000546001600160a01b031633146106005760405162461bcd60e51b81526004016105f790612084565b60405180910390fd5b600f829055600c839055600d81905560058211156106605760405162461bcd60e51b815260206004820152601c60248201527f4d757374206b6565702066656573206174203525206f72206c6573730000000060448201526064016105f7565b600f8311156106b15760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420313825206f72206c65737300000060448201526064016105f7565b600a8111156107025760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420313025206f72206c65737300000060448201526064016105f7565b505050565b6000610714848484611043565b610766843361076185604051806060016040528060288152602001612202602891396001600160a01b038a166000908152600360209081526040808320338452909152902054919061162a565b610f1f565b5060019392505050565b6000546001600160a01b0316331461079a5760405162461bcd60e51b81526004016105f790612084565b6001600160a01b03166000908152600560205260409020805460ff19169055565b6000546001600160a01b031633146107e55760405162461bcd60e51b81526004016105f790612084565b600755565b6000546001600160a01b031633146108145760405162461bcd60e51b81526004016105f790612084565b600980549115156101000261ff0019909216919091179055565b6000546001600160a01b031633146108585760405162461bcd60e51b81526004016105f790612084565b601280546001600160a01b0319166001600160a01b0392909216919091179055565b6011546001600160a01b0316336001600160a01b03161461089a57600080fd5b476108a481611664565b50565b6001600160a01b0381166000908152600160205260408120546105c7906116f9565b6000546001600160a01b031633146108f35760405162461bcd60e51b81526004016105f790612084565b6108fd600061177d565b565b6000546001600160a01b031633146109295760405162461bcd60e51b81526004016105f790612084565b600655565b60006105c3338484611043565b6000546001600160a01b031633146109655760405162461bcd60e51b81526004016105f790612084565b60005b81518110156109db5760016005600084848151811061099757634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806109d381612197565b915050610968565b5050565b6000546001600160a01b03163314610a095760405162461bcd60e51b81526004016105f790612084565b6009805460ff1916911515919091179055565b6011546001600160a01b0316336001600160a01b031614610a3c57600080fd5b6000610a47306108a7565b90506108a4816117cd565b6000546001600160a01b03163314610a7c5760405162461bcd60e51b81526004016105f790612084565b601654600160a01b900460ff1615610ad65760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e00000000000000000060448201526064016105f7565b601580546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155610b123082670de0b6b3a7640000610f1f565b806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610b4b57600080fd5b505afa158015610b5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b839190611e03565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610bcb57600080fd5b505afa158015610bdf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c039190611e03565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b158015610c4b57600080fd5b505af1158015610c5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c839190611e03565b601680546001600160a01b0319166001600160a01b039283161790556015541663f305d7194730610cb3816108a7565b600080610cc86000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b158015610d2b57600080fd5b505af1158015610d3f573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610d649190612004565b505060168054666a94d74f43000060065566470de4df820000600755436008556009805461ff0019166101001790556201000160a01b62ff00ff60a01b1982161790915560155460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529116915063095ea7b390604401602060405180830381600087803b158015610df757600080fd5b505af1158015610e0b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109db9190611fa5565b6011546001600160a01b0316336001600160a01b031614610e4f57600080fd5b600e55565b6011546001600160a01b0316336001600160a01b031614610e7457600080fd5b670de0b6b3a76400006006819055600755565b6000546001600160a01b03163314610eb15760405162461bcd60e51b81526004016105f790612084565b6001600160a01b038116610f165760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105f7565b6108a48161177d565b6001600160a01b038316610f815760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105f7565b6001600160a01b038216610fe25760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105f7565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831660009081526005602052604090205460ff1615801561108557506001600160a01b03821660009081526005602052604090205460ff16155b61108e57600080fd5b600081116110f05760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016105f7565b6001600160a01b03821660009081526004602052604090205460ff1615801561113257506001600160a01b03831660009081526004602052604090205460ff16155b15611143576000600f55600d546010555b6016546001600160a01b0383811691161480159061117a57506001600160a01b03821660009081526004602052604090205460ff16155b801561119f57506001600160a01b03831660009081526004602052604090205460ff16155b15611270576006546111b0836108a7565b6111ba9083612129565b11156112005760405162461bcd60e51b815260206004820152601560248201527427bb32b91036b0bc103bb0b63632ba1039b4bd329760591b60448201526064016105f7565b6007548111156112705760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b60648201526084016105f7565b6016546001600160a01b03848116911614801561129b57506015546001600160a01b03838116911614155b156112d8576008546112ae906001612129565b43116112d8576001600160a01b0382166000908152600560205260409020805460ff191660011790555b6000546001600160a01b0384811691161480159061130457506000546001600160a01b03838116911614155b156114a957600954610100900460ff16156114a9576001600160a01b038316301480159061133b57506001600160a01b0382163014155b801561135557506015546001600160a01b03848116911614155b801561136f57506015546001600160a01b03838116911614155b156113d7576015546001600160a01b031633148061139757506016546001600160a01b031633145b6113d75760405162461bcd60e51b81526020600482015260116024820152704552523a20556e6973776170206f6e6c7960781b60448201526064016105f7565b6000546001600160a01b038381169116148015906113fe57506001600160a01b0382163014155b801561141857506015546001600160a01b03838116911614155b801561143257506016546001600160a01b03838116911614155b156114a9576114434261012c612129565b3260009081526014602052604090205411156114965760405162461bcd60e51b815260206004820152601260248201527110dbdbdb191bdddb881a5b881959999958dd60721b60448201526064016105f7565b3260009081526014602052604090204290555b6016546001600160a01b0383811691161480156114d457506015546001600160a01b03848116911614155b80156114f957506001600160a01b03831660009081526004602052604090205460ff16155b15611555576001600160a01b03831660009081526005602052604090205460ff1615801561154057506001600160a01b03821660009081526005602052604090205460ff16155b61154957600080fd5b6000600f55600c546010555b6001600160a01b03831660009081526004602052604090205460ff168061159457506001600160a01b03821660009081526004602052604090205460ff165b156115a4576000600f8190556010555b60006115af306108a7565b601654909150600160a81b900460ff161580156115da57506016546001600160a01b03858116911614155b80156115ef5750601654600160b01b900460ff165b1561161957600e5481111561160757611607816117cd565b4780156116175761161747611664565b505b611624848484611972565b50505050565b6000818484111561164e5760405162461bcd60e51b81526004016105f79190612031565b50600061165b8486612180565b95945050505050565b6011546001600160a01b03166108fc611689600361168385600561197d565b906119bf565b6040518115909202916000818181858888f193505050501580156116b1573d6000803e3d6000fd5b506012546001600160a01b03166108fc6116d1600261168385600561197d565b6040518115909202916000818181858888f193505050501580156109db573d6000803e3d6000fd5b6000600a548211156117605760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016105f7565b600061176a611a3e565b9050611776838261197d565b9392505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6016805460ff60a81b1916600160a81b179055604080516002808252606082018352600092602083019080368337019050509050308160008151811061182357634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152601554604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561187757600080fd5b505afa15801561188b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118af9190611e03565b816001815181106118d057634e487b7160e01b600052603260045260246000fd5b6001600160a01b0392831660209182029290920101526015546118f69130911684610f1f565b60155460405163791ac94760e01b81526001600160a01b039091169063791ac9479061192f9085906000908690309042906004016120b9565b600060405180830381600087803b15801561194957600080fd5b505af115801561195d573d6000803e3d6000fd5b50506016805460ff60a81b1916905550505050565b610702838383611a61565b600061177683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611b58565b6000826119ce575060006105c7565b60006119da8385612161565b9050826119e78583612141565b146117765760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016105f7565b6000806000611a4b611b86565b9092509050611a5a828261197d565b9250505090565b600080600080600080611a7387611bc6565b6001600160a01b038f16600090815260016020526040902054959b50939950919750955093509150611aa59087611c23565b6001600160a01b03808b1660009081526001602052604080822093909355908a1681522054611ad49086611c65565b6001600160a01b038916600090815260016020526040902055611af681611cc4565b611b008483611d0e565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611b4591815260200190565b60405180910390a3505050505050505050565b60008183611b795760405162461bcd60e51b81526004016105f79190612031565b50600061165b8486612141565b600a546000908190670de0b6b3a7640000611ba1828261197d565b821015611bbd575050600a5492670de0b6b3a764000092509050565b90939092509050565b6000806000806000806000806000611be38a600f54601054611d32565b9250925092506000611bf3611a3e565b90506000806000611c068e878787611d87565b919e509c509a509598509396509194505050505091939550919395565b600061177683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061162a565b600080611c728385612129565b9050838110156117765760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016105f7565b6000611cce611a3e565b90506000611cdc83836119bf565b30600090815260016020526040902054909150611cf99082611c65565b30600090815260016020526040902055505050565b600a54611d1b9083611c23565b600a55600b54611d2b9082611c65565b600b555050565b6000808080611d4c6064611d4689896119bf565b9061197d565b90506000611d5f6064611d468a896119bf565b90506000611d7782611d718b86611c23565b90611c23565b9992985090965090945050505050565b6000808080611d9688866119bf565b90506000611da488876119bf565b90506000611db288886119bf565b90506000611dc482611d718686611c23565b939b939a50919850919650505050505050565b8035611de2816121de565b919050565b600060208284031215611df8578081fd5b8135611776816121de565b600060208284031215611e14578081fd5b8151611776816121de565b60008060408385031215611e31578081fd5b8235611e3c816121de565b91506020830135611e4c816121de565b809150509250929050565b600080600060608486031215611e6b578081fd5b8335611e76816121de565b92506020840135611e86816121de565b929592945050506040919091013590565b60008060408385031215611ea9578182fd5b8235611eb4816121de565b946020939093013593505050565b60006020808385031215611ed4578182fd5b823567ffffffffffffffff80821115611eeb578384fd5b818501915085601f830112611efe578384fd5b813581811115611f1057611f106121c8565b8060051b604051601f19603f83011681018181108582111715611f3557611f356121c8565b604052828152858101935084860182860187018a1015611f53578788fd5b8795505b83861015611f7c57611f6881611dd7565b855260019590950194938601938601611f57565b5098975050505050505050565b600060208284031215611f9a578081fd5b8135611776816121f3565b600060208284031215611fb6578081fd5b8151611776816121f3565b600060208284031215611fd2578081fd5b5035919050565b600080600060608486031215611fed578283fd5b505081359360208301359350604090920135919050565b600080600060608486031215612018578283fd5b8351925060208401519150604084015190509250925092565b6000602080835283518082850152825b8181101561205d57858101830151858201604001528201612041565b8181111561206e5783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b818110156121085784516001600160a01b0316835293830193918301916001016120e3565b50506001600160a01b03969096166060850152505050608001529392505050565b6000821982111561213c5761213c6121b2565b500190565b60008261215c57634e487b7160e01b81526012600452602481fd5b500490565b600081600019048311821515161561217b5761217b6121b2565b500290565b600082821015612192576121926121b2565b500390565b60006000198214156121ab576121ab6121b2565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146108a457600080fd5b80151581146108a457600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220ce45e13a6b2056ad8bf9ceab50b73c16b907db62f890ac30c5a1387746495dfd64736f6c63430008040033

Deployed Bytecode

0x6080604052600436106101d15760003560e01c80638da5cb5b116100f7578063bdf4f83111610095578063dd62ed3e11610064578063dd62ed3e1461051b578063e13071d714610561578063ea3105d914610581578063f2fde38b1461059657600080fd5b8063bdf4f831146104bb578063c3a6912e146104db578063c3c8cd80146104f1578063c9567bf91461050657600080fd5b8063a9059cbb116100d1578063a9059cbb14610442578063a985ceef14610462578063b515566a14610481578063bb58a973146104a157600080fd5b80638da5cb5b146103d65780638f9a55c0146103fe57806395d89b411461041457600080fd5b8063313ce5671161016f5780636fc3eaec1161013e5780636fc3eaec1461036c57806370a0823114610381578063715018a6146103a1578063753e3aa9146103b657600080fd5b8063313ce567146102fa5780635932ead1146103165780635cbde150146103365780635d098b381461034c57600080fd5b806322429085116101ab578063224290851461027857806323b872dd1461029a578063273123b7146102ba5780632bc4d48b146102da57600080fd5b806306fdde03146101dd578063095ea7b31461022357806318160ddd1461025357600080fd5b366101d857005b600080fd5b3480156101e957600080fd5b5060408051808201909152600b81526a4e617473756b617368696960a81b60208201525b60405161021a9190612031565b60405180910390f35b34801561022f57600080fd5b5061024361023e366004611e97565b6105b6565b604051901515815260200161021a565b34801561025f57600080fd5b50670de0b6b3a76400005b60405190815260200161021a565b34801561028457600080fd5b50610298610293366004611fd9565b6105cd565b005b3480156102a657600080fd5b506102436102b5366004611e57565b610707565b3480156102c657600080fd5b506102986102d5366004611de7565b610770565b3480156102e657600080fd5b506102986102f5366004611fc1565b6107bb565b34801561030657600080fd5b506040516009815260200161021a565b34801561032257600080fd5b50610298610331366004611f89565b6107ea565b34801561034257600080fd5b5061026a600e5481565b34801561035857600080fd5b50610298610367366004611de7565b61082e565b34801561037857600080fd5b5061029861087a565b34801561038d57600080fd5b5061026a61039c366004611de7565b6108a7565b3480156103ad57600080fd5b506102986108c9565b3480156103c257600080fd5b506102986103d1366004611fc1565b6108ff565b3480156103e257600080fd5b506000546040516001600160a01b03909116815260200161021a565b34801561040a57600080fd5b5061026a60065481565b34801561042057600080fd5b506040805180820190915260058152644e4154535560d81b602082015261020d565b34801561044e57600080fd5b5061024361045d366004611e97565b61092e565b34801561046e57600080fd5b5060095461024390610100900460ff1681565b34801561048d57600080fd5b5061029861049c366004611ec2565b61093b565b3480156104ad57600080fd5b506009546102439060ff1681565b3480156104c757600080fd5b506102986104d6366004611f89565b6109df565b3480156104e757600080fd5b5061026a60075481565b3480156104fd57600080fd5b50610298610a1c565b34801561051257600080fd5b50610298610a52565b34801561052757600080fd5b5061026a610536366004611e1f565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561056d57600080fd5b5061029861057c366004611fc1565b610e2f565b34801561058d57600080fd5b50610298610e54565b3480156105a257600080fd5b506102986105b1366004611de7565b610e87565b60006105c3338484610f1f565b5060015b92915050565b6000546001600160a01b031633146106005760405162461bcd60e51b81526004016105f790612084565b60405180910390fd5b600f829055600c839055600d81905560058211156106605760405162461bcd60e51b815260206004820152601c60248201527f4d757374206b6565702066656573206174203525206f72206c6573730000000060448201526064016105f7565b600f8311156106b15760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420313825206f72206c65737300000060448201526064016105f7565b600a8111156107025760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420313025206f72206c65737300000060448201526064016105f7565b505050565b6000610714848484611043565b610766843361076185604051806060016040528060288152602001612202602891396001600160a01b038a166000908152600360209081526040808320338452909152902054919061162a565b610f1f565b5060019392505050565b6000546001600160a01b0316331461079a5760405162461bcd60e51b81526004016105f790612084565b6001600160a01b03166000908152600560205260409020805460ff19169055565b6000546001600160a01b031633146107e55760405162461bcd60e51b81526004016105f790612084565b600755565b6000546001600160a01b031633146108145760405162461bcd60e51b81526004016105f790612084565b600980549115156101000261ff0019909216919091179055565b6000546001600160a01b031633146108585760405162461bcd60e51b81526004016105f790612084565b601280546001600160a01b0319166001600160a01b0392909216919091179055565b6011546001600160a01b0316336001600160a01b03161461089a57600080fd5b476108a481611664565b50565b6001600160a01b0381166000908152600160205260408120546105c7906116f9565b6000546001600160a01b031633146108f35760405162461bcd60e51b81526004016105f790612084565b6108fd600061177d565b565b6000546001600160a01b031633146109295760405162461bcd60e51b81526004016105f790612084565b600655565b60006105c3338484611043565b6000546001600160a01b031633146109655760405162461bcd60e51b81526004016105f790612084565b60005b81518110156109db5760016005600084848151811061099757634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806109d381612197565b915050610968565b5050565b6000546001600160a01b03163314610a095760405162461bcd60e51b81526004016105f790612084565b6009805460ff1916911515919091179055565b6011546001600160a01b0316336001600160a01b031614610a3c57600080fd5b6000610a47306108a7565b90506108a4816117cd565b6000546001600160a01b03163314610a7c5760405162461bcd60e51b81526004016105f790612084565b601654600160a01b900460ff1615610ad65760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e00000000000000000060448201526064016105f7565b601580546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155610b123082670de0b6b3a7640000610f1f565b806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610b4b57600080fd5b505afa158015610b5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b839190611e03565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610bcb57600080fd5b505afa158015610bdf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c039190611e03565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b158015610c4b57600080fd5b505af1158015610c5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c839190611e03565b601680546001600160a01b0319166001600160a01b039283161790556015541663f305d7194730610cb3816108a7565b600080610cc86000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b158015610d2b57600080fd5b505af1158015610d3f573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610d649190612004565b505060168054666a94d74f43000060065566470de4df820000600755436008556009805461ff0019166101001790556201000160a01b62ff00ff60a01b1982161790915560155460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529116915063095ea7b390604401602060405180830381600087803b158015610df757600080fd5b505af1158015610e0b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109db9190611fa5565b6011546001600160a01b0316336001600160a01b031614610e4f57600080fd5b600e55565b6011546001600160a01b0316336001600160a01b031614610e7457600080fd5b670de0b6b3a76400006006819055600755565b6000546001600160a01b03163314610eb15760405162461bcd60e51b81526004016105f790612084565b6001600160a01b038116610f165760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105f7565b6108a48161177d565b6001600160a01b038316610f815760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105f7565b6001600160a01b038216610fe25760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105f7565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831660009081526005602052604090205460ff1615801561108557506001600160a01b03821660009081526005602052604090205460ff16155b61108e57600080fd5b600081116110f05760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016105f7565b6001600160a01b03821660009081526004602052604090205460ff1615801561113257506001600160a01b03831660009081526004602052604090205460ff16155b15611143576000600f55600d546010555b6016546001600160a01b0383811691161480159061117a57506001600160a01b03821660009081526004602052604090205460ff16155b801561119f57506001600160a01b03831660009081526004602052604090205460ff16155b15611270576006546111b0836108a7565b6111ba9083612129565b11156112005760405162461bcd60e51b815260206004820152601560248201527427bb32b91036b0bc103bb0b63632ba1039b4bd329760591b60448201526064016105f7565b6007548111156112705760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b60648201526084016105f7565b6016546001600160a01b03848116911614801561129b57506015546001600160a01b03838116911614155b156112d8576008546112ae906001612129565b43116112d8576001600160a01b0382166000908152600560205260409020805460ff191660011790555b6000546001600160a01b0384811691161480159061130457506000546001600160a01b03838116911614155b156114a957600954610100900460ff16156114a9576001600160a01b038316301480159061133b57506001600160a01b0382163014155b801561135557506015546001600160a01b03848116911614155b801561136f57506015546001600160a01b03838116911614155b156113d7576015546001600160a01b031633148061139757506016546001600160a01b031633145b6113d75760405162461bcd60e51b81526020600482015260116024820152704552523a20556e6973776170206f6e6c7960781b60448201526064016105f7565b6000546001600160a01b038381169116148015906113fe57506001600160a01b0382163014155b801561141857506015546001600160a01b03838116911614155b801561143257506016546001600160a01b03838116911614155b156114a9576114434261012c612129565b3260009081526014602052604090205411156114965760405162461bcd60e51b815260206004820152601260248201527110dbdbdb191bdddb881a5b881959999958dd60721b60448201526064016105f7565b3260009081526014602052604090204290555b6016546001600160a01b0383811691161480156114d457506015546001600160a01b03848116911614155b80156114f957506001600160a01b03831660009081526004602052604090205460ff16155b15611555576001600160a01b03831660009081526005602052604090205460ff1615801561154057506001600160a01b03821660009081526005602052604090205460ff16155b61154957600080fd5b6000600f55600c546010555b6001600160a01b03831660009081526004602052604090205460ff168061159457506001600160a01b03821660009081526004602052604090205460ff165b156115a4576000600f8190556010555b60006115af306108a7565b601654909150600160a81b900460ff161580156115da57506016546001600160a01b03858116911614155b80156115ef5750601654600160b01b900460ff165b1561161957600e5481111561160757611607816117cd565b4780156116175761161747611664565b505b611624848484611972565b50505050565b6000818484111561164e5760405162461bcd60e51b81526004016105f79190612031565b50600061165b8486612180565b95945050505050565b6011546001600160a01b03166108fc611689600361168385600561197d565b906119bf565b6040518115909202916000818181858888f193505050501580156116b1573d6000803e3d6000fd5b506012546001600160a01b03166108fc6116d1600261168385600561197d565b6040518115909202916000818181858888f193505050501580156109db573d6000803e3d6000fd5b6000600a548211156117605760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016105f7565b600061176a611a3e565b9050611776838261197d565b9392505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6016805460ff60a81b1916600160a81b179055604080516002808252606082018352600092602083019080368337019050509050308160008151811061182357634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152601554604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561187757600080fd5b505afa15801561188b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118af9190611e03565b816001815181106118d057634e487b7160e01b600052603260045260246000fd5b6001600160a01b0392831660209182029290920101526015546118f69130911684610f1f565b60155460405163791ac94760e01b81526001600160a01b039091169063791ac9479061192f9085906000908690309042906004016120b9565b600060405180830381600087803b15801561194957600080fd5b505af115801561195d573d6000803e3d6000fd5b50506016805460ff60a81b1916905550505050565b610702838383611a61565b600061177683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611b58565b6000826119ce575060006105c7565b60006119da8385612161565b9050826119e78583612141565b146117765760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016105f7565b6000806000611a4b611b86565b9092509050611a5a828261197d565b9250505090565b600080600080600080611a7387611bc6565b6001600160a01b038f16600090815260016020526040902054959b50939950919750955093509150611aa59087611c23565b6001600160a01b03808b1660009081526001602052604080822093909355908a1681522054611ad49086611c65565b6001600160a01b038916600090815260016020526040902055611af681611cc4565b611b008483611d0e565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611b4591815260200190565b60405180910390a3505050505050505050565b60008183611b795760405162461bcd60e51b81526004016105f79190612031565b50600061165b8486612141565b600a546000908190670de0b6b3a7640000611ba1828261197d565b821015611bbd575050600a5492670de0b6b3a764000092509050565b90939092509050565b6000806000806000806000806000611be38a600f54601054611d32565b9250925092506000611bf3611a3e565b90506000806000611c068e878787611d87565b919e509c509a509598509396509194505050505091939550919395565b600061177683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061162a565b600080611c728385612129565b9050838110156117765760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016105f7565b6000611cce611a3e565b90506000611cdc83836119bf565b30600090815260016020526040902054909150611cf99082611c65565b30600090815260016020526040902055505050565b600a54611d1b9083611c23565b600a55600b54611d2b9082611c65565b600b555050565b6000808080611d4c6064611d4689896119bf565b9061197d565b90506000611d5f6064611d468a896119bf565b90506000611d7782611d718b86611c23565b90611c23565b9992985090965090945050505050565b6000808080611d9688866119bf565b90506000611da488876119bf565b90506000611db288886119bf565b90506000611dc482611d718686611c23565b939b939a50919850919650505050505050565b8035611de2816121de565b919050565b600060208284031215611df8578081fd5b8135611776816121de565b600060208284031215611e14578081fd5b8151611776816121de565b60008060408385031215611e31578081fd5b8235611e3c816121de565b91506020830135611e4c816121de565b809150509250929050565b600080600060608486031215611e6b578081fd5b8335611e76816121de565b92506020840135611e86816121de565b929592945050506040919091013590565b60008060408385031215611ea9578182fd5b8235611eb4816121de565b946020939093013593505050565b60006020808385031215611ed4578182fd5b823567ffffffffffffffff80821115611eeb578384fd5b818501915085601f830112611efe578384fd5b813581811115611f1057611f106121c8565b8060051b604051601f19603f83011681018181108582111715611f3557611f356121c8565b604052828152858101935084860182860187018a1015611f53578788fd5b8795505b83861015611f7c57611f6881611dd7565b855260019590950194938601938601611f57565b5098975050505050505050565b600060208284031215611f9a578081fd5b8135611776816121f3565b600060208284031215611fb6578081fd5b8151611776816121f3565b600060208284031215611fd2578081fd5b5035919050565b600080600060608486031215611fed578283fd5b505081359360208301359350604090920135919050565b600080600060608486031215612018578283fd5b8351925060208401519150604084015190509250925092565b6000602080835283518082850152825b8181101561205d57858101830151858201604001528201612041565b8181111561206e5783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b818110156121085784516001600160a01b0316835293830193918301916001016120e3565b50506001600160a01b03969096166060850152505050608001529392505050565b6000821982111561213c5761213c6121b2565b500190565b60008261215c57634e487b7160e01b81526012600452602481fd5b500490565b600081600019048311821515161561217b5761217b6121b2565b500290565b600082821015612192576121926121b2565b500390565b60006000198214156121ab576121ab6121b2565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146108a457600080fd5b80151581146108a457600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220ce45e13a6b2056ad8bf9ceab50b73c16b907db62f890ac30c5a1387746495dfd64736f6c63430008040033

Deployed Bytecode Sourcemap

3773:12822:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5982:83;;;;;;;;;;-1:-1:-1;6052:5:0;;;;;;;;;;;;-1:-1:-1;;;6052:5:0;;;;5982:83;;;;;;;:::i;:::-;;;;;;;;6834:161;;;;;;;;;;-1:-1:-1;6834:161:0;;;;;:::i;:::-;;:::i;:::-;;;6273:14:1;;6266:22;6248:41;;6236:2;6221:18;6834:161:0;6203:92:1;6259:95:0;;;;;;;;;;-1:-1:-1;4224:16:0;6259:95;;;13099:25:1;;;13087:2;13072:18;6259:95:0;13054:76:1;11084:390:0;;;;;;;;;;-1:-1:-1;11084:390:0;;;;;:::i;:::-;;:::i;:::-;;7003:313;;;;;;;;;;-1:-1:-1;7003:313:0;;;;;:::i;:::-;;:::i;16504:88::-;;;;;;;;;;-1:-1:-1;16504:88:0;;;;;:::i;:::-;;:::i;12176:92::-;;;;;;;;;;-1:-1:-1;12176:92:0;;;;;:::i;:::-;;:::i;6168:83::-;;;;;;;;;;-1:-1:-1;6168:83:0;;5171:1;14265:36:1;;14253:2;14238:18;6168:83:0;14220:87:1;10372:103:0;;;;;;;;;;-1:-1:-1;10372:103:0;;;;;:::i;:::-;;:::i;4583:41::-;;;;;;;;;;;;;;;;11801:115;;;;;;;;;;-1:-1:-1;11801:115:0;;;;;:::i;:::-;;:::i;13541:182::-;;;;;;;;;;;;;:::i;6362:138::-;;;;;;;;;;-1:-1:-1;6362:138:0;;;;;:::i;:::-;;:::i;2492:103::-;;;;;;;;;;;;;:::i;12060:108::-;;;;;;;;;;-1:-1:-1;12060:108:0;;;;;:::i;:::-;;:::i;2269:87::-;;;;;;;;;;-1:-1:-1;2315:7:0;2342:6;2269:87;;-1:-1:-1;;;;;2342:6:0;;;4846:51:1;;4834:2;4819:18;2269:87:0;4801:102:1;4248:29:0;;;;;;;;;;;;;;;;6073:87;;;;;;;;;;-1:-1:-1;6145:7:0;;;;;;;;;;;;-1:-1:-1;;;6145:7:0;;;;6073:87;;6508:167;;;;;;;;;;-1:-1:-1;6508:167:0;;;;;:::i;:::-;;:::i;4389:35::-;;;;;;;;;;-1:-1:-1;4389:35:0;;;;;;;;;;;16328:164;;;;;;;;;;-1:-1:-1;16328:164:0;;;;;:::i;:::-;;:::i;4349:33::-;;;;;;;;;;-1:-1:-1;4349:33:0;;;;;;;;10483:102;;;;;;;;;;-1:-1:-1;10483:102:0;;;;;:::i;:::-;;:::i;4284:22::-;;;;;;;;;;;;;;;;13346:183;;;;;;;;;;;;;:::i;15158:890::-;;;;;;;;;;;;;:::i;6683:143::-;;;;;;;;;;-1:-1:-1;6683:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;6791:18:0;;;6764:7;6791:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6683:143;11924:128;;;;;;;;;;-1:-1:-1;11924:128:0;;;;;:::i;:::-;;:::i;11486:148::-;;;;;;;;;;;;;:::i;2603:201::-;;;;;;;;;;-1:-1:-1;2603:201:0;;;;;:::i;:::-;;:::i;6834:161::-;6909:4;6926:39;182:10;6949:7;6958:6;6926:8;:39::i;:::-;-1:-1:-1;6983:4:0;6834:161;;;;;:::o;11084:390::-;2315:7;2342:6;-1:-1:-1;;;;;2342:6:0;182:10;2404:23;2396:68;;;;-1:-1:-1;;;2396:68:0;;;;;;;:::i;:::-;;;;;;;;;11188:9:::1;:23:::0;;;11222:8:::1;:18:::0;;;11251:7:::1;:16:::0;;;11301:1:::1;11286:16:::0;::::1;;11278:57;;;::::0;-1:-1:-1;;;11278:57:0;;10987:2:1;11278:57:0::1;::::0;::::1;10969:21:1::0;11026:2;11006:18;;;10999:30;11065;11045:18;;;11038:58;11113:18;;11278:57:0::1;10959:178:1::0;11278:57:0::1;11365:2;11354:7;:13;;11346:55;;;::::0;-1:-1:-1;;;11346:55:0;;11694:2:1;11346:55:0::1;::::0;::::1;11676:21:1::0;11733:2;11713:18;;;11706:30;11772:31;11752:18;;;11745:59;11821:18;;11346:55:0::1;11666:179:1::0;11346:55:0::1;11430:2;11420:6;:12;;11412:54;;;::::0;-1:-1:-1;;;11412:54:0;;7110:2:1;11412:54:0::1;::::0;::::1;7092:21:1::0;7149:2;7129:18;;;7122:30;7188:31;7168:18;;;7161:59;7237:18;;11412:54:0::1;7082:179:1::0;11412:54:0::1;11084:390:::0;;;:::o;7003:313::-;7101:4;7118:36;7128:6;7136:9;7147:6;7118:9;:36::i;:::-;7165:121;7174:6;182:10;7196:89;7234:6;7196:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7196:19:0;;;;;;:11;:19;;;;;;;;182:10;7196:33;;;;;;;;;;:37;:89::i;:::-;7165:8;:121::i;:::-;-1:-1:-1;7304:4:0;7003:313;;;;;:::o;16504:88::-;2315:7;2342:6;-1:-1:-1;;;;;2342:6:0;182:10;2404:23;2396:68;;;;-1:-1:-1;;;2396:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16564:12:0::1;16579:5;16564:12:::0;;;:4:::1;:12;::::0;;;;:20;;-1:-1:-1;;16564:20:0::1;::::0;;16504:88::o;12176:92::-;2315:7;2342:6;-1:-1:-1;;;;;2342:6:0;182:10;2404:23;2396:68;;;;-1:-1:-1;;;2396:68:0;;;;;;;:::i;:::-;12244:7:::1;:16:::0;12176:92::o;10372:103::-;2315:7;2342:6;-1:-1:-1;;;;;2342:6:0;182:10;2404:23;2396:68;;;;-1:-1:-1;;;2396:68:0;;;;;;;:::i;:::-;10444:15:::1;:23:::0;;;::::1;;;;-1:-1:-1::0;;10444:23:0;;::::1;::::0;;;::::1;::::0;;10372:103::o;11801:115::-;2315:7;2342:6;-1:-1:-1;;;;;2342:6:0;182:10;2404:23;2396:68;;;;-1:-1:-1;;;2396:68:0;;;;;;;:::i;:::-;11888:4:::1;:20:::0;;-1:-1:-1;;;;;;11888:20:0::1;-1:-1:-1::0;;;;;11888:20:0;;;::::1;::::0;;;::::1;::::0;;11801:115::o;13541:182::-;13607:3;;-1:-1:-1;;;;;13607:3:0;182:10;-1:-1:-1;;;;;13591:19:0;;13583:28;;;;;;13651:21;13683:32;13651:21;13683:12;:32::i;:::-;13541:182;:::o;6362:138::-;-1:-1:-1;;;;;6475:16:0;;6428:7;6475:16;;;:7;:16;;;;;;6455:37;;:19;:37::i;2492:103::-;2315:7;2342:6;-1:-1:-1;;;;;2342:6:0;182:10;2404:23;2396:68;;;;-1:-1:-1;;;2396:68:0;;;;;;;:::i;:::-;2557:30:::1;2584:1;2557:18;:30::i;:::-;2492:103::o:0;12060:108::-;2315:7;2342:6;-1:-1:-1;;;;;2342:6:0;182:10;2404:23;2396:68;;;;-1:-1:-1;;;2396:68:0;;;;;;;:::i;:::-;12137:14:::1;:23:::0;12060:108::o;6508:167::-;6586:4;6603:42;182:10;6627:9;6638:6;6603:9;:42::i;16328:164::-;2315:7;2342:6;-1:-1:-1;;;;;2342:6:0;182:10;2404:23;2396:68;;;;-1:-1:-1;;;2396:68:0;;;;;;;:::i;:::-;16402:6:::1;16397:88;16418:5;:12;16414:1;:16;16397:88;;;16469:4;16452;:14;16457:5;16463:1;16457:8;;;;;;-1:-1:-1::0;;;16457:8:0::1;;;;;;;;;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;16452:14:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;16452:14:0;:21;;-1:-1:-1;;16452:21:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16432:3;::::1;::::0;::::1;:::i;:::-;;;;16397:88;;;;16328:164:::0;:::o;10483:102::-;2315:7;2342:6;-1:-1:-1;;;;;2342:6:0;182:10;2404:23;2396:68;;;;-1:-1:-1;;;2396:68:0;;;;;;;:::i;:::-;10556:13:::1;:21:::0;;-1:-1:-1;;10556:21:0::1;::::0;::::1;;::::0;;;::::1;::::0;;10483:102::o;13346:183::-;13412:3;;-1:-1:-1;;;;;13412:3:0;182:10;-1:-1:-1;;;;;13396:19:0;;13388:28;;;;;;13427:23;13453:24;13471:4;13453:9;:24::i;:::-;13427:50;;13488:33;13505:15;13488:16;:33::i;15158:890::-;2315:7;2342:6;-1:-1:-1;;;;;2342:6:0;182:10;2404:23;2396:68;;;;-1:-1:-1;;;2396:68:0;;;;;;;:::i;:::-;15222:11:::1;::::0;-1:-1:-1;;;15222:11:0;::::1;;;15221:12;15213:47;;;::::0;-1:-1:-1;;;15213:47:0;;12457:2:1;15213:47:0::1;::::0;::::1;12439:21:1::0;12496:2;12476:18;;;12469:30;12535:25;12515:18;;;12508:53;12578:18;;15213:47:0::1;12429:173:1::0;15213:47:0::1;15382:15;:34:::0;;-1:-1:-1;;;;;;15382:34:0::1;15328:42;15382:34:::0;;::::1;::::0;;;15427:58:::1;15444:4;15328:42:::0;4224:16:::1;15427:8;:58::i;:::-;15530:16;-1:-1:-1::0;;;;;15530:24:0::1;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;15512:56:0::1;;15577:4;15584:16;-1:-1:-1::0;;;;;15584:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15512:96;::::0;-1:-1:-1;;;;;;15512:96:0::1;::::0;;;;;;-1:-1:-1;;;;;5138:15:1;;;15512:96:0::1;::::0;::::1;5120:34:1::0;5190:15;;5170:18;;;5163:43;5055:18;;15512:96:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15496:13;:112:::0;;-1:-1:-1;;;;;;15496:112:0::1;-1:-1:-1::0;;;;;15496:112:0;;::::1;;::::0;;15619:15:::1;::::0;::::1;:31;15658:21;15689:4;15695:24;15689:4:::0;15695:9:::1;:24::i;:::-;15720:1;15722::::0;15724:7:::1;2315::::0;2342:6;-1:-1:-1;;;;;2342:6:0;;2269:87;15724:7:::1;15619:129;::::0;::::1;::::0;;;-1:-1:-1;;;;;;15619:129:0;;;-1:-1:-1;;;;;5855:15:1;;;15619:129:0::1;::::0;::::1;5837:34:1::0;5887:18;;;5880:34;;;;5930:18;;;5923:34;;;;5973:18;;;5966:34;6037:15;;;6016:19;;;6009:44;15732:15:0::1;6069:19:1::0;;;6062:35;5771:19;;15619:129:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;15759:11:0::1;:18:::0;;15805:14:::1;15788;:31:::0;15845:14:::1;15835:7;:24:::0;15884:12:::1;15870:11;:26:::0;15907:15:::1;:22:::0;;-1:-1:-1;;15907:22:0::1;15759:18;15907:22;::::0;;-1:-1:-1;;;;;;;15940:18:0;;;;;;16007:15:::1;::::0;15969:71:::1;::::0;-1:-1:-1;;;15969:71:0;;-1:-1:-1;;;;;16007:15:0;;::::1;15969:71;::::0;::::1;5391:51:1::0;-1:-1:-1;;5458:18:1;;;5451:34;15976:13:0;;;-1:-1:-1;15969:29:0::1;::::0;5364:18:1;;15969:71:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;11924:128::-:0;12010:3;;-1:-1:-1;;;;;12010:3:0;182:10;-1:-1:-1;;;;;11994:19:0;;11986:28;;;;;;12025:10;:19;11924:128::o;11486:148::-;11549:3;;-1:-1:-1;;;;;11549:3:0;182:10;-1:-1:-1;;;;;11533:19:0;;11525:28;;;;;;4224:16;11564:14;:24;;;11599:7;:17;11486:148::o;2603:201::-;2315:7;2342:6;-1:-1:-1;;;;;2342:6:0;182:10;2404:23;2396:68;;;;-1:-1:-1;;;2396:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2692:22:0;::::1;2684:73;;;::::0;-1:-1:-1;;;2684:73:0;;7879:2:1;2684:73:0::1;::::0;::::1;7861:21:1::0;7918:2;7898:18;;;7891:30;7957:34;7937:18;;;7930:62;-1:-1:-1;;;8008:18:1;;;8001:36;8054:19;;2684:73:0::1;7851:228:1::0;2684:73:0::1;2768:28;2787:8;2768:18;:28::i;7586:335::-:0;-1:-1:-1;;;;;7679:19:0;;7671:68;;;;-1:-1:-1;;;7671:68:0;;12052:2:1;7671:68:0;;;12034:21:1;12091:2;12071:18;;;12064:30;12130:34;12110:18;;;12103:62;-1:-1:-1;;;12181:18:1;;;12174:34;12225:19;;7671:68:0;12024:226:1;7671:68:0;-1:-1:-1;;;;;7758:21:0;;7750:68;;;;-1:-1:-1;;;7750:68:0;;8286:2:1;7750:68:0;;;8268:21:1;8325:2;8305:18;;;8298:30;8364:34;8344:18;;;8337:62;-1:-1:-1;;;8415:18:1;;;8408:32;8457:19;;7750:68:0;8258:224:1;7750:68:0;-1:-1:-1;;;;;7829:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7881:32;;13099:25:1;;;7881:32:0;;13072:18:1;7881:32:0;;;;;;;7586:335;;;:::o;7929:2435::-;-1:-1:-1;;;;;8018:10:0;;;;;;:4;:10;;;;;;;;8017:11;:24;;;;-1:-1:-1;;;;;;8033:8:0;;;;;;:4;:8;;;;;;;;8032:9;8017:24;8009:33;;;;;;8070:1;8061:6;:10;8053:64;;;;-1:-1:-1;;;8053:64:0;;10577:2:1;8053:64:0;;;10559:21:1;10616:2;10596:18;;;10589:30;10655:34;10635:18;;;10628:62;-1:-1:-1;;;10706:18:1;;;10699:39;10755:19;;8053:64:0;10549:231:1;8053:64:0;-1:-1:-1;;;;;8144:22:0;;;;;;:18;:22;;;;;;;;8142:24;:54;;;;-1:-1:-1;;;;;;8172:24:0;;;;;;:18;:24;;;;;;;;8170:26;8142:54;8138:134;;;8225:1;8213:9;:13;8253:7;;8241:9;:19;8138:134;8294:13;;-1:-1:-1;;;;;8288:19:0;;;8294:13;;8288:19;;;;:47;;-1:-1:-1;;;;;;8313:22:0;;;;;;:18;:22;;;;;;;;8311:24;8288:47;:77;;;;-1:-1:-1;;;;;;8341:24:0;;;;;;:18;:24;;;;;;;;8339:26;8288:77;8284:284;;;8416:14;;8399:13;8409:2;8399:9;:13::i;:::-;8390:22;;:6;:22;:::i;:::-;:40;;8382:74;;;;-1:-1:-1;;;8382:74:0;;11344:2:1;8382:74:0;;;11326:21:1;11383:2;11363:18;;;11356:30;-1:-1:-1;;;11402:18:1;;;11395:51;11463:18;;8382:74:0;11316:171:1;8382:74:0;8489:7;;8479:6;:17;;8471:83;;;;-1:-1:-1;;;8471:83:0;;9392:2:1;8471:83:0;;;9374:21:1;9431:2;9411:18;;;9404:30;9470:34;9450:18;;;9443:62;-1:-1:-1;;;9521:18:1;;;9514:51;9582:19;;8471:83:0;9364:243:1;8471:83:0;8592:13;;-1:-1:-1;;;;;8584:21:0;;;8592:13;;8584:21;:55;;;;-1:-1:-1;8623:15:0;;-1:-1:-1;;;;;8609:30:0;;;8623:15;;8609:30;;8584:55;8580:177;;;8677:11;;:15;;8691:1;8677:15;:::i;:::-;8660:12;:33;8656:89;;-1:-1:-1;;;;;8714:8:0;;;;;;:4;:8;;;;;:15;;-1:-1:-1;;8714:15:0;8725:4;8714:15;;;8656:89;2315:7;2342:6;-1:-1:-1;;;;;8773:15:0;;;2342:6;;8773:15;;;;:32;;-1:-1:-1;2315:7:0;2342:6;-1:-1:-1;;;;;8792:13:0;;;2342:6;;8792:13;;8773:32;8769:718;;;8826:15;;;;;;;8822:632;;;-1:-1:-1;;;;;8866:21:0;;8882:4;8866:21;;;;:44;;-1:-1:-1;;;;;;8891:19:0;;8905:4;8891:19;;8866:44;:80;;;;-1:-1:-1;8930:15:0;;-1:-1:-1;;;;;8914:32:0;;;8930:15;;8914:32;;8866:80;:114;;;;-1:-1:-1;8964:15:0;;-1:-1:-1;;;;;8950:30:0;;;8964:15;;8950:30;;8866:114;8862:262;;;9035:15;;-1:-1:-1;;;;;9035:15:0;9013:10;:38;;:69;;-1:-1:-1;9069:13:0;;-1:-1:-1;;;;;9069:13:0;9055:10;:27;9013:69;9005:99;;;;-1:-1:-1;;;9005:99:0;;12809:2:1;9005:99:0;;;12791:21:1;12848:2;12828:18;;;12821:30;-1:-1:-1;;;12867:18:1;;;12860:47;12924:18;;9005:99:0;12781:167:1;9005:99:0;2315:7;2342:6;-1:-1:-1;;;;;9160:13:0;;;2342:6;;9160:13;;;;:36;;-1:-1:-1;;;;;;9177:19:0;;9191:4;9177:19;;9160:36;:70;;;;-1:-1:-1;9214:15:0;;-1:-1:-1;;;;;9200:30:0;;;9214:15;;9200:30;;9160:70;:93;;;;-1:-1:-1;9240:13:0;;-1:-1:-1;;;;;9234:19:0;;;9240:13;;9234:19;;9160:93;9156:283;;;9309:27;:15;9327:9;9309:27;:::i;:::-;9294:9;9286:18;;;;:7;:18;;;;;;:51;;9278:82;;;;-1:-1:-1;;;9278:82:0;;9045:2:1;9278:82:0;;;9027:21:1;9084:2;9064:18;;;9057:30;-1:-1:-1;;;9103:18:1;;;9096:48;9161:18;;9278:82:0;9017:168:1;9278:82:0;9391:9;9383:18;;;;:7;:18;;;;;9404:15;9383:36;;9156:283;9509:13;;-1:-1:-1;;;;;9503:19:0;;;9509:13;;9503:19;:55;;;;-1:-1:-1;9542:15:0;;-1:-1:-1;;;;;9526:32:0;;;9542:15;;9526:32;;9503:55;:85;;;;-1:-1:-1;;;;;;9564:24:0;;;;;;:18;:24;;;;;;;;9562:26;9503:85;9499:214;;;-1:-1:-1;;;;;9614:10:0;;;;;;:4;:10;;;;;;;;9613:11;:24;;;;-1:-1:-1;;;;;;9629:8:0;;;;;;:4;:8;;;;;;;;9628:9;9613:24;9605:33;;;;;;9665:1;9653:9;:13;9693:8;;9681:9;:20;9499:214;-1:-1:-1;;;;;9729:24:0;;;;;;:18;:24;;;;;;;;;:50;;-1:-1:-1;;;;;;9757:22:0;;;;;;:18;:22;;;;;;;;9729:50;9725:124;;;9808:1;9796:9;:13;;;9824:9;:13;9725:124;9861:28;9892:24;9910:4;9892:9;:24::i;:::-;9932:6;;9861:55;;-1:-1:-1;;;;9932:6:0;;;;9931:7;:32;;;;-1:-1:-1;9950:13:0;;-1:-1:-1;;;;;9942:21:0;;;9950:13;;9942:21;;9931:32;:47;;;;-1:-1:-1;9967:11:0;;-1:-1:-1;;;9967:11:0;;;;9931:47;9927:381;;;10022:10;;9999:20;:33;9995:112;;;10053:38;10070:20;10053:16;:38::i;:::-;10164:21;10203:22;;10200:97;;10246:35;10259:21;10246:12;:35::i;:::-;9927:381;;10326:30;10341:4;10346:2;10349:6;10326:14;:30::i;:::-;7929:2435;;;;:::o;1239:190::-;1325:7;1361:12;1353:6;;;;1345:29;;;;-1:-1:-1;;;1345:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1385:9:0;1397:5;1401:1;1397;:5;:::i;:::-;1385:17;1239:190;-1:-1:-1;;;;;1239:190:0:o;11642:151::-;11699:3;;-1:-1:-1;;;;;11699:3:0;:36;11712:22;11732:1;11712:15;11713:6;11725:1;11712:12;:15::i;:::-;:19;;:22::i;:::-;11699:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11746:4:0;;-1:-1:-1;;;;;11746:4:0;:37;11760:22;11780:1;11760:15;11761:6;11773:1;11760:12;:15::i;:22::-;11746:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7324:254;7391:7;7430;;7419;:18;;7411:73;;;;-1:-1:-1;;;7411:73:0;;7468:2:1;7411:73:0;;;7450:21:1;7507:2;7487:18;;;7480:30;7546:34;7526:18;;;7519:62;-1:-1:-1;;;7597:18:1;;;7590:40;7647:19;;7411:73:0;7440:232:1;7411:73:0;7495:19;7518:10;:8;:10::i;:::-;7495:33;-1:-1:-1;7546:24:0;:7;7495:33;7546:11;:24::i;:::-;7539:31;7324:254;-1:-1:-1;;;7324:254:0:o;2812:191::-;2886:16;2905:6;;-1:-1:-1;;;;;2922:17:0;;;-1:-1:-1;;;;;;2922:17:0;;;;;;2955:40;;2905:6;;;;;;;2955:40;;2886:16;2955:40;2812:191;;:::o;10593:483::-;5411:6;:13;;-1:-1:-1;;;;5411:13:0;-1:-1:-1;;;5411:13:0;;;10695:16:::1;::::0;;10709:1:::1;10695:16:::0;;;;;::::1;::::0;;-1:-1:-1;;10695:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;10695:16:0::1;10671:40;;10740:4;10722;10727:1;10722:7;;;;;;-1:-1:-1::0;;;10722:7:0::1;;;;;;;;;-1:-1:-1::0;;;;;10722:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;10766:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;10766:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;10722:7;;10766:22;;;;;:15;:22;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10756:4;10761:1;10756:7;;;;;;-1:-1:-1::0;;;10756:7:0::1;;;;;;;;;-1:-1:-1::0;;;;;10756:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;10831:15:::1;::::0;10799:62:::1;::::0;10816:4:::1;::::0;10831:15:::1;10849:11:::0;10799:8:::1;:62::i;:::-;10872:15;::::0;:196:::1;::::0;-1:-1:-1;;;10872:196:0;;-1:-1:-1;;;;;10872:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;10953:11;;10872:15:::1;::::0;10995:4;;11022::::1;::::0;11042:15:::1;::::0;10872:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;5447:6:0;:14;;-1:-1:-1;;;;5447:14:0;;;-1:-1:-1;;;;10593:483:0:o;12280:146::-;12374:44;12392:6;12400:9;12411:6;12374:17;:44::i;1691:132::-;1749:7;1776:39;1780:1;1783;1776:39;;;;;;;;;;;;;;;;;:3;:39::i;1437:246::-;1495:7;1519:6;1515:47;;-1:-1:-1;1549:1:0;1542:8;;1515:47;1572:9;1584:5;1588:1;1584;:5;:::i;:::-;1572:17;-1:-1:-1;1617:1:0;1608:5;1612:1;1572:17;1608:5;:::i;:::-;:10;1600:56;;;;-1:-1:-1;;;1600:56:0;;9814:2:1;1600:56:0;;;9796:21:1;9853:2;9833:18;;;9826:30;9892:34;9872:18;;;9865:62;-1:-1:-1;;;9943:18:1;;;9936:31;9984:19;;1600:56:0;9786:223:1;14987:163:0;15028:7;15049:15;15066;15085:19;:17;:19::i;:::-;15048:56;;-1:-1:-1;15048:56:0;-1:-1:-1;15122:20:0;15048:56;;15122:11;:20::i;:::-;15115:27;;;;14987:163;:::o;12434:488::-;12533:15;12550:23;12575:12;12589:23;12614:12;12628:13;12645:19;12656:7;12645:10;:19::i;:::-;-1:-1:-1;;;;;12693:15:0;;;;;;:7;:15;;;;;;12532:132;;-1:-1:-1;12532:132:0;;-1:-1:-1;12532:132:0;;-1:-1:-1;12532:132:0;-1:-1:-1;12532:132:0;-1:-1:-1;12532:132:0;-1:-1:-1;12693:28:0;;12532:132;12693:19;:28::i;:::-;-1:-1:-1;;;;;12675:15:0;;;;;;;:7;:15;;;;;;:46;;;;12753:18;;;;;;;:39;;12776:15;12753:22;:39::i;:::-;-1:-1:-1;;;;;12732:18:0;;;;;;:7;:18;;;;;:60;12804:16;12814:5;12804:9;:16::i;:::-;12831:23;12843:4;12849;12831:11;:23::i;:::-;12887:9;-1:-1:-1;;;;;12870:44:0;12879:6;-1:-1:-1;;;;;12870:44:0;;12898:15;12870:44;;;;13099:25:1;;13087:2;13072:18;;13054:76;12870:44:0;;;;;;;;12434:488;;;;;;;;;:::o;1831:189::-;1917:7;1952:12;1945:5;1937:28;;;;-1:-1:-1;;;1937:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1976:9:0;1988:5;1992:1;1988;:5;:::i;16058:262::-;16155:7;;16108;;;;4224:16;16229:20;16155:7;4224:16;16229:11;:20::i;:::-;16219:7;:30;16215:61;;;-1:-1:-1;;16259:7:0;;;4224:16;;-1:-1:-1;16058:262:0;-1:-1:-1;16058:262:0:o;16215:61::-;16295:7;;16304;;-1:-1:-1;16058:262:0;-1:-1:-1;16058:262:0:o;13735:471::-;13794:7;13803;13812;13821;13830;13839;13860:23;13885:12;13899:13;13916:42;13928:7;13937:9;;13948;;13916:11;:42::i;:::-;13859:99;;;;;;13969:19;13992:10;:8;:10::i;:::-;13969:33;;14014:15;14031:23;14056:12;14072:46;14084:7;14093:4;14099:5;14106:11;14072;:46::i;:::-;14013:105;;-1:-1:-1;14013:105:0;-1:-1:-1;14013:105:0;-1:-1:-1;14169:15:0;;-1:-1:-1;14186:4:0;;-1:-1:-1;14192:5:0;;-1:-1:-1;;;;;13735:471:0;;;;;;;:::o;1095:136::-;1153:7;1180:43;1184:1;1187;1180:43;;;;;;;;;;;;;;;;;:3;:43::i;908:179::-;966:7;;998:5;1002:1;998;:5;:::i;:::-;986:17;;1027:1;1022;:6;;1014:46;;;;-1:-1:-1;;;1014:46:0;;8689:2:1;1014:46:0;;;8671:21:1;8728:2;8708:18;;;8701:30;8767:29;8747:18;;;8740:57;8814:18;;1014:46:0;8661:177:1;12930:212:0;12983:19;13006:10;:8;:10::i;:::-;12983:33;-1:-1:-1;13027:13:0;13043:22;:5;12983:33;13043:9;:22::i;:::-;13117:4;13101:22;;;;:7;:22;;;;;;13027:38;;-1:-1:-1;13101:33:0;;13027:38;13101:26;:33::i;:::-;13092:4;13076:22;;;;:7;:22;;;;;:58;-1:-1:-1;;;12930:212:0:o;13150:147::-;13228:7;;:17;;13240:4;13228:11;:17::i;:::-;13218:7;:27;13269:10;;:20;;13284:4;13269:14;:20::i;:::-;13256:10;:33;-1:-1:-1;;13150:147:0:o;14214:351::-;14307:7;;;;14360:28;14384:3;14360:19;:7;14372:6;14360:11;:19::i;:::-;:23;;:28::i;:::-;14345:43;-1:-1:-1;14399:13:0;14415:29;14440:3;14415:20;:7;14427;14415:11;:20::i;:29::-;14399:45;-1:-1:-1;14455:23:0;14481:28;14399:45;14481:17;:7;14493:4;14481:11;:17::i;:::-;:21;;:28::i;:::-;14455:54;14545:4;;-1:-1:-1;14551:5:0;;-1:-1:-1;14214:351:0;;-1:-1:-1;;;;;14214:351:0:o;14573:409::-;14683:7;;;;14739:24;:7;14751:11;14739;:24::i;:::-;14721:42;-1:-1:-1;14774:12:0;14789:21;:4;14798:11;14789:8;:21::i;:::-;14774:36;-1:-1:-1;14821:13:0;14837:22;:5;14847:11;14837:9;:22::i;:::-;14821:38;-1:-1:-1;14870:23:0;14896:28;14821:38;14896:17;:7;14908:4;14896:11;:17::i;:28::-;14943:7;;;;-1:-1:-1;14969:4:0;;-1:-1:-1;14573:409:0;;-1:-1:-1;;;;;;;14573:409:0:o;14:134:1:-;82:20;;111:31;82:20;111:31;:::i;:::-;63:85;;;:::o;153:257::-;212:6;265:2;253:9;244:7;240:23;236:32;233:2;;;286:6;278;271:22;233:2;330:9;317:23;349:31;374:5;349:31;:::i;415:261::-;485:6;538:2;526:9;517:7;513:23;509:32;506:2;;;559:6;551;544:22;506:2;596:9;590:16;615:31;640:5;615:31;:::i;951:398::-;1019:6;1027;1080:2;1068:9;1059:7;1055:23;1051:32;1048:2;;;1101:6;1093;1086:22;1048:2;1145:9;1132:23;1164:31;1189:5;1164:31;:::i;:::-;1214:5;-1:-1:-1;1271:2:1;1256:18;;1243:32;1284:33;1243:32;1284:33;:::i;:::-;1336:7;1326:17;;;1038:311;;;;;:::o;1354:466::-;1431:6;1439;1447;1500:2;1488:9;1479:7;1475:23;1471:32;1468:2;;;1521:6;1513;1506:22;1468:2;1565:9;1552:23;1584:31;1609:5;1584:31;:::i;:::-;1634:5;-1:-1:-1;1691:2:1;1676:18;;1663:32;1704:33;1663:32;1704:33;:::i;:::-;1458:362;;1756:7;;-1:-1:-1;;;1810:2:1;1795:18;;;;1782:32;;1458:362::o;1825:325::-;1893:6;1901;1954:2;1942:9;1933:7;1929:23;1925:32;1922:2;;;1975:6;1967;1960:22;1922:2;2019:9;2006:23;2038:31;2063:5;2038:31;:::i;:::-;2088:5;2140:2;2125:18;;;;2112:32;;-1:-1:-1;;;1912:238:1:o;2155:1177::-;2239:6;2270:2;2313;2301:9;2292:7;2288:23;2284:32;2281:2;;;2334:6;2326;2319:22;2281:2;2379:9;2366:23;2408:18;2449:2;2441:6;2438:14;2435:2;;;2470:6;2462;2455:22;2435:2;2513:6;2502:9;2498:22;2488:32;;2558:7;2551:4;2547:2;2543:13;2539:27;2529:2;;2585:6;2577;2570:22;2529:2;2626;2613:16;2648:2;2644;2641:10;2638:2;;;2654:18;;:::i;:::-;2700:2;2697:1;2693:10;2732:2;2726:9;2795:2;2791:7;2786:2;2782;2778:11;2774:25;2766:6;2762:38;2850:6;2838:10;2835:22;2830:2;2818:10;2815:18;2812:46;2809:2;;;2861:18;;:::i;:::-;2897:2;2890:22;2947:18;;;2981:15;;;;-1:-1:-1;3016:11:1;;;3046;;;3042:20;;3039:33;-1:-1:-1;3036:2:1;;;3090:6;3082;3075:22;3036:2;3117:6;3108:15;;3132:169;3146:2;3143:1;3140:9;3132:169;;;3203:23;3222:3;3203:23;:::i;:::-;3191:36;;3164:1;3157:9;;;;;3247:12;;;;3279;;3132:169;;;-1:-1:-1;3320:6:1;2250:1082;-1:-1:-1;;;;;;;;2250:1082:1:o;3337:251::-;3393:6;3446:2;3434:9;3425:7;3421:23;3417:32;3414:2;;;3467:6;3459;3452:22;3414:2;3511:9;3498:23;3530:28;3552:5;3530:28;:::i;3593:255::-;3660:6;3713:2;3701:9;3692:7;3688:23;3684:32;3681:2;;;3734:6;3726;3719:22;3681:2;3771:9;3765:16;3790:28;3812:5;3790:28;:::i;3853:190::-;3912:6;3965:2;3953:9;3944:7;3940:23;3936:32;3933:2;;;3986:6;3978;3971:22;3933:2;-1:-1:-1;4014:23:1;;3923:120;-1:-1:-1;3923:120:1:o;4048:326::-;4125:6;4133;4141;4194:2;4182:9;4173:7;4169:23;4165:32;4162:2;;;4215:6;4207;4200:22;4162:2;-1:-1:-1;;4243:23:1;;;4313:2;4298:18;;4285:32;;-1:-1:-1;4364:2:1;4349:18;;;4336:32;;4152:222;-1:-1:-1;4152:222:1:o;4379:316::-;4467:6;4475;4483;4536:2;4524:9;4515:7;4511:23;4507:32;4504:2;;;4557:6;4549;4542:22;4504:2;4591:9;4585:16;4575:26;;4641:2;4630:9;4626:18;4620:25;4610:35;;4685:2;4674:9;4670:18;4664:25;4654:35;;4494:201;;;;;:::o;6300:603::-;6412:4;6441:2;6470;6459:9;6452:21;6502:6;6496:13;6545:6;6540:2;6529:9;6525:18;6518:34;6570:4;6583:140;6597:6;6594:1;6591:13;6583:140;;;6692:14;;;6688:23;;6682:30;6658:17;;;6677:2;6654:26;6647:66;6612:10;;6583:140;;;6741:6;6738:1;6735:13;6732:2;;;6811:4;6806:2;6797:6;6786:9;6782:22;6778:31;6771:45;6732:2;-1:-1:-1;6887:2:1;6866:15;-1:-1:-1;;6862:29:1;6847:45;;;;6894:2;6843:54;;6421:482;-1:-1:-1;;;6421:482:1:o;10014:356::-;10216:2;10198:21;;;10235:18;;;10228:30;10294:34;10289:2;10274:18;;10267:62;10361:2;10346:18;;10188:182::o;13135:983::-;13397:4;13445:3;13434:9;13430:19;13476:6;13465:9;13458:25;13502:2;13540:6;13535:2;13524:9;13520:18;13513:34;13583:3;13578:2;13567:9;13563:18;13556:31;13607:6;13642;13636:13;13673:6;13665;13658:22;13711:3;13700:9;13696:19;13689:26;;13750:2;13742:6;13738:15;13724:29;;13771:4;13784:195;13798:6;13795:1;13792:13;13784:195;;;13863:13;;-1:-1:-1;;;;;13859:39:1;13847:52;;13954:15;;;;13919:12;;;;13895:1;13813:9;13784:195;;;-1:-1:-1;;;;;;;14035:32:1;;;;14030:2;14015:18;;14008:60;-1:-1:-1;;;14099:3:1;14084:19;14077:35;13996:3;13406:712;-1:-1:-1;;;13406:712:1:o;14312:128::-;14352:3;14383:1;14379:6;14376:1;14373:13;14370:2;;;14389:18;;:::i;:::-;-1:-1:-1;14425:9:1;;14360:80::o;14445:217::-;14485:1;14511;14501:2;;-1:-1:-1;;;14536:31:1;;14590:4;14587:1;14580:15;14618:4;14543:1;14608:15;14501:2;-1:-1:-1;14647:9:1;;14491:171::o;14667:168::-;14707:7;14773:1;14769;14765:6;14761:14;14758:1;14755:21;14750:1;14743:9;14736:17;14732:45;14729:2;;;14780:18;;:::i;:::-;-1:-1:-1;14820:9:1;;14719:116::o;14840:125::-;14880:4;14908:1;14905;14902:8;14899:2;;;14913:18;;:::i;:::-;-1:-1:-1;14950:9:1;;14889:76::o;14970:135::-;15009:3;-1:-1:-1;;15030:17:1;;15027:2;;;15050:18;;:::i;:::-;-1:-1:-1;15097:1:1;15086:13;;15017:88::o;15110:127::-;15171:10;15166:3;15162:20;15159:1;15152:31;15202:4;15199:1;15192:15;15226:4;15223:1;15216:15;15242:127;15303:10;15298:3;15294:20;15291:1;15284:31;15334:4;15331:1;15324:15;15358:4;15355:1;15348:15;15374:131;-1:-1:-1;;;;;15449:31:1;;15439:42;;15429:2;;15495:1;15492;15485:12;15510:118;15596:5;15589:13;15582:21;15575:5;15572:32;15562:2;;15618:1;15615;15608:12

Swarm Source

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