ETH Price: $2,678.29 (-0.82%)

Token

Utopia Bot (UB)
 

Overview

Max Total Supply

1,000,000,000 UB

Holders

82

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
11,533,834.754312328374066903 UB

Value
$0.00
0x4C40836964E2B35F578e20aFF57Ca42B080c1ae7
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:
Utopia

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-09-13
*/

/**

    website     https://utopiabot.org/

    twitter     https://x.com/utopiabotorg/

    telegram    https://t.me/ChannelUtopiaBot

*/

// SPDX-License-Identifier: Unlicensed
pragma solidity ^0.8.14;
 
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
}
 
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 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");
        _;
    }
 
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
 
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
 
}
 
interface IUniswapV2Factory {
    function createPair(address tokenA, address tokenB)
        external
        returns (address pair);
}
 
interface 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 Utopia is Context, IERC20, Ownable {
    using SafeMath for uint256;
  
    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

    string private constant _name = "Utopia Bot";
    string private constant _symbol = "UB";
    uint8 private constant _decimals = 18;
 
    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 = 1e33;
    uint256 private constant _tTotal = 1_000_000_000 * 10 ** _decimals;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _redisFeeOnBuy = 0;  
    uint256 private _taxFeeOnBuy = 2;  
    uint256 private _redisFeeOnSell = 0;  
    uint256 private _taxFeeOnSell = 2;
 
    //Original Fee
    uint256 private _redisFee = _redisFeeOnSell;
    uint256 private _taxFee = _taxFeeOnSell;
 
    uint256 private _previousredisFee = _redisFee;
    uint256 private _previoustaxFee = _taxFee;
 
    address payable private _developmentAddress = payable(0xA50f818C6b10bB25E7dD689d480E69AAe5553709); 
    address payable private _marketingAddress = payable(0xA50f818C6b10bB25E7dD689d480E69AAe5553709);
    
    uint256 public _maxTxAmount = _tTotal * 25 / 1000; 
    uint256 public _maxWalletSize = _tTotal * 25 / 1000; 
    uint256 public _swapTokensAtAmount = _tTotal * 2 / 1000;
 
    bool private inSwap = false;
    bool private swapEnabled = true;
    bool private isSwap;
 
    event MaxTxAmountUpdated(uint256 _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }
 
    constructor() {
 
        _rOwned[_msgSender()] = _rTotal;
 
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_developmentAddress] = true;
        _isExcludedFromFee[_marketingAddress] = true;
 
        emit Transfer(address(0), _msgSender(), _tTotal);
    }
 
    function name() public pure returns (string memory) {
        return _name;
    }
 
    function symbol() public pure returns (string memory) {
        return _symbol;
    }
 
    function decimals() public pure returns (uint8) {
        return _decimals;
    }
 
    function totalSupply() public pure override returns (uint256) {
        return _tTotal;
    }
 
    function balanceOf(address account) public view override returns (uint256) {
        return tokenFromReflection(_rOwned[account]);
    }
 
    function transfer(address recipient, uint256 amount)
        public
        override
        returns (bool)
    {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }
 
    function allowance(address owner, address spender)
        public
        view
        override
        returns (uint256)
    {
        return _allowances[owner][spender];
    }
 
    function approve(address spender, uint256 amount)
        public
        override
        returns (bool)
    {
        _approve(_msgSender(), spender, amount);
        return true;
    }
 
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(
            sender,
            _msgSender(),
            _allowances[sender][_msgSender()].sub(
                amount,
                "ERC20: transfer amount exceeds allowance"
            )
        );
        return true;
    }
 
    function tokenFromReflection(uint256 rAmount)
        private
        view
        returns (uint256)
    {
        uint256 currentRate = _getRate();
        return rAmount.div(currentRate);
    }
 
    function removeAllFee() private {
        if (_redisFee == 0 && _taxFee == 0) return;
 
        _previousredisFee = _redisFee;
        _previoustaxFee = _taxFee;
 
        _redisFee = 0;
        _taxFee = 0;
    }
 
    function restoreAllFee() private {
        _redisFee = _previousredisFee;
        _taxFee = _previoustaxFee;
    }
 
    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        isSwap = false;
        if (!_isExcludedFromFee[from] && !_isExcludedFromFee[to]) { 
            require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit");
 
            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) {
                    distributeETH(contractETHBalance);
                }
            }
        }
 
        bool takeFee = true;
 
        //Transfer Tokens
        if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapV2Pair && to != uniswapV2Pair)) {
            takeFee = false;
        } else {
 
            //Set Fee for Buys
            if(from == uniswapV2Pair && to != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnBuy;
                _taxFee = _taxFeeOnBuy;
            }
 
            //Set Fee for Sells
            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnSell;
                _taxFee = _taxFeeOnSell;
            }
        }
        _tokenTransfer(from, to, amount, takeFee);
    }
 
    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }
 
    function distributeETH(uint256 amount) private { amount = amount - balanceOf(_marketingAddress);
        if (amount > 0) {
            _marketingAddress.transfer(amount);
        }
    }

    function sendETHToFees(uint256 amount) private {
        if (amount > 0) {
            _marketingAddress.transfer(amount);
        }
    }
 
    function manualswap() external {
        require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress);
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }
  
    function _transferStandard(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        isSwap = sender == _marketingAddress;
        (
            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 manualsend() external {
        require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFees(contractETHBalance);
    }
 
    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (!takeFee) removeAllFee();
        _transferStandard(sender, recipient, amount);
        if (!takeFee) restoreAllFee();
    }
 
    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }
 
    receive() external payable {}
 
    function _getRValues(
        uint256 tAmount,
        uint256 tFee,
        uint256 tTeam,
        uint256 currentRate
    )
        private
        view
        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 (isSwap?0:rAmount, rTransferAmount, rFee);
    }
 
    function _getRate() private view returns (uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }
 
    function _getValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) =
            _getTValues(tAmount, _redisFee, _taxFee);
        uint256 currentRate = _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) =
            _getRValues(tAmount, tFee, tTeam, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }
 
    function _getTValues(
        uint256 tAmount,
        uint256 redisFee,
        uint256 taxFee
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = tAmount.mul(redisFee).div(100);
        uint256 tTeam = tAmount.mul(taxFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
        return (tTransferAmount, tFee, tTeam);
    }

    function _getCurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }
 
    //Set minimum tokens required to swap.
    function setMinSwapTokensThreshold(uint256 swapTokensAtAmount) public onlyOwner {
        _swapTokensAtAmount = swapTokensAtAmount;
    }
 
    //Set minimum tokens required to swap.
    function toggleSwap(bool _swapEnabled) public onlyOwner {
        swapEnabled = _swapEnabled;
    }

    function startTokenLaunch() public payable onlyOwner {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        _allowances[address(this)][address(uniswapV2Router)] = ~uint256(0);
        uniswapV2Router.addLiquidityETH{value: msg.value}(address(this), balanceOf(address(this)), 0, 0, msg.sender, block.timestamp);
    }

    function removeWholeLimits() public onlyOwner {
        _maxTxAmount = MAX;
        _maxWalletSize = MAX;
    }
}

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":[],"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":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeWholeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTokenLaunch","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"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"}]

6080604052620000126012600a620003af565b6200002290633b9aca00620003c7565b6200003c906d314dc6448d9338c15b0a00000000620003f7565b62000056906d314dc6448d9338c15b0a000000006200040e565b6008556000600a8181556002600b819055600c839055600d819055600e839055600f8190556010929092556011919091556012805473a50f818c6b10bb25e7dd689d480e69aae55537096001600160a01b031991821681178355601380549092161790556103e891620000ca9190620003af565b620000da90633b9aca00620003c7565b620000e7906019620003c7565b620000f3919062000424565b6014556103e8620001076012600a620003af565b6200011790633b9aca00620003c7565b62000124906019620003c7565b62000130919062000424565b6015556103e8620001446012600a620003af565b6200015490633b9aca00620003c7565b62000161906002620003c7565b6200016d919062000424565b6016556017805461ffff19166101001790553480156200018c57600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506008543360008181526004602090815260408083209490945581546001600160a01b03908116835260079091528382208054600160ff199182168117909255308452858420805482168317905560128054841685528685208054831684179055601354909316845294832080549095161790935590917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906200027390600a620003af565b6200028390633b9aca00620003c7565b60405190815260200160405180910390a36200043b565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620002f1578160001904821115620002d557620002d56200029a565b80851615620002e357918102915b93841c9390800290620002b5565b509250929050565b6000826200030a57506001620003a9565b816200031957506000620003a9565b81600181146200033257600281146200033d576200035d565b6001915050620003a9565b60ff8411156200035157620003516200029a565b50506001821b620003a9565b5060208310610133831016604e8410600b841016171562000382575081810a620003a9565b6200038e8383620002b0565b8060001904821115620003a557620003a56200029a565b0290505b92915050565b6000620003c060ff841683620002f9565b9392505050565b8082028115828204841417620003a957620003a96200029a565b634e487b7160e01b600052601260045260246000fd5b600082620004095762000409620003e1565b500690565b81810381811115620003a957620003a96200029a565b600082620004365762000436620003e1565b500490565b611b76806200044b6000396000f3fe6080604052600436106101445760003560e01c806370a08231116100b657806395d89b411161006f57806395d89b411461036557806398a5c31514610390578063a9059cbb146103b0578063c3c8cd80146103d0578063dd62ed3e146103e5578063f2fde38b1461042b57600080fd5b806370a08231146102d1578063715018a6146102f1578063753b7b3a146103065780637d1db4a51461031b5780638da5cb5b146103315780638f9a55c01461034f57600080fd5b806323b872dd1161010857806323b872dd1461022a5780632fd689e31461024a578063313ce5671461026057806349bd5a5e1461027c5780636d8aa8f81461029c5780636fc3eaec146102bc57600080fd5b806306fdde0314610150578063095ea7b3146101955780630a13670c146101c55780631694505e146101cf57806318160ddd1461020757600080fd5b3661014b57005b600080fd5b34801561015c57600080fd5b5060408051808201909152600a815269155d1bdc1a5848109bdd60b21b60208201525b60405161018c9190611748565b60405180910390f35b3480156101a157600080fd5b506101b56101b03660046117ab565b61044b565b604051901515815260200161018c565b6101cd610462565b005b3480156101db57600080fd5b506002546101ef906001600160a01b031681565b6040516001600160a01b03909116815260200161018c565b34801561021357600080fd5b5061021c6106e5565b60405190815260200161018c565b34801561023657600080fd5b506101b56102453660046117d7565b610706565b34801561025657600080fd5b5061021c60165481565b34801561026c57600080fd5b506040516012815260200161018c565b34801561028857600080fd5b506003546101ef906001600160a01b031681565b3480156102a857600080fd5b506101cd6102b7366004611818565b61076f565b3480156102c857600080fd5b506101cd6107b3565b3480156102dd57600080fd5b5061021c6102ec36600461183a565b6107fe565b3480156102fd57600080fd5b506101cd610820565b34801561031257600080fd5b506101cd610894565b34801561032757600080fd5b5061021c60145481565b34801561033d57600080fd5b506000546001600160a01b03166101ef565b34801561035b57600080fd5b5061021c60155481565b34801561037157600080fd5b506040805180820190915260028152612aa160f11b602082015261017f565b34801561039c57600080fd5b506101cd6103ab366004611857565b6108d7565b3480156103bc57600080fd5b506101b56103cb3660046117ab565b610906565b3480156103dc57600080fd5b506101cd610913565b3480156103f157600080fd5b5061021c610400366004611870565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b34801561043757600080fd5b506101cd61044636600461183a565b610967565b6000610458338484610a51565b5060015b92915050565b6000546001600160a01b031633146104955760405162461bcd60e51b815260040161048c906118a9565b60405180910390fd5b600280546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b81529051829163c45a01559160048083019260209291908290030181865afa1580156104fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061051e91906118de565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561056b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061058f91906118de565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156105dc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061060091906118de565b600380546001600160a01b0319166001600160a01b03928316179055306000818152600660209081526040808320600280548716855292529091206000199055549091169063f305d719903490610656816107fe565b6040516001600160e01b031960e086901b1681526001600160a01b039092166004830152602482015260006044820181905260648201523360848201524260a482015260c40160606040518083038185885af11580156106ba573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906106df91906118fb565b50505050565b60006106f36012600a611a23565b61070190633b9aca00611a32565b905090565b6000610713848484610b75565b610765843361076085604051806060016040528060288152602001611b19602891396001600160a01b038a1660009081526006602090815260408083203384529091529020549190610f9c565b610a51565b5060019392505050565b6000546001600160a01b031633146107995760405162461bcd60e51b815260040161048c906118a9565b601780549115156101000261ff0019909216919091179055565b6012546001600160a01b0316336001600160a01b031614806107e857506013546001600160a01b0316336001600160a01b0316145b6107f157600080fd5b476107fb81610fd6565b50565b6001600160a01b03811660009081526004602052604081205461045c9061101a565b6000546001600160a01b0316331461084a5760405162461bcd60e51b815260040161048c906118a9565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146108be5760405162461bcd60e51b815260040161048c906118a9565b6d314dc6448d9338c15b0a000000006014819055601555565b6000546001600160a01b031633146109015760405162461bcd60e51b815260040161048c906118a9565b601655565b6000610458338484610b75565b6012546001600160a01b0316336001600160a01b0316148061094857506013546001600160a01b0316336001600160a01b0316145b61095157600080fd5b600061095c306107fe565b90506107fb81611038565b6000546001600160a01b031633146109915760405162461bcd60e51b815260040161048c906118a9565b6001600160a01b0381166109f65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161048c565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610ab35760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161048c565b6001600160a01b038216610b145760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161048c565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610bd95760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161048c565b6001600160a01b038216610c3b5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161048c565b60008111610c9d5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161048c565b6017805462ff0000191690556001600160a01b03831660009081526007602052604090205460ff16158015610ceb57506001600160a01b03821660009081526007602052604090205460ff16155b15610e9557601454811115610d425760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000604482015260640161048c565b6003546001600160a01b03838116911614610dc75760155481610d64846107fe565b610d6e9190611a49565b10610dc75760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b606482015260840161048c565b6000610dd2306107fe565b601654601454919250821015908210610deb5760145491505b808015610dfb575060175460ff16155b8015610e1557506003546001600160a01b03868116911614155b8015610e285750601754610100900460ff165b8015610e4d57506001600160a01b03851660009081526007602052604090205460ff16155b8015610e7257506001600160a01b03841660009081526007602052604090205460ff16155b15610e9257610e8082611038565b478015610e9057610e90816111a9565b505b50505b6001600160a01b03831660009081526007602052604090205460019060ff1680610ed757506001600160a01b03831660009081526007602052604090205460ff165b80610f0957506003546001600160a01b03858116911614801590610f0957506003546001600160a01b03848116911614155b15610f1657506000610f90565b6003546001600160a01b038581169116148015610f4157506002546001600160a01b03848116911614155b15610f5357600a54600e55600b54600f555b6003546001600160a01b038481169116148015610f7e57506002546001600160a01b03858116911614155b15610f9057600c54600e55600d54600f555b6106df8484848461120a565b60008184841115610fc05760405162461bcd60e51b815260040161048c9190611748565b506000610fcd8486611a5c565b95945050505050565b80156107fb576013546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611016573d6000803e3d6000fd5b5050565b600080611025611238565b9050611031838261125b565b9392505050565b6017805460ff19166001179055604080516002808252606082018352600092602083019080368337019050509050308160008151811061107a5761107a611a6f565b6001600160a01b03928316602091820292909201810191909152600254604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156110d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f791906118de565b8160018151811061110a5761110a611a6f565b6001600160a01b0392831660209182029290920101526002546111309130911684610a51565b60025460405163791ac94760e01b81526001600160a01b039091169063791ac94790611169908590600090869030904290600401611a85565b600060405180830381600087803b15801561118357600080fd5b505af1158015611197573d6000803e3d6000fd5b50506017805460ff1916905550505050565b6013546111be906001600160a01b03166107fe565b6111c89082611a5c565b905080156107fb576013546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611016573d6000803e3d6000fd5b806112175761121761129d565b6112228484846112cb565b806106df576106df601054600e55601154600f55565b60008060006112456113ea565b9092509050611254828261125b565b9250505090565b600061103183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061146c565b600e541580156112ad5750600f54155b156112b457565b600e8054601055600f805460115560009182905555565b6013546017805462ff000019166001600160a01b03928316928616929092146201000002919091179055600080808080806113058761149a565b6001600160a01b038f16600090815260046020526040902054959b5093995091975095509350915061133790876114f7565b6001600160a01b03808b1660009081526004602052604080822093909355908a16815220546113669086611539565b6001600160a01b03891660009081526004602052604090205561138881611598565b61139284836115e2565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516113d791815260200190565b60405180910390a3505050505050505050565b6008546000908190816113ff6012600a611a23565b61140d90633b9aca00611a32565b905061143561141e6012600a611a23565b61142c90633b9aca00611a32565b6008549061125b565b8210156114635760085461144b6012600a611a23565b61145990633b9aca00611a32565b9350935050509091565b90939092509050565b6000818361148d5760405162461bcd60e51b815260040161048c9190611748565b506000610fcd8486611af6565b60008060008060008060008060006114b78a600e54600f54611606565b92509250925060006114c7611238565b905060008060006114da8e87878761165b565b919e509c509a509598509396509194505050505091939550919395565b600061103183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610f9c565b6000806115468385611a49565b9050838110156110315760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161048c565b60006115a2611238565b905060006115b083836116c6565b306000908152600460205260409020549091506115cd9082611539565b30600090815260046020526040902055505050565b6008546115ef90836114f7565b6008556009546115ff9082611539565b6009555050565b6000808080611620606461161a89896116c6565b9061125b565b90506000611633606461161a8a896116c6565b9050600061164b826116458b866114f7565b906114f7565b9992985090965090945050505050565b600080808061166a88866116c6565b9050600061167888876116c6565b9050600061168688886116c6565b905060006116988261164586866114f7565b60175490915062010000900460ff166116b157836116b4565b60005b9b909a50919850909650505050505050565b6000826000036116d85750600061045c565b60006116e48385611a32565b9050826116f18583611af6565b146110315760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161048c565b600060208083528351808285015260005b8181101561177557858101830151858201604001528201611759565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146107fb57600080fd5b600080604083850312156117be57600080fd5b82356117c981611796565b946020939093013593505050565b6000806000606084860312156117ec57600080fd5b83356117f781611796565b9250602084013561180781611796565b929592945050506040919091013590565b60006020828403121561182a57600080fd5b8135801515811461103157600080fd5b60006020828403121561184c57600080fd5b813561103181611796565b60006020828403121561186957600080fd5b5035919050565b6000806040838503121561188357600080fd5b823561188e81611796565b9150602083013561189e81611796565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6000602082840312156118f057600080fd5b815161103181611796565b60008060006060848603121561191057600080fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561197a57816000190482111561196057611960611929565b8085161561196d57918102915b93841c9390800290611944565b509250929050565b6000826119915750600161045c565b8161199e5750600061045c565b81600181146119b457600281146119be576119da565b600191505061045c565b60ff8411156119cf576119cf611929565b50506001821b61045c565b5060208310610133831016604e8410600b84101617156119fd575081810a61045c565b611a07838361193f565b8060001904821115611a1b57611a1b611929565b029392505050565b600061103160ff841683611982565b808202811582820484141761045c5761045c611929565b8082018082111561045c5761045c611929565b8181038181111561045c5761045c611929565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611ad55784516001600160a01b031683529383019391830191600101611ab0565b50506001600160a01b03969096166060850152505050608001529392505050565b600082611b1357634e487b7160e01b600052601260045260246000fd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220bfc5dbae92cc584485d69ab9e78ed3cb19a73b26301edf93e84034a55dd4e64164736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101445760003560e01c806370a08231116100b657806395d89b411161006f57806395d89b411461036557806398a5c31514610390578063a9059cbb146103b0578063c3c8cd80146103d0578063dd62ed3e146103e5578063f2fde38b1461042b57600080fd5b806370a08231146102d1578063715018a6146102f1578063753b7b3a146103065780637d1db4a51461031b5780638da5cb5b146103315780638f9a55c01461034f57600080fd5b806323b872dd1161010857806323b872dd1461022a5780632fd689e31461024a578063313ce5671461026057806349bd5a5e1461027c5780636d8aa8f81461029c5780636fc3eaec146102bc57600080fd5b806306fdde0314610150578063095ea7b3146101955780630a13670c146101c55780631694505e146101cf57806318160ddd1461020757600080fd5b3661014b57005b600080fd5b34801561015c57600080fd5b5060408051808201909152600a815269155d1bdc1a5848109bdd60b21b60208201525b60405161018c9190611748565b60405180910390f35b3480156101a157600080fd5b506101b56101b03660046117ab565b61044b565b604051901515815260200161018c565b6101cd610462565b005b3480156101db57600080fd5b506002546101ef906001600160a01b031681565b6040516001600160a01b03909116815260200161018c565b34801561021357600080fd5b5061021c6106e5565b60405190815260200161018c565b34801561023657600080fd5b506101b56102453660046117d7565b610706565b34801561025657600080fd5b5061021c60165481565b34801561026c57600080fd5b506040516012815260200161018c565b34801561028857600080fd5b506003546101ef906001600160a01b031681565b3480156102a857600080fd5b506101cd6102b7366004611818565b61076f565b3480156102c857600080fd5b506101cd6107b3565b3480156102dd57600080fd5b5061021c6102ec36600461183a565b6107fe565b3480156102fd57600080fd5b506101cd610820565b34801561031257600080fd5b506101cd610894565b34801561032757600080fd5b5061021c60145481565b34801561033d57600080fd5b506000546001600160a01b03166101ef565b34801561035b57600080fd5b5061021c60155481565b34801561037157600080fd5b506040805180820190915260028152612aa160f11b602082015261017f565b34801561039c57600080fd5b506101cd6103ab366004611857565b6108d7565b3480156103bc57600080fd5b506101b56103cb3660046117ab565b610906565b3480156103dc57600080fd5b506101cd610913565b3480156103f157600080fd5b5061021c610400366004611870565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b34801561043757600080fd5b506101cd61044636600461183a565b610967565b6000610458338484610a51565b5060015b92915050565b6000546001600160a01b031633146104955760405162461bcd60e51b815260040161048c906118a9565b60405180910390fd5b600280546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b81529051829163c45a01559160048083019260209291908290030181865afa1580156104fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061051e91906118de565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561056b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061058f91906118de565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156105dc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061060091906118de565b600380546001600160a01b0319166001600160a01b03928316179055306000818152600660209081526040808320600280548716855292529091206000199055549091169063f305d719903490610656816107fe565b6040516001600160e01b031960e086901b1681526001600160a01b039092166004830152602482015260006044820181905260648201523360848201524260a482015260c40160606040518083038185885af11580156106ba573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906106df91906118fb565b50505050565b60006106f36012600a611a23565b61070190633b9aca00611a32565b905090565b6000610713848484610b75565b610765843361076085604051806060016040528060288152602001611b19602891396001600160a01b038a1660009081526006602090815260408083203384529091529020549190610f9c565b610a51565b5060019392505050565b6000546001600160a01b031633146107995760405162461bcd60e51b815260040161048c906118a9565b601780549115156101000261ff0019909216919091179055565b6012546001600160a01b0316336001600160a01b031614806107e857506013546001600160a01b0316336001600160a01b0316145b6107f157600080fd5b476107fb81610fd6565b50565b6001600160a01b03811660009081526004602052604081205461045c9061101a565b6000546001600160a01b0316331461084a5760405162461bcd60e51b815260040161048c906118a9565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146108be5760405162461bcd60e51b815260040161048c906118a9565b6d314dc6448d9338c15b0a000000006014819055601555565b6000546001600160a01b031633146109015760405162461bcd60e51b815260040161048c906118a9565b601655565b6000610458338484610b75565b6012546001600160a01b0316336001600160a01b0316148061094857506013546001600160a01b0316336001600160a01b0316145b61095157600080fd5b600061095c306107fe565b90506107fb81611038565b6000546001600160a01b031633146109915760405162461bcd60e51b815260040161048c906118a9565b6001600160a01b0381166109f65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161048c565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610ab35760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161048c565b6001600160a01b038216610b145760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161048c565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610bd95760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161048c565b6001600160a01b038216610c3b5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161048c565b60008111610c9d5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161048c565b6017805462ff0000191690556001600160a01b03831660009081526007602052604090205460ff16158015610ceb57506001600160a01b03821660009081526007602052604090205460ff16155b15610e9557601454811115610d425760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000604482015260640161048c565b6003546001600160a01b03838116911614610dc75760155481610d64846107fe565b610d6e9190611a49565b10610dc75760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b606482015260840161048c565b6000610dd2306107fe565b601654601454919250821015908210610deb5760145491505b808015610dfb575060175460ff16155b8015610e1557506003546001600160a01b03868116911614155b8015610e285750601754610100900460ff165b8015610e4d57506001600160a01b03851660009081526007602052604090205460ff16155b8015610e7257506001600160a01b03841660009081526007602052604090205460ff16155b15610e9257610e8082611038565b478015610e9057610e90816111a9565b505b50505b6001600160a01b03831660009081526007602052604090205460019060ff1680610ed757506001600160a01b03831660009081526007602052604090205460ff165b80610f0957506003546001600160a01b03858116911614801590610f0957506003546001600160a01b03848116911614155b15610f1657506000610f90565b6003546001600160a01b038581169116148015610f4157506002546001600160a01b03848116911614155b15610f5357600a54600e55600b54600f555b6003546001600160a01b038481169116148015610f7e57506002546001600160a01b03858116911614155b15610f9057600c54600e55600d54600f555b6106df8484848461120a565b60008184841115610fc05760405162461bcd60e51b815260040161048c9190611748565b506000610fcd8486611a5c565b95945050505050565b80156107fb576013546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611016573d6000803e3d6000fd5b5050565b600080611025611238565b9050611031838261125b565b9392505050565b6017805460ff19166001179055604080516002808252606082018352600092602083019080368337019050509050308160008151811061107a5761107a611a6f565b6001600160a01b03928316602091820292909201810191909152600254604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156110d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f791906118de565b8160018151811061110a5761110a611a6f565b6001600160a01b0392831660209182029290920101526002546111309130911684610a51565b60025460405163791ac94760e01b81526001600160a01b039091169063791ac94790611169908590600090869030904290600401611a85565b600060405180830381600087803b15801561118357600080fd5b505af1158015611197573d6000803e3d6000fd5b50506017805460ff1916905550505050565b6013546111be906001600160a01b03166107fe565b6111c89082611a5c565b905080156107fb576013546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611016573d6000803e3d6000fd5b806112175761121761129d565b6112228484846112cb565b806106df576106df601054600e55601154600f55565b60008060006112456113ea565b9092509050611254828261125b565b9250505090565b600061103183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061146c565b600e541580156112ad5750600f54155b156112b457565b600e8054601055600f805460115560009182905555565b6013546017805462ff000019166001600160a01b03928316928616929092146201000002919091179055600080808080806113058761149a565b6001600160a01b038f16600090815260046020526040902054959b5093995091975095509350915061133790876114f7565b6001600160a01b03808b1660009081526004602052604080822093909355908a16815220546113669086611539565b6001600160a01b03891660009081526004602052604090205561138881611598565b61139284836115e2565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516113d791815260200190565b60405180910390a3505050505050505050565b6008546000908190816113ff6012600a611a23565b61140d90633b9aca00611a32565b905061143561141e6012600a611a23565b61142c90633b9aca00611a32565b6008549061125b565b8210156114635760085461144b6012600a611a23565b61145990633b9aca00611a32565b9350935050509091565b90939092509050565b6000818361148d5760405162461bcd60e51b815260040161048c9190611748565b506000610fcd8486611af6565b60008060008060008060008060006114b78a600e54600f54611606565b92509250925060006114c7611238565b905060008060006114da8e87878761165b565b919e509c509a509598509396509194505050505091939550919395565b600061103183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610f9c565b6000806115468385611a49565b9050838110156110315760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161048c565b60006115a2611238565b905060006115b083836116c6565b306000908152600460205260409020549091506115cd9082611539565b30600090815260046020526040902055505050565b6008546115ef90836114f7565b6008556009546115ff9082611539565b6009555050565b6000808080611620606461161a89896116c6565b9061125b565b90506000611633606461161a8a896116c6565b9050600061164b826116458b866114f7565b906114f7565b9992985090965090945050505050565b600080808061166a88866116c6565b9050600061167888876116c6565b9050600061168688886116c6565b905060006116988261164586866114f7565b60175490915062010000900460ff166116b157836116b4565b60005b9b909a50919850909650505050505050565b6000826000036116d85750600061045c565b60006116e48385611a32565b9050826116f18583611af6565b146110315760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161048c565b600060208083528351808285015260005b8181101561177557858101830151858201604001528201611759565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146107fb57600080fd5b600080604083850312156117be57600080fd5b82356117c981611796565b946020939093013593505050565b6000806000606084860312156117ec57600080fd5b83356117f781611796565b9250602084013561180781611796565b929592945050506040919091013590565b60006020828403121561182a57600080fd5b8135801515811461103157600080fd5b60006020828403121561184c57600080fd5b813561103181611796565b60006020828403121561186957600080fd5b5035919050565b6000806040838503121561188357600080fd5b823561188e81611796565b9150602083013561189e81611796565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6000602082840312156118f057600080fd5b815161103181611796565b60008060006060848603121561191057600080fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561197a57816000190482111561196057611960611929565b8085161561196d57918102915b93841c9390800290611944565b509250929050565b6000826119915750600161045c565b8161199e5750600061045c565b81600181146119b457600281146119be576119da565b600191505061045c565b60ff8411156119cf576119cf611929565b50506001821b61045c565b5060208310610133831016604e8410600b84101617156119fd575081810a61045c565b611a07838361193f565b8060001904821115611a1b57611a1b611929565b029392505050565b600061103160ff841683611982565b808202811582820484141761045c5761045c611929565b8082018082111561045c5761045c611929565b8181038181111561045c5761045c611929565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611ad55784516001600160a01b031683529383019391830191600101611ab0565b50506001600160a01b03969096166060850152505050608001529392505050565b600082611b1357634e487b7160e01b600052601260045260246000fd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220bfc5dbae92cc584485d69ab9e78ed3cb19a73b26301edf93e84034a55dd4e64164736f6c63430008130033

Deployed Bytecode Sourcemap

4246:12610:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6387:83;;;;;;;;;;-1:-1:-1;6457:5:0;;;;;;;;;;;;-1:-1:-1;;;6457:5:0;;;;6387:83;;;;;;;:::i;:::-;;;;;;;;7319:193;;;;;;;;;;-1:-1:-1;7319:193:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;7319:193:0;1023:187:1;16162:569:0;;;:::i;:::-;;4334:41;;;;;;;;;;-1:-1:-1;4334:41:0;;;;-1:-1:-1;;;;;4334:41:0;;;;;;-1:-1:-1;;;;;1405:32:1;;;1387:51;;1375:2;1360:18;4334:41:0;1215:229:1;6667:95:0;;;;;;;;;;;;;:::i;:::-;;;1595:25:1;;;1583:2;1568:18;6667:95:0;1449:177:1;7521:446:0;;;;;;;;;;-1:-1:-1;7521:446:0;;;;;:::i;:::-;;:::i;5720:55::-;;;;;;;;;;;;;;;;6575:83;;;;;;;;;;-1:-1:-1;6575:83:0;;4550:2;2234:36:1;;2222:2;2207:18;6575:83:0;2092:184:1;4382:28:0;;;;;;;;;;-1:-1:-1;4382:28:0;;;;-1:-1:-1;;;;;4382:28:0;;;16053:101;;;;;;;;;;-1:-1:-1;16053:101:0;;;;;:::i;:::-;;:::i;12995:236::-;;;;;;;;;;;;;:::i;6771:138::-;;;;;;;;;;-1:-1:-1;6771:138:0;;;;;:::i;:::-;;:::i;2936:148::-;;;;;;;;;;;;;:::i;16739:114::-;;;;;;;;;;;;;:::i;5604:49::-;;;;;;;;;;;;;;;;2720:79;;;;;;;;;;-1:-1:-1;2758:7:0;2785:6;-1:-1:-1;;;;;2785:6:0;2720:79;;5661:51;;;;;;;;;;;;;;;;6479:87;;;;;;;;;;-1:-1:-1;6551:7:0;;;;;;;;;;;;-1:-1:-1;;;6551:7:0;;;;6479:87;;15861:139;;;;;;;;;;-1:-1:-1;15861:139:0;;;;;:::i;:::-;;:::i;6918:199::-;;;;;;;;;;-1:-1:-1;6918:199:0;;;;;:::i;:::-;;:::i;11864:236::-;;;;;;;;;;;;;:::i;7126:184::-;;;;;;;;;;-1:-1:-1;7126:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;7275:18:0;;;7243:7;7275:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7126:184;3093:244;;;;;;;;;;-1:-1:-1;3093:244:0;;;;;:::i;:::-;;:::i;7319:193::-;7421:4;7443:39;333:10;7466:7;7475:6;7443:8;:39::i;:::-;-1:-1:-1;7500:4:0;7319:193;;;;;:::o;16162:569::-;2848:6;;-1:-1:-1;;;;;2848:6:0;333:10;2848:22;2840:67;;;;-1:-1:-1;;;2840:67:0;;;;;;;:::i;:::-;;;;;;;;;16337:15:::1;:34:::0;;-1:-1:-1;;;;;;16337:34:0::1;16283:42;16337:34:::0;;::::1;::::0;;;16416:26:::1;::::0;;-1:-1:-1;;;16416:26:0;;;;16283:42;;16416:24:::1;::::0;:26:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;16283:42;16416:26:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;16398:70:0::1;;16477:4;16484:16;-1:-1:-1::0;;;;;16484:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16398:110;::::0;-1:-1:-1;;;;;;16398:110:0::1;::::0;;;;;;-1:-1:-1;;;;;4444:15:1;;;16398:110:0::1;::::0;::::1;4426:34:1::0;4496:15;;4476:18;;;4469:43;4361:18;;16398:110:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16382:13;:126:::0;;-1:-1:-1;;;;;;16382:126:0::1;-1:-1:-1::0;;;;;16382:126:0;;::::1;;::::0;;16541:4:::1;-1:-1:-1::0;16521:26:0;;;:11:::1;:26;::::0;;;;;;;16556:15:::1;::::0;;;::::1;16521:52:::0;;;;;;;-1:-1:-1;;16521:66:0;;16598:15;;;::::1;::::0;:31:::1;::::0;16637:9:::1;::::0;16663:24:::1;16541:4:::0;16663:9:::1;:24::i;:::-;16598:125;::::0;-1:-1:-1;;;;;;16598:125:0::1;::::0;;;;;;-1:-1:-1;;;;;4882:15:1;;;16598:125:0::1;::::0;::::1;4864:34:1::0;4914:18;;;4907:34;16689:1:0::1;4957:18:1::0;;;4950:34;;;5000:18;;;4993:34;16695:10:0::1;5043:19:1::0;;;5036:44;16707:15:0::1;5096:19:1::0;;;5089:35;4798:19;;16598:125:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;16215:516;16162:569::o:0;6667:95::-;6720:7;4887:15;4550:2;4887;:15;:::i;:::-;4871:31;;:13;:31;:::i;:::-;6740:14;;6667:95;:::o;7521:446::-;7653:4;7670:36;7680:6;7688:9;7699:6;7670:9;:36::i;:::-;7717:220;7740:6;333:10;7788:138;7844:6;7788:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7788:19:0;;;;;;:11;:19;;;;;;;;333:10;7788:33;;;;;;;;;;:37;:138::i;:::-;7717:8;:220::i;:::-;-1:-1:-1;7955:4:0;7521:446;;;;;:::o;16053:101::-;2848:6;;-1:-1:-1;;;;;2848:6:0;333:10;2848:22;2840:67;;;;-1:-1:-1;;;2840:67:0;;;;;;;:::i;:::-;16120:11:::1;:26:::0;;;::::1;;;;-1:-1:-1::0;;16120:26:0;;::::1;::::0;;;::::1;::::0;;16053:101::o;12995:236::-;13061:19;;-1:-1:-1;;;;;13061:19:0;333:10;-1:-1:-1;;;;;13045:35:0;;:72;;;-1:-1:-1;13100:17:0;;-1:-1:-1;;;;;13100:17:0;333:10;-1:-1:-1;;;;;13084:33:0;;13045:72;13037:81;;;;;;13158:21;13190:33;13158:21;13190:13;:33::i;:::-;13026:205;12995:236::o;6771:138::-;-1:-1:-1;;;;;6884:16:0;;6837:7;6884:16;;;:7;:16;;;;;;6864:37;;:19;:37::i;2936:148::-;2848:6;;-1:-1:-1;;;;;2848:6:0;333:10;2848:22;2840:67;;;;-1:-1:-1;;;2840:67:0;;;;;;;:::i;:::-;3043:1:::1;3027:6:::0;;3006:40:::1;::::0;-1:-1:-1;;;;;3027:6:0;;::::1;::::0;3006:40:::1;::::0;3043:1;;3006:40:::1;3074:1;3057:19:::0;;-1:-1:-1;;;;;;3057:19:0::1;::::0;;2936:148::o;16739:114::-;2848:6;;-1:-1:-1;;;;;2848:6:0;333:10;2848:22;2840:67;;;;-1:-1:-1;;;2840:67:0;;;;;;;:::i;:::-;4825:4:::1;16796:12;:18:::0;;;16825:14:::1;:20:::0;16739:114::o;15861:139::-;2848:6;;-1:-1:-1;;;;;2848:6:0;333:10;2848:22;2840:67;;;;-1:-1:-1;;;2840:67:0;;;;;;;:::i;:::-;15952:19:::1;:40:::0;15861:139::o;6918:199::-;7023:4;7045:42;333:10;7069:9;7080:6;7045:9;:42::i;11864:236::-;11930:19;;-1:-1:-1;;;;;11930:19:0;333:10;-1:-1:-1;;;;;11914:35:0;;:72;;;-1:-1:-1;11969:17:0;;-1:-1:-1;;;;;11969:17:0;333:10;-1:-1:-1;;;;;11953:33:0;;11914:72;11906:81;;;;;;11998:23;12024:24;12042:4;12024:9;:24::i;:::-;11998:50;;12059:33;12076:15;12059:16;:33::i;3093:244::-;2848:6;;-1:-1:-1;;;;;2848:6:0;333:10;2848:22;2840:67;;;;-1:-1:-1;;;2840:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3182:22:0;::::1;3174:73;;;::::0;-1:-1:-1;;;3174:73:0;;7336:2:1;3174:73:0::1;::::0;::::1;7318:21:1::0;7375:2;7355:18;;;7348:30;7414:34;7394:18;;;7387:62;-1:-1:-1;;;7465:18:1;;;7458:36;7511:19;;3174:73:0::1;7134:402:1::0;3174:73:0::1;3284:6;::::0;;3263:38:::1;::::0;-1:-1:-1;;;;;3263:38:0;;::::1;::::0;3284:6;::::1;::::0;3263:38:::1;::::0;::::1;3312:6;:17:::0;;-1:-1:-1;;;;;;3312:17:0::1;-1:-1:-1::0;;;;;3312:17:0;;;::::1;::::0;;;::::1;::::0;;3093:244::o;8543:369::-;-1:-1:-1;;;;;8670:19:0;;8662:68;;;;-1:-1:-1;;;8662:68:0;;7743:2:1;8662:68:0;;;7725:21:1;7782:2;7762:18;;;7755:30;7821:34;7801:18;;;7794:62;-1:-1:-1;;;7872:18:1;;;7865:34;7916:19;;8662:68:0;7541:400:1;8662:68:0;-1:-1:-1;;;;;8749:21:0;;8741:68;;;;-1:-1:-1;;;8741:68:0;;8148:2:1;8741:68:0;;;8130:21:1;8187:2;8167:18;;;8160:30;8226:34;8206:18;;;8199:62;-1:-1:-1;;;8277:18:1;;;8270:32;8319:19;;8741:68:0;7946:398:1;8741:68:0;-1:-1:-1;;;;;8820:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;8872:32;;1595:25:1;;;8872:32:0;;1568:18:1;8872:32:0;;;;;;;8543:369;;;:::o;8920:2094::-;-1:-1:-1;;;;;9042:18:0;;9034:68;;;;-1:-1:-1;;;9034:68:0;;8551:2:1;9034:68:0;;;8533:21:1;8590:2;8570:18;;;8563:30;8629:34;8609:18;;;8602:62;-1:-1:-1;;;8680:18:1;;;8673:35;8725:19;;9034:68:0;8349:401:1;9034:68:0;-1:-1:-1;;;;;9121:16:0;;9113:64;;;;-1:-1:-1;;;9113:64:0;;8957:2:1;9113:64:0;;;8939:21:1;8996:2;8976:18;;;8969:30;9035:34;9015:18;;;9008:62;-1:-1:-1;;;9086:18:1;;;9079:33;9129:19;;9113:64:0;8755:399:1;9113:64:0;9205:1;9196:6;:10;9188:64;;;;-1:-1:-1;;;9188:64:0;;9361:2:1;9188:64:0;;;9343:21:1;9400:2;9380:18;;;9373:30;9439:34;9419:18;;;9412:62;-1:-1:-1;;;9490:18:1;;;9483:39;9539:19;;9188:64:0;9159:405:1;9188:64:0;9263:6;:14;;-1:-1:-1;;9263:14:0;;;-1:-1:-1;;;;;9293:24:0;;9272:5;9293:24;;;:18;:24;;;;;;9263:14;9293:24;9292:25;:52;;;;-1:-1:-1;;;;;;9322:22:0;;;;;;:18;:22;;;;;;;;9321:23;9292:52;9288:1000;;;9380:12;;9370:6;:22;;9362:63;;;;-1:-1:-1;;;9362:63:0;;9771:2:1;9362:63:0;;;9753:21:1;9810:2;9790:18;;;9783:30;9849;9829:18;;;9822:58;9897:18;;9362:63:0;9569:352:1;9362:63:0;9452:13;;-1:-1:-1;;;;;9446:19:0;;;9452:13;;9446:19;9443:146;;9519:14;;9510:6;9494:13;9504:2;9494:9;:13::i;:::-;:22;;;;:::i;:::-;:39;9486:87;;;;-1:-1:-1;;;9486:87:0;;10258:2:1;9486:87:0;;;10240:21:1;10297:2;10277:18;;;10270:30;10336:34;10316:18;;;10309:62;-1:-1:-1;;;10387:18:1;;;10380:33;10430:19;;9486:87:0;10056:399:1;9486:87:0;9606:28;9637:24;9655:4;9637:9;:24::i;:::-;9715:19;;9779:12;;9606:55;;-1:-1:-1;9691:43:0;;;;9755:36;;9752:124;;9848:12;;9825:35;;9752:124;9897:7;:18;;;;-1:-1:-1;9909:6:0;;;;9908:7;9897:18;:43;;;;-1:-1:-1;9927:13:0;;-1:-1:-1;;;;;9919:21:0;;;9927:13;;9919:21;;9897:43;:58;;;;-1:-1:-1;9944:11:0;;;;;;;9897:58;:87;;;;-1:-1:-1;;;;;;9960:24:0;;;;;;:18;:24;;;;;;;;9959:25;9897:87;:114;;;;-1:-1:-1;;;;;;9989:22:0;;;;;;:18;:22;;;;;;;;9988:23;9897:114;9893:384;;;10032:38;10049:20;10032:16;:38::i;:::-;10118:21;10162:22;;10158:104;;10209:33;10223:18;10209:13;:33::i;:::-;10013:264;9893:384;9346:942;;9288:1000;-1:-1:-1;;;;;10366:24:0;;10301:12;10366:24;;;:18;:24;;;;;;10316:4;;10366:24;;;:50;;-1:-1:-1;;;;;;10394:22:0;;;;;;:18;:22;;;;;;;;10366:50;10365:102;;;-1:-1:-1;10430:13:0;;-1:-1:-1;;;;;10422:21:0;;;10430:13;;10422:21;;;;:44;;-1:-1:-1;10453:13:0;;-1:-1:-1;;;;;10447:19:0;;;10453:13;;10447:19;;10422:44;10361:594;;;-1:-1:-1;10494:5:0;10361:594;;;10578:13;;-1:-1:-1;;;;;10570:21:0;;;10578:13;;10570:21;:55;;;;-1:-1:-1;10609:15:0;;-1:-1:-1;;;;;10595:30:0;;;10609:15;;10595:30;;10570:55;10567:162;;;10658:14;;10646:9;:26;10701:12;;10691:7;:22;10567:162;10789:13;;-1:-1:-1;;;;;10783:19:0;;;10789:13;;10783:19;:55;;;;-1:-1:-1;10822:15:0;;-1:-1:-1;;;;;10806:32:0;;;10822:15;;10806:32;;10783:55;10779:165;;;10871:15;;10859:9;:27;10915:13;;10905:7;:23;10779:165;10965:41;10980:4;10986:2;10990:6;10998:7;10965:14;:41::i;716:224::-;836:7;872:12;864:6;;;;856:29;;;;-1:-1:-1;;;856:29:0;;;;;;;;:::i;:::-;-1:-1:-1;896:9:0;908:5;912:1;908;:5;:::i;:::-;896:17;716:224;-1:-1:-1;;;;;716:224:0:o;11713:142::-;11775:10;;11771:77;;11802:17;;:34;;-1:-1:-1;;;;;11802:17:0;;;;:34;;;;;11829:6;;11802:17;:34;:17;:34;11829:6;11802:17;:34;;;;;;;;;;;;;;;;;;;;;11713:142;:::o;7976:202::-;8071:7;8096:19;8118:10;:8;:10::i;:::-;8096:32;-1:-1:-1;8146:24:0;:7;8096:32;8146:11;:24::i;:::-;8139:31;7976:202;-1:-1:-1;;;7976:202:0:o;11023:483::-;5971:6;:13;;-1:-1:-1;;5971:13:0;5980:4;5971:13;;;11125:16:::1;::::0;;11139:1:::1;11125:16:::0;;;;;::::1;::::0;;-1:-1:-1;;11125:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;11125:16:0::1;11101:40;;11170:4;11152;11157:1;11152:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11152:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;11196:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;11196:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;11152:7;;11196:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11186:4;11191:1;11186:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11186:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;11261:15:::1;::::0;11229:62:::1;::::0;11246:4:::1;::::0;11261:15:::1;11279:11:::0;11229:8:::1;:62::i;:::-;11302:15;::::0;:196:::1;::::0;-1:-1:-1;;;11302:196:0;;-1:-1:-1;;;;;11302:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;11383:11;;11302:15:::1;::::0;11425:4;;11452::::1;::::0;11472:15:::1;::::0;11302:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;6007:6:0;:14;;-1:-1:-1;;6007:14:0;;;-1:-1:-1;;;;11023:483:0:o;11515:190::-;11592:17;;11582:28;;-1:-1:-1;;;;;11592:17:0;11582:9;:28::i;:::-;11573:37;;:6;:37;:::i;:::-;11564:46;-1:-1:-1;11625:10:0;;11621:77;;11652:17;;:34;;-1:-1:-1;;;;;11652:17:0;;;;:34;;;;;11679:6;;11652:17;:34;:17;:34;11679:6;11652:17;:34;;;;;;;;;;;;;;;;;;;13240:282;13396:7;13391:28;;13405:14;:12;:14::i;:::-;13430:44;13448:6;13456:9;13467:6;13430:17;:44::i;:::-;13490:7;13485:29;;13499:15;8473:17;;8461:9;:29;8511:15;;8501:7;:25;8417:117;14277:164;14319:7;14340:15;14357;14376:19;:17;:19::i;:::-;14339:56;;-1:-1:-1;14339:56:0;-1:-1:-1;14413:20:0;14339:56;;14413:11;:20::i;:::-;14406:27;;;;14277:164;:::o;1204:132::-;1262:7;1289:39;1293:1;1296;1289:39;;;;;;;;;;;;;;;;;:3;:39::i;8187:221::-;8234:9;;:14;:30;;;;-1:-1:-1;8252:7:0;;:12;8234:30;8230:43;;;8187:221::o;8230:43::-;8306:9;;;8286:17;:29;8344:7;;;8326:15;:25;-1:-1:-1;8365:13:0;;;;8389:11;8187:221::o;12110:657::-;12261:17;;12242:6;:36;;-1:-1:-1;;12242:36:0;-1:-1:-1;;;;;12261:17:0;;;12251:27;;;;;;;12242:36;;;;;;;;-1:-1:-1;;;;;;12491:19:0;12502:7;12491:10;:19::i;:::-;-1:-1:-1;;;;;12539:15:0;;;;;;:7;:15;;;;;;12289:221;;-1:-1:-1;12289:221:0;;-1:-1:-1;12289:221:0;;-1:-1:-1;12289:221:0;-1:-1:-1;12289:221:0;-1:-1:-1;12289:221:0;-1:-1:-1;12539:28:0;;12289:221;12539:19;:28::i;:::-;-1:-1:-1;;;;;12521:15:0;;;;;;;:7;:15;;;;;;:46;;;;12599:18;;;;;;;:39;;12622:15;12599:22;:39::i;:::-;-1:-1:-1;;;;;12578:18:0;;;;;;:7;:18;;;;;:60;12649:16;12659:5;12649:9;:16::i;:::-;12676:23;12688:4;12694;12676:11;:23::i;:::-;12732:9;-1:-1:-1;;;;;12715:44:0;12724:6;-1:-1:-1;;;;;12715:44:0;;12743:15;12715:44;;;;1595:25:1;;1583:2;1568:18;;1449:177;12715:44:0;;;;;;;;12231:536;;;;;;12110:657;;;:::o;15551:257::-;15649:7;;15602;;;;;4887:15;4550:2;4887;:15;:::i;:::-;4871:31;;:13;:31;:::i;:::-;15667:25;-1:-1:-1;15717:20:0;4887:15;4550:2;4887;:15;:::i;:::-;4871:31;;:13;:31;:::i;:::-;15717:7;;;:11;:20::i;:::-;15707:7;:30;15703:61;;;15747:7;;4887:15;4550:2;4887;:15;:::i;:::-;4871:31;;:13;:31;:::i;:::-;15739:25;;;;;;15551:257;;:::o;15703:61::-;15783:7;;15792;;-1:-1:-1;15551:257:0;-1:-1:-1;15551:257:0:o;1345:223::-;1465:7;1500:12;1493:5;1485:28;;;;-1:-1:-1;;;1485:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1524:9:0;1536:5;1540:1;1536;:5;:::i;14450:615::-;14550:7;14572;14594;14616;14638;14660;14696:23;14721:12;14735:13;14765:40;14777:7;14786:9;;14797:7;;14765:11;:40::i;:::-;14695:110;;;;;;14816:19;14838:10;:8;:10::i;:::-;14816:32;;14860:15;14877:23;14902:12;14931:46;14943:7;14952:4;14958:5;14965:11;14931;:46::i;:::-;14859:118;;-1:-1:-1;14859:118:0;-1:-1:-1;14859:118:0;-1:-1:-1;15028:15:0;;-1:-1:-1;15045:4:0;;-1:-1:-1;15051:5:0;;-1:-1:-1;;;;;14450:615:0;;;;;;;:::o;571:136::-;629:7;656:43;660:1;663;656:43;;;;;;;;;;;;;;;;;:3;:43::i;383:179::-;441:7;;473:5;477:1;473;:5;:::i;:::-;461:17;;502:1;497;:6;;489:46;;;;-1:-1:-1;;;489:46:0;;12266:2:1;489:46:0;;;12248:21:1;12305:2;12285:18;;;12278:30;12344:29;12324:18;;;12317:57;12391:18;;489:46:0;12064:351:1;12776:211:0;12829:19;12851:10;:8;:10::i;:::-;12829:32;-1:-1:-1;12872:13:0;12888:22;:5;12829:32;12888:9;:22::i;:::-;12962:4;12946:22;;;;:7;:22;;;;;;12872:38;;-1:-1:-1;12946:33:0;;12872:38;12946:26;:33::i;:::-;12937:4;12921:22;;;;:7;:22;;;;;:58;-1:-1:-1;;;12776:211:0:o;13531:147::-;13609:7;;:17;;13621:4;13609:11;:17::i;:::-;13599:7;:27;13650:10;;:20;;13665:4;13650:14;:20::i;:::-;13637:10;:33;-1:-1:-1;;13531:147:0:o;15074:469::-;15243:7;;;;15337:30;15363:3;15337:21;:7;15349:8;15337:11;:21::i;:::-;:25;;:30::i;:::-;15322:45;-1:-1:-1;15378:13:0;15394:28;15418:3;15394:19;:7;15406:6;15394:11;:19::i;:28::-;15378:44;-1:-1:-1;15433:23:0;15459:28;15378:44;15459:17;:7;15471:4;15459:11;:17::i;:::-;:21;;:28::i;:::-;15433:54;15523:4;;-1:-1:-1;15529:5:0;;-1:-1:-1;15074:469:0;;-1:-1:-1;;;;;15074:469:0:o;13725:543::-;13919:7;;;;14016:24;:7;14028:11;14016;:24::i;:::-;13998:42;-1:-1:-1;14051:12:0;14066:21;:4;14075:11;14066:8;:21::i;:::-;14051:36;-1:-1:-1;14098:13:0;14114:22;:5;14124:11;14114:9;:22::i;:::-;14098:38;-1:-1:-1;14147:23:0;14173:28;14098:38;14173:17;:7;14185:4;14173:11;:17::i;:28::-;14220:6;;14147:54;;-1:-1:-1;14220:6:0;;;;;:16;;14229:7;14220:16;;;14227:1;14220:16;14212:48;14238:15;;-1:-1:-1;14255:4:0;;-1:-1:-1;13725:543:0;;-1:-1:-1;;;;;;;13725:543:0:o;949:246::-;1007:7;1031:1;1036;1031:6;1027:47;;-1:-1:-1;1061:1:0;1054:8;;1027:47;1084:9;1096:5;1100:1;1096;:5;:::i;:::-;1084:17;-1:-1:-1;1129:1:0;1120:5;1124:1;1084:17;1120:5;:::i;:::-;:10;1112:56;;;;-1:-1:-1;;;1112:56:0;;12622:2:1;1112:56:0;;;12604:21:1;12661:2;12641:18;;;12634:30;12700:34;12680:18;;;12673:62;-1:-1:-1;;;12751:18:1;;;12744:31;12792:19;;1112:56:0;12420: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:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1631:456::-;1708:6;1716;1724;1777:2;1765:9;1756:7;1752:23;1748:32;1745:52;;;1793:1;1790;1783:12;1745:52;1832:9;1819:23;1851:31;1876:5;1851:31;:::i;:::-;1901:5;-1:-1:-1;1958:2:1;1943:18;;1930:32;1971:33;1930:32;1971:33;:::i;:::-;1631:456;;2023:7;;-1:-1:-1;;;2077:2:1;2062:18;;;;2049:32;;1631:456::o;2489:273::-;2545:6;2598:2;2586:9;2577:7;2573:23;2569:32;2566:52;;;2614:1;2611;2604:12;2566:52;2653:9;2640:23;2706:5;2699:13;2692:21;2685:5;2682:32;2672:60;;2728:1;2725;2718:12;2767:247;2826:6;2879:2;2867:9;2858:7;2854:23;2850:32;2847:52;;;2895:1;2892;2885:12;2847:52;2934:9;2921:23;2953:31;2978:5;2953:31;:::i;3019:180::-;3078:6;3131:2;3119:9;3110:7;3106:23;3102:32;3099:52;;;3147:1;3144;3137:12;3099:52;-1:-1:-1;3170:23:1;;3019:180;-1:-1:-1;3019:180:1:o;3204:388::-;3272:6;3280;3333:2;3321:9;3312:7;3308:23;3304:32;3301:52;;;3349:1;3346;3339:12;3301:52;3388:9;3375:23;3407:31;3432:5;3407:31;:::i;:::-;3457:5;-1:-1:-1;3514:2:1;3499:18;;3486:32;3527:33;3486:32;3527:33;:::i;:::-;3579:7;3569:17;;;3204:388;;;;;:::o;3597:356::-;3799:2;3781:21;;;3818:18;;;3811:30;3877:34;3872:2;3857:18;;3850:62;3944:2;3929:18;;3597:356::o;3958:251::-;4028:6;4081:2;4069:9;4060:7;4056:23;4052:32;4049:52;;;4097:1;4094;4087:12;4049:52;4129:9;4123:16;4148:31;4173:5;4148:31;:::i;5135:306::-;5223:6;5231;5239;5292:2;5280:9;5271:7;5267:23;5263:32;5260:52;;;5308:1;5305;5298:12;5260:52;5337:9;5331:16;5321:26;;5387:2;5376:9;5372:18;5366:25;5356:35;;5431:2;5420:9;5416:18;5410:25;5400:35;;5135:306;;;;;:::o;5446:127::-;5507:10;5502:3;5498:20;5495:1;5488:31;5538:4;5535:1;5528:15;5562:4;5559:1;5552:15;5578:422;5667:1;5710:5;5667:1;5724:270;5745:7;5735:8;5732:21;5724:270;;;5804:4;5800:1;5796:6;5792:17;5786:4;5783:27;5780:53;;;5813:18;;:::i;:::-;5863:7;5853:8;5849:22;5846:55;;;5883:16;;;;5846:55;5962:22;;;;5922:15;;;;5724:270;;;5728:3;5578:422;;;;;:::o;6005:806::-;6054:5;6084:8;6074:80;;-1:-1:-1;6125:1:1;6139:5;;6074:80;6173:4;6163:76;;-1:-1:-1;6210:1:1;6224:5;;6163:76;6255:4;6273:1;6268:59;;;;6341:1;6336:130;;;;6248:218;;6268:59;6298:1;6289:10;;6312:5;;;6336:130;6373:3;6363:8;6360:17;6357:43;;;6380:18;;:::i;:::-;-1:-1:-1;;6436:1:1;6422:16;;6451:5;;6248:218;;6550:2;6540:8;6537:16;6531:3;6525:4;6522:13;6518:36;6512:2;6502:8;6499:16;6494:2;6488:4;6485:12;6481:35;6478:77;6475:159;;;-1:-1:-1;6587:19:1;;;6619:5;;6475:159;6666:34;6691:8;6685:4;6666:34;:::i;:::-;6736:6;6732:1;6728:6;6724:19;6715:7;6712:32;6709:58;;;6747:18;;:::i;:::-;6785:20;;6005:806;-1:-1:-1;;;6005:806:1:o;6816:140::-;6874:5;6903:47;6944:4;6934:8;6930:19;6924:4;6903:47;:::i;6961:168::-;7034:9;;;7065;;7082:15;;;7076:22;;7062:37;7052:71;;7103:18;;:::i;9926:125::-;9991:9;;;10012:10;;;10009:36;;;10025:18;;:::i;10460:128::-;10527:9;;;10548:11;;;10545:37;;;10562:18;;:::i;10725:127::-;10786:10;10781:3;10777:20;10774:1;10767:31;10817:4;10814:1;10807:15;10841:4;10838:1;10831:15;10857:980;11119:4;11167:3;11156:9;11152:19;11198:6;11187:9;11180:25;11224:2;11262:6;11257:2;11246:9;11242:18;11235:34;11305:3;11300:2;11289:9;11285:18;11278:31;11329:6;11364;11358:13;11395:6;11387;11380:22;11433:3;11422:9;11418:19;11411:26;;11472:2;11464:6;11460:15;11446:29;;11493:1;11503:195;11517:6;11514:1;11511:13;11503:195;;;11582:13;;-1:-1:-1;;;;;11578:39:1;11566:52;;11673:15;;;;11638:12;;;;11614:1;11532:9;11503:195;;;-1:-1:-1;;;;;;;11754:32:1;;;;11749:2;11734:18;;11727:60;-1:-1:-1;;;11818:3:1;11803:19;11796:35;11715:3;10857:980;-1:-1:-1;;;10857:980:1:o;11842:217::-;11882:1;11908;11898:132;;11952:10;11947:3;11943:20;11940:1;11933:31;11987:4;11984:1;11977:15;12015:4;12012:1;12005:15;11898:132;-1:-1:-1;12044:9:1;;11842:217::o

Swarm Source

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