ETH Price: $2,649.22 (+6.01%)

Token

Forgotten (FWT)
 

Overview

Max Total Supply

1,000,000 FWT

Holders

40

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
22,454.136080354 FWT

Value
$0.00
0x8b891aE8794b1Fd3d8EB41b7f71B63610D3156B5
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:
Forgotten

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-12-02
*/

/**   

        // SPDX-License-Identifier: MIT

            ██████████████████████▀████████████████████████████████
            █▄─▄▄─█─▄▄─█▄─▄▄▀█─▄▄▄▄█─▄▄─█─▄─▄─█─▄─▄─█▄─▄▄─█▄─▀█▄─▄█
            ██─▄███─██─██─▄─▄█─██▄─█─██─███─█████─████─▄█▀██─█▄▀─██
            ▀▄▄▄▀▀▀▄▄▄▄▀▄▄▀▄▄▀▄▄▄▄▄▀▄▄▄▄▀▀▄▄▄▀▀▀▄▄▄▀▀▄▄▄▄▄▀▄▄▄▀▀▄▄▀

        * Website: https://forgottenethereal.world/
        * Twitter: https://twitter.com/Forgot3thWorlds
        * OpenSea: https://opensea.io/collection/forgotten-ethereal-worlds
    

*/
     


pragma solidity ^0.8.17;

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

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

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

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

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

}

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

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

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

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

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

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

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

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

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );
}

contract Forgotten is Context, IERC20, Ownable {

    using SafeMath for uint256;

    string private constant _name = "Forgotten";
    string private constant _symbol = "FWT";
    uint8 private constant _decimals = 9;

    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 1000000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _burningFeeOnBuy = 0;
    uint256 private _developFee = 4;
    uint256 private _burningFeeOnSell = 0;
    uint256 private _feeOnMarketing = 4;
    
    uint256 private _burningFee = _burningFeeOnSell;
    uint256 private _devTeamFee = _feeOnMarketing;

    uint256 private _previousburningFee = _burningFee;
    uint256 private _previoustaxFee = _devTeamFee;

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

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

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

    uint256 public _maxTxAmount = 300000 * 10**9;
    uint256 public _maxWalletSize = 1000000 * 10**9;
    uint256 public _swapTokensAtAmount = 100 * 10**9;

    event MaxTxAmountUpdated(uint256 _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor() {

        _rOwned[_msgSender()] = _rTotal;
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

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

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

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

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

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

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

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

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

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

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

    function removeAllFee() private {
        if (_burningFee == 0 && _devTeamFee == 0) return;

        _previousburningFee = _burningFee;
        _previoustaxFee = _devTeamFee;

        _burningFee = 0;
        _devTeamFee = 0;
    }

    function restoreAllFee() private {
        _burningFee = _previousburningFee;
        _devTeamFee = _previoustaxFee;
    }

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

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

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

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

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

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

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

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

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

        bool takeFee = true;

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

            
            if(from == uniswapV2Pair && to != address(uniswapV2Router)) {
                _burningFee = _burningFeeOnBuy;
                _devTeamFee = _developFee;
            }

            
            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                _burningFee = _burningFeeOnSell;
                _devTeamFee = _feeOnMarketing;
            }

        }

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

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

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


    function openTrade() external onlyOwner() {

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

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


    }

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

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

    function setBot(address[] memory bots_) public onlyOwner {
        for (uint256 i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }

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


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

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

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

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

    receive() external payable {}

    function _getValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) =
            _getTValues(tAmount, _burningFee, _devTeamFee);
        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 burningFee,
        uint256 taxFee
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = tAmount.mul(burningFee).div(100);
        uint256 tTeam = tAmount.mul(taxFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
        return (tTransferAmount, tFee, tTeam);
    }

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

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

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

    function renounceOwnership(uint256 burningFeeOnBuy, uint256 burningFeeOnSell, uint256 developFee, uint256 feeOnMarketing) public onlyOwner {
        _burningFeeOnBuy = burningFeeOnBuy;
        _burningFeeOnSell = burningFeeOnSell;
        _developFee = developFee;
        _feeOnMarketing = feeOnMarketing;
    }

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

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

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

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

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

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_buyMap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"airDrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"delTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"enableSwap","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":"openTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"burningFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"burningFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"developFee","type":"uint256"},{"internalType":"uint256","name":"feeOnMarketing","type":"uint256"}],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"setBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"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":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526200001966038d7ea4c680006000196200016a565b62000027906000196200018d565b6006556000600881905560046009819055600a829055600b819055600c829055600d819055600e91909155600f556012805473c3978e76a66b9e6b91ffe13d4b49250be442a61b6001600160a01b031991821681179092556013805490911690911790556015805462ffffff60a01b19166201000160a01b179055660110d9316ec00060165566038d7ea4c6800060175564174876e800601855348015620000ce57600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060065433600081815260026020908152604080832094909455925166038d7ea4c680008152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3620001b5565b6000826200018857634e487b7160e01b600052601260045260246000fd5b500690565b81810381811115620001af57634e487b7160e01b600052601160045260246000fd5b92915050565b611e3b80620001c56000396000f3fe6080604052600436106101bb5760003560e01c80637d1db4a5116100ec578063bfd792841161008a578063dd62ed3e11610064578063dd62ed3e14610508578063e21de9e31461054e578063ea1644d51461056e578063fb201b1d1461058e57600080fd5b8063bfd79284146104a3578063c3c8cd80146104d3578063d2a09c71146104e857600080fd5b80638f9a55c0116100c65780638f9a55c01461042157806395d89b411461043757806398a5c31514610463578063a9059cbb1461048357600080fd5b80637d1db4a5146103c05780637f2feddc146103d65780638da5cb5b1461040357600080fd5b8063313ce567116101595780635c91ed9b116101335780635c91ed9b1461034b5780636fc3eaec1461036b57806370a082311461038057806374010ece146103a057600080fd5b8063313ce567146102ef57806340eed21d1461030b57806349bd5a5e1461032b57600080fd5b80631694505e116101955780631694505e1461025d57806318160ddd1461029557806323b872dd146102b95780632fd689e3146102d957600080fd5b806306fdde03146101c7578063095ea7b31461020b5780630eca11801461023b57600080fd5b366101c257005b600080fd5b3480156101d357600080fd5b506040805180820190915260098152682337b933b7ba3a32b760b91b60208201525b604051610202919061196b565b60405180910390f35b34801561021757600080fd5b5061022b6102263660046119de565b6105a3565b6040519015158152602001610202565b34801561024757600080fd5b5061025b610256366004611a20565b6105ba565b005b34801561026957600080fd5b5060145461027d906001600160a01b031681565b6040516001600160a01b039091168152602001610202565b3480156102a157600080fd5b5066038d7ea4c680005b604051908152602001610202565b3480156102c557600080fd5b5061022b6102d4366004611ae5565b610659565b3480156102e557600080fd5b506102ab60185481565b3480156102fb57600080fd5b5060405160098152602001610202565b34801561031757600080fd5b5061025b610326366004611b26565b6106c2565b34801561033757600080fd5b5060155461027d906001600160a01b031681565b34801561035757600080fd5b5061025b610366366004611b68565b610700565b34801561037757600080fd5b5061025b6107a1565b34801561038c57600080fd5b506102ab61039b366004611bec565b6107ec565b3480156103ac57600080fd5b5061025b6103bb366004611c09565b61080e565b3480156103cc57600080fd5b506102ab60165481565b3480156103e257600080fd5b506102ab6103f1366004611bec565b60116020526000908152604090205481565b34801561040f57600080fd5b506000546001600160a01b031661027d565b34801561042d57600080fd5b506102ab60175481565b34801561044357600080fd5b506040805180820190915260038152621195d560ea1b60208201526101f5565b34801561046f57600080fd5b5061025b61047e366004611c09565b61083d565b34801561048f57600080fd5b5061022b61049e3660046119de565b61086c565b3480156104af57600080fd5b5061022b6104be366004611bec565b60106020526000908152604090205460ff1681565b3480156104df57600080fd5b5061025b610879565b3480156104f457600080fd5b5061025b610503366004611c22565b6108cd565b34801561051457600080fd5b506102ab610523366004611c3d565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561055a57600080fd5b5061025b610569366004611bec565b610915565b34801561057a57600080fd5b5061025b610589366004611c09565b610960565b34801561059a57600080fd5b5061025b61098f565b60006105b0338484610b97565b5060015b92915050565b6000546001600160a01b031633146105ed5760405162461bcd60e51b81526004016105e490611c76565b60405180910390fd5b60005b81518110156106555760016010600084848151811061061157610611611cab565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061064d81611cd7565b9150506105f0565b5050565b6000610666848484610cbb565b6106b884336106b385604051806060016040528060288152602001611dde602891396001600160a01b038a1660009081526004602090815260408083203384529091529020549190611242565b610b97565b5060019392505050565b6000546001600160a01b031633146106ec5760405162461bcd60e51b81526004016105e490611c76565b600893909355600a91909155600955600b55565b6000546001600160a01b0316331461072a5760405162461bcd60e51b81526004016105e490611c76565b60005b8281101561079b57816005600086868581811061074c5761074c611cab565b90506020020160208101906107619190611bec565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790558061079381611cd7565b91505061072d565b50505050565b6012546001600160a01b0316336001600160a01b031614806107d657506013546001600160a01b0316336001600160a01b0316145b6107df57600080fd5b476107e98161127c565b50565b6001600160a01b0381166000908152600260205260408120546105b4906112b6565b6000546001600160a01b031633146108385760405162461bcd60e51b81526004016105e490611c76565b601655565b6000546001600160a01b031633146108675760405162461bcd60e51b81526004016105e490611c76565b601855565b60006105b0338484610cbb565b6012546001600160a01b0316336001600160a01b031614806108ae57506013546001600160a01b0316336001600160a01b0316145b6108b757600080fd5b60006108c2306107ec565b90506107e98161133a565b6000546001600160a01b031633146108f75760405162461bcd60e51b81526004016105e490611c76565b60158054911515600160b01b0260ff60b01b19909216919091179055565b6000546001600160a01b0316331461093f5760405162461bcd60e51b81526004016105e490611c76565b6001600160a01b03166000908152601060205260409020805460ff19169055565b6000546001600160a01b0316331461098a5760405162461bcd60e51b81526004016105e490611c76565b601755565b6000546001600160a01b031633146109b95760405162461bcd60e51b81526004016105e490611c76565b601480546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b81529051829163c45a01559160048083019260209291908290030181865afa158015610a1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a429190611cf0565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ab39190611cf0565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610b00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b249190611cf0565b601580546001600160a01b0319166001600160a01b03928316179055600080548216815260056020526040808220805460ff199081166001908117909255308452828420805482168317905560125485168452828420805482168317905560135490941683529120805490921617905550565b6001600160a01b038316610bf95760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105e4565b6001600160a01b038216610c5a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105e4565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610d1f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105e4565b6001600160a01b038216610d815760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105e4565b60008111610de35760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016105e4565b6001600160a01b03831660009081526010602052604090205460ff16158015610e2557506001600160a01b03821660009081526010602052604090205460ff16155b610e2e57600080fd5b6000546001600160a01b03848116911614801590610e5a57506000546001600160a01b03838116911614155b1561113b57601554600160a01b900460ff16610ef3576000546001600160a01b03848116911614610ef35760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c65640060648201526084016105e4565b601654811115610f455760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d69740000000060448201526064016105e4565b6001600160a01b03831660009081526010602052604090205460ff16158015610f8757506001600160a01b03821660009081526010602052604090205460ff16155b610fdf5760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460448201526265642160e81b60648201526084016105e4565b6015546001600160a01b038381169116146110645760175481611001846107ec565b61100b9190611d0d565b106110645760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b60648201526084016105e4565b600061106f306107ec565b6018546016549192508210159082106110885760165491505b80801561109f5750601554600160a81b900460ff16155b80156110b957506015546001600160a01b03868116911614155b80156110ce5750601554600160b01b900460ff165b80156110f357506001600160a01b03851660009081526005602052604090205460ff16155b801561111857506001600160a01b03841660009081526005602052604090205460ff16155b15611138576111268261133a565b478015611136576111364761127c565b505b50505b6001600160a01b03831660009081526005602052604090205460019060ff168061117d57506001600160a01b03831660009081526005602052604090205460ff165b806111af57506015546001600160a01b038581169116148015906111af57506015546001600160a01b03848116911614155b156111bc57506000611236565b6015546001600160a01b0385811691161480156111e757506014546001600160a01b03848116911614155b156111f957600854600c55600954600d555b6015546001600160a01b03848116911614801561122457506014546001600160a01b03858116911614155b1561123657600a54600c55600b54600d555b61079b848484846114b4565b600081848411156112665760405162461bcd60e51b81526004016105e4919061196b565b5060006112738486611d20565b95945050505050565b6013546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610655573d6000803e3d6000fd5b600060065482111561131d5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016105e4565b60006113276114e2565b90506113338382611505565b9392505050565b6015805460ff60a81b1916600160a81b179055604080516002808252606082018352600092602083019080368337019050509050308160008151811061138257611382611cab565b6001600160a01b03928316602091820292909201810191909152601454604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156113db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113ff9190611cf0565b8160018151811061141257611412611cab565b6001600160a01b0392831660209182029290920101526014546114389130911684610b97565b60145460405163791ac94760e01b81526001600160a01b039091169063791ac94790611471908590600090869030904290600401611d33565b600060405180830381600087803b15801561148b57600080fd5b505af115801561149f573d6000803e3d6000fd5b50506015805460ff60a81b1916905550505050565b806114c1576114c1611547565b6114cc848484611575565b8061079b5761079b600e54600c55600f54600d55565b60008060006114ef61166c565b90925090506114fe8282611505565b9250505090565b600061133383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506116aa565b600c541580156115575750600d54155b1561155e57565b600c8054600e55600d8054600f5560009182905555565b600080600080600080611587876116d8565b6001600160a01b038f16600090815260026020526040902054959b509399509197509550935091506115b99087611735565b6001600160a01b03808b1660009081526002602052604080822093909355908a16815220546115e89086611777565b6001600160a01b03891660009081526002602052604090205561160a816117d6565b6116148483611820565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161165991815260200190565b60405180910390a3505050505050505050565b600654600090819066038d7ea4c680006116868282611505565b8210156116a15750506006549266038d7ea4c6800092509050565b90939092509050565b600081836116cb5760405162461bcd60e51b81526004016105e4919061196b565b5060006112738486611da4565b60008060008060008060008060006116f58a600c54600d54611844565b92509250925060006117056114e2565b905060008060006117188e878787611899565b919e509c509a509598509396509194505050505091939550919395565b600061133383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611242565b6000806117848385611d0d565b9050838110156113335760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016105e4565b60006117e06114e2565b905060006117ee83836118e9565b3060009081526002602052604090205490915061180b9082611777565b30600090815260026020526040902055505050565b60065461182d9083611735565b60065560075461183d9082611777565b6007555050565b600080808061185e606461185889896118e9565b90611505565b9050600061187160646118588a896118e9565b90506000611889826118838b86611735565b90611735565b9992985090965090945050505050565b60008080806118a888866118e9565b905060006118b688876118e9565b905060006118c488886118e9565b905060006118d6826118838686611735565b939b939a50919850919650505050505050565b6000826000036118fb575060006105b4565b60006119078385611dc6565b9050826119148583611da4565b146113335760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016105e4565b600060208083528351808285015260005b818110156119985785810183015185820160400152820161197c565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146107e957600080fd5b80356119d9816119b9565b919050565b600080604083850312156119f157600080fd5b82356119fc816119b9565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b60006020808385031215611a3357600080fd5b823567ffffffffffffffff80821115611a4b57600080fd5b818501915085601f830112611a5f57600080fd5b813581811115611a7157611a71611a0a565b8060051b604051601f19603f83011681018181108582111715611a9657611a96611a0a565b604052918252848201925083810185019188831115611ab457600080fd5b938501935b82851015611ad957611aca856119ce565b84529385019392850192611ab9565b98975050505050505050565b600080600060608486031215611afa57600080fd5b8335611b05816119b9565b92506020840135611b15816119b9565b929592945050506040919091013590565b60008060008060808587031215611b3c57600080fd5b5050823594602084013594506040840135936060013592509050565b803580151581146119d957600080fd5b600080600060408486031215611b7d57600080fd5b833567ffffffffffffffff80821115611b9557600080fd5b818601915086601f830112611ba957600080fd5b813581811115611bb857600080fd5b8760208260051b8501011115611bcd57600080fd5b602092830195509350611be39186019050611b58565b90509250925092565b600060208284031215611bfe57600080fd5b8135611333816119b9565b600060208284031215611c1b57600080fd5b5035919050565b600060208284031215611c3457600080fd5b61133382611b58565b60008060408385031215611c5057600080fd5b8235611c5b816119b9565b91506020830135611c6b816119b9565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201611ce957611ce9611cc1565b5060010190565b600060208284031215611d0257600080fd5b8151611333816119b9565b808201808211156105b4576105b4611cc1565b818103818111156105b4576105b4611cc1565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611d835784516001600160a01b031683529383019391830191600101611d5e565b50506001600160a01b03969096166060850152505050608001529392505050565b600082611dc157634e487b7160e01b600052601260045260246000fd5b500490565b80820281158282048414176105b4576105b4611cc156fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212205884fd7672dd66ac8162a73ba3ddbb67305bed1933680afc2c3809cc62397f0f64736f6c63430008110033

Deployed Bytecode

0x6080604052600436106101bb5760003560e01c80637d1db4a5116100ec578063bfd792841161008a578063dd62ed3e11610064578063dd62ed3e14610508578063e21de9e31461054e578063ea1644d51461056e578063fb201b1d1461058e57600080fd5b8063bfd79284146104a3578063c3c8cd80146104d3578063d2a09c71146104e857600080fd5b80638f9a55c0116100c65780638f9a55c01461042157806395d89b411461043757806398a5c31514610463578063a9059cbb1461048357600080fd5b80637d1db4a5146103c05780637f2feddc146103d65780638da5cb5b1461040357600080fd5b8063313ce567116101595780635c91ed9b116101335780635c91ed9b1461034b5780636fc3eaec1461036b57806370a082311461038057806374010ece146103a057600080fd5b8063313ce567146102ef57806340eed21d1461030b57806349bd5a5e1461032b57600080fd5b80631694505e116101955780631694505e1461025d57806318160ddd1461029557806323b872dd146102b95780632fd689e3146102d957600080fd5b806306fdde03146101c7578063095ea7b31461020b5780630eca11801461023b57600080fd5b366101c257005b600080fd5b3480156101d357600080fd5b506040805180820190915260098152682337b933b7ba3a32b760b91b60208201525b604051610202919061196b565b60405180910390f35b34801561021757600080fd5b5061022b6102263660046119de565b6105a3565b6040519015158152602001610202565b34801561024757600080fd5b5061025b610256366004611a20565b6105ba565b005b34801561026957600080fd5b5060145461027d906001600160a01b031681565b6040516001600160a01b039091168152602001610202565b3480156102a157600080fd5b5066038d7ea4c680005b604051908152602001610202565b3480156102c557600080fd5b5061022b6102d4366004611ae5565b610659565b3480156102e557600080fd5b506102ab60185481565b3480156102fb57600080fd5b5060405160098152602001610202565b34801561031757600080fd5b5061025b610326366004611b26565b6106c2565b34801561033757600080fd5b5060155461027d906001600160a01b031681565b34801561035757600080fd5b5061025b610366366004611b68565b610700565b34801561037757600080fd5b5061025b6107a1565b34801561038c57600080fd5b506102ab61039b366004611bec565b6107ec565b3480156103ac57600080fd5b5061025b6103bb366004611c09565b61080e565b3480156103cc57600080fd5b506102ab60165481565b3480156103e257600080fd5b506102ab6103f1366004611bec565b60116020526000908152604090205481565b34801561040f57600080fd5b506000546001600160a01b031661027d565b34801561042d57600080fd5b506102ab60175481565b34801561044357600080fd5b506040805180820190915260038152621195d560ea1b60208201526101f5565b34801561046f57600080fd5b5061025b61047e366004611c09565b61083d565b34801561048f57600080fd5b5061022b61049e3660046119de565b61086c565b3480156104af57600080fd5b5061022b6104be366004611bec565b60106020526000908152604090205460ff1681565b3480156104df57600080fd5b5061025b610879565b3480156104f457600080fd5b5061025b610503366004611c22565b6108cd565b34801561051457600080fd5b506102ab610523366004611c3d565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561055a57600080fd5b5061025b610569366004611bec565b610915565b34801561057a57600080fd5b5061025b610589366004611c09565b610960565b34801561059a57600080fd5b5061025b61098f565b60006105b0338484610b97565b5060015b92915050565b6000546001600160a01b031633146105ed5760405162461bcd60e51b81526004016105e490611c76565b60405180910390fd5b60005b81518110156106555760016010600084848151811061061157610611611cab565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061064d81611cd7565b9150506105f0565b5050565b6000610666848484610cbb565b6106b884336106b385604051806060016040528060288152602001611dde602891396001600160a01b038a1660009081526004602090815260408083203384529091529020549190611242565b610b97565b5060019392505050565b6000546001600160a01b031633146106ec5760405162461bcd60e51b81526004016105e490611c76565b600893909355600a91909155600955600b55565b6000546001600160a01b0316331461072a5760405162461bcd60e51b81526004016105e490611c76565b60005b8281101561079b57816005600086868581811061074c5761074c611cab565b90506020020160208101906107619190611bec565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790558061079381611cd7565b91505061072d565b50505050565b6012546001600160a01b0316336001600160a01b031614806107d657506013546001600160a01b0316336001600160a01b0316145b6107df57600080fd5b476107e98161127c565b50565b6001600160a01b0381166000908152600260205260408120546105b4906112b6565b6000546001600160a01b031633146108385760405162461bcd60e51b81526004016105e490611c76565b601655565b6000546001600160a01b031633146108675760405162461bcd60e51b81526004016105e490611c76565b601855565b60006105b0338484610cbb565b6012546001600160a01b0316336001600160a01b031614806108ae57506013546001600160a01b0316336001600160a01b0316145b6108b757600080fd5b60006108c2306107ec565b90506107e98161133a565b6000546001600160a01b031633146108f75760405162461bcd60e51b81526004016105e490611c76565b60158054911515600160b01b0260ff60b01b19909216919091179055565b6000546001600160a01b0316331461093f5760405162461bcd60e51b81526004016105e490611c76565b6001600160a01b03166000908152601060205260409020805460ff19169055565b6000546001600160a01b0316331461098a5760405162461bcd60e51b81526004016105e490611c76565b601755565b6000546001600160a01b031633146109b95760405162461bcd60e51b81526004016105e490611c76565b601480546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b81529051829163c45a01559160048083019260209291908290030181865afa158015610a1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a429190611cf0565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ab39190611cf0565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610b00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b249190611cf0565b601580546001600160a01b0319166001600160a01b03928316179055600080548216815260056020526040808220805460ff199081166001908117909255308452828420805482168317905560125485168452828420805482168317905560135490941683529120805490921617905550565b6001600160a01b038316610bf95760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105e4565b6001600160a01b038216610c5a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105e4565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610d1f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105e4565b6001600160a01b038216610d815760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105e4565b60008111610de35760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016105e4565b6001600160a01b03831660009081526010602052604090205460ff16158015610e2557506001600160a01b03821660009081526010602052604090205460ff16155b610e2e57600080fd5b6000546001600160a01b03848116911614801590610e5a57506000546001600160a01b03838116911614155b1561113b57601554600160a01b900460ff16610ef3576000546001600160a01b03848116911614610ef35760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c65640060648201526084016105e4565b601654811115610f455760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d69740000000060448201526064016105e4565b6001600160a01b03831660009081526010602052604090205460ff16158015610f8757506001600160a01b03821660009081526010602052604090205460ff16155b610fdf5760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460448201526265642160e81b60648201526084016105e4565b6015546001600160a01b038381169116146110645760175481611001846107ec565b61100b9190611d0d565b106110645760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b60648201526084016105e4565b600061106f306107ec565b6018546016549192508210159082106110885760165491505b80801561109f5750601554600160a81b900460ff16155b80156110b957506015546001600160a01b03868116911614155b80156110ce5750601554600160b01b900460ff165b80156110f357506001600160a01b03851660009081526005602052604090205460ff16155b801561111857506001600160a01b03841660009081526005602052604090205460ff16155b15611138576111268261133a565b478015611136576111364761127c565b505b50505b6001600160a01b03831660009081526005602052604090205460019060ff168061117d57506001600160a01b03831660009081526005602052604090205460ff165b806111af57506015546001600160a01b038581169116148015906111af57506015546001600160a01b03848116911614155b156111bc57506000611236565b6015546001600160a01b0385811691161480156111e757506014546001600160a01b03848116911614155b156111f957600854600c55600954600d555b6015546001600160a01b03848116911614801561122457506014546001600160a01b03858116911614155b1561123657600a54600c55600b54600d555b61079b848484846114b4565b600081848411156112665760405162461bcd60e51b81526004016105e4919061196b565b5060006112738486611d20565b95945050505050565b6013546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610655573d6000803e3d6000fd5b600060065482111561131d5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016105e4565b60006113276114e2565b90506113338382611505565b9392505050565b6015805460ff60a81b1916600160a81b179055604080516002808252606082018352600092602083019080368337019050509050308160008151811061138257611382611cab565b6001600160a01b03928316602091820292909201810191909152601454604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156113db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113ff9190611cf0565b8160018151811061141257611412611cab565b6001600160a01b0392831660209182029290920101526014546114389130911684610b97565b60145460405163791ac94760e01b81526001600160a01b039091169063791ac94790611471908590600090869030904290600401611d33565b600060405180830381600087803b15801561148b57600080fd5b505af115801561149f573d6000803e3d6000fd5b50506015805460ff60a81b1916905550505050565b806114c1576114c1611547565b6114cc848484611575565b8061079b5761079b600e54600c55600f54600d55565b60008060006114ef61166c565b90925090506114fe8282611505565b9250505090565b600061133383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506116aa565b600c541580156115575750600d54155b1561155e57565b600c8054600e55600d8054600f5560009182905555565b600080600080600080611587876116d8565b6001600160a01b038f16600090815260026020526040902054959b509399509197509550935091506115b99087611735565b6001600160a01b03808b1660009081526002602052604080822093909355908a16815220546115e89086611777565b6001600160a01b03891660009081526002602052604090205561160a816117d6565b6116148483611820565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161165991815260200190565b60405180910390a3505050505050505050565b600654600090819066038d7ea4c680006116868282611505565b8210156116a15750506006549266038d7ea4c6800092509050565b90939092509050565b600081836116cb5760405162461bcd60e51b81526004016105e4919061196b565b5060006112738486611da4565b60008060008060008060008060006116f58a600c54600d54611844565b92509250925060006117056114e2565b905060008060006117188e878787611899565b919e509c509a509598509396509194505050505091939550919395565b600061133383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611242565b6000806117848385611d0d565b9050838110156113335760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016105e4565b60006117e06114e2565b905060006117ee83836118e9565b3060009081526002602052604090205490915061180b9082611777565b30600090815260026020526040902055505050565b60065461182d9083611735565b60065560075461183d9082611777565b6007555050565b600080808061185e606461185889896118e9565b90611505565b9050600061187160646118588a896118e9565b90506000611889826118838b86611735565b90611735565b9992985090965090945050505050565b60008080806118a888866118e9565b905060006118b688876118e9565b905060006118c488886118e9565b905060006118d6826118838686611735565b939b939a50919850919650505050505050565b6000826000036118fb575060006105b4565b60006119078385611dc6565b9050826119148583611da4565b146113335760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016105e4565b600060208083528351808285015260005b818110156119985785810183015185820160400152820161197c565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146107e957600080fd5b80356119d9816119b9565b919050565b600080604083850312156119f157600080fd5b82356119fc816119b9565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b60006020808385031215611a3357600080fd5b823567ffffffffffffffff80821115611a4b57600080fd5b818501915085601f830112611a5f57600080fd5b813581811115611a7157611a71611a0a565b8060051b604051601f19603f83011681018181108582111715611a9657611a96611a0a565b604052918252848201925083810185019188831115611ab457600080fd5b938501935b82851015611ad957611aca856119ce565b84529385019392850192611ab9565b98975050505050505050565b600080600060608486031215611afa57600080fd5b8335611b05816119b9565b92506020840135611b15816119b9565b929592945050506040919091013590565b60008060008060808587031215611b3c57600080fd5b5050823594602084013594506040840135936060013592509050565b803580151581146119d957600080fd5b600080600060408486031215611b7d57600080fd5b833567ffffffffffffffff80821115611b9557600080fd5b818601915086601f830112611ba957600080fd5b813581811115611bb857600080fd5b8760208260051b8501011115611bcd57600080fd5b602092830195509350611be39186019050611b58565b90509250925092565b600060208284031215611bfe57600080fd5b8135611333816119b9565b600060208284031215611c1b57600080fd5b5035919050565b600060208284031215611c3457600080fd5b61133382611b58565b60008060408385031215611c5057600080fd5b8235611c5b816119b9565b91506020830135611c6b816119b9565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201611ce957611ce9611cc1565b5060010190565b600060208284031215611d0257600080fd5b8151611333816119b9565b808201808211156105b4576105b4611cc1565b818103818111156105b4576105b4611cc1565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611d835784516001600160a01b031683529383019391830191600101611d5e565b50506001600160a01b03969096166060850152505050608001529392505050565b600082611dc157634e487b7160e01b600052601260045260246000fd5b500490565b80820281158282048414176105b4576105b4611cc156fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212205884fd7672dd66ac8162a73ba3ddbb67305bed1933680afc2c3809cc62397f0f64736f6c63430008110033

Deployed Bytecode Sourcemap

4600:13485:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6589:83;;;;;;;;;;-1:-1:-1;6659:5:0;;;;;;;;;;;;-1:-1:-1;;;6659:5:0;;;;6589:83;;;;;;;:::i;:::-;;;;;;;;7514:193;;;;;;;;;;-1:-1:-1;7514:193:0;;;;;:::i;:::-;;:::i;:::-;;;1327:14:1;;1320:22;1302:41;;1290:2;1275:18;7514:193:0;1162:187:1;13252:166:0;;;;;;;;;;-1:-1:-1;13252:166:0;;;;;:::i;:::-;;:::i;:::-;;5946:41;;;;;;;;;;-1:-1:-1;5946:41:0;;;;-1:-1:-1;;;;;5946:41:0;;;;;;-1:-1:-1;;;;;2802:32:1;;;2784:51;;2772:2;2757:18;5946:41:0;2612:229:1;6866:95:0;;;;;;;;;;-1:-1:-1;5148:15:0;6866:95;;;2992:25:1;;;2980:2;2965:18;6866:95:0;2846:177:1;7715:446:0;;;;;;;;;;-1:-1:-1;7715:446:0;;;;;:::i;:::-;;:::i;6248:48::-;;;;;;;;;;;;;;;;6775:83;;;;;;;;;;-1:-1:-1;6775:83:0;;4822:1;3631:36:1;;3619:2;3604:18;6775:83:0;3489:184:1;16931:317:0;;;;;;;;;;-1:-1:-1;16931:317:0;;;;;:::i;:::-;;:::i;5994:28::-;;;;;;;;;;-1:-1:-1;5994:28:0;;;;-1:-1:-1;;;;;5994:28:0;;;17870:210;;;;;;;;;;-1:-1:-1;17870:210:0;;;;;:::i;:::-;;:::i;13009:235::-;;;;;;;;;;;;;:::i;6969:138::-;;;;;;;;;;-1:-1:-1;6969:138:0;;;;;:::i;:::-;;:::i;17631:108::-;;;;;;;;;;-1:-1:-1;17631:108:0;;;;;:::i;:::-;;:::i;6143:44::-;;;;;;;;;;;;;;;;5688:43;;;;;;;;;;-1:-1:-1;5688:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;2281:79;;;;;;;;;;-1:-1:-1;2319:7:0;2346:6;-1:-1:-1;;;;;2346:6:0;2281:79;;6194:47;;;;;;;;;;;;;;;;6680:87;;;;;;;;;;-1:-1:-1;6752:7:0;;;;;;;;;;;;-1:-1:-1;;;6752:7:0;;;;6680:87;;17300:139;;;;;;;;;;-1:-1:-1;17300:139:0;;;;;:::i;:::-;;:::i;7115:199::-;;;;;;;;;;-1:-1:-1;7115:199:0;;;;;:::i;:::-;;:::i;5650:36::-;;;;;;;;;;-1:-1:-1;5650:36:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;12765:236;;;;;;;;;;;;;:::i;17491:101::-;;;;;;;;;;-1:-1:-1;17491:101:0;;;;;:::i;:::-;;:::i;7322:184::-;;;;;;;;;;-1:-1:-1;7322:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;7471:18:0;;;7439:7;7471:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7322:184;13426:87;;;;;;;;;;-1:-1:-1;13426:87:0;;;;;:::i;:::-;;:::i;17747:115::-;;;;;;;;;;-1:-1:-1;17747:115:0;;;;;:::i;:::-;;:::i;12202:555::-;;;;;;;;;;;;;:::i;7514:193::-;7616:4;7638:39;1120:10;7661:7;7670:6;7638:8;:39::i;:::-;-1:-1:-1;7695:4:0;7514:193;;;;;:::o;13252:166::-;2408:6;;-1:-1:-1;;;;;2408:6:0;1120:10;2408:22;2400:67;;;;-1:-1:-1;;;2400:67:0;;;;;;;:::i;:::-;;;;;;;;;13325:9:::1;13320:91;13344:5;:12;13340:1;:16;13320:91;;;13395:4;13378;:14;13383:5;13389:1;13383:8;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;13378:14:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;13378:14:0;:21;;-1:-1:-1;;13378:21:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13358:3;::::1;::::0;::::1;:::i;:::-;;;;13320:91;;;;13252:166:::0;:::o;7715:446::-;7847:4;7864:36;7874:6;7882:9;7893:6;7864:9;:36::i;:::-;7911:220;7934:6;1120:10;7982:138;8038:6;7982:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7982:19:0;;;;;;:11;:19;;;;;;;;1120:10;7982:33;;;;;;;;;;:37;:138::i;:::-;7911:8;:220::i;:::-;-1:-1:-1;8149:4:0;7715:446;;;;;:::o;16931:317::-;2408:6;;-1:-1:-1;;;;;2408:6:0;1120:10;2408:22;2400:67;;;;-1:-1:-1;;;2400:67:0;;;;;;;:::i;:::-;17081:16:::1;:34:::0;;;;17126:17:::1;:36:::0;;;;17173:11:::1;:24:::0;17208:15:::1;:32:::0;16931:317::o;17870:210::-;2408:6;;-1:-1:-1;;;;;2408:6:0;1120:10;2408:22;2400:67;;;;-1:-1:-1;;;2400:67:0;;;;;;;:::i;:::-;17963:9:::1;17959:114;17978:19:::0;;::::1;17959:114;;;18053:8;18019:18;:31;18038:8;;18047:1;18038:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;18019:31:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;18019:31:0;:42;;-1:-1:-1;;18019:42:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17999:3;::::1;::::0;::::1;:::i;:::-;;;;17959:114;;;;17870:210:::0;;;:::o;13009:235::-;13075:19;;-1:-1:-1;;;;;13075:19:0;1120:10;-1:-1:-1;;;;;13059:35:0;;:72;;;-1:-1:-1;13114:17:0;;-1:-1:-1;;;;;13114:17:0;1120:10;-1:-1:-1;;;;;13098:33:0;;13059:72;13051:81;;;;;;13172:21;13204:32;13172:21;13204:12;:32::i;:::-;13040:204;13009:235::o;6969:138::-;-1:-1:-1;;;;;7082:16:0;;7035:7;7082:16;;;:7;:16;;;;;;7062:37;;:19;:37::i;17631:108::-;2408:6;;-1:-1:-1;;;;;2408:6:0;1120:10;2408:22;2400:67;;;;-1:-1:-1;;;2400:67:0;;;;;;;:::i;:::-;17705:12:::1;:26:::0;17631:108::o;17300:139::-;2408:6;;-1:-1:-1;;;;;2408:6:0;1120:10;2408:22;2400:67;;;;-1:-1:-1;;;2400:67:0;;;;;;;:::i;:::-;17391:19:::1;:40:::0;17300:139::o;7115:199::-;7220:4;7242:42;1120:10;7266:9;7277:6;7242:9;:42::i;12765:236::-;12831:19;;-1:-1:-1;;;;;12831:19:0;1120:10;-1:-1:-1;;;;;12815:35:0;;:72;;;-1:-1:-1;12870:17:0;;-1:-1:-1;;;;;12870:17:0;1120:10;-1:-1:-1;;;;;12854:33:0;;12815:72;12807:81;;;;;;12899:23;12925:24;12943:4;12925:9;:24::i;:::-;12899:50;;12960:33;12977:15;12960:16;:33::i;17491:101::-;2408:6;;-1:-1:-1;;;;;2408:6:0;1120:10;2408:22;2400:67;;;;-1:-1:-1;;;2400:67:0;;;;;;;:::i;:::-;17558:11:::1;:26:::0;;;::::1;;-1:-1:-1::0;;;17558:26:0::1;-1:-1:-1::0;;;;17558:26:0;;::::1;::::0;;;::::1;::::0;;17491:101::o;13426:87::-;2408:6;;-1:-1:-1;;;;;2408:6:0;1120:10;2408:22;2400:67;;;;-1:-1:-1;;;2400:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13485:12:0::1;13500:5;13485:12:::0;;;:4:::1;:12;::::0;;;;:20;;-1:-1:-1;;13485:20:0::1;::::0;;13426:87::o;17747:115::-;2408:6;;-1:-1:-1;;;;;2408:6:0;1120:10;2408:22;2400:67;;;;-1:-1:-1;;;2400:67:0;;;;;;;:::i;:::-;17824:14:::1;:30:::0;17747:115::o;12202:555::-;2408:6;;-1:-1:-1;;;;;2408:6:0;1120:10;2408:22;2400:67;;;;-1:-1:-1;;;2400:67:0;;;;;;;:::i;:::-;12368:15:::1;:34:::0;;-1:-1:-1;;;;;;12368:34:0::1;12314:42;12368:34:::0;;::::1;::::0;;;12447:26:::1;::::0;;-1:-1:-1;;;12447:26:0;;;;12314:42;;12447:24:::1;::::0;:26:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;12314:42;12447:26:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12429:66:0::1;;12504:4;12511:16;-1:-1:-1::0;;;;;12511:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12429:106;::::0;-1:-1:-1;;;;;;12429:106:0::1;::::0;;;;;;-1:-1:-1;;;;;7401:15:1;;;12429:106:0::1;::::0;::::1;7383:34:1::0;7453:15;;7433:18;;;7426:43;7318:18;;12429:106:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12413:13;:122:::0;;-1:-1:-1;;;;;;12413:122:0::1;-1:-1:-1::0;;;;;12413:122:0;;::::1;;::::0;;-1:-1:-1;2346:6:0;;;;12548:27;;:18:::1;:27;::::0;;;;;:34;;-1:-1:-1;;12548:34:0;;::::1;-1:-1:-1::0;12548:34:0;;::::1;::::0;;;12620:4:::1;12593:33:::0;;;;;:40;;;::::1;::::0;::::1;::::0;;12663:19:::1;::::0;;::::1;12644:39:::0;;;;;:46;;;::::1;::::0;::::1;::::0;;12720:17:::1;::::0;;;::::1;12701:37:::0;;;;:44;;;;::::1;;::::0;;-1:-1:-1;12202:555:0:o;8880:369::-;-1:-1:-1;;;;;9007:19:0;;8999:68;;;;-1:-1:-1;;;8999:68:0;;7682:2:1;8999:68:0;;;7664:21:1;7721:2;7701:18;;;7694:30;7760:34;7740:18;;;7733:62;-1:-1:-1;;;7811:18:1;;;7804:34;7855:19;;8999:68:0;7480:400:1;8999:68:0;-1:-1:-1;;;;;9086:21:0;;9078:68;;;;-1:-1:-1;;;9078:68:0;;8087:2:1;9078:68:0;;;8069:21:1;8126:2;8106:18;;;8099:30;8165:34;8145:18;;;8138:62;-1:-1:-1;;;8216:18:1;;;8209:32;8258:19;;9078:68:0;7885:398:1;9078:68:0;-1:-1:-1;;;;;9157:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9209:32;;2992:25:1;;;9209:32:0;;2965:18:1;9209:32:0;;;;;;;8880:369;;;:::o;9257:2337::-;-1:-1:-1;;;;;9379:18:0;;9371:68;;;;-1:-1:-1;;;9371:68:0;;8490:2:1;9371:68:0;;;8472:21:1;8529:2;8509:18;;;8502:30;8568:34;8548:18;;;8541:62;-1:-1:-1;;;8619:18:1;;;8612:35;8664:19;;9371:68:0;8288:401:1;9371:68:0;-1:-1:-1;;;;;9458:16:0;;9450:64;;;;-1:-1:-1;;;9450:64:0;;8896:2:1;9450:64:0;;;8878:21:1;8935:2;8915:18;;;8908:30;8974:34;8954:18;;;8947:62;-1:-1:-1;;;9025:18:1;;;9018:33;9068:19;;9450:64:0;8694:399:1;9450:64:0;9542:1;9533:6;:10;9525:64;;;;-1:-1:-1;;;9525:64:0;;9300:2:1;9525:64:0;;;9282:21:1;9339:2;9319:18;;;9312:30;9378:34;9358:18;;;9351:62;-1:-1:-1;;;9429:18:1;;;9422:39;9478:19;;9525:64:0;9098:405:1;9525:64:0;-1:-1:-1;;;;;9609:10:0;;;;;;:4;:10;;;;;;;;9608:11;:24;;;;-1:-1:-1;;;;;;9624:8:0;;;;;;:4;:8;;;;;;;;9623:9;9608:24;9600:33;;;;;;2319:7;2346:6;-1:-1:-1;;;;;9650:15:0;;;2346:6;;9650:15;;;;:32;;-1:-1:-1;2319:7:0;2346:6;-1:-1:-1;;;;;9669:13:0;;;2346:6;;9669:13;;9650:32;9646:1259;;;9739:11;;-1:-1:-1;;;9739:11:0;;;;9734:144;;2319:7;2346:6;-1:-1:-1;;;;;9779:15:0;;;2346:6;;9779:15;9771:91;;;;-1:-1:-1;;;9771:91:0;;9710:2:1;9771:91:0;;;9692:21:1;9749:2;9729:18;;;9722:30;9788:34;9768:18;;;9761:62;9859:33;9839:18;;;9832:61;9910:19;;9771:91:0;9508:427:1;9771:91:0;9912:12;;9902:6;:22;;9894:63;;;;-1:-1:-1;;;9894:63:0;;10142:2:1;9894:63:0;;;10124:21:1;10181:2;10161:18;;;10154:30;10220;10200:18;;;10193:58;10268:18;;9894:63:0;9940:352:1;9894:63:0;-1:-1:-1;;;;;9981:10:0;;;;;;:4;:10;;;;;;;;9980:11;:24;;;;-1:-1:-1;;;;;;9996:8:0;;;;;;:4;:8;;;;;;;;9995:9;9980:24;9972:72;;;;-1:-1:-1;;;9972:72:0;;10499:2:1;9972:72:0;;;10481:21:1;10538:2;10518:18;;;10511:30;10577:34;10557:18;;;10550:62;-1:-1:-1;;;10628:18:1;;;10621:33;10671:19;;9972:72:0;10297:399:1;9972:72:0;10070:13;;-1:-1:-1;;;;;10064:19:0;;;10070:13;;10064:19;10061:146;;10137:14;;10128:6;10112:13;10122:2;10112:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10104:87;;;;-1:-1:-1;;;10104:87:0;;11033:2:1;10104:87:0;;;11015:21:1;11072:2;11052:18;;;11045:30;11111:34;11091:18;;;11084:62;-1:-1:-1;;;11162:18:1;;;11155:33;11205:19;;10104:87:0;10831:399:1;10104:87:0;10223:28;10254:24;10272:4;10254:9;:24::i;:::-;10332:19;;10395:12;;10223:55;;-1:-1:-1;10308:43:0;;;;10371:36;;10368:124;;10464:12;;10441:35;;10368:124;10512:7;:18;;;;-1:-1:-1;10524:6:0;;-1:-1:-1;;;10524:6:0;;;;10523:7;10512:18;:43;;;;-1:-1:-1;10542:13:0;;-1:-1:-1;;;;;10534:21:0;;;10542:13;;10534:21;;10512:43;:58;;;;-1:-1:-1;10559:11:0;;-1:-1:-1;;;10559:11:0;;;;10512:58;:87;;;;-1:-1:-1;;;;;;10575:24:0;;;;;;:18;:24;;;;;;;;10574:25;10512:87;:114;;;;-1:-1:-1;;;;;;10604:22:0;;;;;;:18;:22;;;;;;;;10603:23;10512:114;10508:386;;;10647:38;10664:20;10647:16;:38::i;:::-;10733:21;10777:22;;10773:106;;10824:35;10837:21;10824:12;:35::i;:::-;10628:266;10508:386;9684:1221;;9646:1259;-1:-1:-1;;;;;10964:24:0;;10917:12;10964:24;;;:18;:24;;;;;;10932:4;;10964:24;;;:50;;-1:-1:-1;;;;;;10992:22:0;;;;;;:18;:22;;;;;;;;10964:50;10963:102;;;-1:-1:-1;11028:13:0;;-1:-1:-1;;;;;11020:21:0;;;11028:13;;11020:21;;;;:44;;-1:-1:-1;11051:13:0;;-1:-1:-1;;;;;11045:19:0;;;11051:13;;11045:19;;11020:44;10959:574;;;-1:-1:-1;11092:5:0;10959:574;;;11157:13;;-1:-1:-1;;;;;11149:21:0;;;11157:13;;11149:21;:55;;;;-1:-1:-1;11188:15:0;;-1:-1:-1;;;;;11174:30:0;;;11188:15;;11174:30;;11149:55;11146:169;;;11239:16;;11225:11;:30;11288:11;;11274;:25;11146:169;11355:13;;-1:-1:-1;;;;;11349:19:0;;;11355:13;;11349:19;:55;;;;-1:-1:-1;11388:15:0;;-1:-1:-1;;;;;11372:32:0;;;11388:15;;11372:32;;11349:55;11345:175;;;11439:17;;11425:11;:31;11489:15;;11475:11;:29;11345:175;11545:41;11560:4;11566:2;11570:6;11578:7;11545:14;:41::i;2851:224::-;2971:7;3007:12;2999:6;;;;2991:29;;;;-1:-1:-1;;;2991:29:0;;;;;;;;:::i;:::-;-1:-1:-1;3031:9:0;3043:5;3047:1;3043;:5;:::i;:::-;3031:17;2851:224;-1:-1:-1;;;;;2851:224:0:o;12093:99::-;12150:17;;:34;;-1:-1:-1;;;;;12150:17:0;;;;:34;;;;;12177:6;;12150:17;:34;:17;:34;12177:6;12150:17;:34;;;;;;;;;;;;;;;;;;;8169:323;8264:7;8322;;8311;:18;;8289:110;;;;-1:-1:-1;;;8289:110:0;;11570:2:1;8289:110:0;;;11552:21:1;11609:2;11589:18;;;11582:30;11648:34;11628:18;;;11621:62;-1:-1:-1;;;11699:18:1;;;11692:40;11749:19;;8289:110:0;11368:406:1;8289:110:0;8410:19;8432:10;:8;:10::i;:::-;8410:32;-1:-1:-1;8460:24:0;:7;8410:32;8460:11;:24::i;:::-;8453:31;8169:323;-1:-1:-1;;;8169:323:0:o;11602:483::-;6390:6;:13;;-1:-1:-1;;;;6390:13:0;-1:-1:-1;;;6390:13:0;;;11704:16:::1;::::0;;11718:1:::1;11704:16:::0;;;;;::::1;::::0;;-1:-1:-1;;11704:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;11704:16:0::1;11680:40;;11749:4;11731;11736:1;11731:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11731:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;11775:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;11775:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;11731:7;;11775:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11765:4;11770:1;11765:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11765:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;11840:15:::1;::::0;11808:62:::1;::::0;11825:4:::1;::::0;11840:15:::1;11858:11:::0;11808:8:::1;:62::i;:::-;11881:15;::::0;:196:::1;::::0;-1:-1:-1;;;11881:196:0;;-1:-1:-1;;;;;11881:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;11962:11;;11881:15:::1;::::0;12004:4;;12031::::1;::::0;12051:15:::1;::::0;11881:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;6426:6:0;:14;;-1:-1:-1;;;;6426:14:0;;;-1:-1:-1;;;;11602:483:0:o;13523:282::-;13679:7;13674:28;;13688:14;:12;:14::i;:::-;13713:44;13731:6;13739:9;13750:6;13713:17;:44::i;:::-;13773:7;13768:29;;13782:15;8805:19;;8791:11;:33;8849:15;;8835:11;:29;8747:125;16494:164;16536:7;16557:15;16574;16593:19;:17;:19::i;:::-;16556:56;;-1:-1:-1;16556:56:0;-1:-1:-1;16630:20:0;16556:56;;16630:11;:20::i;:::-;16623:27;;;;16494:164;:::o;3337:132::-;3395:7;3422:39;3426:1;3429;3422:39;;;;;;;;;;;;;;;;;:3;:39::i;8500:239::-;8547:11;;:16;:36;;;;-1:-1:-1;8567:11:0;;:16;8547:36;8543:49;;;8500:239::o;8543:49::-;8626:11;;;8604:19;:33;8666:11;;;8648:15;:29;-1:-1:-1;8690:15:0;;;;8716;8500:239::o;13813:610::-;13960:15;13990:23;14028:12;14055:23;14093:12;14120:13;14147:19;14158:7;14147:10;:19::i;:::-;-1:-1:-1;;;;;14195:15:0;;;;;;:7;:15;;;;;;13945:221;;-1:-1:-1;13945:221:0;;-1:-1:-1;13945:221:0;;-1:-1:-1;13945:221:0;-1:-1:-1;13945:221:0;-1:-1:-1;13945:221:0;-1:-1:-1;14195:28:0;;13945:221;14195:19;:28::i;:::-;-1:-1:-1;;;;;14177:15:0;;;;;;;:7;:15;;;;;;:46;;;;14255:18;;;;;;;:39;;14278:15;14255:22;:39::i;:::-;-1:-1:-1;;;;;14234:18:0;;;;;;:7;:18;;;;;:60;14305:16;14315:5;14305:9;:16::i;:::-;14332:23;14344:4;14350;14332:11;:23::i;:::-;14388:9;-1:-1:-1;;;;;14371:44:0;14380:6;-1:-1:-1;;;;;14371:44:0;;14399:15;14371:44;;;;2992:25:1;;2980:2;2965:18;;2846:177;14371:44:0;;;;;;;;13934:489;;;;;;13813:610;;;:::o;16666:257::-;16764:7;;16717;;;;5148:15;16832:20;16764:7;5148:15;16832:11;:20::i;:::-;16822:7;:30;16818:61;;;-1:-1:-1;;16862:7:0;;;5148:15;;-1:-1:-1;16666:257:0;-1:-1:-1;16666:257:0:o;16818:61::-;16898:7;;16907;;-1:-1:-1;16666:257:0;-1:-1:-1;16666:257:0:o;3477:223::-;3597:7;3632:12;3625:5;3617:28;;;;-1:-1:-1;;;3617:28:0;;;;;;;;:::i;:::-;-1:-1:-1;3656:9:0;3668:5;3672:1;3668;:5;:::i;14842:621::-;14942:7;14964;14986;15008;15030;15052;15088:23;15113:12;15127:13;15157:46;15169:7;15178:11;;15191;;15157;:46::i;:::-;15087:116;;;;;;15214:19;15236:10;:8;:10::i;:::-;15214:32;;15258:15;15275:23;15300:12;15329:46;15341:7;15350:4;15356:5;15363:11;15329;:46::i;:::-;15257:118;;-1:-1:-1;15257:118:0;-1:-1:-1;15257:118:0;-1:-1:-1;15426:15:0;;-1:-1:-1;15443:4:0;;-1:-1:-1;15449:5:0;;-1:-1:-1;;;;;14842:621:0;;;;;;;:::o;2707:136::-;2765:7;2792:43;2796:1;2799;2792:43;;;;;;;;;;;;;;;;;:3;:43::i;2520:179::-;2578:7;;2610:5;2614:1;2610;:5;:::i;:::-;2598:17;;2639:1;2634;:6;;2626:46;;;;-1:-1:-1;;;2626:46:0;;13188:2:1;2626:46:0;;;13170:21:1;13227:2;13207:18;;;13200:30;13266:29;13246:18;;;13239:57;13313:18;;2626:46:0;12986:351:1;14431:211:0;14484:19;14506:10;:8;:10::i;:::-;14484:32;-1:-1:-1;14527:13:0;14543:22;:5;14484:32;14543:9;:22::i;:::-;14617:4;14601:22;;;;:7;:22;;;;;;14527:38;;-1:-1:-1;14601:33:0;;14527:38;14601:26;:33::i;:::-;14592:4;14576:22;;;;:7;:22;;;;;:58;-1:-1:-1;;;14431:211:0:o;14650:147::-;14728:7;;:17;;14740:4;14728:11;:17::i;:::-;14718:7;:27;14769:10;;:20;;14784:4;14769:14;:20::i;:::-;14756:10;:33;-1:-1:-1;;14650:147:0:o;15471:473::-;15642:7;;;;15736:32;15764:3;15736:23;:7;15748:10;15736:11;:23::i;:::-;:27;;:32::i;:::-;15721:47;-1:-1:-1;15779:13:0;15795:28;15819:3;15795:19;:7;15807:6;15795:11;:19::i;:28::-;15779:44;-1:-1:-1;15834:23:0;15860:28;15779:44;15860:17;:7;15872:4;15860:11;:17::i;:::-;:21;;:28::i;:::-;15834:54;15924:4;;-1:-1:-1;15930:5:0;;-1:-1:-1;15471:473:0;;-1:-1:-1;;;;;15471:473:0:o;15952:534::-;16146:7;;;;16243:24;:7;16255:11;16243;:24::i;:::-;16225:42;-1:-1:-1;16278:12:0;16293:21;:4;16302:11;16293:8;:21::i;:::-;16278:36;-1:-1:-1;16325:13:0;16341:22;:5;16351:11;16341:9;:22::i;:::-;16325:38;-1:-1:-1;16374:23:0;16400:28;16325:38;16400:17;:7;16412:4;16400:11;:17::i;:28::-;16447:7;;;;-1:-1:-1;16473:4:0;;-1:-1:-1;15952:534:0;;-1:-1:-1;;;;;;;15952:534:0:o;3083:246::-;3141:7;3165:1;3170;3165:6;3161:47;;-1:-1:-1;3195:1:0;3188:8;;3161:47;3218:9;3230:5;3234:1;3230;:5;:::i;:::-;3218:17;-1:-1:-1;3263:1:0;3254:5;3258:1;3218:17;3254:5;:::i;:::-;:10;3246:56;;;;-1:-1:-1;;;3246:56:0;;13717:2:1;3246:56:0;;;13699:21:1;13756:2;13736:18;;;13729:30;13795:34;13775:18;;;13768:62;-1:-1:-1;;;13846:18:1;;;13839:31;13887:19;;3246:56:0;13515:397:1;14:548;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:134;771:20;;800:31;771:20;800:31;:::i;:::-;703:134;;;:::o;842:315::-;910:6;918;971:2;959:9;950:7;946:23;942:32;939:52;;;987:1;984;977:12;939:52;1026:9;1013:23;1045:31;1070:5;1045:31;:::i;:::-;1095:5;1147:2;1132:18;;;;1119:32;;-1:-1:-1;;;842:315:1:o;1354:127::-;1415:10;1410:3;1406:20;1403:1;1396:31;1446:4;1443:1;1436:15;1470:4;1467:1;1460:15;1486:1121;1570:6;1601:2;1644;1632:9;1623:7;1619:23;1615:32;1612:52;;;1660:1;1657;1650:12;1612:52;1700:9;1687:23;1729:18;1770:2;1762:6;1759:14;1756:34;;;1786:1;1783;1776:12;1756:34;1824:6;1813:9;1809:22;1799:32;;1869:7;1862:4;1858:2;1854:13;1850:27;1840:55;;1891:1;1888;1881:12;1840:55;1927:2;1914:16;1949:2;1945;1942:10;1939:36;;;1955:18;;:::i;:::-;2001:2;1998:1;1994:10;2033:2;2027:9;2096:2;2092:7;2087:2;2083;2079:11;2075:25;2067:6;2063:38;2151:6;2139:10;2136:22;2131:2;2119:10;2116:18;2113:46;2110:72;;;2162:18;;:::i;:::-;2198:2;2191:22;2248:18;;;2282:15;;;;-1:-1:-1;2324:11:1;;;2320:20;;;2352:19;;;2349:39;;;2384:1;2381;2374:12;2349:39;2408:11;;;;2428:148;2444:6;2439:3;2436:15;2428:148;;;2510:23;2529:3;2510:23;:::i;:::-;2498:36;;2461:12;;;;2554;;;;2428:148;;;2595:6;1486:1121;-1:-1:-1;;;;;;;;1486:1121:1:o;3028:456::-;3105:6;3113;3121;3174:2;3162:9;3153:7;3149:23;3145:32;3142:52;;;3190:1;3187;3180:12;3142:52;3229:9;3216:23;3248:31;3273:5;3248:31;:::i;:::-;3298:5;-1:-1:-1;3355:2:1;3340:18;;3327:32;3368:33;3327:32;3368:33;:::i;:::-;3028:456;;3420:7;;-1:-1:-1;;;3474:2:1;3459:18;;;;3446:32;;3028:456::o;3678:385::-;3764:6;3772;3780;3788;3841:3;3829:9;3820:7;3816:23;3812:33;3809:53;;;3858:1;3855;3848:12;3809:53;-1:-1:-1;;3881:23:1;;;3951:2;3936:18;;3923:32;;-1:-1:-1;4002:2:1;3987:18;;3974:32;;4053:2;4038:18;4025:32;;-1:-1:-1;3678:385:1;-1:-1:-1;3678:385:1:o;4276:160::-;4341:20;;4397:13;;4390:21;4380:32;;4370:60;;4426:1;4423;4416:12;4441:689;4533:6;4541;4549;4602:2;4590:9;4581:7;4577:23;4573:32;4570:52;;;4618:1;4615;4608:12;4570:52;4658:9;4645:23;4687:18;4728:2;4720:6;4717:14;4714:34;;;4744:1;4741;4734:12;4714:34;4782:6;4771:9;4767:22;4757:32;;4827:7;4820:4;4816:2;4812:13;4808:27;4798:55;;4849:1;4846;4839:12;4798:55;4889:2;4876:16;4915:2;4907:6;4904:14;4901:34;;;4931:1;4928;4921:12;4901:34;4986:7;4979:4;4969:6;4966:1;4962:14;4958:2;4954:23;4950:34;4947:47;4944:67;;;5007:1;5004;4997:12;4944:67;5038:4;5030:13;;;;-1:-1:-1;5062:6:1;-1:-1:-1;5087:37:1;;5103:20;;;-1:-1:-1;5087:37:1;:::i;:::-;5077:47;;4441:689;;;;;:::o;5135:247::-;5194:6;5247:2;5235:9;5226:7;5222:23;5218:32;5215:52;;;5263:1;5260;5253:12;5215:52;5302:9;5289:23;5321:31;5346:5;5321:31;:::i;5387:180::-;5446:6;5499:2;5487:9;5478:7;5474:23;5470:32;5467:52;;;5515:1;5512;5505:12;5467:52;-1:-1:-1;5538:23:1;;5387:180;-1:-1:-1;5387:180:1:o;5572:::-;5628:6;5681:2;5669:9;5660:7;5656:23;5652:32;5649:52;;;5697:1;5694;5687:12;5649:52;5720:26;5736:9;5720:26;:::i;5757:388::-;5825:6;5833;5886:2;5874:9;5865:7;5861:23;5857:32;5854:52;;;5902:1;5899;5892:12;5854:52;5941:9;5928:23;5960:31;5985:5;5960:31;:::i;:::-;6010:5;-1:-1:-1;6067:2:1;6052:18;;6039:32;6080:33;6039:32;6080:33;:::i;:::-;6132:7;6122:17;;;5757:388;;;;;:::o;6150:356::-;6352:2;6334:21;;;6371:18;;;6364:30;6430:34;6425:2;6410:18;;6403:62;6497:2;6482:18;;6150:356::o;6511:127::-;6572:10;6567:3;6563:20;6560:1;6553:31;6603:4;6600:1;6593:15;6627:4;6624:1;6617:15;6643:127;6704:10;6699:3;6695:20;6692:1;6685:31;6735:4;6732:1;6725:15;6759:4;6756:1;6749:15;6775:135;6814:3;6835:17;;;6832:43;;6855:18;;:::i;:::-;-1:-1:-1;6902:1:1;6891:13;;6775:135::o;6915:251::-;6985:6;7038:2;7026:9;7017:7;7013:23;7009:32;7006:52;;;7054:1;7051;7044:12;7006:52;7086:9;7080:16;7105:31;7130:5;7105:31;:::i;10701:125::-;10766:9;;;10787:10;;;10784:36;;;10800:18;;:::i;11235:128::-;11302:9;;;11323:11;;;11320:37;;;11337:18;;:::i;11779:980::-;12041:4;12089:3;12078:9;12074:19;12120:6;12109:9;12102:25;12146:2;12184:6;12179:2;12168:9;12164:18;12157:34;12227:3;12222:2;12211:9;12207:18;12200:31;12251:6;12286;12280:13;12317:6;12309;12302:22;12355:3;12344:9;12340:19;12333:26;;12394:2;12386:6;12382:15;12368:29;;12415:1;12425:195;12439:6;12436:1;12433:13;12425:195;;;12504:13;;-1:-1:-1;;;;;12500:39:1;12488:52;;12595:15;;;;12560:12;;;;12536:1;12454:9;12425:195;;;-1:-1:-1;;;;;;;12676:32:1;;;;12671:2;12656:18;;12649:60;-1:-1:-1;;;12740:3:1;12725:19;12718:35;12637:3;11779:980;-1:-1:-1;;;11779:980:1:o;12764:217::-;12804:1;12830;12820:132;;12874:10;12869:3;12865:20;12862:1;12855:31;12909:4;12906:1;12899:15;12937:4;12934:1;12927:15;12820:132;-1:-1:-1;12966:9:1;;12764:217::o;13342:168::-;13415:9;;;13446;;13463:15;;;13457:22;;13443:37;13433:71;;13484:18;;:::i

Swarm Source

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