ETH Price: $3,433.17 (-1.56%)
Gas: 2 Gwei

Token

Good Morning Santa (GMS)
 

Overview

Max Total Supply

989,646,901.717523056 GMS

Holders

128

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
158.976360132 GMS

Value
$0.00
0xc144e0f6961ec09a482833e41d047b7991e5a4b0
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:
GMS

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-12-24
*/

/*    
                             .       %%%%%%%%%%(    .                         
                           .    #%%%%%%%%&&&%%&&&%%###                          
                         .   %&&%%%%%&&&&%%%&&&%%%%%###%%   .                   
                       .  *%%%%%%%%%&&&&&&&&&%%%%%%%%%%%%%#                     
                        (&%%%%%%%&&&&&%%%%%%%%%%%%%%%%%%%%%#(  .                
                      ,&%%%%%%%@&&&&&&&&&&&&%%%%%%%%%%##%#####                  
                     %%%%%%%%&(/*,,,...                       ...               
                    %%%%%%%#//**,....                           ..  .           
                   #%%%%%%#(/**......                           ...  .          
              .   ,%%%%% ,/*,...                               .. .  .          
           .   ..,*, .. .,,....                                 . .  .          
          .  ....         ............,$$$,.....,($$$..........,&@  ,           
          .  ...          ............$$$$.......$$$$...........,,@  .          
              ...        .,...........$$$$,......$$$$.............&@            
                  .    @...............$$$,.....,($$$..............@  .         
                 ..    @................,..........,...............@  .         
                       @.....,@@@,........................@@@......@  .         
                       @&......*@,........................#&......,@            
                     .  @.....,.&&,....................../@,....,,@  .          
                      .  @......,.@,....................@..,.....@              
                       .  @@,......,@@...............@@,.......&@  .            
                            @@.........,(@@@@@@@@@(.........,%@                 
                              .@(,........................,@(                   
                             .    @@&.,.............,.(@@    .                  
                                 .      (@@@@@@@@@&      .                      
                                        ...     ...        
                                  

 * GOOD MORNING SANTA TOKEN - $GMS
 * Website: https://gmsanta.club
 * TG: t.me/gmsanta
 * Twitter: https://twitter.com/gmsantaeth
 * Developed by NYAST
 * 
 * SPDX-License-Identifier: MIT
 * */ 

pragma solidity ^0.8.4;

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

interface IERC20 {
    function totalSupply() external view returns (uint256);

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

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

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

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

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

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

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

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 GMS is Context, IERC20, Ownable {
    using SafeMath for uint256;

    string private constant _name = "Good Morning Santa";
    string private constant _symbol = "GMS";
    uint8 private constant _decimals = 9;

    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    uint256 private constant MAX = ~uint256(0);
    uint256 public _tTotal = 1000000000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _tBurnTotal;

    //Buy Fee
    uint256 private _redisFeeOnBuy = 1;
    uint256 private _taxFeeOnBuy = 11;
    uint256 private _burnFeeOnBuy = 1;

    //Sell Fee
    uint256 private _redisFeeOnSell = 1;
    uint256 private _taxFeeOnSell = 13;
    uint256 private _burnFeeOnSell = 1;

    //Original Fee
    uint256 private _redisFee = _redisFeeOnSell;
    uint256 private _taxFee = _taxFeeOnSell;
    uint256 private _burnFee = _burnFeeOnSell;

    uint256 private _previousredisFee = _redisFee;
    uint256 private _previoustaxFee = _taxFee;
    uint256 private _previousBurnFee = _burnFee;

    mapping(address => bool) public blacklist;
    mapping(address => bool) public preTrader;
    mapping(address => uint256) private cooldown;

    address payable public santasAddress = payable(0x639a4af1CFa650ca21bBea4C10bc9a06464AC2b8);

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = true;
    
    uint256 public _maxTxAmount = 3000000 * 10**9; // 0.3%
    uint256 public _maxWalletSize = 9000000 * 10**9; // 0.9%
    uint256 public _tokenSwapThreshold = 500000 * 10**9; //0.05%

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

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

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

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[santasAddress] = true;

        preTrader[owner()] = 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 view override returns (uint256) {
        return _tTotal;
    }

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

    function launch() public onlyOwner {    
        // Adding the list of known bot addresses
        blacklist[address(0x66f049111958809841Bbe4b81c034Da2D953AA0c)] = true;
        blacklist[address(0x000000005736775Feb0C8568e7DEe77222a26880)] = true;
        blacklist[address(0x00000000003b3cc22aF3aE1EAc0440BcEe416B40)] = true;
        blacklist[address(0xD8E83d3d1a91dFefafd8b854511c44685a20fa3D)] = true;
        blacklist[address(0xbcC7f6355bc08f6b7d3a41322CE4627118314763)] = true;
        blacklist[address(0x1d6E8BAC6EA3730825bde4B005ed7B2B39A2932d)] = true;
        blacklist[address(0x000000000035B5e5ad9019092C665357240f594e)] = true;
        blacklist[address(0x1315c6C26123383a2Eb369a53Fb72C4B9f227EeC)] = true;
        blacklist[address(0xD8E83d3d1a91dFefafd8b854511c44685a20fa3D)] = true;
        blacklist[address(0x90484Bb9bc05fD3B5FF1fe412A492676cd81790C)] = true;
        blacklist[address(0xA62c5bA4D3C95b3dDb247EAbAa2C8E56BAC9D6dA)] = true;
        blacklist[address(0x42c1b5e32d625b6C618A02ae15189035e0a92FE7)] = true;
        blacklist[address(0xA94E56EFc384088717bb6edCccEc289A72Ec2381)] = true;
        blacklist[address(0xf13FFadd3682feD42183AF8F3f0b409A9A0fdE31)] = true;
        blacklist[address(0x376a6EFE8E98f3ae2af230B3D45B8Cc5e962bC27)] = true;
        blacklist[address(0xEE2A9147ffC94A73f6b945A6DB532f8466B78830)] = true;
        blacklist[address(0xdE2a6d80989C3992e11B155430c3F59792FF8Bb7)] = true;
        blacklist[address(0x1e62A12D4981e428D3F4F28DF261fdCB2CE743Da)] = true;
        blacklist[address(0x5136a9A5D077aE4247C7706b577F77153C32A01C)] = true;
        blacklist[address(0x0E388888309d64e97F97a4740EC9Ed3DADCA71be)] = true;
        blacklist[address(0x255D9BA73a51e02d26a5ab90d534DB8a80974a12)] = true;
        blacklist[address(0xA682A66Ea044Aa1DC3EE315f6C36414F73054b47)] = true;
        blacklist[address(0x80e09203480A49f3Cf30a4714246f7af622ba470)] = true;
        blacklist[address(0x12e48B837AB8cB9104C5B95700363547bA81c8a4)] = true;
        blacklist[address(0x3066Cc1523dE539D36f94597e233719727599693)] = true;
        blacklist[address(0x201044fa39866E6dD3552D922CDa815899F63f20)] = true;
        blacklist[address(0x6F3aC41265916DD06165b750D88AB93baF1a11F8)] = true;
        blacklist[address(0x27C71ef1B1bb5a9C9Ee0CfeCEf4072AbAc686ba6)] = true;
        blacklist[address(0x5668e6e8f3C31D140CC0bE918Ab8bB5C5B593418)] = true;
        blacklist[address(0x4b9BDDFB48fB1529125C14f7730346fe0E8b5b40)] = true;
        blacklist[address(0x7e2b3808cFD46fF740fBd35C584D67292A407b95)] = true;
        blacklist[address(0xe89C7309595E3e720D8B316F065ecB2730e34757)] = true;
        blacklist[address(0x725AD056625326B490B128E02759007BA5E4eBF1)] = true;

        enableTrading(true);
    }

    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 _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 tokenFromReflection(uint256 rAmount)
        private
        view
        returns (uint256)
    {
        require(
            rAmount <= _rTotal,
            "Amount must be less than total reflections"
        );
        uint256 currentRate = _getRate();
        return rAmount.div(currentRate);
    }

    function removeAllFee() private {
        if (_redisFee == 0 && _taxFee == 0 && _burnFee == 0) return;

        _previousredisFee = _redisFee;
        _previoustaxFee = _taxFee;
        _previousBurnFee = _burnFee;

        _redisFee = 0;
        _taxFee = 0;
        _burnFee = 0;
    }

    function restoreAllFee() private {
        _redisFee = _previousredisFee;
        _taxFee = _previoustaxFee;
        _burnFee = _previousBurnFee;
    }

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

    // Transfer functions
    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()) {
            //Trade start check
            if (!tradingOpen) {
                require(preTrader[from] || preTrader[to],
                    "TOKEN: This account cannot send or receive tokens until trading is enabled"
                );
            }

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

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

            uint256 contractTokenBalance = balanceOf(address(this));
            bool shouldSwap = contractTokenBalance >= _tokenSwapThreshold;

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

            if (shouldSwap && !inSwap && from != uniswapV2Pair && swapEnabled) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHtoSantasContract(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;
                _burnFee = _burnFeeOnBuy;
            }

            //Set Fee for Sells
            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnSell;
                _taxFee = _taxFeeOnSell;
                _burnFee = _burnFeeOnSell;
            }
        }

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

    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,
            uint256 tBurn
        ) = _getValues(tAmount);
        uint256 currentRate = _getRate();
        uint256 rBurn = tBurn.mul(currentRate);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeTeam(tTeam);
        _reflectFee(rFee, tFee, rBurn, tBurn);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    // Swap and send functions
    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 sendETHtoSantasContract(uint256 amount) private {
        (bool success, ) = santasAddress.call{value: amount}("");
        require(success, "Tx Failed");
    }

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

    function manualsend() external {
        require(_msgSender() == santasAddress);
        uint256 contractETHBalance = address(this).balance;
        sendETHtoSantasContract(contractETHBalance);
    }

    // Trading and pre-trading
    function addAccountToPreTrading(address account, bool allowed)
        public
        onlyOwner
    {
        require(preTrader[account] != allowed, "TOKEN: Already enabled.");
        preTrader[account] = allowed;
    }

    function enableTrading(bool _tradingOpen) private {
        tradingOpen = _tradingOpen;
    }

    // Blacklist and whitelist
    function blacklistAddresses(address[] memory _blacklist) public onlyOwner {
        for (uint256 i = 0; i < _blacklist.length; i++) {
            blacklist[_blacklist[i]] = true;
        }
    }

    function whitelistAddress(address whitelist) external onlyOwner {
        blacklist[whitelist] = false;
    }

    // Fee related functions
    function isExcludedFromFee(address account) public view returns (bool) {
        return _isExcludedFromFee[account];
    }

    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,
        uint256 rBurn,
        uint256 tBurn
    ) private {
        _rTotal = _rTotal.sub(rFee).sub(rBurn);
        _tFeeTotal = _tFeeTotal.add(tFee);
        _tBurnTotal = _tBurnTotal.add(tBurn);

        _tTotal = _tTotal.sub(tBurn);
    }

    // Setters
    function setExcludeFromFee(address account, bool excluded)
        external
        onlyOwner
    {
        _isExcludedFromFee[account] = excluded;
    }

    function setSantasWalletAddress(address payable _santasAddress)
        external
        onlyOwner
    {
        santasAddress = _santasAddress;
    }

    function setFee(
        uint256 redisFeeOnBuy,
        uint256 redisFeeOnSell,
        uint256 taxFeeOnBuy,
        uint256 taxFeeOnSell,
        uint256 burnFeeOnBuy,
        uint256 burnFeeOnSell
    ) public onlyOwner {
        _redisFeeOnBuy = redisFeeOnBuy;
        _redisFeeOnSell = redisFeeOnSell;

        _taxFeeOnBuy = taxFeeOnBuy;
        _taxFeeOnSell = taxFeeOnSell;

        _burnFeeOnBuy = burnFeeOnBuy;
        _burnFeeOnSell = burnFeeOnSell;
    }

    function setMinSwapTokensThreshold(uint256 tokenSwapThreshold)
        public
        onlyOwner
    {
        _tokenSwapThreshold = tokenSwapThreshold;
    }

    function setSwapEnabled(bool _swapEnabled) public onlyOwner {
        swapEnabled = _swapEnabled;
    }

    function setMaxTxnAmount(uint256 maxTxAmount) public onlyOwner {
        _maxTxAmount = maxTxAmount;
    }

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

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

        return (rSupply, tSupply);
    }

    function _getValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tTeam,
            uint256 tBurn
        ) = _getTValues(tAmount);
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(
            tAmount,
            tFee,
            tTeam,
            tBurn,
            _getRate()
        );

        return (
            rAmount,
            rTransferAmount,
            rFee,
            tTransferAmount,
            tFee,
            tTeam,
            tBurn
        );
    }

    function _getTValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = tAmount.mul(_redisFee).div(100);
        uint256 tTeam = tAmount.mul(_taxFee).div(100);
        uint256 tBurn = tAmount.mul(_burnFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam).sub(tBurn);

        return (tTransferAmount, tFee, tTeam, tBurn);
    }

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

        return (rAmount, rTransferAmount, rFee);
    }

    function _getRate() private view returns (uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();

        return rSupply.div(tSupply);
    }

    // Enable the current contract to receive ETH
    receive() external payable {}
}

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":"_tTotal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_tokenSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"allowed","type":"bool"}],"name":"addAccountToPreTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"blacklist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_blacklist","type":"address[]"}],"name":"blacklistAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"preTrader","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"santasAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"setExcludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"redisFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"redisFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"burnFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"burnFeeOnSell","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenSwapThreshold","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_santasAddress","type":"address"}],"name":"setSantasWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"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"},{"inputs":[{"internalType":"address","name":"whitelist","type":"address"}],"name":"whitelistAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052670de0b6b3a764000060068190556200002090600019620003d9565b6200002e90600019620003b3565b6007556001600a819055600b8055600c819055600d818155600e819055600f8290556010829055601181905560128290556013829055601455601555601980546001600160a01b03191673639a4af1cfa650ca21bbea4c10bc9a06464ac2b8179055601b805461ffff60a81b1916600160b01b179055660aa87bee538000601c55661ff973cafa8000601d556601c6bf52634000601e55348015620000d257600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506007543360009081526002602090815260409182902092909255601a80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155815163c45a015560e01b815291519092839263c45a01559260048083019392829003018186803b1580156200018b57600080fd5b505afa158015620001a0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001c6919062000381565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200020f57600080fd5b505afa15801562000224573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200024a919062000381565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200029357600080fd5b505af1158015620002a8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ce919062000381565b601b80546001600160a01b0319166001600160a01b039283161790556000805482168152600560209081526040808320805460ff19908116600190811790925530855282852080548216831790556019548616855282852080548216831790558454909516845260178352818420805490951617909355600654925192835233927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350620003fc565b6000602082840312156200039457600080fd5b81516001600160a01b0381168114620003ac57600080fd5b9392505050565b600082821015620003d457634e487b7160e01b600052601160045260246000fd5b500390565b600082620003f757634e487b7160e01b600052601260045260246000fd5b500690565b612478806200040c6000396000f3fe6080604052600436106101fd5760003560e01c80637d1db4a51161010d578063bd9a3b6d116100a0578063e01af92c1161006f578063e01af92c1461060a578063ea1644d51461062a578063f0ec818d1461064a578063f16f07ae1461066a578063f9f92be41461068057600080fd5b8063bd9a3b6d1461055f578063bdd795ef1461057f578063c3c8cd80146105af578063dd62ed3e146105c457600080fd5b806398a5c315116100dc57806398a5c315146104e9578063a9059cbb14610509578063af465a2714610529578063af9549e01461053f57600080fd5b80637d1db4a5146104735780638da5cb5b146104895780638f9a55c0146104a757806395d89b41146104bd57600080fd5b806341566585116101905780636fc3eaec1161015f5780636fc3eaec146103e957806370a08231146103fe578063715018a61461041e57806374010ece1461043357806377a54eb81461045357600080fd5b8063415665851461035057806349bd5a5e146103705780635342acb4146103905780635a4aad43146103c957600080fd5b806318160ddd116101cc57806318160ddd146102d557806323b872dd146102f4578063312ca01f14610314578063313ce5671461033457600080fd5b806301339c211461020957806306fdde0314610220578063095ea7b31461026d5780631694505e1461029d57600080fd5b3661020457005b600080fd5b34801561021557600080fd5b5061021e6106b0565b005b34801561022c57600080fd5b50604080518082019091526012815271476f6f64204d6f726e696e672053616e746160701b60208201525b604051610264919061223d565b60405180910390f35b34801561027957600080fd5b5061028d6102883660046120ce565b610c3e565b6040519015158152602001610264565b3480156102a957600080fd5b50601a546102bd906001600160a01b031681565b6040516001600160a01b039091168152602001610264565b3480156102e157600080fd5b506006545b604051908152602001610264565b34801561030057600080fd5b5061028d61030f366004612058565b610c55565b34801561032057600080fd5b506019546102bd906001600160a01b031681565b34801561034057600080fd5b5060405160098152602001610264565b34801561035c57600080fd5b5061021e61036b366004611fe5565b610cbe565b34801561037c57600080fd5b50601b546102bd906001600160a01b031681565b34801561039c57600080fd5b5061028d6103ab366004611fe5565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156103d557600080fd5b5061021e6103e4366004612099565b610d09565b3480156103f557600080fd5b5061021e610dcd565b34801561040a57600080fd5b506102e6610419366004611fe5565b610dfa565b34801561042a57600080fd5b5061021e610e1c565b34801561043f57600080fd5b5061021e61044e3660046121e1565b610e90565b34801561045f57600080fd5b5061021e61046e3660046120fa565b610ebf565b34801561047f57600080fd5b506102e6601c5481565b34801561049557600080fd5b506000546001600160a01b03166102bd565b3480156104b357600080fd5b506102e6601d5481565b3480156104c957600080fd5b50604080518082019091526003815262474d5360e81b6020820152610257565b3480156104f557600080fd5b5061021e6105043660046121e1565b610f55565b34801561051557600080fd5b5061028d6105243660046120ce565b610f84565b34801561053557600080fd5b506102e660065481565b34801561054b57600080fd5b5061021e61055a366004612099565b610f91565b34801561056b57600080fd5b5061021e61057a3660046121fa565b610fe6565b34801561058b57600080fd5b5061028d61059a366004611fe5565b60176020526000908152604090205460ff1681565b3480156105bb57600080fd5b5061021e61102d565b3480156105d057600080fd5b506102e66105df36600461201f565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561061657600080fd5b5061021e6106253660046121c6565b611063565b34801561063657600080fd5b5061021e6106453660046121e1565b6110ab565b34801561065657600080fd5b5061021e610665366004611fe5565b6110da565b34801561067657600080fd5b506102e6601e5481565b34801561068c57600080fd5b5061028d61069b366004611fe5565b60166020526000908152604090205460ff1681565b6000546001600160a01b031633146106e35760405162461bcd60e51b81526004016106da90612292565b60405180910390fd5b60166020527fed948d62c0420ec9331d309900119d5e980912e0702f1f4c6124d3e3dafce5828054600160ff1991821681179092557f402e3fd2c15ab5626d8fdc33e1a9f37b1f927df3991e1699369c0abe664b750d80548216831790557f45f51c8b09dadd69d70b7a2c314cb9baa7943252a6217c6c40b9a115a3b633b080548216831790557f0bd2ea501f9e164aa1fef0118fa3c011d5770b3236be1efc25418e69a1400f3780548216831790557ff9a53fbb8062ea9b15ce069a2a357b8a397b5a63ece943cea0457e67c14e14d280548216831790557f50db0bcd2e45a1e8c4ac837206d8ee35c1305ead4d80b1448a04dcfbeb1663b580548216831790557f882db55c0af3cef9eff51c47fd8c8c64241f72ec0f279345b770bab33bd511c380548216831790557fd3a2b12b651df9f9f20fd3d5fe79452ce2040203ed93714e3ebb9bc8690f83a680548216831790557f99e7f6f91754d33231698399b67633593f22034e97825b478f70a34f0963e73180548216831790557fe0bdf7db07fd43b5b0d8b7fe6819d914981da41ba5543adbea72fc586310811280548216831790557fc2305bff6b8a748fbb5d1a6c1780a06752c0f62fbd5c94ac8e4e03e032d2f52e80548216831790557fbc836ba8304b35e17c4abd0f281b84df42463befc82b2354e81dd1c9cf949c0980548216831790557f8a8935508dc89f80da8838dfbf328e484e63d85aba47c7efeb8b6fc6bab861e080548216831790557f1fb912b85089d236688c88ee05eba540a38c41c02e41accf0064e33c91edc3f180548216831790557f0a2941f7365a0cd6fea69c8c65fb73cd4a89472f3dffce139102304fabd1cf0980548216831790557f177faf41b48f8ec51fdb2035c3fd22315d1e1c6ccd2b49332a24502e8a48954580548216831790557f8e44851c338ab50d5f1547488c1eb2b1ff8b6f8aaf645d302d50bb0830a4636680548216831790557fed7b3bb6982050c9da7d09799913e8a7b2d3132d3588260292eef88e011bd17f80548216831790557f8a69245562f83e3a263c71c6fc3b73f01d6f344def4670d17bb853fb77d7829980548216831790557f59de0295c413b99b9248422b7de7dbd0cee39c9d6b3be5fd527362f2d2e1bd1d80548216831790557f34d22ef8dd9c9144e7bfe14ff086753a68be62f85aca5cacdddaf4063ccd0b8d80548216831790557f130ca547da84dfd5ccc23d7bfaa9386b94065e0844e04663e828af4b7bbd374480548216831790557f898f744d7ce418dc953d2b2dc27e8466ff68b53d778f02ed32c0f574908d32bb80548216831790557f80f87392dc635321ae89bf8f353f410594ce0df1a13fba4848acf971b18dc0a480548216831790557fed5935104fb8dda53713e70d5d4b0677e773e30c77779146dfdd3d7cacad98f580548216831790557fb2c5d6d2d9bb57fb113259cc9808702e82978a5198643f227b3f3bb917f7586980548216831790557f0a087af2a3ccfe3e96d31dd6a6e955fb995f9bb91a2d4a2598070bf1f9c32a9180548216831790557f5cf1ac05db918e523b7b45c0a87a1b849f69361886bf1fe6e2ea7b07e9cd127180548216831790557f5aa88d6ca823a4e16a4992bd98b9f9c2a26745578bc64409b9da97563c7a6f8e80548216831790557f13011ec3aff9d46002ed0bd3c4e7331a68a816967b6cd4b90e5c7bdc3071f1f380548216831790557f7302f73133f557e80898a08fa8c2104534f05b8e5ba949bccf308dbb9c03e956805482168317905573725ad056625326b490b128e02759007ba5e4ebf16000527f8ccf6f3b2205452a55fdedc6d03a426105fbeca5a84e1db55a0803151767aa7380549091169091179055601b805460ff60a01b1916600160a01b179055565b6000610c4b338484611126565b5060015b92915050565b6000610c6284848461124a565b610cb48433610caf8560405180606001604052806028815260200161241b602891396001600160a01b038a166000908152600460209081526040808320338452909152902054919061178f565b611126565b5060019392505050565b6000546001600160a01b03163314610ce85760405162461bcd60e51b81526004016106da90612292565b6001600160a01b03166000908152601660205260409020805460ff19169055565b6000546001600160a01b03163314610d335760405162461bcd60e51b81526004016106da90612292565b6001600160a01b03821660009081526017602052604090205460ff1615158115151415610da25760405162461bcd60e51b815260206004820152601760248201527f544f4b454e3a20416c726561647920656e61626c65642e00000000000000000060448201526064016106da565b6001600160a01b03919091166000908152601760205260409020805460ff1916911515919091179055565b6019546001600160a01b0316336001600160a01b031614610ded57600080fd5b47610df7816117c9565b50565b6001600160a01b038116600090815260026020526040812054610c4f90611858565b6000546001600160a01b03163314610e465760405162461bcd60e51b81526004016106da90612292565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610eba5760405162461bcd60e51b81526004016106da90612292565b601c55565b6000546001600160a01b03163314610ee95760405162461bcd60e51b81526004016106da90612292565b60005b8151811015610f5157600160166000848481518110610f0d57610f0d6123d9565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610f49816123a8565b915050610eec565b5050565b6000546001600160a01b03163314610f7f5760405162461bcd60e51b81526004016106da90612292565b601e55565b6000610c4b33848461124a565b6000546001600160a01b03163314610fbb5760405162461bcd60e51b81526004016106da90612292565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146110105760405162461bcd60e51b81526004016106da90612292565b600a95909555600d93909355600b91909155600e55600c55600f55565b6019546001600160a01b0316336001600160a01b03161461104d57600080fd5b600061105830610dfa565b9050610df7816118dc565b6000546001600160a01b0316331461108d5760405162461bcd60e51b81526004016106da90612292565b601b8054911515600160b01b0260ff60b01b19909216919091179055565b6000546001600160a01b031633146110d55760405162461bcd60e51b81526004016106da90612292565b601d55565b6000546001600160a01b031633146111045760405162461bcd60e51b81526004016106da90612292565b601980546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166111885760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016106da565b6001600160a01b0382166111e95760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016106da565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166112ae5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016106da565b6001600160a01b0382166113105760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016106da565b600081116113725760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016106da565b6000546001600160a01b0384811691161480159061139e57506000546001600160a01b03838116911614155b1561167657601b54600160a01b900460ff16611478576001600160a01b03831660009081526017602052604090205460ff16806113f357506001600160a01b03821660009081526017602052604090205460ff165b6114785760405162461bcd60e51b815260206004820152604a60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f6f72207265636569766520746f6b656e7320756e74696c2074726164696e67206064820152691a5cc8195b98589b195960b21b608482015260a4016106da565b601c548111156114ca5760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d69740000000060448201526064016106da565b6001600160a01b03831660009081526016602052604090205460ff1615801561150c57506001600160a01b03821660009081526016602052604090205460ff16155b6115645760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460448201526265642160e81b60648201526084016106da565b601b546001600160a01b038381169116146115e957601d548161158684610dfa565b6115909190612338565b106115e95760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b60648201526084016106da565b60006115f430610dfa565b601e54601c5491925082101590821061160d57601c5491505b8080156116245750601b54600160a81b900460ff16155b801561163e5750601b546001600160a01b03868116911614155b80156116535750601b54600160b01b900460ff165b1561167357611661826118dc565b47801561167157611671476117c9565b505b50505b6001600160a01b03831660009081526005602052604090205460019060ff16806116b857506001600160a01b03831660009081526005602052604090205460ff165b806116ea5750601b546001600160a01b038581169116148015906116ea5750601b546001600160a01b03848116911614155b156116f75750600061177d565b601b546001600160a01b0385811691161480156117225750601a546001600160a01b03848116911614155b1561173a57600a54601055600b54601155600c546012555b601b546001600160a01b0384811691161480156117655750601a546001600160a01b03858116911614155b1561177d57600d54601055600e54601155600f546012555b61178984848484611a65565b50505050565b600081848411156117b35760405162461bcd60e51b81526004016106da919061223d565b5060006117c08486612391565b95945050505050565b6019546040516000916001600160a01b03169083908381818185875af1925050503d8060008114611816576040519150601f19603f3d011682016040523d82523d6000602084013e61181b565b606091505b5050905080610f515760405162461bcd60e51b8152602060048201526009602482015268151e0811985a5b195960ba1b60448201526064016106da565b60006007548211156118bf5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016106da565b60006118c9611a99565b90506118d58382611abc565b9392505050565b601b805460ff60a81b1916600160a81b1790556040805160028082526060820183526000926020830190803683370190505090503081600081518110611924576119246123d9565b6001600160a01b03928316602091820292909201810191909152601a54604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561197857600080fd5b505afa15801561198c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119b09190612002565b816001815181106119c3576119c36123d9565b6001600160a01b039283166020918202929092010152601a546119e99130911684611126565b601a5460405163791ac94760e01b81526001600160a01b039091169063791ac94790611a229085906000908690309042906004016122c7565b600060405180830381600087803b158015611a3c57600080fd5b505af1158015611a50573d6000803e3d6000fd5b5050601b805460ff60a81b1916905550505050565b80611a7257611a72611afe565b611a7d848484611b43565b8061178957611789601354601055601454601155601554601255565b6000806000611aa6611c5b565b9092509050611ab58282611abc565b9250505090565b60006118d583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611c90565b601054158015611b0e5750601154155b8015611b1a5750601254155b15611b2157565b6010805460135560118054601455601280546015556000928390559082905555565b6000806000806000806000611b5788611cbe565b96509650965096509650965096506000611b6f611a99565b90506000611b7d8383611d19565b6001600160a01b038d16600090815260026020526040902054909150611ba3908a611d98565b6001600160a01b03808e1660009081526002602052604080822093909355908d1681522054611bd29089611dda565b6001600160a01b038c16600090815260026020526040902055611bf484611e39565b611c0087868386611e83565b8a6001600160a01b03168c6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef88604051611c4591815260200190565b60405180910390a3505050505050505050505050565b6007546006546000918291611c708282611abc565b821015611c87576007546006549350935050509091565b90939092509050565b60008183611cb15760405162461bcd60e51b81526004016106da919061223d565b5060006117c08486612350565b6000806000806000806000806000806000611cd88c611edb565b93509350935093506000806000611cf98f878787611cf4611a99565b611f63565b919f509d509b509599509397509195509350505050919395979092949650565b600082611d2857506000610c4f565b6000611d348385612372565b905082611d418583612350565b146118d55760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016106da565b60006118d583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061178f565b600080611de78385612338565b9050838110156118d55760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016106da565b6000611e43611a99565b90506000611e518383611d19565b30600090815260026020526040902054909150611e6e9082611dda565b30600090815260026020526040902055505050565b611ea282611e9c86600754611d9890919063ffffffff16565b90611d98565b600755600854611eb29084611dda565b600855600954611ec29082611dda565b600955600654611ed29082611d98565b60065550505050565b6000806000806000611f036064611efd60105489611d1990919063ffffffff16565b90611abc565b90506000611f216064611efd6011548a611d1990919063ffffffff16565b90506000611f3f6064611efd6012548b611d1990919063ffffffff16565b90506000611f5382611e9c85818d89611d98565b9993985091965094509092505050565b6000808080611f728986611d19565b90506000611f808987611d19565b90506000611f8e8988611d19565b90506000611f9c8989611d19565b90506000611fb082611e9c85818989611d98565b949d949c50929a509298505050505050505050565b8035611fd081612405565b919050565b80358015158114611fd057600080fd5b600060208284031215611ff757600080fd5b81356118d581612405565b60006020828403121561201457600080fd5b81516118d581612405565b6000806040838503121561203257600080fd5b823561203d81612405565b9150602083013561204d81612405565b809150509250929050565b60008060006060848603121561206d57600080fd5b833561207881612405565b9250602084013561208881612405565b929592945050506040919091013590565b600080604083850312156120ac57600080fd5b82356120b781612405565b91506120c560208401611fd5565b90509250929050565b600080604083850312156120e157600080fd5b82356120ec81612405565b946020939093013593505050565b6000602080838503121561210d57600080fd5b823567ffffffffffffffff8082111561212557600080fd5b818501915085601f83011261213957600080fd5b81358181111561214b5761214b6123ef565b8060051b604051601f19603f83011681018181108582111715612170576121706123ef565b604052828152858101935084860182860187018a101561218f57600080fd5b600095505b838610156121b9576121a581611fc5565b855260019590950194938601938601612194565b5098975050505050505050565b6000602082840312156121d857600080fd5b6118d582611fd5565b6000602082840312156121f357600080fd5b5035919050565b60008060008060008060c0878903121561221357600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b600060208083528351808285015260005b8181101561226a5785810183015185820160400152820161224e565b8181111561227c576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156123175784516001600160a01b0316835293830193918301916001016122f2565b50506001600160a01b03969096166060850152505050608001529392505050565b6000821982111561234b5761234b6123c3565b500190565b60008261236d57634e487b7160e01b600052601260045260246000fd5b500490565b600081600019048311821515161561238c5761238c6123c3565b500290565b6000828210156123a3576123a36123c3565b500390565b60006000198214156123bc576123bc6123c3565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610df757600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122030d56b2fd21b0bb1942f3a353bbc778cbcf934beac0527847d901f2f435eb39664736f6c63430008070033

Deployed Bytecode

0x6080604052600436106101fd5760003560e01c80637d1db4a51161010d578063bd9a3b6d116100a0578063e01af92c1161006f578063e01af92c1461060a578063ea1644d51461062a578063f0ec818d1461064a578063f16f07ae1461066a578063f9f92be41461068057600080fd5b8063bd9a3b6d1461055f578063bdd795ef1461057f578063c3c8cd80146105af578063dd62ed3e146105c457600080fd5b806398a5c315116100dc57806398a5c315146104e9578063a9059cbb14610509578063af465a2714610529578063af9549e01461053f57600080fd5b80637d1db4a5146104735780638da5cb5b146104895780638f9a55c0146104a757806395d89b41146104bd57600080fd5b806341566585116101905780636fc3eaec1161015f5780636fc3eaec146103e957806370a08231146103fe578063715018a61461041e57806374010ece1461043357806377a54eb81461045357600080fd5b8063415665851461035057806349bd5a5e146103705780635342acb4146103905780635a4aad43146103c957600080fd5b806318160ddd116101cc57806318160ddd146102d557806323b872dd146102f4578063312ca01f14610314578063313ce5671461033457600080fd5b806301339c211461020957806306fdde0314610220578063095ea7b31461026d5780631694505e1461029d57600080fd5b3661020457005b600080fd5b34801561021557600080fd5b5061021e6106b0565b005b34801561022c57600080fd5b50604080518082019091526012815271476f6f64204d6f726e696e672053616e746160701b60208201525b604051610264919061223d565b60405180910390f35b34801561027957600080fd5b5061028d6102883660046120ce565b610c3e565b6040519015158152602001610264565b3480156102a957600080fd5b50601a546102bd906001600160a01b031681565b6040516001600160a01b039091168152602001610264565b3480156102e157600080fd5b506006545b604051908152602001610264565b34801561030057600080fd5b5061028d61030f366004612058565b610c55565b34801561032057600080fd5b506019546102bd906001600160a01b031681565b34801561034057600080fd5b5060405160098152602001610264565b34801561035c57600080fd5b5061021e61036b366004611fe5565b610cbe565b34801561037c57600080fd5b50601b546102bd906001600160a01b031681565b34801561039c57600080fd5b5061028d6103ab366004611fe5565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156103d557600080fd5b5061021e6103e4366004612099565b610d09565b3480156103f557600080fd5b5061021e610dcd565b34801561040a57600080fd5b506102e6610419366004611fe5565b610dfa565b34801561042a57600080fd5b5061021e610e1c565b34801561043f57600080fd5b5061021e61044e3660046121e1565b610e90565b34801561045f57600080fd5b5061021e61046e3660046120fa565b610ebf565b34801561047f57600080fd5b506102e6601c5481565b34801561049557600080fd5b506000546001600160a01b03166102bd565b3480156104b357600080fd5b506102e6601d5481565b3480156104c957600080fd5b50604080518082019091526003815262474d5360e81b6020820152610257565b3480156104f557600080fd5b5061021e6105043660046121e1565b610f55565b34801561051557600080fd5b5061028d6105243660046120ce565b610f84565b34801561053557600080fd5b506102e660065481565b34801561054b57600080fd5b5061021e61055a366004612099565b610f91565b34801561056b57600080fd5b5061021e61057a3660046121fa565b610fe6565b34801561058b57600080fd5b5061028d61059a366004611fe5565b60176020526000908152604090205460ff1681565b3480156105bb57600080fd5b5061021e61102d565b3480156105d057600080fd5b506102e66105df36600461201f565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561061657600080fd5b5061021e6106253660046121c6565b611063565b34801561063657600080fd5b5061021e6106453660046121e1565b6110ab565b34801561065657600080fd5b5061021e610665366004611fe5565b6110da565b34801561067657600080fd5b506102e6601e5481565b34801561068c57600080fd5b5061028d61069b366004611fe5565b60166020526000908152604090205460ff1681565b6000546001600160a01b031633146106e35760405162461bcd60e51b81526004016106da90612292565b60405180910390fd5b60166020527fed948d62c0420ec9331d309900119d5e980912e0702f1f4c6124d3e3dafce5828054600160ff1991821681179092557f402e3fd2c15ab5626d8fdc33e1a9f37b1f927df3991e1699369c0abe664b750d80548216831790557f45f51c8b09dadd69d70b7a2c314cb9baa7943252a6217c6c40b9a115a3b633b080548216831790557f0bd2ea501f9e164aa1fef0118fa3c011d5770b3236be1efc25418e69a1400f3780548216831790557ff9a53fbb8062ea9b15ce069a2a357b8a397b5a63ece943cea0457e67c14e14d280548216831790557f50db0bcd2e45a1e8c4ac837206d8ee35c1305ead4d80b1448a04dcfbeb1663b580548216831790557f882db55c0af3cef9eff51c47fd8c8c64241f72ec0f279345b770bab33bd511c380548216831790557fd3a2b12b651df9f9f20fd3d5fe79452ce2040203ed93714e3ebb9bc8690f83a680548216831790557f99e7f6f91754d33231698399b67633593f22034e97825b478f70a34f0963e73180548216831790557fe0bdf7db07fd43b5b0d8b7fe6819d914981da41ba5543adbea72fc586310811280548216831790557fc2305bff6b8a748fbb5d1a6c1780a06752c0f62fbd5c94ac8e4e03e032d2f52e80548216831790557fbc836ba8304b35e17c4abd0f281b84df42463befc82b2354e81dd1c9cf949c0980548216831790557f8a8935508dc89f80da8838dfbf328e484e63d85aba47c7efeb8b6fc6bab861e080548216831790557f1fb912b85089d236688c88ee05eba540a38c41c02e41accf0064e33c91edc3f180548216831790557f0a2941f7365a0cd6fea69c8c65fb73cd4a89472f3dffce139102304fabd1cf0980548216831790557f177faf41b48f8ec51fdb2035c3fd22315d1e1c6ccd2b49332a24502e8a48954580548216831790557f8e44851c338ab50d5f1547488c1eb2b1ff8b6f8aaf645d302d50bb0830a4636680548216831790557fed7b3bb6982050c9da7d09799913e8a7b2d3132d3588260292eef88e011bd17f80548216831790557f8a69245562f83e3a263c71c6fc3b73f01d6f344def4670d17bb853fb77d7829980548216831790557f59de0295c413b99b9248422b7de7dbd0cee39c9d6b3be5fd527362f2d2e1bd1d80548216831790557f34d22ef8dd9c9144e7bfe14ff086753a68be62f85aca5cacdddaf4063ccd0b8d80548216831790557f130ca547da84dfd5ccc23d7bfaa9386b94065e0844e04663e828af4b7bbd374480548216831790557f898f744d7ce418dc953d2b2dc27e8466ff68b53d778f02ed32c0f574908d32bb80548216831790557f80f87392dc635321ae89bf8f353f410594ce0df1a13fba4848acf971b18dc0a480548216831790557fed5935104fb8dda53713e70d5d4b0677e773e30c77779146dfdd3d7cacad98f580548216831790557fb2c5d6d2d9bb57fb113259cc9808702e82978a5198643f227b3f3bb917f7586980548216831790557f0a087af2a3ccfe3e96d31dd6a6e955fb995f9bb91a2d4a2598070bf1f9c32a9180548216831790557f5cf1ac05db918e523b7b45c0a87a1b849f69361886bf1fe6e2ea7b07e9cd127180548216831790557f5aa88d6ca823a4e16a4992bd98b9f9c2a26745578bc64409b9da97563c7a6f8e80548216831790557f13011ec3aff9d46002ed0bd3c4e7331a68a816967b6cd4b90e5c7bdc3071f1f380548216831790557f7302f73133f557e80898a08fa8c2104534f05b8e5ba949bccf308dbb9c03e956805482168317905573725ad056625326b490b128e02759007ba5e4ebf16000527f8ccf6f3b2205452a55fdedc6d03a426105fbeca5a84e1db55a0803151767aa7380549091169091179055601b805460ff60a01b1916600160a01b179055565b6000610c4b338484611126565b5060015b92915050565b6000610c6284848461124a565b610cb48433610caf8560405180606001604052806028815260200161241b602891396001600160a01b038a166000908152600460209081526040808320338452909152902054919061178f565b611126565b5060019392505050565b6000546001600160a01b03163314610ce85760405162461bcd60e51b81526004016106da90612292565b6001600160a01b03166000908152601660205260409020805460ff19169055565b6000546001600160a01b03163314610d335760405162461bcd60e51b81526004016106da90612292565b6001600160a01b03821660009081526017602052604090205460ff1615158115151415610da25760405162461bcd60e51b815260206004820152601760248201527f544f4b454e3a20416c726561647920656e61626c65642e00000000000000000060448201526064016106da565b6001600160a01b03919091166000908152601760205260409020805460ff1916911515919091179055565b6019546001600160a01b0316336001600160a01b031614610ded57600080fd5b47610df7816117c9565b50565b6001600160a01b038116600090815260026020526040812054610c4f90611858565b6000546001600160a01b03163314610e465760405162461bcd60e51b81526004016106da90612292565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610eba5760405162461bcd60e51b81526004016106da90612292565b601c55565b6000546001600160a01b03163314610ee95760405162461bcd60e51b81526004016106da90612292565b60005b8151811015610f5157600160166000848481518110610f0d57610f0d6123d9565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610f49816123a8565b915050610eec565b5050565b6000546001600160a01b03163314610f7f5760405162461bcd60e51b81526004016106da90612292565b601e55565b6000610c4b33848461124a565b6000546001600160a01b03163314610fbb5760405162461bcd60e51b81526004016106da90612292565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146110105760405162461bcd60e51b81526004016106da90612292565b600a95909555600d93909355600b91909155600e55600c55600f55565b6019546001600160a01b0316336001600160a01b03161461104d57600080fd5b600061105830610dfa565b9050610df7816118dc565b6000546001600160a01b0316331461108d5760405162461bcd60e51b81526004016106da90612292565b601b8054911515600160b01b0260ff60b01b19909216919091179055565b6000546001600160a01b031633146110d55760405162461bcd60e51b81526004016106da90612292565b601d55565b6000546001600160a01b031633146111045760405162461bcd60e51b81526004016106da90612292565b601980546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166111885760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016106da565b6001600160a01b0382166111e95760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016106da565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166112ae5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016106da565b6001600160a01b0382166113105760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016106da565b600081116113725760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016106da565b6000546001600160a01b0384811691161480159061139e57506000546001600160a01b03838116911614155b1561167657601b54600160a01b900460ff16611478576001600160a01b03831660009081526017602052604090205460ff16806113f357506001600160a01b03821660009081526017602052604090205460ff165b6114785760405162461bcd60e51b815260206004820152604a60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f6f72207265636569766520746f6b656e7320756e74696c2074726164696e67206064820152691a5cc8195b98589b195960b21b608482015260a4016106da565b601c548111156114ca5760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d69740000000060448201526064016106da565b6001600160a01b03831660009081526016602052604090205460ff1615801561150c57506001600160a01b03821660009081526016602052604090205460ff16155b6115645760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460448201526265642160e81b60648201526084016106da565b601b546001600160a01b038381169116146115e957601d548161158684610dfa565b6115909190612338565b106115e95760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b60648201526084016106da565b60006115f430610dfa565b601e54601c5491925082101590821061160d57601c5491505b8080156116245750601b54600160a81b900460ff16155b801561163e5750601b546001600160a01b03868116911614155b80156116535750601b54600160b01b900460ff165b1561167357611661826118dc565b47801561167157611671476117c9565b505b50505b6001600160a01b03831660009081526005602052604090205460019060ff16806116b857506001600160a01b03831660009081526005602052604090205460ff165b806116ea5750601b546001600160a01b038581169116148015906116ea5750601b546001600160a01b03848116911614155b156116f75750600061177d565b601b546001600160a01b0385811691161480156117225750601a546001600160a01b03848116911614155b1561173a57600a54601055600b54601155600c546012555b601b546001600160a01b0384811691161480156117655750601a546001600160a01b03858116911614155b1561177d57600d54601055600e54601155600f546012555b61178984848484611a65565b50505050565b600081848411156117b35760405162461bcd60e51b81526004016106da919061223d565b5060006117c08486612391565b95945050505050565b6019546040516000916001600160a01b03169083908381818185875af1925050503d8060008114611816576040519150601f19603f3d011682016040523d82523d6000602084013e61181b565b606091505b5050905080610f515760405162461bcd60e51b8152602060048201526009602482015268151e0811985a5b195960ba1b60448201526064016106da565b60006007548211156118bf5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016106da565b60006118c9611a99565b90506118d58382611abc565b9392505050565b601b805460ff60a81b1916600160a81b1790556040805160028082526060820183526000926020830190803683370190505090503081600081518110611924576119246123d9565b6001600160a01b03928316602091820292909201810191909152601a54604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561197857600080fd5b505afa15801561198c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119b09190612002565b816001815181106119c3576119c36123d9565b6001600160a01b039283166020918202929092010152601a546119e99130911684611126565b601a5460405163791ac94760e01b81526001600160a01b039091169063791ac94790611a229085906000908690309042906004016122c7565b600060405180830381600087803b158015611a3c57600080fd5b505af1158015611a50573d6000803e3d6000fd5b5050601b805460ff60a81b1916905550505050565b80611a7257611a72611afe565b611a7d848484611b43565b8061178957611789601354601055601454601155601554601255565b6000806000611aa6611c5b565b9092509050611ab58282611abc565b9250505090565b60006118d583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611c90565b601054158015611b0e5750601154155b8015611b1a5750601254155b15611b2157565b6010805460135560118054601455601280546015556000928390559082905555565b6000806000806000806000611b5788611cbe565b96509650965096509650965096506000611b6f611a99565b90506000611b7d8383611d19565b6001600160a01b038d16600090815260026020526040902054909150611ba3908a611d98565b6001600160a01b03808e1660009081526002602052604080822093909355908d1681522054611bd29089611dda565b6001600160a01b038c16600090815260026020526040902055611bf484611e39565b611c0087868386611e83565b8a6001600160a01b03168c6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef88604051611c4591815260200190565b60405180910390a3505050505050505050505050565b6007546006546000918291611c708282611abc565b821015611c87576007546006549350935050509091565b90939092509050565b60008183611cb15760405162461bcd60e51b81526004016106da919061223d565b5060006117c08486612350565b6000806000806000806000806000806000611cd88c611edb565b93509350935093506000806000611cf98f878787611cf4611a99565b611f63565b919f509d509b509599509397509195509350505050919395979092949650565b600082611d2857506000610c4f565b6000611d348385612372565b905082611d418583612350565b146118d55760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016106da565b60006118d583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061178f565b600080611de78385612338565b9050838110156118d55760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016106da565b6000611e43611a99565b90506000611e518383611d19565b30600090815260026020526040902054909150611e6e9082611dda565b30600090815260026020526040902055505050565b611ea282611e9c86600754611d9890919063ffffffff16565b90611d98565b600755600854611eb29084611dda565b600855600954611ec29082611dda565b600955600654611ed29082611d98565b60065550505050565b6000806000806000611f036064611efd60105489611d1990919063ffffffff16565b90611abc565b90506000611f216064611efd6011548a611d1990919063ffffffff16565b90506000611f3f6064611efd6012548b611d1990919063ffffffff16565b90506000611f5382611e9c85818d89611d98565b9993985091965094509092505050565b6000808080611f728986611d19565b90506000611f808987611d19565b90506000611f8e8988611d19565b90506000611f9c8989611d19565b90506000611fb082611e9c85818989611d98565b949d949c50929a509298505050505050505050565b8035611fd081612405565b919050565b80358015158114611fd057600080fd5b600060208284031215611ff757600080fd5b81356118d581612405565b60006020828403121561201457600080fd5b81516118d581612405565b6000806040838503121561203257600080fd5b823561203d81612405565b9150602083013561204d81612405565b809150509250929050565b60008060006060848603121561206d57600080fd5b833561207881612405565b9250602084013561208881612405565b929592945050506040919091013590565b600080604083850312156120ac57600080fd5b82356120b781612405565b91506120c560208401611fd5565b90509250929050565b600080604083850312156120e157600080fd5b82356120ec81612405565b946020939093013593505050565b6000602080838503121561210d57600080fd5b823567ffffffffffffffff8082111561212557600080fd5b818501915085601f83011261213957600080fd5b81358181111561214b5761214b6123ef565b8060051b604051601f19603f83011681018181108582111715612170576121706123ef565b604052828152858101935084860182860187018a101561218f57600080fd5b600095505b838610156121b9576121a581611fc5565b855260019590950194938601938601612194565b5098975050505050505050565b6000602082840312156121d857600080fd5b6118d582611fd5565b6000602082840312156121f357600080fd5b5035919050565b60008060008060008060c0878903121561221357600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b600060208083528351808285015260005b8181101561226a5785810183015185820160400152820161224e565b8181111561227c576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156123175784516001600160a01b0316835293830193918301916001016122f2565b50506001600160a01b03969096166060850152505050608001529392505050565b6000821982111561234b5761234b6123c3565b500190565b60008261236d57634e487b7160e01b600052601260045260246000fd5b500490565b600081600019048311821515161561238c5761238c6123c3565b500290565b6000828210156123a3576123a36123c3565b500390565b60006000198214156123bc576123bc6123c3565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610df757600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122030d56b2fd21b0bb1942f3a353bbc778cbcf934beac0527847d901f2f435eb39664736f6c63430008070033

Deployed Bytecode Sourcemap

6180:18318:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9417:2770;;;;;;;;;;;;;:::i;:::-;;8891:83;;;;;;;;;;-1:-1:-1;8961:5:0;;;;;;;;;;;;-1:-1:-1;;;8961:5:0;;;;8891:83;;;;;;;:::i;:::-;;;;;;;;12594:193;;;;;;;;;;-1:-1:-1;12594:193:0;;;;;:::i;:::-;;:::i;:::-;;;5422:14:1;;5415:22;5397:41;;5385:2;5370:18;12594:193:0;5257:187:1;7715:41:0;;;;;;;;;;-1:-1:-1;7715:41:0;;;;-1:-1:-1;;;;;7715:41:0;;;;;;-1:-1:-1;;;;;4989:32:1;;;4971:51;;4959:2;4944:18;7715:41:0;4825:203:1;9168:95:0;;;;;;;;;;-1:-1:-1;9248:7:0;;9168:95;;;12326:25:1;;;12314:2;12299:18;9168:95:0;12180:177:1;13971:446:0;;;;;;;;;;-1:-1:-1;13971:446:0;;;;;:::i;:::-;;:::i;7616:90::-;;;;;;;;;;-1:-1:-1;7616:90:0;;;;-1:-1:-1;;;;;7616:90:0;;;9077:83;;;;;;;;;;-1:-1:-1;9077:83:0;;6403:1;13489:36:1;;13477:2;13462:18;9077:83:0;13347:184:1;19810:111:0;;;;;;;;;;-1:-1:-1;19810:111:0;;;;;:::i;:::-;;:::i;7763:28::-;;;;;;;;;;-1:-1:-1;7763:28:0;;;;-1:-1:-1;;;;;7763:28:0;;;19959:124;;;;;;;;;;-1:-1:-1;19959:124:0;;;;;:::i;:::-;-1:-1:-1;;;;;20048:27:0;20024:4;20048:27;;;:18;:27;;;;;;;;;19959:124;19235:226;;;;;;;;;;-1:-1:-1;19235:226:0;;;;;:::i;:::-;;:::i;18992:203::-;;;;;;;;;;;;;:::i;9271:138::-;;;;;;;;;;-1:-1:-1;9271:138:0;;;;;:::i;:::-;;:::i;3921:148::-;;;;;;;;;;;;;:::i;21754:108::-;;;;;;;;;;-1:-1:-1;21754:108:0;;;;;:::i;:::-;;:::i;19604:198::-;;;;;;;;;;-1:-1:-1;19604:198:0;;;;;:::i;:::-;;:::i;7909:45::-;;;;;;;;;;;;;;;;3707:79;;;;;;;;;;-1:-1:-1;3745:7:0;3772:6;-1:-1:-1;;;;;3772:6:0;3707:79;;7969:47;;;;;;;;;;;;;;;;8982:87;;;;;;;;;;-1:-1:-1;9054:7:0;;;;;;;;;;;;-1:-1:-1;;;9054:7:0;;;;8982:87;;21471:162;;;;;;;;;;-1:-1:-1;21471:162:0;;;;;:::i;:::-;;:::i;12195:199::-;;;;;;;;;;-1:-1:-1;12195:199:0;;;;;:::i;:::-;;:::i;6694:43::-;;;;;;;;;;;;;;;;20653:158;;;;;;;;;;-1:-1:-1;20653:158:0;;;;;:::i;:::-;;:::i;20982:481::-;;;;;;;;;;-1:-1:-1;20982:481:0;;;;;:::i;:::-;;:::i;7515:41::-;;;;;;;;;;-1:-1:-1;7515:41:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;18791:193;;;;;;;;;;;;;:::i;12402:184::-;;;;;;;;;;-1:-1:-1;12402:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;12551:18:0;;;12519:7;12551:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;12402:184;21641:105;;;;;;;;;;-1:-1:-1;21641:105:0;;;;;:::i;:::-;;:::i;21870:115::-;;;;;;;;;;-1:-1:-1;21870:115:0;;;;;:::i;:::-;;:::i;20819:155::-;;;;;;;;;;-1:-1:-1;20819:155:0;;;;;:::i;:::-;;:::i;8031:51::-;;;;;;;;;;;;;;;;7467:41;;;;;;;;;;-1:-1:-1;7467:41:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;9417:2770;3834:6;;-1:-1:-1;;;;;3834:6:0;2501:10;3834:22;3826:67;;;;-1:-1:-1;;;3826:67:0;;;;;;;:::i;:::-;;;;;;;;;9518:9:::1;:62;::::0;;:69;;9583:4:::1;-1:-1:-1::0;;9518:69:0;;::::1;::::0;::::1;::::0;;;9598:62;:69;;;::::1;::::0;::::1;::::0;;9678:62;:69;;;::::1;::::0;::::1;::::0;;9758:62;:69;;;::::1;::::0;::::1;::::0;;9838:62;:69;;;::::1;::::0;::::1;::::0;;9918:62;:69;;;::::1;::::0;::::1;::::0;;9998:62;:69;;;::::1;::::0;::::1;::::0;;10078:62;:69;;;::::1;::::0;::::1;::::0;;10238:62;:69;;;::::1;::::0;::::1;::::0;;10318:62;:69;;;::::1;::::0;::::1;::::0;;10398:62;:69;;;::::1;::::0;::::1;::::0;;10478:62;:69;;;::::1;::::0;::::1;::::0;;10558:62;:69;;;::::1;::::0;::::1;::::0;;10638:62;:69;;;::::1;::::0;::::1;::::0;;10718:62;:69;;;::::1;::::0;::::1;::::0;;10798:62;:69;;;::::1;::::0;::::1;::::0;;10878:62;:69;;;::::1;::::0;::::1;::::0;;10958:62;:69;;;::::1;::::0;::::1;::::0;;11038:62;:69;;;::::1;::::0;::::1;::::0;;11118:62;:69;;;::::1;::::0;::::1;::::0;;11198:62;:69;;;::::1;::::0;::::1;::::0;;11278:62;:69;;;::::1;::::0;::::1;::::0;;11358:62;:69;;;::::1;::::0;::::1;::::0;;11438:62;:69;;;::::1;::::0;::::1;::::0;;11518:62;:69;;;::::1;::::0;::::1;::::0;;11598:62;:69;;;::::1;::::0;::::1;::::0;;11678:62;:69;;;::::1;::::0;::::1;::::0;;11758:62;:69;;;::::1;::::0;::::1;::::0;;11838:62;:69;;;::::1;::::0;::::1;::::0;;11918:62;:69;;;::::1;::::0;::::1;::::0;;11998:62;:69;;;::::1;::::0;::::1;::::0;;12096:42:::1;-1:-1:-1::0;12078:62:0;;:69;;;;::::1;::::0;;::::1;::::0;;19530:11;:26;;-1:-1:-1;;;;19530:26:0;-1:-1:-1;;;19530:26:0;;;9417:2770::o;12594:193::-;12696:4;12718:39;2501:10;12741:7;12750:6;12718:8;:39::i;:::-;-1:-1:-1;12775:4:0;12594:193;;;;;:::o;13971:446::-;14103:4;14120:36;14130:6;14138:9;14149:6;14120:9;:36::i;:::-;14167:220;14190:6;2501:10;14238:138;14294:6;14238:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14238:19:0;;;;;;:11;:19;;;;;;;;2501:10;14238:33;;;;;;;;;;:37;:138::i;:::-;14167:8;:220::i;:::-;-1:-1:-1;14405:4:0;13971:446;;;;;:::o;19810:111::-;3834:6;;-1:-1:-1;;;;;3834:6:0;2501:10;3834:22;3826:67;;;;-1:-1:-1;;;3826:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19885:20:0::1;19908:5;19885:20:::0;;;:9:::1;:20;::::0;;;;:28;;-1:-1:-1;;19885:28:0::1;::::0;;19810:111::o;19235:226::-;3834:6;;-1:-1:-1;;;;;3834:6:0;2501:10;3834:22;3826:67;;;;-1:-1:-1;;;3826:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19357:18:0;::::1;;::::0;;;:9:::1;:18;::::0;;;;;::::1;;:29;;::::0;::::1;;;;19349:65;;;::::0;-1:-1:-1;;;19349:65:0;;8822:2:1;19349:65:0::1;::::0;::::1;8804:21:1::0;8861:2;8841:18;;;8834:30;8900:25;8880:18;;;8873:53;8943:18;;19349:65:0::1;8620:347:1::0;19349:65:0::1;-1:-1:-1::0;;;;;19425:18:0;;;::::1;;::::0;;;:9:::1;:18;::::0;;;;:28;;-1:-1:-1;;19425:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;19235:226::o;18992:203::-;19058:13;;-1:-1:-1;;;;;19058:13:0;2501:10;-1:-1:-1;;;;;19042:29:0;;19034:38;;;;;;19112:21;19144:43;19112:21;19144:23;:43::i;:::-;19023:172;18992:203::o;9271:138::-;-1:-1:-1;;;;;9384:16:0;;9337:7;9384:16;;;:7;:16;;;;;;9364:37;;:19;:37::i;3921:148::-;3834:6;;-1:-1:-1;;;;;3834:6:0;2501:10;3834:22;3826:67;;;;-1:-1:-1;;;3826:67:0;;;;;;;:::i;:::-;4028:1:::1;4012:6:::0;;3991:40:::1;::::0;-1:-1:-1;;;;;4012:6:0;;::::1;::::0;3991:40:::1;::::0;4028:1;;3991:40:::1;4059:1;4042:19:::0;;-1:-1:-1;;;;;;4042:19:0::1;::::0;;3921:148::o;21754:108::-;3834:6;;-1:-1:-1;;;;;3834:6:0;2501:10;3834:22;3826:67;;;;-1:-1:-1;;;3826:67:0;;;;;;;:::i;:::-;21828:12:::1;:26:::0;21754:108::o;19604:198::-;3834:6;;-1:-1:-1;;;;;3834:6:0;2501:10;3834:22;3826:67;;;;-1:-1:-1;;;3826:67:0;;;;;;;:::i;:::-;19694:9:::1;19689:106;19713:10;:17;19709:1;:21;19689:106;;;19779:4;19752:9;:24;19762:10;19773:1;19762:13;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;19752:24:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;19752:24:0;:31;;-1:-1:-1;;19752:31:0::1;::::0;::::1;;::::0;;;::::1;::::0;;19732:3;::::1;::::0;::::1;:::i;:::-;;;;19689:106;;;;19604:198:::0;:::o;21471:162::-;3834:6;;-1:-1:-1;;;;;3834:6:0;2501:10;3834:22;3826:67;;;;-1:-1:-1;;;3826:67:0;;;;;;;:::i;:::-;21585:19:::1;:40:::0;21471:162::o;12195:199::-;12300:4;12322:42;2501:10;12346:9;12357:6;12322:9;:42::i;20653:158::-;3834:6;;-1:-1:-1;;;;;3834:6:0;2501:10;3834:22;3826:67;;;;-1:-1:-1;;;3826:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20765:27:0;;;::::1;;::::0;;;:18:::1;:27;::::0;;;;:38;;-1:-1:-1;;20765:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;20653:158::o;20982:481::-;3834:6;;-1:-1:-1;;;;;3834:6:0;2501:10;3834:22;3826:67;;;;-1:-1:-1;;;3826:67:0;;;;;;;:::i;:::-;21222:14:::1;:30:::0;;;;21263:15:::1;:32:::0;;;;21308:12:::1;:26:::0;;;;21345:13:::1;:28:::0;21386:13:::1;:28:::0;21425:14:::1;:30:::0;20982:481::o;18791:193::-;18857:13;;-1:-1:-1;;;;;18857:13:0;2501:10;-1:-1:-1;;;;;18841:29:0;;18833:38;;;;;;18882:23;18908:24;18926:4;18908:9;:24::i;:::-;18882:50;;18943:33;18960:15;18943:16;:33::i;21641:105::-;3834:6;;-1:-1:-1;;;;;3834:6:0;2501:10;3834:22;3826:67;;;;-1:-1:-1;;;3826:67:0;;;;;;;:::i;:::-;21712:11:::1;:26:::0;;;::::1;;-1:-1:-1::0;;;21712:26:0::1;-1:-1:-1::0;;;;21712:26:0;;::::1;::::0;;;::::1;::::0;;21641:105::o;21870:115::-;3834:6;;-1:-1:-1;;;;;3834:6:0;2501:10;3834:22;3826:67;;;;-1:-1:-1;;;3826:67:0;;;;;;;:::i;:::-;21947:14:::1;:30:::0;21870:115::o;20819:155::-;3834:6;;-1:-1:-1;;;;;3834:6:0;2501:10;3834:22;3826:67;;;;-1:-1:-1;;;3826:67:0;;;;;;;:::i;:::-;20936:13:::1;:30:::0;;-1:-1:-1;;;;;;20936:30:0::1;-1:-1:-1::0;;;;;20936:30:0;;;::::1;::::0;;;::::1;::::0;;20819:155::o;12795:369::-;-1:-1:-1;;;;;12922:19:0;;12914:68;;;;-1:-1:-1;;;12914:68:0;;11494:2:1;12914:68:0;;;11476:21:1;11533:2;11513:18;;;11506:30;11572:34;11552:18;;;11545:62;-1:-1:-1;;;11623:18:1;;;11616:34;11667:19;;12914:68:0;11292:400:1;12914:68:0;-1:-1:-1;;;;;13001:21:0;;12993:68;;;;-1:-1:-1;;;12993:68:0;;7659:2:1;12993:68:0;;;7641:21:1;7698:2;7678:18;;;7671:30;7737:34;7717:18;;;7710:62;-1:-1:-1;;;7788:18:1;;;7781:32;7830:19;;12993:68:0;7457:398:1;12993:68:0;-1:-1:-1;;;;;13072:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;13124:32;;12326:25:1;;;13124:32:0;;12299:18:1;13124:32:0;;;;;;;12795:369;;;:::o;14452:2586::-;-1:-1:-1;;;;;14574:18:0;;14566:68;;;;-1:-1:-1;;;14566:68:0;;10684:2:1;14566:68:0;;;10666:21:1;10723:2;10703:18;;;10696:30;10762:34;10742:18;;;10735:62;-1:-1:-1;;;10813:18:1;;;10806:35;10858:19;;14566:68:0;10482:401:1;14566:68:0;-1:-1:-1;;;;;14653:16:0;;14645:64;;;;-1:-1:-1;;;14645:64:0;;6487:2:1;14645:64:0;;;6469:21:1;6526:2;6506:18;;;6499:30;6565:34;6545:18;;;6538:62;-1:-1:-1;;;6616:18:1;;;6609:33;6659:19;;14645:64:0;6285:399:1;14645:64:0;14737:1;14728:6;:10;14720:64;;;;-1:-1:-1;;;14720:64:0;;10274:2:1;14720:64:0;;;10256:21:1;10313:2;10293:18;;;10286:30;10352:34;10332:18;;;10325:62;-1:-1:-1;;;10403:18:1;;;10396:39;10452:19;;14720:64:0;10072:405:1;14720:64:0;3745:7;3772:6;-1:-1:-1;;;;;14801:15:0;;;3772:6;;14801:15;;;;:32;;-1:-1:-1;3745:7:0;3772:6;-1:-1:-1;;;;;14820:13:0;;;3772:6;;14820:13;;14801:32;14797:1394;;;14888:11;;-1:-1:-1;;;14888:11:0;;;;14883:211;;-1:-1:-1;;;;;14928:15:0;;;;;;:9;:15;;;;;;;;;:32;;-1:-1:-1;;;;;;14947:13:0;;;;;;:9;:13;;;;;;;;14928:32;14920:158;;;;-1:-1:-1;;;14920:158:0;;11899:2:1;14920:158:0;;;11881:21:1;11938:2;11918:18;;;11911:30;11977:34;11957:18;;;11950:62;12048:34;12028:18;;;12021:62;-1:-1:-1;;;12099:19:1;;;12092:41;12150:19;;14920:158:0;11697:478:1;14920:158:0;15128:12;;15118:6;:22;;15110:63;;;;-1:-1:-1;;;15110:63:0;;7302:2:1;15110:63:0;;;7284:21:1;7341:2;7321:18;;;7314:30;7380;7360:18;;;7353:58;7428:18;;15110:63:0;7100:352:1;15110:63:0;-1:-1:-1;;;;;15215:15:0;;;;;;:9;:15;;;;;;;;15214:16;:34;;;;-1:-1:-1;;;;;;15235:13:0;;;;;;:9;:13;;;;;;;;15234:14;15214:34;15188:131;;;;-1:-1:-1;;;15188:131:0;;8062:2:1;15188:131:0;;;8044:21:1;8101:2;8081:18;;;8074:30;8140:34;8120:18;;;8113:62;-1:-1:-1;;;8191:18:1;;;8184:33;8234:19;;15188:131:0;7860:399:1;15188:131:0;15346:13;;-1:-1:-1;;;;;15340:19:0;;;15346:13;;15340:19;15336:208;;15435:14;;15426:6;15410:13;15420:2;15410:9;:13::i;:::-;:22;;;;:::i;:::-;:39;15380:148;;;;-1:-1:-1;;;15380:148:0;;11090:2:1;15380:148:0;;;11072:21:1;11129:2;11109:18;;;11102:30;11168:34;11148:18;;;11141:62;-1:-1:-1;;;11219:18:1;;;11212:33;11262:19;;15380:148:0;10888:399:1;15380:148:0;15560:28;15591:24;15609:4;15591:9;:24::i;:::-;15672:19;;15736:12;;15560:55;;-1:-1:-1;15648:43:0;;;;15712:36;;15708:112;;15792:12;;15769:35;;15708:112;15840:10;:21;;;;-1:-1:-1;15855:6:0;;-1:-1:-1;;;15855:6:0;;;;15854:7;15840:21;:46;;;;-1:-1:-1;15873:13:0;;-1:-1:-1;;;;;15865:21:0;;;15873:13;;15865:21;;15840:46;:61;;;;-1:-1:-1;15890:11:0;;-1:-1:-1;;;15890:11:0;;;;15840:61;15836:344;;;15922:38;15939:20;15922:16;:38::i;:::-;16008:21;16052:22;;16048:117;;16099:46;16123:21;16099:23;:46::i;:::-;15903:277;15836:344;14835:1356;;14797:1394;-1:-1:-1;;;;;16281:24:0;;16203:12;16281:24;;;:18;:24;;;;;;16218:4;;16281:24;;;:50;;-1:-1:-1;;;;;;16309:22:0;;;;;;:18;:22;;;;;;;;16281:50;16280:115;;;-1:-1:-1;16358:13:0;;-1:-1:-1;;;;;16350:21:0;;;16358:13;;16350:21;;;;:44;;-1:-1:-1;16381:13:0;;-1:-1:-1;;;;;16375:19:0;;;16381:13;;16375:19;;16350:44;16262:715;;;-1:-1:-1;16432:5:0;16262:715;;;16514:13;;-1:-1:-1;;;;;16506:21:0;;;16514:13;;16506:21;:55;;;;-1:-1:-1;16545:15:0;;-1:-1:-1;;;;;16531:30:0;;;16545:15;;16531:30;;16506:55;16502:206;;;16594:14;;16582:9;:26;16637:12;;16627:7;:22;16679:13;;16668:8;:24;16502:206;16767:13;;-1:-1:-1;;;;;16761:19:0;;;16767:13;;16761:19;:55;;;;-1:-1:-1;16800:15:0;;-1:-1:-1;;;;;16784:32:0;;;16800:15;;16784:32;;16761:55;16757:209;;;16849:15;;16837:9;:27;16893:13;;16883:7;:23;16936:14;;16925:8;:25;16757:209;16989:41;17004:4;17010:2;17014:6;17022:7;16989:14;:41::i;:::-;14555:2483;14452:2586;;;:::o;4431:224::-;4551:7;4587:12;4579:6;;;;4571:29;;;;-1:-1:-1;;;4571:29:0;;;;;;;;:::i;:::-;-1:-1:-1;4611:9:0;4623:5;4627:1;4623;:5;:::i;:::-;4611:17;4431:224;-1:-1:-1;;;;;4431:224:0:o;18611:172::-;18698:13;;:37;;18680:12;;-1:-1:-1;;;;;18698:13:0;;18724:6;;18680:12;18698:37;18680:12;18698:37;18724:6;18698:13;:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18679:56;;;18754:7;18746:29;;;;-1:-1:-1;;;18746:29:0;;9174:2:1;18746:29:0;;;9156:21:1;9213:1;9193:18;;;9186:29;-1:-1:-1;;;9231:18:1;;;9224:39;9280:18;;18746:29:0;8972:332:1;13172:323:0;13267:7;13325;;13314;:18;;13292:110;;;;-1:-1:-1;;;13292:110:0;;6891:2:1;13292:110:0;;;6873:21:1;6930:2;6910:18;;;6903:30;6969:34;6949:18;;;6942:62;-1:-1:-1;;;7020:18:1;;;7013:40;7070:19;;13292:110:0;6689:406:1;13292:110:0;13413:19;13435:10;:8;:10::i;:::-;13413:32;-1:-1:-1;13463:24:0;:7;13413:32;13463:11;:24::i;:::-;13456:31;13172:323;-1:-1:-1;;;13172:323:0:o;18120:483::-;8186:6;:13;;-1:-1:-1;;;;8186:13:0;-1:-1:-1;;;8186:13:0;;;18222:16:::1;::::0;;18236:1:::1;18222:16:::0;;;;;::::1;::::0;;-1:-1:-1;;18222:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;18222:16:0::1;18198:40;;18267:4;18249;18254:1;18249:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;18249:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;18293:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;18293:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;18249:7;;18293:22;;;;;:15;:22;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18283:4;18288:1;18283:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;18283:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;18358:15:::1;::::0;18326:62:::1;::::0;18343:4:::1;::::0;18358:15:::1;18376:11:::0;18326:8:::1;:62::i;:::-;18399:15;::::0;:196:::1;::::0;-1:-1:-1;;;18399:196:0;;-1:-1:-1;;;;;18399:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;18480:11;;18399:15:::1;::::0;18522:4;;18549::::1;::::0;18569:15:::1;::::0;18399:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;8222:6:0;:14;;-1:-1:-1;;;;8222:14:0;;;-1:-1:-1;;;;18120:483:0:o;17046:282::-;17202:7;17197:28;;17211:14;:12;:14::i;:::-;17236:44;17254:6;17262:9;17273:6;17236:17;:44::i;:::-;17296:7;17291:29;;17305:15;13864:17;;13852:9;:29;13902:15;;13892:7;:25;13939:16;;13928:8;:27;13808:155;24241:166;24283:7;24304:15;24321;24340:19;:17;:19::i;:::-;24303:56;;-1:-1:-1;24303:56:0;-1:-1:-1;24379:20:0;24303:56;;24379:11;:20::i;:::-;24372:27;;;;24241:166;:::o;4917:132::-;4975:7;5002:39;5006:1;5009;5002:39;;;;;;;;;;;;;;;;;:3;:39::i;13503:297::-;13550:9;;:14;:30;;;;-1:-1:-1;13568:7:0;;:12;13550:30;:47;;;;-1:-1:-1;13584:8:0;;:13;13550:47;13546:60;;;13503:297::o;13546:60::-;13638:9;;;13618:17;:29;13676:7;;;13658:15;:25;13713:8;;;13694:16;:27;-1:-1:-1;13734:13:0;;;;13758:11;;;;13780:12;13503:297::o;17336:744::-;17483:15;17513:23;17551:12;17578:23;17616:12;17643:13;17671;17698:19;17709:7;17698:10;:19::i;:::-;17468:249;;;;;;;;;;;;;;17728:19;17750:10;:8;:10::i;:::-;17728:32;-1:-1:-1;17771:13:0;17787:22;:5;17728:32;17787:9;:22::i;:::-;-1:-1:-1;;;;;17838:15:0;;;;;;:7;:15;;;;;;17771:38;;-1:-1:-1;17838:28:0;;17858:7;17838:19;:28::i;:::-;-1:-1:-1;;;;;17820:15:0;;;;;;;:7;:15;;;;;;:46;;;;17898:18;;;;;;;:39;;17921:15;17898:22;:39::i;:::-;-1:-1:-1;;;;;17877:18:0;;;;;;:7;:18;;;;;:60;17948:16;17958:5;17948:9;:16::i;:::-;17975:37;17987:4;17993;17999:5;18006;17975:11;:37::i;:::-;18045:9;-1:-1:-1;;;;;18028:44:0;18037:6;-1:-1:-1;;;;;18028:44:0;;18056:15;18028:44;;;;12326:25:1;;12314:2;12299:18;;12180:177;18028:44:0;;;;;;;;17457:623;;;;;;;;;17336:744;;;:::o;22009:259::-;22107:7;;22143;;22060;;;;22175:20;22107:7;22143;22175:11;:20::i;:::-;22165:7;:30;22161:61;;;22205:7;;22214;;22197:25;;;;;;22009:259;;:::o;22161:61::-;22243:7;;22252;;-1:-1:-1;22009:259:0;-1:-1:-1;22009:259:0:o;5057:223::-;5177:7;5212:12;5205:5;5197:28;;;;-1:-1:-1;;;5197:28:0;;;;;;;;:::i;:::-;-1:-1:-1;5236:9:0;5248:5;5252:1;5248;:5;:::i;22276:819::-;22376:7;22398;22420;22442;22464;22486;22508;22558:23;22596:12;22623:13;22651;22678:20;22690:7;22678:11;:20::i;:::-;22543:155;;;;;;;;22710:15;22727:23;22752:12;22768:128;22794:7;22816:4;22835:5;22855;22875:10;:8;:10::i;:::-;22768:11;:128::i;:::-;22709:187;;-1:-1:-1;22709:187:0;-1:-1:-1;22709:187:0;-1:-1:-1;23002:15:0;;-1:-1:-1;23032:4:0;;-1:-1:-1;23051:5:0;;-1:-1:-1;23071:5:0;-1:-1:-1;;;;22276:819:0;;;;;;;;;:::o;4663:246::-;4721:7;4745:6;4741:47;;-1:-1:-1;4775:1:0;4768:8;;4741:47;4798:9;4810:5;4814:1;4810;:5;:::i;:::-;4798:17;-1:-1:-1;4843:1:0;4834:5;4838:1;4798:17;4834:5;:::i;:::-;:10;4826:56;;;;-1:-1:-1;;;4826:56:0;;9511:2:1;4826:56:0;;;9493:21:1;9550:2;9530:18;;;9523:30;9589:34;9569:18;;;9562:62;-1:-1:-1;;;9640:18:1;;;9633:31;9681:19;;4826:56:0;9309:397:1;4287:136:0;4345:7;4372:43;4376:1;4379;4372:43;;;;;;;;;;;;;;;;;:3;:43::i;4100:179::-;4158:7;;4190:5;4194:1;4190;:5;:::i;:::-;4178:17;;4219:1;4214;:6;;4206:46;;;;-1:-1:-1;;;4206:46:0;;8466:2:1;4206:46:0;;;8448:21:1;8505:2;8485:18;;;8478:30;8544:29;8524:18;;;8517:57;8591:18;;4206:46:0;8264:351:1;20091:211:0;20144:19;20166:10;:8;:10::i;:::-;20144:32;-1:-1:-1;20187:13:0;20203:22;:5;20144:32;20203:9;:22::i;:::-;20277:4;20261:22;;;;:7;:22;;;;;;20187:38;;-1:-1:-1;20261:33:0;;20187:38;20261:26;:33::i;:::-;20252:4;20236:22;;;;:7;:22;;;;;:58;-1:-1:-1;;;20091:211:0:o;20310:319::-;20461:28;20483:5;20461:17;20473:4;20461:7;;:11;;:17;;;;:::i;:::-;:21;;:28::i;:::-;20451:7;:38;20513:10;;:20;;20528:4;20513:14;:20::i;:::-;20500:10;:33;20558:11;;:22;;20574:5;20558:15;:22::i;:::-;20544:11;:36;20603:7;;:18;;20615:5;20603:11;:18::i;:::-;20593:7;:28;-1:-1:-1;;;;20310:319:0:o;23103:502::-;23204:7;23226;23248;23270;23305:12;23320:31;23347:3;23320:22;23332:9;;23320:7;:11;;:22;;;;:::i;:::-;:26;;:31::i;:::-;23305:46;;23362:13;23378:29;23403:3;23378:20;23390:7;;23378;:11;;:20;;;;:::i;:29::-;23362:45;;23418:13;23434:30;23460:3;23434:21;23446:8;;23434:7;:11;;:21;;;;:::i;:30::-;23418:46;-1:-1:-1;23475:23:0;23501:39;23418:46;23501:28;23523:5;23501:28;:7;23513:4;23501:11;:17::i;:39::-;23475:65;23578:4;;-1:-1:-1;23584:5:0;;-1:-1:-1;23584:5:0;-1:-1:-1;23103:502:0;;-1:-1:-1;;;23103:502:0:o;23613:620::-;23831:7;;;;23928:24;:7;23940:11;23928;:24::i;:::-;23910:42;-1:-1:-1;23963:12:0;23978:21;:4;23987:11;23978:8;:21::i;:::-;23963:36;-1:-1:-1;24010:13:0;24026:22;:5;24036:11;24026:9;:22::i;:::-;24010:38;-1:-1:-1;24059:13:0;24075:22;:5;24085:11;24075:9;:22::i;:::-;24059:38;-1:-1:-1;24108:23:0;24134:39;24059:38;24134:28;24156:5;24134:28;:7;24146:4;24134:11;:17::i;:39::-;24194:7;;;;-1:-1:-1;24220:4:0;;-1:-1:-1;23613:620:0;;-1:-1:-1;;;;;;;;;23613:620:0:o;14:134:1:-;82:20;;111:31;82:20;111:31;:::i;:::-;14:134;;;:::o;153:160::-;218:20;;274:13;;267:21;257:32;;247:60;;303:1;300;293:12;318:247;377:6;430:2;418:9;409:7;405:23;401:32;398:52;;;446:1;443;436:12;398:52;485:9;472:23;504:31;529:5;504:31;:::i;570:251::-;640:6;693:2;681:9;672:7;668:23;664:32;661:52;;;709:1;706;699:12;661:52;741:9;735:16;760:31;785:5;760:31;:::i;1086:388::-;1154:6;1162;1215:2;1203:9;1194:7;1190:23;1186:32;1183:52;;;1231:1;1228;1221:12;1183:52;1270:9;1257:23;1289:31;1314:5;1289:31;:::i;:::-;1339:5;-1:-1:-1;1396:2:1;1381:18;;1368:32;1409:33;1368:32;1409:33;:::i;:::-;1461:7;1451:17;;;1086:388;;;;;:::o;1479:456::-;1556:6;1564;1572;1625:2;1613:9;1604:7;1600:23;1596:32;1593:52;;;1641:1;1638;1631:12;1593:52;1680:9;1667:23;1699:31;1724:5;1699:31;:::i;:::-;1749:5;-1:-1:-1;1806:2:1;1791:18;;1778:32;1819:33;1778:32;1819:33;:::i;:::-;1479:456;;1871:7;;-1:-1:-1;;;1925:2:1;1910:18;;;;1897:32;;1479:456::o;1940:315::-;2005:6;2013;2066:2;2054:9;2045:7;2041:23;2037:32;2034:52;;;2082:1;2079;2072:12;2034:52;2121:9;2108:23;2140:31;2165:5;2140:31;:::i;:::-;2190:5;-1:-1:-1;2214:35:1;2245:2;2230:18;;2214:35;:::i;:::-;2204:45;;1940:315;;;;;:::o;2260:::-;2328:6;2336;2389:2;2377:9;2368:7;2364:23;2360:32;2357:52;;;2405:1;2402;2395:12;2357:52;2444:9;2431:23;2463:31;2488:5;2463:31;:::i;:::-;2513:5;2565:2;2550:18;;;;2537:32;;-1:-1:-1;;;2260:315:1:o;2580:1132::-;2664:6;2695:2;2738;2726:9;2717:7;2713:23;2709:32;2706:52;;;2754:1;2751;2744:12;2706:52;2794:9;2781:23;2823:18;2864:2;2856:6;2853:14;2850:34;;;2880:1;2877;2870:12;2850:34;2918:6;2907:9;2903:22;2893:32;;2963:7;2956:4;2952:2;2948:13;2944:27;2934:55;;2985:1;2982;2975:12;2934:55;3021:2;3008:16;3043:2;3039;3036:10;3033:36;;;3049:18;;:::i;:::-;3095:2;3092:1;3088:10;3127:2;3121:9;3190:2;3186:7;3181:2;3177;3173:11;3169:25;3161:6;3157:38;3245:6;3233:10;3230:22;3225:2;3213:10;3210:18;3207:46;3204:72;;;3256:18;;:::i;:::-;3292:2;3285:22;3342:18;;;3376:15;;;;-1:-1:-1;3411:11:1;;;3441;;;3437:20;;3434:33;-1:-1:-1;3431:53:1;;;3480:1;3477;3470:12;3431:53;3502:1;3493:10;;3512:169;3526:2;3523:1;3520:9;3512:169;;;3583:23;3602:3;3583:23;:::i;:::-;3571:36;;3544:1;3537:9;;;;;3627:12;;;;3659;;3512:169;;;-1:-1:-1;3700:6:1;2580:1132;-1:-1:-1;;;;;;;;2580:1132:1:o;3717:180::-;3773:6;3826:2;3814:9;3805:7;3801:23;3797:32;3794:52;;;3842:1;3839;3832:12;3794:52;3865:26;3881:9;3865:26;:::i;3902:180::-;3961:6;4014:2;4002:9;3993:7;3989:23;3985:32;3982:52;;;4030:1;4027;4020:12;3982:52;-1:-1:-1;4053:23:1;;3902:180;-1:-1:-1;3902:180:1:o;4087:523::-;4191:6;4199;4207;4215;4223;4231;4284:3;4272:9;4263:7;4259:23;4255:33;4252:53;;;4301:1;4298;4291:12;4252:53;-1:-1:-1;;4324:23:1;;;4394:2;4379:18;;4366:32;;-1:-1:-1;4445:2:1;4430:18;;4417:32;;4496:2;4481:18;;4468:32;;-1:-1:-1;4547:3:1;4532:19;;4519:33;;-1:-1:-1;4599:3:1;4584:19;4571:33;;-1:-1:-1;4087:523:1;-1:-1:-1;4087:523:1:o;5683:597::-;5795:4;5824:2;5853;5842:9;5835:21;5885:6;5879:13;5928:6;5923:2;5912:9;5908:18;5901:34;5953:1;5963:140;5977:6;5974:1;5971:13;5963:140;;;6072:14;;;6068:23;;6062:30;6038:17;;;6057:2;6034:26;6027:66;5992:10;;5963:140;;;6121:6;6118:1;6115:13;6112:91;;;6191:1;6186:2;6177:6;6166:9;6162:22;6158:31;6151:42;6112:91;-1:-1:-1;6264:2:1;6243:15;-1:-1:-1;;6239:29:1;6224:45;;;;6271:2;6220:54;;5683:597;-1:-1:-1;;;5683:597:1:o;9711:356::-;9913:2;9895:21;;;9932:18;;;9925:30;9991:34;9986:2;9971:18;;9964:62;10058:2;10043:18;;9711:356::o;12362:980::-;12624:4;12672:3;12661:9;12657:19;12703:6;12692:9;12685:25;12729:2;12767:6;12762:2;12751:9;12747:18;12740:34;12810:3;12805:2;12794:9;12790:18;12783:31;12834:6;12869;12863:13;12900:6;12892;12885:22;12938:3;12927:9;12923:19;12916:26;;12977:2;12969:6;12965:15;12951:29;;12998:1;13008:195;13022:6;13019:1;13016:13;13008:195;;;13087:13;;-1:-1:-1;;;;;13083:39:1;13071:52;;13178:15;;;;13143:12;;;;13119:1;13037:9;13008:195;;;-1:-1:-1;;;;;;;13259:32:1;;;;13254:2;13239:18;;13232:60;-1:-1:-1;;;13323:3:1;13308:19;13301:35;13220:3;12362:980;-1:-1:-1;;;12362:980:1:o;13536:128::-;13576:3;13607:1;13603:6;13600:1;13597:13;13594:39;;;13613:18;;:::i;:::-;-1:-1:-1;13649:9:1;;13536:128::o;13669:217::-;13709:1;13735;13725:132;;13779:10;13774:3;13770:20;13767:1;13760:31;13814:4;13811:1;13804:15;13842:4;13839:1;13832:15;13725:132;-1:-1:-1;13871:9:1;;13669:217::o;13891:168::-;13931:7;13997:1;13993;13989:6;13985:14;13982:1;13979:21;13974:1;13967:9;13960:17;13956:45;13953:71;;;14004:18;;:::i;:::-;-1:-1:-1;14044:9:1;;13891:168::o;14064:125::-;14104:4;14132:1;14129;14126:8;14123:34;;;14137:18;;:::i;:::-;-1:-1:-1;14174:9:1;;14064:125::o;14194:135::-;14233:3;-1:-1:-1;;14254:17:1;;14251:43;;;14274:18;;:::i;:::-;-1:-1:-1;14321:1:1;14310:13;;14194:135::o;14334:127::-;14395:10;14390:3;14386:20;14383:1;14376:31;14426:4;14423:1;14416:15;14450:4;14447:1;14440:15;14466:127;14527:10;14522:3;14518:20;14515:1;14508:31;14558:4;14555:1;14548:15;14582:4;14579:1;14572:15;14598:127;14659:10;14654:3;14650:20;14647:1;14640:31;14690:4;14687:1;14680:15;14714:4;14711:1;14704:15;14730:131;-1:-1:-1;;;;;14805:31:1;;14795:42;;14785:70;;14851:1;14848;14841:12

Swarm Source

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