ETH Price: $3,391.58 (+0.49%)

Token

Hair Of Trump (HAIR)
 

Overview

Max Total Supply

100,000,000 HAIR

Holders

130

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
33,333 HAIR

Value
$0.00
0xc16157e00b1bff1522c6f01246b4fb621da048d0
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:
HairOfTrump

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-08-08
*/

// SPDX-License-Identifier: MIT
pragma solidity 0.8.20;

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

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

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

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

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

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

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

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

}

contract Ownable is Context {
    address private _owner;
    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);
    }

}

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

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

contract HairOfTrump is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping(address => bool) private _sentinels;    
    address payable private _marketingWallet;
    address payable private _launchMarketingWallet;
    uint256 public _marketingWalletPercentage = 50;
    uint256 public _launchMarketingPercentage = 50;

    uint256 firstBlock;

    uint256 private _initialBuyTax=20;
    uint256 private _initialSellTax=20;
    uint256 private _finalBuyTax=2;
    uint256 private _finalSellTax=3;
    uint256 private _reduceBuyTaxAt=25;
    uint256 private _reduceSellTaxAt=25;
    uint256 private _preventSwapBefore=25;
    uint256 private _buyCount=0;
    uint256 private _sellCount=0;    

    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 100000000 * 10**_decimals;
    string private constant _name = unicode"Hair Of Trump";
    string private constant _symbol = unicode"HAIR";
    uint256 public _maxTxAmount =   2000000 * 10**_decimals;
    uint256 public _maxWalletSize = 2000000 * 10**_decimals;
    uint256 public _taxSwapThreshold= 50000 * 10**_decimals;
    uint256 public _maxTaxSwap= 1000000 * 10**_decimals;

    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen = false;
    bool private inSwap = false;
    bool private swapEnabled = false;

    event ClearStuck(uint256 amount);
    event ClearToken(address TokenAddressCleared, uint256 Amount);
    event Sentinel(address account, bool status);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    modifier onlyOwnerOrSentinel() {
        require(_msgSender() == owner() || _sentinels[_msgSender()] == true, "Error: Caller is not owner neither sentinel");
        _;
    }    

    constructor () {

        _marketingWallet = payable(0xdafD1808295A56D0c852eab1F9fa8E2dA9c6EA17);
        _launchMarketingWallet = payable(0x1754df0C0612f403E7221958b7E663A0567361B3);
        _balances[_msgSender()] = 70000000 * 10**_decimals;
        _balances[address(this)] = 30000000 * 10**_decimals;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_marketingWallet] = true;
        _sentinels[owner()] = true;
        emit Transfer(address(0), _msgSender(), 70000000 * 10**_decimals);
        emit Transfer(address(0), address(this), 30000000 * 10**_decimals);
    }

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

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

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

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

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

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

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

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

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

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

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

            if(from != address(this)) {
                require(tradingOpen, "Trading not enabled");
            }

            if (from == uniswapV2Pair && to != address(uniswapV2Router) && ! _isExcludedFromFee[to] ) {
                require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount.");
                require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");
                taxAmount = amount.mul((_buyCount>_reduceBuyTaxAt)?_finalBuyTax:_initialBuyTax).div(100);
                _buyCount++;
            }

            if (to != uniswapV2Pair && ! _isExcludedFromFee[to]) {
                require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");
            }

            if(to == uniswapV2Pair && from!= address(this) ){
                taxAmount = amount.mul((_sellCount>_reduceSellTaxAt)?_finalSellTax:_initialSellTax).div(100);

                _sellCount++;
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            if (!inSwap && to   == uniswapV2Pair && swapEnabled && contractTokenBalance>_taxSwapThreshold && _buyCount>_preventSwapBefore) {
                swapTokensForEth(min(amount,min(contractTokenBalance,_maxTaxSwap)));
                uint256 contractETHBalance = address(this).balance;
                if(contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }

        if(taxAmount>0){
          _balances[address(this)]=_balances[address(this)].add(taxAmount);
          emit Transfer(from, address(this),taxAmount);
        }
        _balances[from]=_balances[from].sub(amount);
        _balances[to]=_balances[to].add(amount.sub(taxAmount));
        emit Transfer(from, to, amount.sub(taxAmount));
    }


    function min(uint256 a, uint256 b) private pure returns (uint256){
      return (a>b)?b:a;
    }

    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 removeLimits() external onlyOwnerOrSentinel{
        _maxTxAmount = _tTotal;
        _maxWalletSize=_tTotal;
    }

    function initalReduceLMFee() external onlyOwnerOrSentinel{
        _launchMarketingPercentage = 34;
        _marketingWalletPercentage = 66;
    }

    function reduceHalfLMFee() external onlyOwnerOrSentinel{
        _launchMarketingPercentage = 17;
        _marketingWalletPercentage = 83;
    }

    function removeLMFee() external onlyOwnerOrSentinel{
        _launchMarketingPercentage = 0;
        _marketingWalletPercentage = 100;
    }

    function sendETHToFee(uint256 amount) private {
        uint256 marketingWalletShare = amount * _marketingWalletPercentage / 100;
        uint256 launchWalletShare = amount * _launchMarketingPercentage / 100;
        _marketingWallet.transfer(marketingWalletShare);
        _launchMarketingWallet.transfer(launchWalletShare);
    }

    function clearStuckToken(address tokenAddress, uint256 tokens) external returns (bool success) {
        require(tokenAddress != address(this), "Can't rescue Project Token");
        if(tokens == 0){
            tokens = IERC20(tokenAddress).balanceOf(address(this));
        }
        emit ClearToken(tokenAddress, tokens);
        return IERC20(tokenAddress).transfer(_marketingWallet, tokens);
    }

    function manualSend() external {
        require(address(this).balance > 0, "Contract balance must be greater than zero");
        uint256 balance = address(this).balance;
        payable(_marketingWallet).transfer(balance);
    }
 
    function manualSwap() external{
        uint256 tokenBalance=balanceOf(address(this));
        if(tokenBalance>0 && tokenBalance > _taxSwapThreshold){
          swapTokensForEth(_taxSwapThreshold);
        }
        else if(tokenBalance>0 && tokenBalance < _taxSwapThreshold){
           swapTokensForEth(tokenBalance); 
        }
        uint256 ethBalance=address(this).balance;
        if(ethBalance>0){
          sendETHToFee(ethBalance);
        }
    }

    function openTrading() external onlyOwner() {
        require(!tradingOpen,"trading is already open");
        uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uint256 amountToSend = balanceOf(address(this)).mul(67).div(100);
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),amountToSend,0,0,owner(),block.timestamp);
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
        swapEnabled = true;
        tradingOpen = true;
        firstBlock = block.number;
    }

    function airdropToWallets(
        address[] memory airdropWallets,
        uint256[] memory amount
    ) external {
        require(airdropWallets.length == amount.length, "Arrays must be the same length");
        require(airdropWallets.length <= 200, "Wallets list length must be <= 200");
        for (uint256 i = 0; i < airdropWallets.length; i++) {
            address wallet = airdropWallets[i];
            uint256 airdropAmount = amount[i] * (10**9);
            require(balanceOf(msg.sender) >= airdropAmount, "Not Enough Tokens To Airdrop");
            _transfer(msg.sender, wallet, airdropAmount);
           
        }
    }    

    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":"amount","type":"uint256"}],"name":"ClearStuck","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"TokenAddressCleared","type":"address"},{"indexed":false,"internalType":"uint256","name":"Amount","type":"uint256"}],"name":"ClearToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"status","type":"bool"}],"name":"Sentinel","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":"_launchMarketingPercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingWalletPercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"airdropWallets","type":"address[]"},{"internalType":"uint256[]","name":"amount","type":"uint256[]"}],"name":"airdropToWallets","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":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"clearStuckToken","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"initalReduceLMFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reduceHalfLMFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLMFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052603260075560326008556014600a556014600b556002600c556003600d556019600e556019600f5560196010555f6011555f6012556009600a6200004991906200040c565b6200005890621e848062000423565b601355620000696009600a6200040c565b6200007890621e848062000423565b601455620000896009600a6200040c565b620000979061c35062000423565b601555620000a86009600a6200040c565b620000b790620f424062000423565b6016556018805462ffffff60a01b19169055348015620000d5575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600580546001600160a01b031990811673dafd1808295a56d0c852eab1f9fa8e2da9c6ea171790915560068054909116731754df0c0612f403e7221958b7e663a0567361b31790556200016c6009600a6200040c565b6200017c9063042c1d8062000423565b335f90815260016020526040902055620001996009600a6200040c565b620001a9906301c9c38062000423565b305f908152600160208190526040822092909255600390620001d25f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff199687161790553081526003909352818320805485166001908117909155600554909116835290822080549093168117909255600490620002405f546001600160a01b031690565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790556200026f3390565b6001600160a01b03165f5f805160206200246a833981519152620002966009600a6200040c565b620002a69063042c1d8062000423565b60405190815260200160405180910390a3305f5f805160206200246a833981519152620002d66009600a6200040c565b620002e6906301c9c38062000423565b60405190815260200160405180910390a36200043d565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200035157815f1904821115620003355762000335620002fd565b808516156200034357918102915b93841c939080029062000316565b509250929050565b5f82620003695750600162000406565b816200037757505f62000406565b81600181146200039057600281146200039b57620003bb565b600191505062000406565b60ff841115620003af57620003af620002fd565b50506001821b62000406565b5060208310610133831016604e8410600b8410161715620003e0575081810a62000406565b620003ec838362000311565b805f1904821115620004025762000402620002fd565b0290505b92915050565b5f6200041c60ff84168362000359565b9392505050565b8082028115828204841417620004065762000406620002fd565b61201f806200044b5f395ff3fe60806040526004361061017e575f3560e01c8063751039fc116100cd578063a9059cbb11610087578063c9567bf911610062578063c9567bf91461040c578063dd62ed3e14610420578063f429389014610464578063fc8d591014610478575f80fd5b8063a9059cbb146103c4578063aba6c42d146103e3578063bf474bed146103f7575f80fd5b8063751039fc1461031557806377b54bad146103295780637d1db4a5146103485780638da5cb5b1461035d5780638f9a55c01461038357806395d89b4114610398575f80fd5b80632307b441116101385780634785eb4b116101135780634785eb4b146102ba57806351bc3c85146102ce57806370a08231146102e2578063715018a614610301575f80fd5b80632307b4411461026157806323b872dd14610280578063313ce5671461029f575f80fd5b806306fdde0314610189578063087e892e146101d0578063095ea7b3146101f35780630faee56f1461022257806318160ddd146102375780631d523e4f1461024b575f80fd5b3661018557005b5f80fd5b348015610194575f80fd5b5060408051808201909152600d81526c048616972204f66205472756d7609c1b60208201525b6040516101c79190611a59565b60405180910390f35b3480156101db575f80fd5b506101e560085481565b6040519081526020016101c7565b3480156101fe575f80fd5b5061021261020d366004611abb565b61048d565b60405190151581526020016101c7565b34801561022d575f80fd5b506101e560165481565b348015610242575f80fd5b506101e56104a3565b348015610256575f80fd5b5061025f6104c3565b005b34801561026c575f80fd5b5061025f61027b366004611bb5565b61051f565b34801561028b575f80fd5b5061021261029a366004611c71565b61069e565b3480156102aa575f80fd5b50604051600981526020016101c7565b3480156102c5575f80fd5b5061025f610705565b3480156102d9575f80fd5b5061025f610757565b3480156102ed575f80fd5b506101e56102fc366004611caf565b6107ba565b34801561030c575f80fd5b5061025f6107d4565b348015610320575f80fd5b5061025f610875565b348015610334575f80fd5b50610212610343366004611abb565b6108f8565b348015610353575f80fd5b506101e560135481565b348015610368575f80fd5b505f546040516001600160a01b0390911681526020016101c7565b34801561038e575f80fd5b506101e560145481565b3480156103a3575f80fd5b506040805180820190915260048152632420a4a960e11b60208201526101ba565b3480156103cf575f80fd5b506102126103de366004611abb565b610a7e565b3480156103ee575f80fd5b5061025f610a8a565b348015610402575f80fd5b506101e560155481565b348015610417575f80fd5b5061025f610add565b34801561042b575f80fd5b506101e561043a366004611cca565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b34801561046f575f80fd5b5061025f610eca565b348015610483575f80fd5b506101e560075481565b5f610499338484610f63565b5060015b92915050565b5f6104b06009600a611df5565b6104be906305f5e100611e03565b905090565b5f546001600160a01b03163314806104ee5750335f9081526004602052604090205460ff1615156001145b6105135760405162461bcd60e51b815260040161050a90611e1a565b60405180910390fd5b60116008556053600755565b80518251146105705760405162461bcd60e51b815260206004820152601e60248201527f417272617973206d757374206265207468652073616d65206c656e6774680000604482015260640161050a565b60c8825111156105cd5760405162461bcd60e51b815260206004820152602260248201527f57616c6c657473206c697374206c656e677468206d757374206265203c3d2032604482015261030360f41b606482015260840161050a565b5f5b8251811015610699575f8382815181106105eb576105eb611e65565b602002602001015190505f83838151811061060857610608611e65565b6020026020010151633b9aca0061061f9190611e03565b90508061062b336107ba565b10156106795760405162461bcd60e51b815260206004820152601c60248201527f4e6f7420456e6f75676820546f6b656e7320546f2041697264726f7000000000604482015260640161050a565b610684338383611086565b5050808061069190611e79565b9150506105cf565b505050565b5f6106aa848484611086565b6106fb84336106f685604051806060016040528060288152602001611fc2602891396001600160a01b038a165f9081526002602090815260408083203384529091529020549190611665565b610f63565b5060019392505050565b5f546001600160a01b03163314806107305750335f9081526004602052604090205460ff1615156001145b61074c5760405162461bcd60e51b815260040161050a90611e1a565b5f6008556064600755565b5f610761306107ba565b90505f81118015610773575060155481115b156107885761078360155461169d565b6107a6565b5f81118015610798575060155481105b156107a6576107a68161169d565b4780156107b6576107b68161180d565b5050565b6001600160a01b03165f9081526001602052604090205490565b5f546001600160a01b0316331461082d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161050a565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b03163314806108a05750335f9081526004602052604090205460ff1615156001145b6108bc5760405162461bcd60e51b815260040161050a90611e1a565b6108c86009600a611df5565b6108d6906305f5e100611e03565b6013556108e56009600a611df5565b6108f3906305f5e100611e03565b601455565b5f306001600160a01b038416036109515760405162461bcd60e51b815260206004820152601a60248201527f43616e2774207265736375652050726f6a65637420546f6b656e000000000000604482015260640161050a565b815f036109c1576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa15801561099a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109be9190611e91565b91505b604080516001600160a01b0385168152602081018490527fda2bc2bedd1f85b5a59d5dbbd6684ff877ef916994a16ec08813101e99ace65f910160405180910390a160055460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018490529084169063a9059cbb906044016020604051808303815f875af1158015610a53573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a779190611ea8565b9392505050565b5f610499338484611086565b5f546001600160a01b0316331480610ab55750335f9081526004602052604090205460ff1615156001145b610ad15760405162461bcd60e51b815260040161050a90611e1a565b60226008556042600755565b5f546001600160a01b03163314610b365760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161050a565b601854600160a01b900460ff1615610b905760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e000000000000000000604482015260640161050a565b601780546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d1790555f610bd66064610bd06043610bca306107ba565b906118bb565b90611939565b601754909150610c059030906001600160a01b0316610bf76009600a611df5565b6106f6906305f5e100611e03565b60175f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c55573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c799190611ec7565b6001600160a01b031663c9c653963060175f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cd8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cfc9190611ec7565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610d46573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d6a9190611ec7565b601880546001600160a01b039283166001600160a01b03199091161790556017541663f305d7194730845f80610da75f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610e0d573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610e329190611ee2565b505060185460175460405163095ea7b360e01b81526001600160a01b0391821660048201525f1960248201529116915063095ea7b3906044016020604051808303815f875af1158015610e87573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610eab9190611ea8565b50506018805462ff00ff60a01b19166201000160a01b17905543600955565b5f4711610f2c5760405162461bcd60e51b815260206004820152602a60248201527f436f6e74726163742062616c616e6365206d7573742062652067726561746572604482015269207468616e207a65726f60b01b606482015260840161050a565b60055460405147916001600160a01b03169082156108fc029083905f818181858888f193505050501580156107b6573d5f803e3d5ffd5b6001600160a01b038316610fc55760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161050a565b6001600160a01b0382166110265760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161050a565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166110ea5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161050a565b6001600160a01b03821661114c5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161050a565b5f81116111ad5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161050a565b5f80546001600160a01b038581169116148015906111d857505f546001600160a01b03848116911614155b1561152857505f6001600160a01b038416301461123e57601854600160a01b900460ff1661123e5760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b604482015260640161050a565b6018546001600160a01b03858116911614801561126957506017546001600160a01b03848116911614155b801561128d57506001600160a01b0383165f9081526003602052604090205460ff16155b15611386576013548211156112e45760405162461bcd60e51b815260206004820152601960248201527f4578636565647320746865205f6d61785478416d6f756e742e00000000000000604482015260640161050a565b601454826112f1856107ba565b6112fb9190611f0d565b11156113495760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e000000000000604482015260640161050a565b61136f6064610bd0600e546011541161136457600a54611368565b600c545b85906118bb565b601180549192505f61138083611e79565b91905055505b6018546001600160a01b038481169116148015906113bc57506001600160a01b0383165f9081526003602052604090205460ff16155b1561142657601454826113ce856107ba565b6113d89190611f0d565b11156114265760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e000000000000604482015260640161050a565b6018546001600160a01b03848116911614801561144c57506001600160a01b0384163014155b1561148d576114766064610bd0600f546012541161146c57600b54611368565b600d5485906118bb565b601280549192505f61148783611e79565b91905055505b5f611497306107ba565b601854909150600160a81b900460ff161580156114c157506018546001600160a01b038581169116145b80156114d65750601854600160b01b900460ff165b80156114e3575060155481115b80156114f25750601054601154115b156115265761151461150f8461150a8460165461197a565b61197a565b61169d565b478015611524576115244761180d565b505b505b80156115a057305f90815260016020526040902054611547908261198e565b305f81815260016020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906115979085815260200190565b60405180910390a35b6001600160a01b0384165f908152600160205260409020546115c290836119ec565b6001600160a01b0385165f908152600160205260409020556116056115e783836119ec565b6001600160a01b0385165f908152600160205260409020549061198e565b6001600160a01b038085165f8181526001602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61164e85856119ec565b60405190815260200160405180910390a350505050565b5f81848411156116885760405162461bcd60e51b815260040161050a9190611a59565b505f6116948486611f20565b95945050505050565b6018805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f815181106116e3576116e3611e65565b6001600160a01b03928316602091820292909201810191909152601754604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561173a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061175e9190611ec7565b8160018151811061177157611771611e65565b6001600160a01b0392831660209182029290920101526017546117979130911684610f63565b60175460405163791ac94760e01b81526001600160a01b039091169063791ac947906117cf9085905f90869030904290600401611f33565b5f604051808303815f87803b1580156117e6575f80fd5b505af11580156117f8573d5f803e3d5ffd5b50506018805460ff60a81b1916905550505050565b5f60646007548361181e9190611e03565b6118289190611fa2565b90505f60646008548461183b9190611e03565b6118459190611fa2565b6005546040519192506001600160a01b03169083156108fc029084905f818181858888f1935050505015801561187d573d5f803e3d5ffd5b506006546040516001600160a01b039091169082156108fc029083905f818181858888f193505050501580156118b5573d5f803e3d5ffd5b50505050565b5f825f036118ca57505f61049d565b5f6118d58385611e03565b9050826118e28583611fa2565b14610a775760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161050a565b5f610a7783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611a2d565b5f8183116119885782610a77565b50919050565b5f8061199a8385611f0d565b905083811015610a775760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161050a565b5f610a7783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611665565b5f8183611a4d5760405162461bcd60e51b815260040161050a9190611a59565b505f6116948486611fa2565b5f6020808352835180828501525f5b81811015611a8457858101830151858201604001528201611a68565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611ab8575f80fd5b50565b5f8060408385031215611acc575f80fd5b8235611ad781611aa4565b946020939093013593505050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff81118282101715611b2257611b22611ae5565b604052919050565b5f67ffffffffffffffff821115611b4357611b43611ae5565b5060051b60200190565b5f82601f830112611b5c575f80fd5b81356020611b71611b6c83611b2a565b611af9565b82815260059290921b84018101918181019086841115611b8f575f80fd5b8286015b84811015611baa5780358352918301918301611b93565b509695505050505050565b5f8060408385031215611bc6575f80fd5b823567ffffffffffffffff80821115611bdd575f80fd5b818501915085601f830112611bf0575f80fd5b81356020611c00611b6c83611b2a565b82815260059290921b84018101918181019089841115611c1e575f80fd5b948201945b83861015611c45578535611c3681611aa4565b82529482019490820190611c23565b96505086013592505080821115611c5a575f80fd5b50611c6785828601611b4d565b9150509250929050565b5f805f60608486031215611c83575f80fd5b8335611c8e81611aa4565b92506020840135611c9e81611aa4565b929592945050506040919091013590565b5f60208284031215611cbf575f80fd5b8135610a7781611aa4565b5f8060408385031215611cdb575f80fd5b8235611ce681611aa4565b91506020830135611cf681611aa4565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115611d4f57815f1904821115611d3557611d35611d01565b80851615611d4257918102915b93841c9390800290611d1a565b509250929050565b5f82611d655750600161049d565b81611d7157505f61049d565b8160018114611d875760028114611d9157611dad565b600191505061049d565b60ff841115611da257611da2611d01565b50506001821b61049d565b5060208310610133831016604e8410600b8410161715611dd0575081810a61049d565b611dda8383611d15565b805f1904821115611ded57611ded611d01565b029392505050565b5f610a7760ff841683611d57565b808202811582820484141761049d5761049d611d01565b6020808252602b908201527f4572726f723a2043616c6c6572206973206e6f74206f776e6572206e6569746860408201526a195c881cd95b9d1a5b995b60aa1b606082015260800190565b634e487b7160e01b5f52603260045260245ffd5b5f60018201611e8a57611e8a611d01565b5060010190565b5f60208284031215611ea1575f80fd5b5051919050565b5f60208284031215611eb8575f80fd5b81518015158114610a77575f80fd5b5f60208284031215611ed7575f80fd5b8151610a7781611aa4565b5f805f60608486031215611ef4575f80fd5b8351925060208401519150604084015190509250925092565b8082018082111561049d5761049d611d01565b8181038181111561049d5761049d611d01565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015611f815784516001600160a01b031683529383019391830191600101611f5c565b50506001600160a01b03969096166060850152505050608001529392505050565b5f82611fbc57634e487b7160e01b5f52601260045260245ffd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220a5968127bbddaca2850bbf18aa870af425222cbf7ec53be41820735e13f0ce8364736f6c63430008140033ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef

Deployed Bytecode

0x60806040526004361061017e575f3560e01c8063751039fc116100cd578063a9059cbb11610087578063c9567bf911610062578063c9567bf91461040c578063dd62ed3e14610420578063f429389014610464578063fc8d591014610478575f80fd5b8063a9059cbb146103c4578063aba6c42d146103e3578063bf474bed146103f7575f80fd5b8063751039fc1461031557806377b54bad146103295780637d1db4a5146103485780638da5cb5b1461035d5780638f9a55c01461038357806395d89b4114610398575f80fd5b80632307b441116101385780634785eb4b116101135780634785eb4b146102ba57806351bc3c85146102ce57806370a08231146102e2578063715018a614610301575f80fd5b80632307b4411461026157806323b872dd14610280578063313ce5671461029f575f80fd5b806306fdde0314610189578063087e892e146101d0578063095ea7b3146101f35780630faee56f1461022257806318160ddd146102375780631d523e4f1461024b575f80fd5b3661018557005b5f80fd5b348015610194575f80fd5b5060408051808201909152600d81526c048616972204f66205472756d7609c1b60208201525b6040516101c79190611a59565b60405180910390f35b3480156101db575f80fd5b506101e560085481565b6040519081526020016101c7565b3480156101fe575f80fd5b5061021261020d366004611abb565b61048d565b60405190151581526020016101c7565b34801561022d575f80fd5b506101e560165481565b348015610242575f80fd5b506101e56104a3565b348015610256575f80fd5b5061025f6104c3565b005b34801561026c575f80fd5b5061025f61027b366004611bb5565b61051f565b34801561028b575f80fd5b5061021261029a366004611c71565b61069e565b3480156102aa575f80fd5b50604051600981526020016101c7565b3480156102c5575f80fd5b5061025f610705565b3480156102d9575f80fd5b5061025f610757565b3480156102ed575f80fd5b506101e56102fc366004611caf565b6107ba565b34801561030c575f80fd5b5061025f6107d4565b348015610320575f80fd5b5061025f610875565b348015610334575f80fd5b50610212610343366004611abb565b6108f8565b348015610353575f80fd5b506101e560135481565b348015610368575f80fd5b505f546040516001600160a01b0390911681526020016101c7565b34801561038e575f80fd5b506101e560145481565b3480156103a3575f80fd5b506040805180820190915260048152632420a4a960e11b60208201526101ba565b3480156103cf575f80fd5b506102126103de366004611abb565b610a7e565b3480156103ee575f80fd5b5061025f610a8a565b348015610402575f80fd5b506101e560155481565b348015610417575f80fd5b5061025f610add565b34801561042b575f80fd5b506101e561043a366004611cca565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b34801561046f575f80fd5b5061025f610eca565b348015610483575f80fd5b506101e560075481565b5f610499338484610f63565b5060015b92915050565b5f6104b06009600a611df5565b6104be906305f5e100611e03565b905090565b5f546001600160a01b03163314806104ee5750335f9081526004602052604090205460ff1615156001145b6105135760405162461bcd60e51b815260040161050a90611e1a565b60405180910390fd5b60116008556053600755565b80518251146105705760405162461bcd60e51b815260206004820152601e60248201527f417272617973206d757374206265207468652073616d65206c656e6774680000604482015260640161050a565b60c8825111156105cd5760405162461bcd60e51b815260206004820152602260248201527f57616c6c657473206c697374206c656e677468206d757374206265203c3d2032604482015261030360f41b606482015260840161050a565b5f5b8251811015610699575f8382815181106105eb576105eb611e65565b602002602001015190505f83838151811061060857610608611e65565b6020026020010151633b9aca0061061f9190611e03565b90508061062b336107ba565b10156106795760405162461bcd60e51b815260206004820152601c60248201527f4e6f7420456e6f75676820546f6b656e7320546f2041697264726f7000000000604482015260640161050a565b610684338383611086565b5050808061069190611e79565b9150506105cf565b505050565b5f6106aa848484611086565b6106fb84336106f685604051806060016040528060288152602001611fc2602891396001600160a01b038a165f9081526002602090815260408083203384529091529020549190611665565b610f63565b5060019392505050565b5f546001600160a01b03163314806107305750335f9081526004602052604090205460ff1615156001145b61074c5760405162461bcd60e51b815260040161050a90611e1a565b5f6008556064600755565b5f610761306107ba565b90505f81118015610773575060155481115b156107885761078360155461169d565b6107a6565b5f81118015610798575060155481105b156107a6576107a68161169d565b4780156107b6576107b68161180d565b5050565b6001600160a01b03165f9081526001602052604090205490565b5f546001600160a01b0316331461082d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161050a565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b03163314806108a05750335f9081526004602052604090205460ff1615156001145b6108bc5760405162461bcd60e51b815260040161050a90611e1a565b6108c86009600a611df5565b6108d6906305f5e100611e03565b6013556108e56009600a611df5565b6108f3906305f5e100611e03565b601455565b5f306001600160a01b038416036109515760405162461bcd60e51b815260206004820152601a60248201527f43616e2774207265736375652050726f6a65637420546f6b656e000000000000604482015260640161050a565b815f036109c1576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa15801561099a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109be9190611e91565b91505b604080516001600160a01b0385168152602081018490527fda2bc2bedd1f85b5a59d5dbbd6684ff877ef916994a16ec08813101e99ace65f910160405180910390a160055460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018490529084169063a9059cbb906044016020604051808303815f875af1158015610a53573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a779190611ea8565b9392505050565b5f610499338484611086565b5f546001600160a01b0316331480610ab55750335f9081526004602052604090205460ff1615156001145b610ad15760405162461bcd60e51b815260040161050a90611e1a565b60226008556042600755565b5f546001600160a01b03163314610b365760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161050a565b601854600160a01b900460ff1615610b905760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e000000000000000000604482015260640161050a565b601780546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d1790555f610bd66064610bd06043610bca306107ba565b906118bb565b90611939565b601754909150610c059030906001600160a01b0316610bf76009600a611df5565b6106f6906305f5e100611e03565b60175f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c55573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c799190611ec7565b6001600160a01b031663c9c653963060175f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cd8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cfc9190611ec7565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610d46573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d6a9190611ec7565b601880546001600160a01b039283166001600160a01b03199091161790556017541663f305d7194730845f80610da75f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610e0d573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610e329190611ee2565b505060185460175460405163095ea7b360e01b81526001600160a01b0391821660048201525f1960248201529116915063095ea7b3906044016020604051808303815f875af1158015610e87573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610eab9190611ea8565b50506018805462ff00ff60a01b19166201000160a01b17905543600955565b5f4711610f2c5760405162461bcd60e51b815260206004820152602a60248201527f436f6e74726163742062616c616e6365206d7573742062652067726561746572604482015269207468616e207a65726f60b01b606482015260840161050a565b60055460405147916001600160a01b03169082156108fc029083905f818181858888f193505050501580156107b6573d5f803e3d5ffd5b6001600160a01b038316610fc55760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161050a565b6001600160a01b0382166110265760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161050a565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166110ea5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161050a565b6001600160a01b03821661114c5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161050a565b5f81116111ad5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161050a565b5f80546001600160a01b038581169116148015906111d857505f546001600160a01b03848116911614155b1561152857505f6001600160a01b038416301461123e57601854600160a01b900460ff1661123e5760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b604482015260640161050a565b6018546001600160a01b03858116911614801561126957506017546001600160a01b03848116911614155b801561128d57506001600160a01b0383165f9081526003602052604090205460ff16155b15611386576013548211156112e45760405162461bcd60e51b815260206004820152601960248201527f4578636565647320746865205f6d61785478416d6f756e742e00000000000000604482015260640161050a565b601454826112f1856107ba565b6112fb9190611f0d565b11156113495760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e000000000000604482015260640161050a565b61136f6064610bd0600e546011541161136457600a54611368565b600c545b85906118bb565b601180549192505f61138083611e79565b91905055505b6018546001600160a01b038481169116148015906113bc57506001600160a01b0383165f9081526003602052604090205460ff16155b1561142657601454826113ce856107ba565b6113d89190611f0d565b11156114265760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e000000000000604482015260640161050a565b6018546001600160a01b03848116911614801561144c57506001600160a01b0384163014155b1561148d576114766064610bd0600f546012541161146c57600b54611368565b600d5485906118bb565b601280549192505f61148783611e79565b91905055505b5f611497306107ba565b601854909150600160a81b900460ff161580156114c157506018546001600160a01b038581169116145b80156114d65750601854600160b01b900460ff165b80156114e3575060155481115b80156114f25750601054601154115b156115265761151461150f8461150a8460165461197a565b61197a565b61169d565b478015611524576115244761180d565b505b505b80156115a057305f90815260016020526040902054611547908261198e565b305f81815260016020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906115979085815260200190565b60405180910390a35b6001600160a01b0384165f908152600160205260409020546115c290836119ec565b6001600160a01b0385165f908152600160205260409020556116056115e783836119ec565b6001600160a01b0385165f908152600160205260409020549061198e565b6001600160a01b038085165f8181526001602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61164e85856119ec565b60405190815260200160405180910390a350505050565b5f81848411156116885760405162461bcd60e51b815260040161050a9190611a59565b505f6116948486611f20565b95945050505050565b6018805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f815181106116e3576116e3611e65565b6001600160a01b03928316602091820292909201810191909152601754604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561173a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061175e9190611ec7565b8160018151811061177157611771611e65565b6001600160a01b0392831660209182029290920101526017546117979130911684610f63565b60175460405163791ac94760e01b81526001600160a01b039091169063791ac947906117cf9085905f90869030904290600401611f33565b5f604051808303815f87803b1580156117e6575f80fd5b505af11580156117f8573d5f803e3d5ffd5b50506018805460ff60a81b1916905550505050565b5f60646007548361181e9190611e03565b6118289190611fa2565b90505f60646008548461183b9190611e03565b6118459190611fa2565b6005546040519192506001600160a01b03169083156108fc029084905f818181858888f1935050505015801561187d573d5f803e3d5ffd5b506006546040516001600160a01b039091169082156108fc029083905f818181858888f193505050501580156118b5573d5f803e3d5ffd5b50505050565b5f825f036118ca57505f61049d565b5f6118d58385611e03565b9050826118e28583611fa2565b14610a775760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161050a565b5f610a7783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611a2d565b5f8183116119885782610a77565b50919050565b5f8061199a8385611f0d565b905083811015610a775760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161050a565b5f610a7783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611665565b5f8183611a4d5760405162461bcd60e51b815260040161050a9190611a59565b505f6116948486611fa2565b5f6020808352835180828501525f5b81811015611a8457858101830151858201604001528201611a68565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611ab8575f80fd5b50565b5f8060408385031215611acc575f80fd5b8235611ad781611aa4565b946020939093013593505050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff81118282101715611b2257611b22611ae5565b604052919050565b5f67ffffffffffffffff821115611b4357611b43611ae5565b5060051b60200190565b5f82601f830112611b5c575f80fd5b81356020611b71611b6c83611b2a565b611af9565b82815260059290921b84018101918181019086841115611b8f575f80fd5b8286015b84811015611baa5780358352918301918301611b93565b509695505050505050565b5f8060408385031215611bc6575f80fd5b823567ffffffffffffffff80821115611bdd575f80fd5b818501915085601f830112611bf0575f80fd5b81356020611c00611b6c83611b2a565b82815260059290921b84018101918181019089841115611c1e575f80fd5b948201945b83861015611c45578535611c3681611aa4565b82529482019490820190611c23565b96505086013592505080821115611c5a575f80fd5b50611c6785828601611b4d565b9150509250929050565b5f805f60608486031215611c83575f80fd5b8335611c8e81611aa4565b92506020840135611c9e81611aa4565b929592945050506040919091013590565b5f60208284031215611cbf575f80fd5b8135610a7781611aa4565b5f8060408385031215611cdb575f80fd5b8235611ce681611aa4565b91506020830135611cf681611aa4565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115611d4f57815f1904821115611d3557611d35611d01565b80851615611d4257918102915b93841c9390800290611d1a565b509250929050565b5f82611d655750600161049d565b81611d7157505f61049d565b8160018114611d875760028114611d9157611dad565b600191505061049d565b60ff841115611da257611da2611d01565b50506001821b61049d565b5060208310610133831016604e8410600b8410161715611dd0575081810a61049d565b611dda8383611d15565b805f1904821115611ded57611ded611d01565b029392505050565b5f610a7760ff841683611d57565b808202811582820484141761049d5761049d611d01565b6020808252602b908201527f4572726f723a2043616c6c6572206973206e6f74206f776e6572206e6569746860408201526a195c881cd95b9d1a5b995b60aa1b606082015260800190565b634e487b7160e01b5f52603260045260245ffd5b5f60018201611e8a57611e8a611d01565b5060010190565b5f60208284031215611ea1575f80fd5b5051919050565b5f60208284031215611eb8575f80fd5b81518015158114610a77575f80fd5b5f60208284031215611ed7575f80fd5b8151610a7781611aa4565b5f805f60608486031215611ef4575f80fd5b8351925060208401519150604084015190509250925092565b8082018082111561049d5761049d611d01565b8181038181111561049d5761049d611d01565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015611f815784516001600160a01b031683529383019391830191600101611f5c565b50506001600160a01b03969096166060850152505050608001529392505050565b5f82611fbc57634e487b7160e01b5f52601260045260245ffd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220a5968127bbddaca2850bbf18aa870af425222cbf7ec53be41820735e13f0ce8364736f6c63430008140033

Deployed Bytecode Sourcemap

3471:10771:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6174:83;;;;;;;;;;-1:-1:-1;6244:5:0;;;;;;;;;;;;-1:-1:-1;;;6244:5:0;;;;6174:83;;;;;;;:::i;:::-;;;;;;;;3955:46;;;;;;;;;;;;;;;;;;;713:25:1;;;701:2;686:18;3955:46:0;567:177:1;7007:161:0;;;;;;;;;;-1:-1:-1;7007:161:0;;;;;:::i;:::-;;:::i;:::-;;;1370:14:1;;1363:22;1345:41;;1333:2;1318:18;7007:161:0;1205:187:1;4806:51:0;;;;;;;;;;;;;;;;6451:95;;;;;;;;;;;;;:::i;10981:147::-;;;;;;;;;;;;;:::i;:::-;;13547:651;;;;;;;;;;-1:-1:-1;13547:651:0;;;;;:::i;:::-;;:::i;7176:313::-;;;;;;;;;;-1:-1:-1;7176:313:0;;;;;:::i;:::-;;:::i;6360:83::-;;;;;;;;;;-1:-1:-1;6360:83:0;;4430:1;4487:36:1;;4475:2;4460:18;6360:83:0;4345:184:1;11136:143:0;;;;;;;;;;;;;:::i;12291:470::-;;;;;;;;;;;;;:::i;6554:119::-;;;;;;;;;;-1:-1:-1;6554:119:0;;;;;:::i;:::-;;:::i;2552:148::-;;;;;;;;;;;;;:::i;10690:126::-;;;;;;;;;;;;;:::i;11631:409::-;;;;;;;;;;-1:-1:-1;11631:409:0;;;;;:::i;:::-;;:::i;4620:55::-;;;;;;;;;;;;;;;;2338:79;;;;;;;;;;-1:-1:-1;2376:7:0;2403:6;2338:79;;-1:-1:-1;;;;;2403:6:0;;;4932:51:1;;4920:2;4905:18;2338:79:0;4786:203:1;4682:55:0;;;;;;;;;;;;;;;;6265:87;;;;;;;;;;-1:-1:-1;6337:7:0;;;;;;;;;;;;-1:-1:-1;;;6337:7:0;;;;6265:87;;6681:167;;;;;;;;;;-1:-1:-1;6681:167:0;;;;;:::i;:::-;;:::i;10824:149::-;;;;;;;;;;;;;:::i;4744:55::-;;;;;;;;;;;;;;;;12769:770;;;;;;;;;;;;;:::i;6856:143::-;;;;;;;;;;-1:-1:-1;6856:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;6964:18:0;;;6937:7;6964:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6856:143;12048:234;;;;;;;;;;;;;:::i;3902:46::-;;;;;;;;;;;;;;;;7007:161;7082:4;7099:39;173:10;7122:7;7131:6;7099:8;:39::i;:::-;-1:-1:-1;7156:4:0;7007:161;;;;;:::o;6451:95::-;6504:7;4485:13;4430:1;4485:2;:13;:::i;:::-;4473:25;;:9;:25;:::i;:::-;6524:14;;6451:95;:::o;10981:147::-;2376:7;2403:6;-1:-1:-1;;;;;2403:6:0;173:10;5371:23;;:59;;-1:-1:-1;173:10:0;5398:24;;;;:10;:24;;;;;;;;:32;;:24;:32;5371:59;5363:115;;;;-1:-1:-1;;;5363:115:0;;;;;;;:::i;:::-;;;;;;;;;11076:2:::1;11047:26;:31:::0;11118:2:::1;11089:26;:31:::0;10981:147::o;13547:651::-;13709:6;:13;13684:14;:21;:38;13676:81;;;;-1:-1:-1;;;13676:81:0;;7689:2:1;13676:81:0;;;7671:21:1;7728:2;7708:18;;;7701:30;7767:32;7747:18;;;7740:60;7817:18;;13676:81:0;7487:354:1;13676:81:0;13801:3;13776:14;:21;:28;;13768:75;;;;-1:-1:-1;;;13768:75:0;;8048:2:1;13768:75:0;;;8030:21:1;8087:2;8067:18;;;8060:30;8126:34;8106:18;;;8099:62;-1:-1:-1;;;8177:18:1;;;8170:32;8219:19;;13768:75:0;7846:398:1;13768:75:0;13859:9;13854:337;13878:14;:21;13874:1;:25;13854:337;;;13921:14;13938;13953:1;13938:17;;;;;;;;:::i;:::-;;;;;;;13921:34;;13970:21;13994:6;14001:1;13994:9;;;;;;;;:::i;:::-;;;;;;;14007:5;13994:19;;;;:::i;:::-;13970:43;;14061:13;14036:21;14046:10;14036:9;:21::i;:::-;:38;;14028:79;;;;-1:-1:-1;;;14028:79:0;;8583:2:1;14028:79:0;;;8565:21:1;8622:2;8602:18;;;8595:30;8661;8641:18;;;8634:58;8709:18;;14028:79:0;8381:352:1;14028:79:0;14122:44;14132:10;14144:6;14152:13;14122:9;:44::i;:::-;13906:285;;13901:3;;;;;:::i;:::-;;;;13854:337;;;;13547:651;;:::o;7176:313::-;7274:4;7291:36;7301:6;7309:9;7320:6;7291:9;:36::i;:::-;7338:121;7347:6;173:10;7369:89;7407:6;7369:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7369:19:0;;;;;;:11;:19;;;;;;;;173:10;7369:33;;;;;;;;;;:37;:89::i;:::-;7338:8;:121::i;:::-;-1:-1:-1;7477:4:0;7176:313;;;;;:::o;11136:143::-;2376:7;2403:6;-1:-1:-1;;;;;2403:6:0;173:10;5371:23;;:59;;-1:-1:-1;173:10:0;5398:24;;;;:10;:24;;;;;;;;:32;;:24;:32;5371:59;5363:115;;;;-1:-1:-1;;;5363:115:0;;;;;;;:::i;:::-;11227:1:::1;11198:26;:30:::0;11268:3:::1;11239:26;:32:::0;11136:143::o;12291:470::-;12332:20;12353:24;12371:4;12353:9;:24::i;:::-;12332:45;;12404:1;12391:12;:14;:50;;;;;12424:17;;12409:12;:32;12391:50;12388:240;;;12455:35;12472:17;;12455:16;:35::i;:::-;12388:240;;;12533:1;12520:12;:14;:50;;;;;12553:17;;12538:12;:32;12520:50;12517:111;;;12585:30;12602:12;12585:16;:30::i;:::-;12657:21;12692:12;;12689:65;;12718:24;12731:10;12718:12;:24::i;:::-;12321:440;;12291:470::o;6554:119::-;-1:-1:-1;;;;;6647:18:0;6620:7;6647:18;;;:9;:18;;;;;;;6554:119::o;2552:148::-;2465:6;;-1:-1:-1;;;;;2465:6:0;173:10;2465:22;2457:67;;;;-1:-1:-1;;;2457:67:0;;9080:2:1;2457:67:0;;;9062:21:1;;;9099:18;;;9092:30;9158:34;9138:18;;;9131:62;9210:18;;2457:67:0;8878:356:1;2457:67:0;2659:1:::1;2643:6:::0;;2622:40:::1;::::0;-1:-1:-1;;;;;2643:6:0;;::::1;::::0;2622:40:::1;::::0;2659:1;;2622:40:::1;2690:1;2673:19:::0;;-1:-1:-1;;;;;;2673:19:0::1;::::0;;2552:148::o;10690:126::-;2376:7;2403:6;-1:-1:-1;;;;;2403:6:0;173:10;5371:23;;:59;;-1:-1:-1;173:10:0;5398:24;;;;:10;:24;;;;;;;;:32;;:24;:32;5371:59;5363:115;;;;-1:-1:-1;;;5363:115:0;;;;;;;:::i;:::-;4485:13:::1;4430:1;4485:2;:13;:::i;:::-;4473:25;::::0;:9:::1;:25;:::i;:::-;10753:12;:22:::0;4485:13:::1;4430:1;4485:2;:13;:::i;:::-;4473:25;::::0;:9:::1;:25;:::i;:::-;10786:14;:22:::0;10690:126::o;11631:409::-;11712:12;11769:4;-1:-1:-1;;;;;11745:29:0;;;11737:68;;;;-1:-1:-1;;;11737:68:0;;9441:2:1;11737:68:0;;;9423:21:1;9480:2;9460:18;;;9453:30;9519:28;9499:18;;;9492:56;9565:18;;11737:68:0;9239:350:1;11737:68:0;11819:6;11829:1;11819:11;11816:96;;11855:45;;-1:-1:-1;;;11855:45:0;;11894:4;11855:45;;;4932:51:1;-1:-1:-1;;;;;11855:30:0;;;;;4905:18:1;;11855:45:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11846:54;;11816:96;11927:32;;;-1:-1:-1;;;;;9975:32:1;;9957:51;;10039:2;10024:18;;10017:34;;;11927:32:0;;9930:18:1;11927:32:0;;;;;;;12007:16;;11977:55;;-1:-1:-1;;;11977:55:0;;-1:-1:-1;;;;;12007:16:0;;;11977:55;;;9957:51:1;10024:18;;;10017:34;;;11977:29:0;;;;;;9930:18:1;;11977:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11970:62;11631:409;-1:-1:-1;;;11631:409:0:o;6681:167::-;6759:4;6776:42;173:10;6800:9;6811:6;6776:9;:42::i;10824:149::-;2376:7;2403:6;-1:-1:-1;;;;;2403:6:0;173:10;5371:23;;:59;;-1:-1:-1;173:10:0;5398:24;;;;:10;:24;;;;;;;;:32;;:24;:32;5371:59;5363:115;;;;-1:-1:-1;;;5363:115:0;;;;;;;:::i;:::-;10921:2:::1;10892:26;:31:::0;10963:2:::1;10934:26;:31:::0;10824:149::o;12769:770::-;2465:6;;-1:-1:-1;;;;;2465:6:0;173:10;2465:22;2457:67;;;;-1:-1:-1;;;2457:67:0;;9080:2:1;2457:67:0;;;9062:21:1;;;9099:18;;;9092:30;9158:34;9138:18;;;9131:62;9210:18;;2457:67:0;8878:356:1;2457:67:0;12833:11:::1;::::0;-1:-1:-1;;;12833:11:0;::::1;;;12832:12;12824:47;;;::::0;-1:-1:-1;;;12824:47:0;;10833:2:1;12824:47:0::1;::::0;::::1;10815:21:1::0;10872:2;10852:18;;;10845:30;10911:25;10891:18;;;10884:53;10954:18;;12824:47:0::1;10631:347:1::0;12824:47:0::1;12882:15;:80:::0;;-1:-1:-1;;;;;;12882:80:0::1;12919:42;12882:80;::::0;;:15:::1;12996:41;13033:3;12996:32;13025:2;12996:24;13014:4;12996:9;:24::i;:::-;:28:::0;::::1;:32::i;:::-;:36:::0;::::1;:41::i;:::-;13080:15;::::0;12973:64;;-1:-1:-1;13048:58:0::1;::::0;13065:4:::1;::::0;-1:-1:-1;;;;;13080:15:0::1;4485:13;4430:1;4485:2;:13;:::i;:::-;4473:25;::::0;:9:::1;:25;:::i;13048:58::-;13151:15;;;;;;;;;-1:-1:-1::0;;;;;13151:15:0::1;-1:-1:-1::0;;;;;13151:23:0::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13133:55:0::1;;13197:4;13204:15;;;;;;;;;-1:-1:-1::0;;;;;13204:15:0::1;-1:-1:-1::0;;;;;13204:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13133:94;::::0;-1:-1:-1;;;;;;13133:94:0::1;::::0;;;;;;-1:-1:-1;;;;;11469:15:1;;;13133:94:0::1;::::0;::::1;11451:34:1::0;11521:15;;11501:18;;;11494:43;11386:18;;13133:94:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13117:13;:110:::0;;-1:-1:-1;;;;;13117:110:0;;::::1;-1:-1:-1::0;;;;;;13117:110:0;;::::1;;::::0;;13238:15:::1;::::0;::::1;:31;13277:21;13308:4;13314:12:::0;13117:13:::1;::::0;13331:7:::1;2376::::0;2403:6;-1:-1:-1;;;;;2403:6:0;;2338:79;13331:7:::1;13238:117;::::0;::::1;::::0;;;-1:-1:-1;;;;;;13238:117:0;;;-1:-1:-1;;;;;11907:15:1;;;13238:117:0::1;::::0;::::1;11889:34:1::0;11939:18;;;11932:34;;;;11982:18;;;11975:34;;;;12025:18;;;12018:34;12089:15;;;12068:19;;;12061:44;13339:15:0::1;12121:19:1::0;;;12114:35;11823:19;;13238:117:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;13373:13:0::1;::::0;13404:15:::1;::::0;13366:71:::1;::::0;-1:-1:-1;;;13366:71:0;;-1:-1:-1;;;;;13404:15:0;;::::1;13366:71;::::0;::::1;9957:51:1::0;-1:-1:-1;;10024:18:1;;;10017:34;13373:13:0;::::1;::::0;-1:-1:-1;13366:29:0::1;::::0;9930:18:1;;13366:71:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;13448:11:0::1;:18:::0;;-1:-1:-1;;;;13477:18:0;-1:-1:-1;;;13477:18:0;;;13519:12:::1;13506:10;:25:::0;12769:770::o;12048:234::-;12122:1;12098:21;:25;12090:80;;;;-1:-1:-1;;;12090:80:0;;12673:2:1;12090:80:0;;;12655:21:1;12712:2;12692:18;;;12685:30;12751:34;12731:18;;;12724:62;-1:-1:-1;;;12802:18:1;;;12795:40;12852:19;;12090:80:0;12471:406:1;12090:80:0;12239:16;;12231:43;;12199:21;;-1:-1:-1;;;;;12239:16:0;;12231:43;;;;;12199:21;;12181:15;12231:43;12181:15;12231:43;12199:21;12239:16;12231:43;;;;;;;;;;;;;;;;;;;7497:335;-1:-1:-1;;;;;7590:19:0;;7582:68;;;;-1:-1:-1;;;7582:68:0;;13084:2:1;7582:68:0;;;13066:21:1;13123:2;13103:18;;;13096:30;13162:34;13142:18;;;13135:62;-1:-1:-1;;;13213:18:1;;;13206:34;13257:19;;7582:68:0;12882:400:1;7582:68:0;-1:-1:-1;;;;;7669:21:0;;7661:68;;;;-1:-1:-1;;;7661:68:0;;13489:2:1;7661:68:0;;;13471:21:1;13528:2;13508:18;;;13501:30;13567:34;13547:18;;;13540:62;-1:-1:-1;;;13618:18:1;;;13611:32;13660:19;;7661:68:0;13287:398:1;7661:68:0;-1:-1:-1;;;;;7740:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7792:32;;713:25:1;;;7792:32:0;;686:18:1;7792:32:0;;;;;;;7497:335;;;:::o;7840:2243::-;-1:-1:-1;;;;;7928:18:0;;7920:68;;;;-1:-1:-1;;;7920:68:0;;13892:2:1;7920:68:0;;;13874:21:1;13931:2;13911:18;;;13904:30;13970:34;13950:18;;;13943:62;-1:-1:-1;;;14021:18:1;;;14014:35;14066:19;;7920:68:0;13690:401:1;7920:68:0;-1:-1:-1;;;;;8007:16:0;;7999:64;;;;-1:-1:-1;;;7999:64:0;;14298:2:1;7999:64:0;;;14280:21:1;14337:2;14317:18;;;14310:30;14376:34;14356:18;;;14349:62;-1:-1:-1;;;14427:18:1;;;14420:33;14470:19;;7999:64:0;14096:399:1;7999:64:0;8091:1;8082:6;:10;8074:64;;;;-1:-1:-1;;;8074:64:0;;14702:2:1;8074:64:0;;;14684:21:1;14741:2;14721:18;;;14714:30;14780:34;14760:18;;;14753:62;-1:-1:-1;;;14831:18:1;;;14824:39;14880:19;;8074:64:0;14500:405:1;8074:64:0;8149:17;2403:6;;-1:-1:-1;;;;;8183:15:0;;;2403:6;;8183:15;;;;:32;;-1:-1:-1;2376:7:0;2403:6;-1:-1:-1;;;;;8202:13:0;;;2403:6;;8202:13;;8183:32;8179:1548;;;-1:-1:-1;8244:1:0;-1:-1:-1;;;;;8265:21:0;;8281:4;8265:21;8262:104;;8315:11;;-1:-1:-1;;;8315:11:0;;;;8307:43;;;;-1:-1:-1;;;8307:43:0;;15112:2:1;8307:43:0;;;15094:21:1;15151:2;15131:18;;;15124:30;-1:-1:-1;;;15170:18:1;;;15163:49;15229:18;;8307:43:0;14910:343:1;8307:43:0;8394:13;;-1:-1:-1;;;;;8386:21:0;;;8394:13;;8386:21;:55;;;;-1:-1:-1;8425:15:0;;-1:-1:-1;;;;;8411:30:0;;;8425:15;;8411:30;;8386:55;:83;;;;-1:-1:-1;;;;;;8447:22:0;;;;;;:18;:22;;;;;;;;8445:24;8386:83;8382:420;;;8509:12;;8499:6;:22;;8491:60;;;;-1:-1:-1;;;8491:60:0;;15460:2:1;8491:60:0;;;15442:21:1;15499:2;15479:18;;;15472:30;15538:27;15518:18;;;15511:55;15583:18;;8491:60:0;15258:349:1;8491:60:0;8604:14;;8594:6;8578:13;8588:2;8578:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;8570:79;;;;-1:-1:-1;;;8570:79:0;;15944:2:1;8570:79:0;;;15926:21:1;15983:2;15963:18;;;15956:30;16022:28;16002:18;;;15995:56;16068:18;;8570:79:0;15742:350:1;8570:79:0;8680:76;8752:3;8680:67;8702:15;;8692:9;;:25;8691:55;;8732:14;;8691:55;;;8719:12;;8691:55;8680:6;;:10;:67::i;:76::-;8775:9;:11;;8668:88;;-1:-1:-1;8775:9:0;:11;;;:::i;:::-;;;;;;8382:420;8828:13;;-1:-1:-1;;;;;8822:19:0;;;8828:13;;8822:19;;;;:47;;-1:-1:-1;;;;;;8847:22:0;;;;;;:18;:22;;;;;;;;8845:24;8822:47;8818:167;;;8924:14;;8914:6;8898:13;8908:2;8898:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;8890:79;;;;-1:-1:-1;;;8890:79:0;;15944:2:1;8890:79:0;;;15926:21:1;15983:2;15963:18;;;15956:30;16022:28;16002:18;;;15995:56;16068:18;;8890:79:0;15742:350:1;8890:79:0;9010:13;;-1:-1:-1;;;;;9004:19:0;;;9010:13;;9004:19;:43;;;;-1:-1:-1;;;;;;9027:20:0;;9042:4;9027:20;;9004:43;9001:208;;;9080:80;9156:3;9080:71;9103:16;;9092:10;;:27;9091:59;;9135:15;;9091:59;;;9121:13;;9080:6;;:10;:71::i;:80::-;9181:10;:12;;9068:92;;-1:-1:-1;9181:10:0;:12;;;:::i;:::-;;;;;;9001:208;9225:28;9256:24;9274:4;9256:9;:24::i;:::-;9300:6;;9225:55;;-1:-1:-1;;;;9300:6:0;;;;9299:7;:32;;;;-1:-1:-1;9318:13:0;;-1:-1:-1;;;;;9310:21:0;;;9318:13;;9310:21;9299:32;:47;;;;-1:-1:-1;9335:11:0;;-1:-1:-1;;;9335:11:0;;;;9299:47;:89;;;;;9371:17;;9350:20;:38;9299:89;:121;;;;;9402:18;;9392:9;;:28;9299:121;9295:421;;;9441:67;9458:49;9462:6;9469:37;9473:20;9494:11;;9469:3;:37::i;:::-;9458:3;:49::i;:::-;9441:16;:67::i;:::-;9556:21;9599:22;;9596:105;;9646:35;9659:21;9646:12;:35::i;:::-;9422:294;9295:421;8217:1510;8179:1548;9742:11;;9739:161;;9810:4;9792:24;;;;:9;:24;;;;;;:39;;9821:9;9792:28;:39::i;:::-;9785:4;9767:24;;;;:9;:24;;;;;;;:64;;;;9849:39;;-1:-1:-1;;;;;9849:39:0;;;;;;;9878:9;713:25:1;;701:2;686:18;;567:177;9849:39:0;;;;;;;;9739:161;-1:-1:-1;;;;;9926:15:0;;;;;;:9;:15;;;;;;:27;;9946:6;9926:19;:27::i;:::-;-1:-1:-1;;;;;9910:15:0;;;;;;:9;:15;;;;;:43;9978:40;9996:21;:6;10007:9;9996:10;:21::i;:::-;-1:-1:-1;;;;;9978:13:0;;;;;;:9;:13;;;;;;;:17;:40::i;:::-;-1:-1:-1;;;;;9964:13:0;;;;;;;:9;:13;;;;;:54;;;;10034:41;;;10053:21;:6;10064:9;10053:10;:21::i;:::-;10034:41;;713:25:1;;;701:2;686:18;10034:41:0;;;;;;;7909:2174;7840:2243;;;:::o;1230:190::-;1316:7;1352:12;1344:6;;;;1336:29;;;;-1:-1:-1;;;1336:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1376:9:0;1388:5;1392:1;1388;:5;:::i;:::-;1376:17;1230:190;-1:-1:-1;;;;;1230:190:0:o;10199:483::-;5255:6;:13;;-1:-1:-1;;;;5255:13:0;-1:-1:-1;;;5255:13:0;;;10301:16:::1;::::0;;10315:1:::1;10301:16:::0;;;;;::::1;::::0;;-1:-1:-1;;10301:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;10301:16:0::1;10277:40;;10346:4;10328;10333:1;10328:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;10328:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;10372:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;10372:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;10328:7;;10372:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10362:4;10367:1;10362:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;10362:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;10437:15:::1;::::0;10405:62:::1;::::0;10422:4:::1;::::0;10437:15:::1;10455:11:::0;10405:8:::1;:62::i;:::-;10478:15;::::0;:196:::1;::::0;-1:-1:-1;;;10478:196:0;;-1:-1:-1;;;;;10478:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;10559:11;;10478:15:::1;::::0;10601:4;;10628::::1;::::0;10648:15:::1;::::0;10478:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;5291:6:0;:14;;-1:-1:-1;;;;5291:14:0;;;-1:-1:-1;;;;10199:483:0:o;11287:336::-;11344:28;11413:3;11384:26;;11375:6;:35;;;;:::i;:::-;:41;;;;:::i;:::-;11344:72;;11427:25;11493:3;11464:26;;11455:6;:35;;;;:::i;:::-;:41;;;;:::i;:::-;11507:16;;:47;;11427:69;;-1:-1:-1;;;;;;11507:16:0;;:47;;;;;11533:20;;11507:16;:47;:16;:47;11533:20;11507:16;:47;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11565:22:0;;:50;;-1:-1:-1;;;;;11565:22:0;;;;:50;;;;;11597:17;;11565:22;:50;:22;:50;11597:17;11565:22;:50;;;;;;;;;;;;;;;;;;;;;11333:290;;11287:336;:::o;1428:246::-;1486:7;1510:1;1515;1510:6;1506:47;;-1:-1:-1;1540:1:0;1533:8;;1506:47;1563:9;1575:5;1579:1;1575;:5;:::i;:::-;1563:17;-1:-1:-1;1608:1:0;1599:5;1603:1;1563:17;1599:5;:::i;:::-;:10;1591:56;;;;-1:-1:-1;;;1591:56:0;;17639:2:1;1591:56:0;;;17621:21:1;17678:2;17658:18;;;17651:30;17717:34;17697:18;;;17690:62;-1:-1:-1;;;17768:18:1;;;17761:31;17809:19;;1591:56:0;17437:397:1;1682:132:0;1740:7;1767:39;1771:1;1774;1767:39;;;;;;;;;;;;;;;;;:3;:39::i;10093:98::-;10150:7;10177:1;10175;:3;10174:9;;10182:1;10174:9;;;-1:-1:-1;10180:1:0;10093:98;-1:-1:-1;10093:98:0:o;899:179::-;957:7;;989:5;993:1;989;:5;:::i;:::-;977:17;;1018:1;1013;:6;;1005:46;;;;-1:-1:-1;;;1005:46:0;;18041:2:1;1005:46:0;;;18023:21:1;18080:2;18060:18;;;18053:30;18119:29;18099:18;;;18092:57;18166:18;;1005:46:0;17839:351:1;1086:136:0;1144:7;1171:43;1175:1;1178;1171:43;;;;;;;;;;;;;;;;;:3;:43::i;1822:189::-;1908:7;1943:12;1936:5;1928:28;;;;-1:-1:-1;;;1928:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1967:9:0;1979:5;1983:1;1979;:5;:::i;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;749:131::-;-1:-1:-1;;;;;824:31:1;;814:42;;804:70;;870:1;867;860:12;804:70;749:131;:::o;885:315::-;953:6;961;1014:2;1002:9;993:7;989:23;985:32;982:52;;;1030:1;1027;1020:12;982:52;1069:9;1056:23;1088:31;1113:5;1088:31;:::i;:::-;1138:5;1190:2;1175:18;;;;1162:32;;-1:-1:-1;;;885:315:1:o;1397:127::-;1458:10;1453:3;1449:20;1446:1;1439:31;1489:4;1486:1;1479:15;1513:4;1510:1;1503:15;1529:275;1600:2;1594:9;1665:2;1646:13;;-1:-1:-1;;1642:27:1;1630:40;;1700:18;1685:34;;1721:22;;;1682:62;1679:88;;;1747:18;;:::i;:::-;1783:2;1776:22;1529:275;;-1:-1:-1;1529:275:1:o;1809:183::-;1869:4;1902:18;1894:6;1891:30;1888:56;;;1924:18;;:::i;:::-;-1:-1:-1;1969:1:1;1965:14;1981:4;1961:25;;1809:183::o;1997:662::-;2051:5;2104:3;2097:4;2089:6;2085:17;2081:27;2071:55;;2122:1;2119;2112:12;2071:55;2158:6;2145:20;2184:4;2208:60;2224:43;2264:2;2224:43;:::i;:::-;2208:60;:::i;:::-;2302:15;;;2388:1;2384:10;;;;2372:23;;2368:32;;;2333:12;;;;2412:15;;;2409:35;;;2440:1;2437;2430:12;2409:35;2476:2;2468:6;2464:15;2488:142;2504:6;2499:3;2496:15;2488:142;;;2570:17;;2558:30;;2608:12;;;;2521;;2488:142;;;-1:-1:-1;2648:5:1;1997:662;-1:-1:-1;;;;;;1997:662:1:o;2664:1215::-;2782:6;2790;2843:2;2831:9;2822:7;2818:23;2814:32;2811:52;;;2859:1;2856;2849:12;2811:52;2899:9;2886:23;2928:18;2969:2;2961:6;2958:14;2955:34;;;2985:1;2982;2975:12;2955:34;3023:6;3012:9;3008:22;2998:32;;3068:7;3061:4;3057:2;3053:13;3049:27;3039:55;;3090:1;3087;3080:12;3039:55;3126:2;3113:16;3148:4;3172:60;3188:43;3228:2;3188:43;:::i;3172:60::-;3266:15;;;3348:1;3344:10;;;;3336:19;;3332:28;;;3297:12;;;;3372:19;;;3369:39;;;3404:1;3401;3394:12;3369:39;3428:11;;;;3448:217;3464:6;3459:3;3456:15;3448:217;;;3544:3;3531:17;3561:31;3586:5;3561:31;:::i;:::-;3605:18;;3481:12;;;;3643;;;;3448:217;;;3684:5;-1:-1:-1;;3727:18:1;;3714:32;;-1:-1:-1;;3758:16:1;;;3755:36;;;3787:1;3784;3777:12;3755:36;;3810:63;3865:7;3854:8;3843:9;3839:24;3810:63;:::i;:::-;3800:73;;;2664:1215;;;;;:::o;3884:456::-;3961:6;3969;3977;4030:2;4018:9;4009:7;4005:23;4001:32;3998:52;;;4046:1;4043;4036:12;3998:52;4085:9;4072:23;4104:31;4129:5;4104:31;:::i;:::-;4154:5;-1:-1:-1;4211:2:1;4196:18;;4183:32;4224:33;4183:32;4224:33;:::i;:::-;3884:456;;4276:7;;-1:-1:-1;;;4330:2:1;4315:18;;;;4302:32;;3884:456::o;4534:247::-;4593:6;4646:2;4634:9;4625:7;4621:23;4617:32;4614:52;;;4662:1;4659;4652:12;4614:52;4701:9;4688:23;4720:31;4745:5;4720:31;:::i;4994:388::-;5062:6;5070;5123:2;5111:9;5102:7;5098:23;5094:32;5091:52;;;5139:1;5136;5129:12;5091:52;5178:9;5165:23;5197:31;5222:5;5197:31;:::i;:::-;5247:5;-1:-1:-1;5304:2:1;5289:18;;5276:32;5317:33;5276:32;5317:33;:::i;:::-;5369:7;5359:17;;;4994:388;;;;;:::o;5387:127::-;5448:10;5443:3;5439:20;5436:1;5429:31;5479:4;5476:1;5469:15;5503:4;5500:1;5493:15;5519:422;5608:1;5651:5;5608:1;5665:270;5686:7;5676:8;5673:21;5665:270;;;5745:4;5741:1;5737:6;5733:17;5727:4;5724:27;5721:53;;;5754:18;;:::i;:::-;5804:7;5794:8;5790:22;5787:55;;;5824:16;;;;5787:55;5903:22;;;;5863:15;;;;5665:270;;;5669:3;5519:422;;;;;:::o;5946:806::-;5995:5;6025:8;6015:80;;-1:-1:-1;6066:1:1;6080:5;;6015:80;6114:4;6104:76;;-1:-1:-1;6151:1:1;6165:5;;6104:76;6196:4;6214:1;6209:59;;;;6282:1;6277:130;;;;6189:218;;6209:59;6239:1;6230:10;;6253:5;;;6277:130;6314:3;6304:8;6301:17;6298:43;;;6321:18;;:::i;:::-;-1:-1:-1;;6377:1:1;6363:16;;6392:5;;6189:218;;6491:2;6481:8;6478:16;6472:3;6466:4;6463:13;6459:36;6453:2;6443:8;6440:16;6435:2;6429:4;6426:12;6422:35;6419:77;6416:159;;;-1:-1:-1;6528:19:1;;;6560:5;;6416:159;6607:34;6632:8;6626:4;6607:34;:::i;:::-;6677:6;6673:1;6669:6;6665:19;6656:7;6653:32;6650:58;;;6688:18;;:::i;:::-;6726:20;;5946:806;-1:-1:-1;;;5946:806:1:o;6757:140::-;6815:5;6844:47;6885:4;6875:8;6871:19;6865:4;6844:47;:::i;6902:168::-;6975:9;;;7006;;7023:15;;;7017:22;;7003:37;6993:71;;7044:18;;:::i;7075:407::-;7277:2;7259:21;;;7316:2;7296:18;;;7289:30;7355:34;7350:2;7335:18;;7328:62;-1:-1:-1;;;7421:2:1;7406:18;;7399:41;7472:3;7457:19;;7075:407::o;8249:127::-;8310:10;8305:3;8301:20;8298:1;8291:31;8341:4;8338:1;8331:15;8365:4;8362:1;8355:15;8738:135;8777:3;8798:17;;;8795:43;;8818:18;;:::i;:::-;-1:-1:-1;8865:1:1;8854:13;;8738:135::o;9594:184::-;9664:6;9717:2;9705:9;9696:7;9692:23;9688:32;9685:52;;;9733:1;9730;9723:12;9685:52;-1:-1:-1;9756:16:1;;9594:184;-1:-1:-1;9594:184:1:o;10349:277::-;10416:6;10469:2;10457:9;10448:7;10444:23;10440:32;10437:52;;;10485:1;10482;10475:12;10437:52;10517:9;10511:16;10570:5;10563:13;10556:21;10549:5;10546:32;10536:60;;10592:1;10589;10582:12;10983:251;11053:6;11106:2;11094:9;11085:7;11081:23;11077:32;11074:52;;;11122:1;11119;11112:12;11074:52;11154:9;11148:16;11173:31;11198:5;11173:31;:::i;12160:306::-;12248:6;12256;12264;12317:2;12305:9;12296:7;12292:23;12288:32;12285:52;;;12333:1;12330;12323:12;12285:52;12362:9;12356:16;12346:26;;12412:2;12401:9;12397:18;12391:25;12381:35;;12456:2;12445:9;12441:18;12435:25;12425:35;;12160:306;;;;;:::o;15612:125::-;15677:9;;;15698:10;;;15695:36;;;15711:18;;:::i;16097:128::-;16164:9;;;16185:11;;;16182:37;;;16199:18;;:::i;16230:980::-;16492:4;16540:3;16529:9;16525:19;16571:6;16560:9;16553:25;16597:2;16635:6;16630:2;16619:9;16615:18;16608:34;16678:3;16673:2;16662:9;16658:18;16651:31;16702:6;16737;16731:13;16768:6;16760;16753:22;16806:3;16795:9;16791:19;16784:26;;16845:2;16837:6;16833:15;16819:29;;16866:1;16876:195;16890:6;16887:1;16884:13;16876:195;;;16955:13;;-1:-1:-1;;;;;16951:39:1;16939:52;;17046:15;;;;17011:12;;;;16987:1;16905:9;16876:195;;;-1:-1:-1;;;;;;;17127:32:1;;;;17122:2;17107:18;;17100:60;-1:-1:-1;;;17191:3:1;17176:19;17169:35;17088:3;16230:980;-1:-1:-1;;;16230:980:1:o;17215:217::-;17255:1;17281;17271:132;;17325:10;17320:3;17316:20;17313:1;17306:31;17360:4;17357:1;17350:15;17388:4;17385:1;17378:15;17271:132;-1:-1:-1;17417:9:1;;17215:217::o

Swarm Source

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