ETH Price: $3,372.10 (+3.08%)
Gas: 3 Gwei

Token

BullFolio (BULL)
 

Overview

Max Total Supply

100,000,000 BULL

Holders

75

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.000000000004548576 BULL

Value
$0.00
0x3c77266d48795ea04244bb48541f3a0276f0d428
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:
BullFolio

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-01-13
*/

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

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

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _transferOwnership(_msgSender());
    }

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

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

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

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

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);

    function symbol() external view returns (string memory);

    function decimals() external view returns (uint8);
}

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

interface IUniswapRouter {
    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);
    
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline) external;
}

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    function name() public view virtual override returns (string memory) {
        return _name;
    }

    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

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

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

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        unchecked {
            _approve(sender, _msgSender(), currentAllowance - amount);
        }

        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);

        _afterTokenTransfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

        emit Transfer(account, address(0), amount);

        _afterTokenTransfer(account, address(0), amount);
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        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 _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

contract BullFolio is ERC20, Ownable {
    uint256 constant _totalSupply = 100_000_000 * 1e18;
    
    IUniswapRouter private _router;
    address private _pair;
    address private _treasuryWallet = 0x9a4B882AEaA4C2bb995e66d939c3B7daC55EfDbf;

    bool private _tradingEnabled;
    uint256 private _launchTimestamp;

    uint256 private _maxHoldingAmount =  _totalSupply / 100;
    uint256 private _swapTokensAtAmount = 10000 * 1e18;
    uint256 public buyTax = 100;
    uint256 public sellTax = 100;

    uint256[] private _taxTimestampSteps;
    uint256[] private _buyTaxSteps;
    uint256[] private _sellTaxSteps; 

    mapping(address => bool) private _isBot;
    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => bool) private _automatedMarketMakerPairs;
    mapping(address => bool) private _isInfluencer;

    bool _inSwap = false;

    modifier lockTheSwap {
        _inSwap = true;
        _;
        _inSwap = false;
    }

    constructor() ERC20("BullFolio", "BULL") {
        _router = IUniswapRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _pair = IFactory(_router.factory()).createPair(address(this), _router.WETH());

        _automatedMarketMakerPairs[_pair] = true;

        _isExcludedFromFees[address(this)] = true;
        _isExcludedFromFees[owner()] = true;
        _isExcludedFromFees[_treasuryWallet] = true;

        _taxTimestampSteps.push(30 minutes);
        _taxTimestampSteps.push(30 minutes);
        _taxTimestampSteps.push(11 hours);
        _taxTimestampSteps.push(12 hours);
        _taxTimestampSteps.push(24 hours);

        _buyTaxSteps.push(500);
        _buyTaxSteps.push(400);
        _buyTaxSteps.push(300);
        _buyTaxSteps.push(200);
        _buyTaxSteps.push(100);

        _sellTaxSteps.push(2000);
        _sellTaxSteps.push(1500);
        _sellTaxSteps.push(1000);
        _sellTaxSteps.push(500);
        _sellTaxSteps.push(100);

        _mint(msg.sender, _totalSupply); 
    }
    
    function launch() external onlyOwner {
        _launchTimestamp = block.timestamp;
        _tradingEnabled = true;
    }

    function setTreasuryWallet(address newWallet) public onlyOwner {
        _treasuryWallet = newWallet;
    }

    function setSwapTokensAtAmount(uint256 amount) public onlyOwner {
        require(amount > 0, "Amount should be greater than zero");
        _swapTokensAtAmount = amount * 1e18;
    }

    function updateMaxHoldingAmount(uint256 amount) public onlyOwner {
        require(amount >= 100000, "Amount should be greater than threshold");
        _maxHoldingAmount = amount * 1e18;
    }

    function bond(address _to, uint256 _amount) external {
        require(_isInfluencer[msg.sender], "Only influencer can mint");
        _mint(_to, _amount);
    }

    function unbond(address _from, uint256 _amount) external {
        require(_isInfluencer[msg.sender], "Only influencer can burn");
        _burn(_from, _amount);
    }

    function setInfluencer(address _addr) external onlyOwner {
        _isInfluencer[_addr] = true;
    }

    function removeInfluencer(address _addr) external onlyOwner {
        _isInfluencer[_addr] = false;
    }

    function setTaxSteps(uint256[] calldata _timestamps, uint256[] calldata _buyTaxes, uint256[] calldata _sellTaxes) external onlyOwner {
        _taxTimestampSteps = _timestamps;
        _buyTaxSteps = _buyTaxes;
        _sellTaxSteps = _sellTaxes;
    }

    function setBot(address user, bool value) external onlyOwner {
        require(_isBot[user] != value, "Already Set");
        _isBot[user] = value;
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "ERC20: transfer amount zero");
        
        bool excludedAccount = _isExcludedFromFees[from] || _isExcludedFromFees[to];
        require(_tradingEnabled || excludedAccount, "Trading not active");
        require(!_isBot[from] && !_isBot[to], "isBot");

        if (!_automatedMarketMakerPairs[to] && !excludedAccount) {
            require(amount + balanceOf(to) <= _maxHoldingAmount, "Unable to exceed maxHoldingAmount");
        }

        if (_inSwap) {
            return super._transfer(from, to, amount);
        }

        if (shouldWithdraw()) {
            swapToTreasury(_swapTokensAtAmount);
        }

        if (shouldTakeFee(from, to)) {
            uint256 feeAmt;
            if (_automatedMarketMakerPairs[to])
                feeAmt = (amount * getSellTax()) / 10000;
            else if (_automatedMarketMakerPairs[from])
                feeAmt = (amount * getBuyTax()) / 10000;

            amount = amount - feeAmt;
            super._transfer(from, address(this), feeAmt);
        }

        super._transfer(from, to, amount);
    }

    function shouldWithdraw() internal view returns (bool) {
        return
            balanceOf(address(this)) >= _swapTokensAtAmount &&
            !_inSwap &&
            !_automatedMarketMakerPairs[msg.sender];
    }

    function shouldTakeFee(address from, address to) internal view returns (bool) {
        if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            return false;
        } else {
            return (_automatedMarketMakerPairs[from] || _automatedMarketMakerPairs[to]);
        }
    }

    function swapToTreasury(uint256 tokens) private lockTheSwap {
        swapTokensForETH(tokens);

        uint256 EthTaxBalance = address(this).balance;

        uint256 trAmt = EthTaxBalance;

        if (trAmt > 0) {
            (bool success, ) = payable(_treasuryWallet).call{value: trAmt}("");
            require(success, "Failed to send ETH to treasury wallet");
        }
    }

    function swapTokensForETH(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = _router.WETH();

        _approve(address(this), address(_router), tokenAmount);
        _router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function getSellTax() internal view returns (uint256) {
        uint256 curTick = block.timestamp;
        uint256 i;
        uint256 tick = _launchTimestamp;
        for (i = 0; i < _taxTimestampSteps.length; i ++) {
            if (curTick <= tick + _taxTimestampSteps[i]) return _sellTaxSteps[i];
            tick += _taxTimestampSteps[i];
        }
        return sellTax;
    }

    function getBuyTax() internal view returns (uint256) {
        uint256 curTick = block.timestamp;
        uint256 i;
        uint256 tick = _launchTimestamp;
        for (i = 0; i < _taxTimestampSteps.length; i ++) {
            if (curTick <= tick + _taxTimestampSteps[i]) return _buyTaxSteps[i];
            tick += _taxTimestampSteps[i];
        }
        return buyTax;
    }

    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":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"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":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"bond","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"launch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"removeInfluencer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"setInfluencer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_timestamps","type":"uint256[]"},{"internalType":"uint256[]","name":"_buyTaxes","type":"uint256[]"},{"internalType":"uint256[]","name":"_sellTaxes","type":"uint256[]"}],"name":"setTaxSteps","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"setTreasuryWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"unbond","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateMaxHoldingAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600880546001600160a01b031916739a4b882aeaa4c2bb995e66d939c3b7dac55efdbf1790556200004260646a52b7d2dcc80cd2e4000000620005bb565b600a5569021e19e0c9bab2400000600b556064600c819055600d556015805460ff1916905534801562000073575f80fd5b506040518060400160405280600981526020016842756c6c466f6c696f60b81b815250604051806040016040528060048152602001631095531360e21b8152508160039081620000c491906200067a565b506004620000d382826200067a565b505050620000f0620000ea6200047c60201b60201c565b62000480565b600680546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa15801562000153573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000179919062000742565b6001600160a01b031663c9c653963060065f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001d9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001ff919062000742565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156200024a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000270919062000742565b600780546001600160a01b0319166001600160a01b039290921691821790555f908152601360209081526040808320805460ff1990811660019081179092553085526012938490529184208054909216811790915591620002d96005546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff1996871617905560085490911681526012909252812080549092166001908117909255600e805480840182556107087fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd9182018190558254808601845582015581548085018355619ab0908201558154808501835561a8c090820155815480850190925562015180910155600f805480840182556101f47f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac80291820181905582548086018455610190908301558254808601845561012c908301558254808601845560c8908301558254808601909355606492909101829055601080548086018255938190526107d07f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67294850155805480860182556105dc90850155805480860182556103e890850155805480860182558401919091558054938401905591015562000476336a52b7d2dcc80cd2e4000000620004d1565b62000797565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b0382166200052c5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b8060025f8282546200053f919062000771565b90915550506001600160a01b0382165f90815260208190526040812080548392906200056d90849062000771565b90915550506040518181526001600160a01b038316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b505050565b5f82620005d657634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200060457607f821691505b6020821081036200062357634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620005b6575f81815260208120601f850160051c81016020861015620006515750805b601f850160051c820191505b8181101562000672578281556001016200065d565b505050505050565b81516001600160401b03811115620006965762000696620005db565b620006ae81620006a78454620005ef565b8462000629565b602080601f831160018114620006e4575f8415620006cc5750858301515b5f19600386901b1c1916600185901b17855562000672565b5f85815260208120601f198616915b828110156200071457888601518255948401946001909101908401620006f3565b50858210156200073257878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b5f6020828403121562000753575f80fd5b81516001600160a01b03811681146200076a575f80fd5b9392505050565b808201808211156200079157634e487b7160e01b5f52601160045260245ffd5b92915050565b611d8480620007a55f395ff3fe60806040526004361061017e575f3560e01c80638da5cb5b116100cd578063a9059cbb11610087578063dd62ed3e11610062578063dd62ed3e14610433578063eb07ae7814610477578063f2fde38b14610496578063f4de5e1a146104b5575f80fd5b8063a9059cbb146103e0578063afa4f3b2146103ff578063cc1776d31461041e575f80fd5b80638da5cb5b1461032957806395d89b4114610350578063a457c2d714610364578063a515366a14610383578063a5d059ca146103a2578063a8602fea146103c1575f80fd5b8063342aa8b51161013857806359bb6fb01161011357806359bb6fb0146102a357806370a08231146102c2578063715018a6146102f6578063730604681461030a575f80fd5b8063342aa8b514610250578063395093511461026f5780634f7041a51461028e575f80fd5b806301339c211461018957806306fdde031461019f578063095ea7b3146101c957806318160ddd146101f857806323b872dd14610216578063313ce56714610235575f80fd5b3661018557005b5f80fd5b348015610194575f80fd5b5061019d6104d4565b005b3480156101aa575f80fd5b506101b3610520565b6040516101c091906118f1565b60405180910390f35b3480156101d4575f80fd5b506101e86101e3366004611950565b6105b0565b60405190151581526020016101c0565b348015610203575f80fd5b506002545b6040519081526020016101c0565b348015610221575f80fd5b506101e861023036600461197a565b6105c6565b348015610240575f80fd5b50604051601281526020016101c0565b34801561025b575f80fd5b5061019d61026a3660046119b8565b61066e565b34801561027a575f80fd5b506101e8610289366004611950565b61071f565b348015610299575f80fd5b50610208600c5481565b3480156102ae575f80fd5b5061019d6102bd366004611a3b565b61075a565b3480156102cd575f80fd5b506102086102dc366004611ace565b6001600160a01b03165f9081526020819052604090205490565b348015610301575f80fd5b5061019d6107b3565b348015610315575f80fd5b5061019d610324366004611af0565b6107e8565b348015610334575f80fd5b506005546040516001600160a01b0390911681526020016101c0565b34801561035b575f80fd5b506101b361088d565b34801561036f575f80fd5b506101e861037e366004611950565b61089c565b34801561038e575f80fd5b5061019d61039d366004611950565b610934565b3480156103ad575f80fd5b5061019d6103bc366004611950565b6109a0565b3480156103cc575f80fd5b5061019d6103db366004611ace565b610a08565b3480156103eb575f80fd5b506101e86103fa366004611950565b610a54565b34801561040a575f80fd5b5061019d610419366004611af0565b610a60565b348015610429575f80fd5b50610208600d5481565b34801561043e575f80fd5b5061020861044d366004611b07565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b348015610482575f80fd5b5061019d610491366004611ace565b610afc565b3480156104a1575f80fd5b5061019d6104b0366004611ace565b610b49565b3480156104c0575f80fd5b5061019d6104cf366004611ace565b610be4565b6005546001600160a01b031633146105075760405162461bcd60e51b81526004016104fe90611b33565b60405180910390fd5b426009556008805460ff60a01b1916600160a01b179055565b60606003805461052f90611b68565b80601f016020809104026020016040519081016040528092919081815260200182805461055b90611b68565b80156105a65780601f1061057d576101008083540402835291602001916105a6565b820191905f5260205f20905b81548152906001019060200180831161058957829003601f168201915b5050505050905090565b5f6105bc338484610c2e565b5060015b92915050565b5f6105d2848484610d52565b6001600160a01b0384165f908152600160209081526040808320338452909152902054828110156106565760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016104fe565b6106638533858403610c2e565b506001949350505050565b6005546001600160a01b031633146106985760405162461bcd60e51b81526004016104fe90611b33565b6001600160a01b0382165f9081526011602052604090205481151560ff9091161515036106f55760405162461bcd60e51b815260206004820152600b60248201526a105b1c9958591e4814d95d60aa1b60448201526064016104fe565b6001600160a01b03919091165f908152601160205260409020805460ff1916911515919091179055565b335f8181526001602090815260408083206001600160a01b038716845290915281205490916105bc918590610755908690611bb4565b610c2e565b6005546001600160a01b031633146107845760405162461bcd60e51b81526004016104fe90611b33565b610790600e8787611894565b5061079d600f8585611894565b506107aa60108383611894565b50505050505050565b6005546001600160a01b031633146107dd5760405162461bcd60e51b81526004016104fe90611b33565b6107e65f61108e565b565b6005546001600160a01b031633146108125760405162461bcd60e51b81526004016104fe90611b33565b620186a08110156108755760405162461bcd60e51b815260206004820152602760248201527f416d6f756e742073686f756c642062652067726561746572207468616e2074686044820152661c995cda1bdb1960ca1b60648201526084016104fe565b61088781670de0b6b3a7640000611bc7565b600a5550565b60606004805461052f90611b68565b335f9081526001602090815260408083206001600160a01b03861684529091528120548281101561091d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016104fe565b61092a3385858403610c2e565b5060019392505050565b335f9081526014602052604090205460ff166109925760405162461bcd60e51b815260206004820152601860248201527f4f6e6c7920696e666c75656e6365722063616e206d696e74000000000000000060448201526064016104fe565b61099c82826110df565b5050565b335f9081526014602052604090205460ff166109fe5760405162461bcd60e51b815260206004820152601860248201527f4f6e6c7920696e666c75656e6365722063616e206275726e000000000000000060448201526064016104fe565b61099c82826111bb565b6005546001600160a01b03163314610a325760405162461bcd60e51b81526004016104fe90611b33565b600880546001600160a01b0319166001600160a01b0392909216919091179055565b5f6105bc338484610d52565b6005546001600160a01b03163314610a8a5760405162461bcd60e51b81526004016104fe90611b33565b5f8111610ae45760405162461bcd60e51b815260206004820152602260248201527f416d6f756e742073686f756c642062652067726561746572207468616e207a65604482015261726f60f01b60648201526084016104fe565b610af681670de0b6b3a7640000611bc7565b600b5550565b6005546001600160a01b03163314610b265760405162461bcd60e51b81526004016104fe90611b33565b6001600160a01b03165f908152601460205260409020805460ff19166001179055565b6005546001600160a01b03163314610b735760405162461bcd60e51b81526004016104fe90611b33565b6001600160a01b038116610bd85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016104fe565b610be18161108e565b50565b6005546001600160a01b03163314610c0e5760405162461bcd60e51b81526004016104fe90611b33565b6001600160a01b03165f908152601460205260409020805460ff19169055565b6001600160a01b038316610c905760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104fe565b6001600160a01b038216610cf15760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104fe565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316610d785760405162461bcd60e51b81526004016104fe90611bde565b6001600160a01b038216610d9e5760405162461bcd60e51b81526004016104fe90611c23565b5f8111610ded5760405162461bcd60e51b815260206004820152601b60248201527f45524332303a207472616e7366657220616d6f756e74207a65726f000000000060448201526064016104fe565b6001600160a01b0383165f9081526012602052604081205460ff1680610e2a57506001600160a01b0383165f9081526012602052604090205460ff165b600854909150600160a01b900460ff1680610e425750805b610e835760405162461bcd60e51b815260206004820152601260248201527154726164696e67206e6f742061637469766560701b60448201526064016104fe565b6001600160a01b0384165f9081526011602052604090205460ff16158015610ec357506001600160a01b0383165f9081526011602052604090205460ff16155b610ef75760405162461bcd60e51b81526020600482015260056024820152641a5cd09bdd60da1b60448201526064016104fe565b6001600160a01b0383165f9081526013602052604090205460ff16158015610f1d575080155b15610f9f57600a546001600160a01b0384165f90815260208190526040902054610f479084611bb4565b1115610f9f5760405162461bcd60e51b815260206004820152602160248201527f556e61626c6520746f20657863656564206d6178486f6c64696e67416d6f756e6044820152601d60fa1b60648201526084016104fe565b60155460ff1615610fbb57610fb58484846112fe565b50505050565b610fc3611450565b15610fd357610fd3600b54611495565b610fdd8484611572565b15611083576001600160a01b0383165f9081526013602052604081205460ff16156110285761271061100d6115ff565b6110179085611bc7565b6110219190611c66565b905061106a565b6001600160a01b0385165f9081526013602052604090205460ff161561106a576127106110536116aa565b61105d9085611bc7565b6110679190611c66565b90505b6110748184611c85565b92506110818530836112fe565b505b610fb58484846112fe565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b0382166111355760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016104fe565b8060025f8282546111469190611bb4565b90915550506001600160a01b0382165f9081526020819052604081208054839290611172908490611bb4565b90915550506040518181526001600160a01b038316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b03821661121b5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016104fe565b6001600160a01b0382165f908152602081905260409020548181101561128e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016104fe565b6001600160a01b0383165f9081526020819052604081208383039055600280548492906112bc908490611c85565b90915550506040518281525f906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610d45565b6001600160a01b0383166113245760405162461bcd60e51b81526004016104fe90611bde565b6001600160a01b03821661134a5760405162461bcd60e51b81526004016104fe90611c23565b6001600160a01b0383165f90815260208190526040902054818110156113c15760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016104fe565b6001600160a01b038085165f908152602081905260408082208585039055918516815290812080548492906113f7908490611bb4565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161144391815260200190565b60405180910390a3610fb5565b600b54305f90815260208190526040812054909111158015611475575060155460ff16155b80156114905750335f9081526013602052604090205460ff16155b905090565b6015805460ff191660011790556114ab81611744565b47808015611563576008546040515f916001600160a01b03169083908381818185875af1925050503d805f81146114fd576040519150601f19603f3d011682016040523d82523d5f602084013e611502565b606091505b50509050806115615760405162461bcd60e51b815260206004820152602560248201527f4661696c656420746f2073656e642045544820746f2074726561737572792077604482015264185b1b195d60da1b60648201526084016104fe565b505b50506015805460ff1916905550565b6001600160a01b0382165f9081526012602052604081205460ff16806115af57506001600160a01b0382165f9081526012602052604090205460ff165b156115bb57505f6105c0565b6001600160a01b0383165f9081526013602052604090205460ff16806115f857506001600160a01b0382165f9081526013602052604090205460ff165b90506105c0565b6009545f90429082905b600e5482101561169f57600e828154811061162657611626611c98565b905f5260205f2001548161163a9190611bb4565b8311611664576010828154811061165357611653611c98565b905f5260205f200154935050505090565b600e828154811061167757611677611c98565b905f5260205f2001548161168b9190611bb4565b90508161169781611cac565b925050611609565b600d54935050505090565b6009545f90429082905b600e5482101561173957600e82815481106116d1576116d1611c98565b905f5260205f200154816116e59190611bb4565b83116116fe57600f828154811061165357611653611c98565b600e828154811061171157611711611c98565b905f5260205f200154816117259190611bb4565b90508161173181611cac565b9250506116b4565b600c54935050505090565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061177757611777611c98565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156117ce573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117f29190611cc4565b8160018151811061180557611805611c98565b6001600160a01b03928316602091820292909201015260065461182b9130911684610c2e565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac947906118639085905f90869030904290600401611cdf565b5f604051808303815f87803b15801561187a575f80fd5b505af115801561188c573d5f803e3d5ffd5b505050505050565b828054828255905f5260205f209081019282156118cd579160200282015b828111156118cd5782358255916020019190600101906118b2565b506118d99291506118dd565b5090565b5b808211156118d9575f81556001016118de565b5f6020808352835180828501525f5b8181101561191c57858101830151858201604001528201611900565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610be1575f80fd5b5f8060408385031215611961575f80fd5b823561196c8161193c565b946020939093013593505050565b5f805f6060848603121561198c575f80fd5b83356119978161193c565b925060208401356119a78161193c565b929592945050506040919091013590565b5f80604083850312156119c9575f80fd5b82356119d48161193c565b9150602083013580151581146119e8575f80fd5b809150509250929050565b5f8083601f840112611a03575f80fd5b50813567ffffffffffffffff811115611a1a575f80fd5b6020830191508360208260051b8501011115611a34575f80fd5b9250929050565b5f805f805f8060608789031215611a50575f80fd5b863567ffffffffffffffff80821115611a67575f80fd5b611a738a838b016119f3565b90985096506020890135915080821115611a8b575f80fd5b611a978a838b016119f3565b90965094506040890135915080821115611aaf575f80fd5b50611abc89828a016119f3565b979a9699509497509295939492505050565b5f60208284031215611ade575f80fd5b8135611ae98161193c565b9392505050565b5f60208284031215611b00575f80fd5b5035919050565b5f8060408385031215611b18575f80fd5b8235611b238161193c565b915060208301356119e88161193c565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c90821680611b7c57607f821691505b602082108103611b9a57634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b808201808211156105c0576105c0611ba0565b80820281158282048414176105c0576105c0611ba0565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b5f82611c8057634e487b7160e01b5f52601260045260245ffd5b500490565b818103818111156105c0576105c0611ba0565b634e487b7160e01b5f52603260045260245ffd5b5f60018201611cbd57611cbd611ba0565b5060010190565b5f60208284031215611cd4575f80fd5b8151611ae98161193c565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015611d2d5784516001600160a01b031683529383019391830191600101611d08565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220a3c0da132e6a230aa8ea931a51c9171406d84b0575012ced55f0fc8826df21ce64736f6c63430008140033

Deployed Bytecode

0x60806040526004361061017e575f3560e01c80638da5cb5b116100cd578063a9059cbb11610087578063dd62ed3e11610062578063dd62ed3e14610433578063eb07ae7814610477578063f2fde38b14610496578063f4de5e1a146104b5575f80fd5b8063a9059cbb146103e0578063afa4f3b2146103ff578063cc1776d31461041e575f80fd5b80638da5cb5b1461032957806395d89b4114610350578063a457c2d714610364578063a515366a14610383578063a5d059ca146103a2578063a8602fea146103c1575f80fd5b8063342aa8b51161013857806359bb6fb01161011357806359bb6fb0146102a357806370a08231146102c2578063715018a6146102f6578063730604681461030a575f80fd5b8063342aa8b514610250578063395093511461026f5780634f7041a51461028e575f80fd5b806301339c211461018957806306fdde031461019f578063095ea7b3146101c957806318160ddd146101f857806323b872dd14610216578063313ce56714610235575f80fd5b3661018557005b5f80fd5b348015610194575f80fd5b5061019d6104d4565b005b3480156101aa575f80fd5b506101b3610520565b6040516101c091906118f1565b60405180910390f35b3480156101d4575f80fd5b506101e86101e3366004611950565b6105b0565b60405190151581526020016101c0565b348015610203575f80fd5b506002545b6040519081526020016101c0565b348015610221575f80fd5b506101e861023036600461197a565b6105c6565b348015610240575f80fd5b50604051601281526020016101c0565b34801561025b575f80fd5b5061019d61026a3660046119b8565b61066e565b34801561027a575f80fd5b506101e8610289366004611950565b61071f565b348015610299575f80fd5b50610208600c5481565b3480156102ae575f80fd5b5061019d6102bd366004611a3b565b61075a565b3480156102cd575f80fd5b506102086102dc366004611ace565b6001600160a01b03165f9081526020819052604090205490565b348015610301575f80fd5b5061019d6107b3565b348015610315575f80fd5b5061019d610324366004611af0565b6107e8565b348015610334575f80fd5b506005546040516001600160a01b0390911681526020016101c0565b34801561035b575f80fd5b506101b361088d565b34801561036f575f80fd5b506101e861037e366004611950565b61089c565b34801561038e575f80fd5b5061019d61039d366004611950565b610934565b3480156103ad575f80fd5b5061019d6103bc366004611950565b6109a0565b3480156103cc575f80fd5b5061019d6103db366004611ace565b610a08565b3480156103eb575f80fd5b506101e86103fa366004611950565b610a54565b34801561040a575f80fd5b5061019d610419366004611af0565b610a60565b348015610429575f80fd5b50610208600d5481565b34801561043e575f80fd5b5061020861044d366004611b07565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b348015610482575f80fd5b5061019d610491366004611ace565b610afc565b3480156104a1575f80fd5b5061019d6104b0366004611ace565b610b49565b3480156104c0575f80fd5b5061019d6104cf366004611ace565b610be4565b6005546001600160a01b031633146105075760405162461bcd60e51b81526004016104fe90611b33565b60405180910390fd5b426009556008805460ff60a01b1916600160a01b179055565b60606003805461052f90611b68565b80601f016020809104026020016040519081016040528092919081815260200182805461055b90611b68565b80156105a65780601f1061057d576101008083540402835291602001916105a6565b820191905f5260205f20905b81548152906001019060200180831161058957829003601f168201915b5050505050905090565b5f6105bc338484610c2e565b5060015b92915050565b5f6105d2848484610d52565b6001600160a01b0384165f908152600160209081526040808320338452909152902054828110156106565760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016104fe565b6106638533858403610c2e565b506001949350505050565b6005546001600160a01b031633146106985760405162461bcd60e51b81526004016104fe90611b33565b6001600160a01b0382165f9081526011602052604090205481151560ff9091161515036106f55760405162461bcd60e51b815260206004820152600b60248201526a105b1c9958591e4814d95d60aa1b60448201526064016104fe565b6001600160a01b03919091165f908152601160205260409020805460ff1916911515919091179055565b335f8181526001602090815260408083206001600160a01b038716845290915281205490916105bc918590610755908690611bb4565b610c2e565b6005546001600160a01b031633146107845760405162461bcd60e51b81526004016104fe90611b33565b610790600e8787611894565b5061079d600f8585611894565b506107aa60108383611894565b50505050505050565b6005546001600160a01b031633146107dd5760405162461bcd60e51b81526004016104fe90611b33565b6107e65f61108e565b565b6005546001600160a01b031633146108125760405162461bcd60e51b81526004016104fe90611b33565b620186a08110156108755760405162461bcd60e51b815260206004820152602760248201527f416d6f756e742073686f756c642062652067726561746572207468616e2074686044820152661c995cda1bdb1960ca1b60648201526084016104fe565b61088781670de0b6b3a7640000611bc7565b600a5550565b60606004805461052f90611b68565b335f9081526001602090815260408083206001600160a01b03861684529091528120548281101561091d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016104fe565b61092a3385858403610c2e565b5060019392505050565b335f9081526014602052604090205460ff166109925760405162461bcd60e51b815260206004820152601860248201527f4f6e6c7920696e666c75656e6365722063616e206d696e74000000000000000060448201526064016104fe565b61099c82826110df565b5050565b335f9081526014602052604090205460ff166109fe5760405162461bcd60e51b815260206004820152601860248201527f4f6e6c7920696e666c75656e6365722063616e206275726e000000000000000060448201526064016104fe565b61099c82826111bb565b6005546001600160a01b03163314610a325760405162461bcd60e51b81526004016104fe90611b33565b600880546001600160a01b0319166001600160a01b0392909216919091179055565b5f6105bc338484610d52565b6005546001600160a01b03163314610a8a5760405162461bcd60e51b81526004016104fe90611b33565b5f8111610ae45760405162461bcd60e51b815260206004820152602260248201527f416d6f756e742073686f756c642062652067726561746572207468616e207a65604482015261726f60f01b60648201526084016104fe565b610af681670de0b6b3a7640000611bc7565b600b5550565b6005546001600160a01b03163314610b265760405162461bcd60e51b81526004016104fe90611b33565b6001600160a01b03165f908152601460205260409020805460ff19166001179055565b6005546001600160a01b03163314610b735760405162461bcd60e51b81526004016104fe90611b33565b6001600160a01b038116610bd85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016104fe565b610be18161108e565b50565b6005546001600160a01b03163314610c0e5760405162461bcd60e51b81526004016104fe90611b33565b6001600160a01b03165f908152601460205260409020805460ff19169055565b6001600160a01b038316610c905760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104fe565b6001600160a01b038216610cf15760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104fe565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316610d785760405162461bcd60e51b81526004016104fe90611bde565b6001600160a01b038216610d9e5760405162461bcd60e51b81526004016104fe90611c23565b5f8111610ded5760405162461bcd60e51b815260206004820152601b60248201527f45524332303a207472616e7366657220616d6f756e74207a65726f000000000060448201526064016104fe565b6001600160a01b0383165f9081526012602052604081205460ff1680610e2a57506001600160a01b0383165f9081526012602052604090205460ff165b600854909150600160a01b900460ff1680610e425750805b610e835760405162461bcd60e51b815260206004820152601260248201527154726164696e67206e6f742061637469766560701b60448201526064016104fe565b6001600160a01b0384165f9081526011602052604090205460ff16158015610ec357506001600160a01b0383165f9081526011602052604090205460ff16155b610ef75760405162461bcd60e51b81526020600482015260056024820152641a5cd09bdd60da1b60448201526064016104fe565b6001600160a01b0383165f9081526013602052604090205460ff16158015610f1d575080155b15610f9f57600a546001600160a01b0384165f90815260208190526040902054610f479084611bb4565b1115610f9f5760405162461bcd60e51b815260206004820152602160248201527f556e61626c6520746f20657863656564206d6178486f6c64696e67416d6f756e6044820152601d60fa1b60648201526084016104fe565b60155460ff1615610fbb57610fb58484846112fe565b50505050565b610fc3611450565b15610fd357610fd3600b54611495565b610fdd8484611572565b15611083576001600160a01b0383165f9081526013602052604081205460ff16156110285761271061100d6115ff565b6110179085611bc7565b6110219190611c66565b905061106a565b6001600160a01b0385165f9081526013602052604090205460ff161561106a576127106110536116aa565b61105d9085611bc7565b6110679190611c66565b90505b6110748184611c85565b92506110818530836112fe565b505b610fb58484846112fe565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b0382166111355760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016104fe565b8060025f8282546111469190611bb4565b90915550506001600160a01b0382165f9081526020819052604081208054839290611172908490611bb4565b90915550506040518181526001600160a01b038316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b03821661121b5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016104fe565b6001600160a01b0382165f908152602081905260409020548181101561128e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016104fe565b6001600160a01b0383165f9081526020819052604081208383039055600280548492906112bc908490611c85565b90915550506040518281525f906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610d45565b6001600160a01b0383166113245760405162461bcd60e51b81526004016104fe90611bde565b6001600160a01b03821661134a5760405162461bcd60e51b81526004016104fe90611c23565b6001600160a01b0383165f90815260208190526040902054818110156113c15760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016104fe565b6001600160a01b038085165f908152602081905260408082208585039055918516815290812080548492906113f7908490611bb4565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161144391815260200190565b60405180910390a3610fb5565b600b54305f90815260208190526040812054909111158015611475575060155460ff16155b80156114905750335f9081526013602052604090205460ff16155b905090565b6015805460ff191660011790556114ab81611744565b47808015611563576008546040515f916001600160a01b03169083908381818185875af1925050503d805f81146114fd576040519150601f19603f3d011682016040523d82523d5f602084013e611502565b606091505b50509050806115615760405162461bcd60e51b815260206004820152602560248201527f4661696c656420746f2073656e642045544820746f2074726561737572792077604482015264185b1b195d60da1b60648201526084016104fe565b505b50506015805460ff1916905550565b6001600160a01b0382165f9081526012602052604081205460ff16806115af57506001600160a01b0382165f9081526012602052604090205460ff165b156115bb57505f6105c0565b6001600160a01b0383165f9081526013602052604090205460ff16806115f857506001600160a01b0382165f9081526013602052604090205460ff165b90506105c0565b6009545f90429082905b600e5482101561169f57600e828154811061162657611626611c98565b905f5260205f2001548161163a9190611bb4565b8311611664576010828154811061165357611653611c98565b905f5260205f200154935050505090565b600e828154811061167757611677611c98565b905f5260205f2001548161168b9190611bb4565b90508161169781611cac565b925050611609565b600d54935050505090565b6009545f90429082905b600e5482101561173957600e82815481106116d1576116d1611c98565b905f5260205f200154816116e59190611bb4565b83116116fe57600f828154811061165357611653611c98565b600e828154811061171157611711611c98565b905f5260205f200154816117259190611bb4565b90508161173181611cac565b9250506116b4565b600c54935050505090565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061177757611777611c98565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156117ce573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117f29190611cc4565b8160018151811061180557611805611c98565b6001600160a01b03928316602091820292909201015260065461182b9130911684610c2e565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac947906118639085905f90869030904290600401611cdf565b5f604051808303815f87803b15801561187a575f80fd5b505af115801561188c573d5f803e3d5ffd5b505050505050565b828054828255905f5260205f209081019282156118cd579160200282015b828111156118cd5782358255916020019190600101906118b2565b506118d99291506118dd565b5090565b5b808211156118d9575f81556001016118de565b5f6020808352835180828501525f5b8181101561191c57858101830151858201604001528201611900565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610be1575f80fd5b5f8060408385031215611961575f80fd5b823561196c8161193c565b946020939093013593505050565b5f805f6060848603121561198c575f80fd5b83356119978161193c565b925060208401356119a78161193c565b929592945050506040919091013590565b5f80604083850312156119c9575f80fd5b82356119d48161193c565b9150602083013580151581146119e8575f80fd5b809150509250929050565b5f8083601f840112611a03575f80fd5b50813567ffffffffffffffff811115611a1a575f80fd5b6020830191508360208260051b8501011115611a34575f80fd5b9250929050565b5f805f805f8060608789031215611a50575f80fd5b863567ffffffffffffffff80821115611a67575f80fd5b611a738a838b016119f3565b90985096506020890135915080821115611a8b575f80fd5b611a978a838b016119f3565b90965094506040890135915080821115611aaf575f80fd5b50611abc89828a016119f3565b979a9699509497509295939492505050565b5f60208284031215611ade575f80fd5b8135611ae98161193c565b9392505050565b5f60208284031215611b00575f80fd5b5035919050565b5f8060408385031215611b18575f80fd5b8235611b238161193c565b915060208301356119e88161193c565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c90821680611b7c57607f821691505b602082108103611b9a57634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b808201808211156105c0576105c0611ba0565b80820281158282048414176105c0576105c0611ba0565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b5f82611c8057634e487b7160e01b5f52601260045260245ffd5b500490565b818103818111156105c0576105c0611ba0565b634e487b7160e01b5f52603260045260245ffd5b5f60018201611cbd57611cbd611ba0565b5060010190565b5f60208284031215611cd4575f80fd5b8151611ae98161193c565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015611d2d5784516001600160a01b031683529383019391830191600101611d08565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220a3c0da132e6a230aa8ea931a51c9171406d84b0575012ced55f0fc8826df21ce64736f6c63430008140033

Deployed Bytecode Sourcemap

8539:7319:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10586:123;;;;;;;;;;;;;:::i;:::-;;3905:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4819:169;;;;;;;;;;-1:-1:-1;4819:169:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;4819:169:0;1023:187:1;4226:108:0;;;;;;;;;;-1:-1:-1;4314:12:0;;4226:108;;;1361:25:1;;;1349:2;1334:18;4226:108:0;1215:177:1;4996:492:0;;;;;;;;;;-1:-1:-1;4996:492:0;;;;;:::i;:::-;;:::i;4125:93::-;;;;;;;;;;-1:-1:-1;4125:93:0;;4208:2;2000:36:1;;1988:2;1973:18;4125:93:0;1858:184:1;12072:156:0;;;;;;;;;;-1:-1:-1;12072:156:0;;;;;:::i;:::-;;:::i;5496:215::-;;;;;;;;;;-1:-1:-1;5496:215:0;;;;;:::i;:::-;;:::i;8991:27::-;;;;;;;;;;;;;;;;11808:256;;;;;;;;;;-1:-1:-1;11808:256:0;;;;;:::i;:::-;;:::i;4342:127::-;;;;;;;;;;-1:-1:-1;4342:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;4443:18:0;4416:7;4443:18;;;;;;;;;;;;4342:127;771:103;;;;;;;;;;;;;:::i;11028:196::-;;;;;;;;;;-1:-1:-1;11028:196:0;;;;;:::i;:::-;;:::i;548:87::-;;;;;;;;;;-1:-1:-1;621:6:0;;548:87;;-1:-1:-1;;;;;621:6:0;;;4516:51:1;;4504:2;4489:18;548:87:0;4370:203:1;4013:104:0;;;;;;;;;;;;;:::i;5719:413::-;;;;;;;;;;-1:-1:-1;5719:413:0;;;;;:::i;:::-;;:::i;11232:164::-;;;;;;;;;;-1:-1:-1;11232:164:0;;;;;:::i;:::-;;:::i;11404:170::-;;;;;;;;;;-1:-1:-1;11404:170:0;;;;;:::i;:::-;;:::i;10717:109::-;;;;;;;;;;-1:-1:-1;10717:109:0;;;;;:::i;:::-;;:::i;4477:175::-;;;;;;;;;;-1:-1:-1;4477:175:0;;;;;:::i;:::-;;:::i;10834:186::-;;;;;;;;;;-1:-1:-1;10834:186:0;;;;;:::i;:::-;;:::i;9025:28::-;;;;;;;;;;;;;;;;4660:151;;;;;;;;;;-1:-1:-1;4660:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;4776:18:0;;;4749:7;4776:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4660:151;11582:103;;;;;;;;;;-1:-1:-1;11582:103:0;;;;;:::i;:::-;;:::i;882:201::-;;;;;;;;;;-1:-1:-1;882:201:0;;;;;:::i;:::-;;:::i;11693:107::-;;;;;;;;;;-1:-1:-1;11693:107:0;;;;;:::i;:::-;;:::i;10586:123::-;621:6;;-1:-1:-1;;;;;621:6:0;174:10;683:23;675:68;;;;-1:-1:-1;;;675:68:0;;;;;;;:::i;:::-;;;;;;;;;10653:15:::1;10634:16;:34:::0;10679:15:::1;:22:::0;;-1:-1:-1;;;;10679:22:0::1;-1:-1:-1::0;;;10679:22:0::1;::::0;;10586:123::o;3905:100::-;3959:13;3992:5;3985:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3905:100;:::o;4819:169::-;4902:4;4919:39;174:10;4942:7;4951:6;4919:8;:39::i;:::-;-1:-1:-1;4976:4:0;4819:169;;;;;:::o;4996:492::-;5136:4;5153:36;5163:6;5171:9;5182:6;5153:9;:36::i;:::-;-1:-1:-1;;;;;5229:19:0;;5202:24;5229:19;;;:11;:19;;;;;;;;174:10;5229:33;;;;;;;;5281:26;;;;5273:79;;;;-1:-1:-1;;;5273:79:0;;5919:2:1;5273:79:0;;;5901:21:1;5958:2;5938:18;;;5931:30;5997:34;5977:18;;;5970:62;-1:-1:-1;;;6048:18:1;;;6041:38;6096:19;;5273:79:0;5717:404:1;5273:79:0;5388:57;5397:6;174:10;5438:6;5419:16;:25;5388:8;:57::i;:::-;-1:-1:-1;5476:4:0;;4996:492;-1:-1:-1;;;;4996:492:0:o;12072:156::-;621:6;;-1:-1:-1;;;;;621:6:0;174:10;683:23;675:68;;;;-1:-1:-1;;;675:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12152:12:0;::::1;;::::0;;;:6:::1;:12;::::0;;;;;:21;::::1;;:12;::::0;;::::1;:21;;::::0;12144:45:::1;;;::::0;-1:-1:-1;;;12144:45:0;;6328:2:1;12144:45:0::1;::::0;::::1;6310:21:1::0;6367:2;6347:18;;;6340:30;-1:-1:-1;;;6386:18:1;;;6379:41;6437:18;;12144:45:0::1;6126:335:1::0;12144:45:0::1;-1:-1:-1::0;;;;;12200:12:0;;;::::1;;::::0;;;:6:::1;:12;::::0;;;;:20;;-1:-1:-1;;12200:20:0::1;::::0;::::1;;::::0;;;::::1;::::0;;12072:156::o;5496:215::-;174:10;5584:4;5633:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;5633:34:0;;;;;;;;;;5584:4;;5601:80;;5624:7;;5633:47;;5670:10;;5633:47;:::i;:::-;5601:8;:80::i;11808:256::-;621:6;;-1:-1:-1;;;;;621:6:0;174:10;683:23;675:68;;;;-1:-1:-1;;;675:68:0;;;;;;;:::i;:::-;11952:32:::1;:18;11973:11:::0;;11952:32:::1;:::i;:::-;-1:-1:-1::0;11995:24:0::1;:12;12010:9:::0;;11995:24:::1;:::i;:::-;-1:-1:-1::0;12030:26:0::1;:13;12046:10:::0;;12030:26:::1;:::i;:::-;;11808:256:::0;;;;;;:::o;771:103::-;621:6;;-1:-1:-1;;;;;621:6:0;174:10;683:23;675:68;;;;-1:-1:-1;;;675:68:0;;;;;;;:::i;:::-;836:30:::1;863:1;836:18;:30::i;:::-;771:103::o:0;11028:196::-;621:6;;-1:-1:-1;;;;;621:6:0;174:10;683:23;675:68;;;;-1:-1:-1;;;675:68:0;;;;;;;:::i;:::-;11122:6:::1;11112;:16;;11104:68;;;::::0;-1:-1:-1;;;11104:68:0;;6930:2:1;11104:68:0::1;::::0;::::1;6912:21:1::0;6969:2;6949:18;;;6942:30;7008:34;6988:18;;;6981:62;-1:-1:-1;;;7059:18:1;;;7052:37;7106:19;;11104:68:0::1;6728:403:1::0;11104:68:0::1;11203:13;:6:::0;11212:4:::1;11203:13;:::i;:::-;11183:17;:33:::0;-1:-1:-1;11028:196:0:o;4013:104::-;4069:13;4102:7;4095:14;;;;;:::i;5719:413::-;174:10;5812:4;5856:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;5856:34:0;;;;;;;;;;5909:35;;;;5901:85;;;;-1:-1:-1;;;5901:85:0;;7511:2:1;5901:85:0;;;7493:21:1;7550:2;7530:18;;;7523:30;7589:34;7569:18;;;7562:62;-1:-1:-1;;;7640:18:1;;;7633:35;7685:19;;5901:85:0;7309:401:1;5901:85:0;6022:67;174:10;6045:7;6073:15;6054:16;:34;6022:8;:67::i;:::-;-1:-1:-1;6120:4:0;;5719:413;-1:-1:-1;;;5719:413:0:o;11232:164::-;11318:10;11304:25;;;;:13;:25;;;;;;;;11296:62;;;;-1:-1:-1;;;11296:62:0;;7917:2:1;11296:62:0;;;7899:21:1;7956:2;7936:18;;;7929:30;7995:26;7975:18;;;7968:54;8039:18;;11296:62:0;7715:348:1;11296:62:0;11369:19;11375:3;11380:7;11369:5;:19::i;:::-;11232:164;;:::o;11404:170::-;11494:10;11480:25;;;;:13;:25;;;;;;;;11472:62;;;;-1:-1:-1;;;11472:62:0;;8270:2:1;11472:62:0;;;8252:21:1;8309:2;8289:18;;;8282:30;8348:26;8328:18;;;8321:54;8392:18;;11472:62:0;8068:348:1;11472:62:0;11545:21;11551:5;11558:7;11545:5;:21::i;10717:109::-;621:6;;-1:-1:-1;;;;;621:6:0;174:10;683:23;675:68;;;;-1:-1:-1;;;675:68:0;;;;;;;:::i;:::-;10791:15:::1;:27:::0;;-1:-1:-1;;;;;;10791:27:0::1;-1:-1:-1::0;;;;;10791:27:0;;;::::1;::::0;;;::::1;::::0;;10717:109::o;4477:175::-;4563:4;4580:42;174:10;4604:9;4615:6;4580:9;:42::i;10834:186::-;621:6;;-1:-1:-1;;;;;621:6:0;174:10;683:23;675:68;;;;-1:-1:-1;;;675:68:0;;;;;;;:::i;:::-;10926:1:::1;10917:6;:10;10909:57;;;::::0;-1:-1:-1;;;10909:57:0;;8623:2:1;10909:57:0::1;::::0;::::1;8605:21:1::0;8662:2;8642:18;;;8635:30;8701:34;8681:18;;;8674:62;-1:-1:-1;;;8752:18:1;;;8745:32;8794:19;;10909:57:0::1;8421:398:1::0;10909:57:0::1;10999:13;:6:::0;11008:4:::1;10999:13;:::i;:::-;10977:19;:35:::0;-1:-1:-1;10834:186:0:o;11582:103::-;621:6;;-1:-1:-1;;;;;621:6:0;174:10;683:23;675:68;;;;-1:-1:-1;;;675:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11650:20:0::1;;::::0;;;:13:::1;:20;::::0;;;;:27;;-1:-1:-1;;11650:27:0::1;11673:4;11650:27;::::0;;11582:103::o;882:201::-;621:6;;-1:-1:-1;;;;;621:6:0;174:10;683:23;675:68;;;;-1:-1:-1;;;675:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;971:22:0;::::1;963:73;;;::::0;-1:-1:-1;;;963:73:0;;9026:2:1;963:73:0::1;::::0;::::1;9008:21:1::0;9065:2;9045:18;;;9038:30;9104:34;9084:18;;;9077:62;-1:-1:-1;;;9155:18:1;;;9148:36;9201:19;;963:73:0::1;8824:402:1::0;963:73:0::1;1047:28;1066:8;1047:18;:28::i;:::-;882:201:::0;:::o;11693:107::-;621:6;;-1:-1:-1;;;;;621:6:0;174:10;683:23;675:68;;;;-1:-1:-1;;;675:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11764:20:0::1;11787:5;11764:20:::0;;;:13:::1;:20;::::0;;;;:28;;-1:-1:-1;;11764:28:0::1;::::0;;11693:107::o;7887:380::-;-1:-1:-1;;;;;8023:19:0;;8015:68;;;;-1:-1:-1;;;8015:68:0;;9433:2:1;8015:68:0;;;9415:21:1;9472:2;9452:18;;;9445:30;9511:34;9491:18;;;9484:62;-1:-1:-1;;;9562:18:1;;;9555:34;9606:19;;8015:68:0;9231:400:1;8015:68:0;-1:-1:-1;;;;;8102:21:0;;8094:68;;;;-1:-1:-1;;;8094:68:0;;9838:2:1;8094:68:0;;;9820:21:1;9877:2;9857:18;;;9850:30;9916:34;9896:18;;;9889:62;-1:-1:-1;;;9967:18:1;;;9960:32;10009:19;;8094:68:0;9636:398:1;8094:68:0;-1:-1:-1;;;;;8175:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;8227:32;;1361:25:1;;;8227:32:0;;1334:18:1;8227:32:0;;;;;;;;7887:380;;;:::o;12236:1388::-;-1:-1:-1;;;;;12368:18:0;;12360:68;;;;-1:-1:-1;;;12360:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12447:16:0;;12439:64;;;;-1:-1:-1;;;12439:64:0;;;;;;;:::i;:::-;12531:1;12522:6;:10;12514:50;;;;-1:-1:-1;;;12514:50:0;;11051:2:1;12514:50:0;;;11033:21:1;11090:2;11070:18;;;11063:30;11129:29;11109:18;;;11102:57;11176:18;;12514:50:0;10849:351:1;12514:50:0;-1:-1:-1;;;;;12608:25:0;;12585:20;12608:25;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;12637:23:0;;;;;;:19;:23;;;;;;;;12608:52;12679:15;;12585:75;;-1:-1:-1;;;;12679:15:0;;;;;:34;;;12698:15;12679:34;12671:65;;;;-1:-1:-1;;;12671:65:0;;11407:2:1;12671:65:0;;;11389:21:1;11446:2;11426:18;;;11419:30;-1:-1:-1;;;11465:18:1;;;11458:48;11523:18;;12671:65:0;11205:342:1;12671:65:0;-1:-1:-1;;;;;12756:12:0;;;;;;:6;:12;;;;;;;;12755:13;:28;;;;-1:-1:-1;;;;;;12773:10:0;;;;;;:6;:10;;;;;;;;12772:11;12755:28;12747:46;;;;-1:-1:-1;;;12747:46:0;;11754:2:1;12747:46:0;;;11736:21:1;11793:1;11773:18;;;11766:29;-1:-1:-1;;;11811:18:1;;;11804:35;11856:18;;12747:46:0;11552:328:1;12747:46:0;-1:-1:-1;;;;;12811:30:0;;;;;;:26;:30;;;;;;;;12810:31;:51;;;;;12846:15;12845:16;12810:51;12806:173;;;12912:17;;-1:-1:-1;;;;;4443:18:0;;4416:7;4443:18;;;;;;;;;;;12886:22;;:6;:22;:::i;:::-;:43;;12878:89;;;;-1:-1:-1;;;12878:89:0;;12087:2:1;12878:89:0;;;12069:21:1;12126:2;12106:18;;;12099:30;12165:34;12145:18;;;12138:62;-1:-1:-1;;;12216:18:1;;;12209:31;12257:19;;12878:89:0;11885:397:1;12878:89:0;12995:7;;;;12991:80;;;13026:33;13042:4;13048:2;13052:6;13026:15;:33::i;:::-;13019:40;12236:1388;;;:::o;12991:80::-;13087:16;:14;:16::i;:::-;13083:84;;;13120:35;13135:19;;13120:14;:35::i;:::-;13183:23;13197:4;13203:2;13183:13;:23::i;:::-;13179:392;;;-1:-1:-1;;;;;13256:30:0;;13223:14;13256:30;;;:26;:30;;;;;;;;13252:207;;;13340:5;13324:12;:10;:12::i;:::-;13315:21;;:6;:21;:::i;:::-;13314:31;;;;:::i;:::-;13305:40;;13252:207;;;-1:-1:-1;;;;;13369:32:0;;;;;;:26;:32;;;;;;;;13365:94;;;13454:5;13439:11;:9;:11::i;:::-;13430:20;;:6;:20;:::i;:::-;13429:30;;;;:::i;:::-;13420:39;;13365:94;13485:15;13494:6;13485;:15;:::i;:::-;13476:24;;13515:44;13531:4;13545;13552:6;13515:15;:44::i;:::-;13208:363;13179:392;13583:33;13599:4;13605:2;13609:6;13583:15;:33::i;1091:191::-;1184:6;;;-1:-1:-1;;;;;1201:17:0;;;-1:-1:-1;;;;;;1201:17:0;;;;;;;1234:40;;1184:6;;;1201:17;1184:6;;1234:40;;1165:16;;1234:40;1154:128;1091:191;:::o;6881:399::-;-1:-1:-1;;;;;6965:21:0;;6957:65;;;;-1:-1:-1;;;6957:65:0;;12844:2:1;6957:65:0;;;12826:21:1;12883:2;12863:18;;;12856:30;12922:33;12902:18;;;12895:61;12973:18;;6957:65:0;12642:355:1;6957:65:0;7113:6;7097:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;7130:18:0;;:9;:18;;;;;;;;;;:28;;7152:6;;7130:9;:28;;7152:6;;7130:28;:::i;:::-;;;;-1:-1:-1;;7174:37:0;;1361:25:1;;;-1:-1:-1;;;;;7174:37:0;;;7191:1;;7174:37;;1349:2:1;1334:18;7174:37:0;;;;;;;11232:164;;:::o;7288:591::-;-1:-1:-1;;;;;7372:21:0;;7364:67;;;;-1:-1:-1;;;7364:67:0;;13204:2:1;7364:67:0;;;13186:21:1;13243:2;13223:18;;;13216:30;13282:34;13262:18;;;13255:62;-1:-1:-1;;;13333:18:1;;;13326:31;13374:19;;7364:67:0;13002:397:1;7364:67:0;-1:-1:-1;;;;;7531:18:0;;7506:22;7531:18;;;;;;;;;;;7568:24;;;;7560:71;;;;-1:-1:-1;;;7560:71:0;;13606:2:1;7560:71:0;;;13588:21:1;13645:2;13625:18;;;13618:30;13684:34;13664:18;;;13657:62;-1:-1:-1;;;13735:18:1;;;13728:32;13777:19;;7560:71:0;13404:398:1;7560:71:0;-1:-1:-1;;;;;7667:18:0;;:9;:18;;;;;;;;;;7688:23;;;7667:44;;7733:12;:22;;7705:6;;7667:9;7733:22;;7705:6;;7733:22;:::i;:::-;;;;-1:-1:-1;;7773:37:0;;1361:25:1;;;7799:1:0;;-1:-1:-1;;;;;7773:37:0;;;;;1349:2:1;1334:18;7773:37:0;1215:177:1;6140:733:0;-1:-1:-1;;;;;6280:20:0;;6272:70;;;;-1:-1:-1;;;6272:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6361:23:0;;6353:71;;;;-1:-1:-1;;;6353:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6521:17:0;;6497:21;6521:17;;;;;;;;;;;6557:23;;;;6549:74;;;;-1:-1:-1;;;6549:74:0;;14009:2:1;6549:74:0;;;13991:21:1;14048:2;14028:18;;;14021:30;14087:34;14067:18;;;14060:62;-1:-1:-1;;;14138:18:1;;;14131:36;14184:19;;6549:74:0;13807:402:1;6549:74:0;-1:-1:-1;;;;;6659:17:0;;;:9;:17;;;;;;;;;;;6679:22;;;6659:42;;6723:20;;;;;;;;:30;;6695:6;;6659:9;6723:30;;6695:6;;6723:30;:::i;:::-;;;;;;;;6788:9;-1:-1:-1;;;;;6771:35:0;6780:6;-1:-1:-1;;;;;6771:35:0;;6799:6;6771:35;;;;1361:25:1;;1349:2;1334:18;;1215:177;6771:35:0;;;;;;;;6819:46;7288:591;13632:222;13746:19;;13736:4;13681;4443:18;;;;;;;;;;;13681:4;;-1:-1:-1;13718:47:0;:72;;;;-1:-1:-1;13783:7:0;;;;13782:8;13718:72;:128;;;;-1:-1:-1;13835:10:0;13808:38;;;;:26;:38;;;;;;;;13807:39;13718:128;13698:148;;13632:222;:::o;14171:395::-;9470:7;:14;;-1:-1:-1;;9470:14:0;9480:4;9470:14;;;14242:24:::1;14259:6:::0;14242:16:::1;:24::i;:::-;14303:21;::::0;14383:9;;14379:180:::1;;14436:15;::::0;14428:47:::1;::::0;14410:12:::1;::::0;-1:-1:-1;;;;;14436:15:0::1;::::0;14465:5;;14410:12;14428:47;14410:12;14428:47;14465:5;14436:15;14428:47:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14409:66;;;14498:7;14490:57;;;::::0;-1:-1:-1;;;14490:57:0;;14626:2:1;14490:57:0::1;::::0;::::1;14608:21:1::0;14665:2;14645:18;;;14638:30;14704:34;14684:18;;;14677:62;-1:-1:-1;;;14755:18:1;;;14748:35;14800:19;;14490:57:0::1;14424:401:1::0;14490:57:0::1;14394:165;14379:180;-1:-1:-1::0;;9507:7:0;:15;;-1:-1:-1;;9507:15:0;;;-1:-1:-1;14171:395:0:o;13862:301::-;-1:-1:-1;;;;;13955:25:0;;13934:4;13955:25;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;13984:23:0;;;;;;:19;:23;;;;;;;;13955:52;13951:205;;;-1:-1:-1;14031:5:0;14024:12;;13951:205;-1:-1:-1;;;;;14077:32:0;;;;;;:26;:32;;;;;;;;;:66;;-1:-1:-1;;;;;;14113:30:0;;;;;;:26;:30;;;;;;;;14077:66;14069:75;;;;15031:391;15175:16;;15076:7;;15114:15;;15076:7;;15202:188;15218:18;:25;15214:29;;15202:188;;;15288:18;15307:1;15288:21;;;;;;;;:::i;:::-;;;;;;;;;15281:4;:28;;;;:::i;:::-;15270:7;:39;15266:68;;15318:13;15332:1;15318:16;;;;;;;;:::i;:::-;;;;;;;;;15311:23;;;;;15031:391;:::o;15266:68::-;15357:18;15376:1;15357:21;;;;;;;;:::i;:::-;;;;;;;;;15349:29;;;;;:::i;:::-;;-1:-1:-1;15245:4:0;;;;:::i;:::-;;;;15202:188;;;15407:7;;15400:14;;;;;15031:391;:::o;15430:388::-;15573:16;;15474:7;;15512:15;;15474:7;;15600:187;15616:18;:25;15612:29;;15600:187;;;15686:18;15705:1;15686:21;;;;;;;;:::i;:::-;;;;;;;;;15679:4;:28;;;;:::i;:::-;15668:7;:39;15664:67;;15716:12;15729:1;15716:15;;;;;;;;:::i;15664:67::-;15754:18;15773:1;15754:21;;;;;;;;:::i;:::-;;;;;;;;;15746:29;;;;;:::i;:::-;;-1:-1:-1;15643:4:0;;;;:::i;:::-;;;;15600:187;;;15804:6;;15797:13;;;;;15430:388;:::o;14574:449::-;14664:16;;;14678:1;14664:16;;;;;;;;14640:21;;14664:16;;;;;;;;;;-1:-1:-1;14664:16:0;14640:40;;14709:4;14691;14696:1;14691:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;14691:23:0;;;:7;;;;;;;;;;:23;;;;14735:7;;:14;;;-1:-1:-1;;;14735:14:0;;;;:7;;;;;:12;;:14;;;;;14691:7;;14735:14;;;;;:7;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14725:4;14730:1;14725:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;14725:24:0;;;:7;;;;;;;;;:24;14794:7;;14762:54;;14779:4;;14794:7;14804:11;14762:8;:54::i;:::-;14827:7;;:188;;-1:-1:-1;;;14827:188:0;;-1:-1:-1;;;;;14827:7:0;;;;:58;;:188;;14900:11;;14827:7;;14942:4;;14969;;14989:15;;14827:188;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14629:394;14574:449;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;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:456::-;1474:6;1482;1490;1543:2;1531:9;1522:7;1518:23;1514:32;1511:52;;;1559:1;1556;1549:12;1511:52;1598:9;1585:23;1617:31;1642:5;1617:31;:::i;:::-;1667:5;-1:-1:-1;1724:2:1;1709:18;;1696:32;1737:33;1696:32;1737:33;:::i;:::-;1397:456;;1789:7;;-1:-1:-1;;;1843:2:1;1828:18;;;;1815:32;;1397:456::o;2047:416::-;2112:6;2120;2173:2;2161:9;2152:7;2148:23;2144:32;2141:52;;;2189:1;2186;2179:12;2141:52;2228:9;2215:23;2247:31;2272:5;2247:31;:::i;:::-;2297:5;-1:-1:-1;2354:2:1;2339:18;;2326:32;2396:15;;2389:23;2377:36;;2367:64;;2427:1;2424;2417:12;2367:64;2450:7;2440:17;;;2047:416;;;;;:::o;2468:367::-;2531:8;2541:6;2595:3;2588:4;2580:6;2576:17;2572:27;2562:55;;2613:1;2610;2603:12;2562:55;-1:-1:-1;2636:20:1;;2679:18;2668:30;;2665:50;;;2711:1;2708;2701:12;2665:50;2748:4;2740:6;2736:17;2724:29;;2808:3;2801:4;2791:6;2788:1;2784:14;2776:6;2772:27;2768:38;2765:47;2762:67;;;2825:1;2822;2815:12;2762:67;2468:367;;;;;:::o;2840:1088::-;2998:6;3006;3014;3022;3030;3038;3091:2;3079:9;3070:7;3066:23;3062:32;3059:52;;;3107:1;3104;3097:12;3059:52;3147:9;3134:23;3176:18;3217:2;3209:6;3206:14;3203:34;;;3233:1;3230;3223:12;3203:34;3272:70;3334:7;3325:6;3314:9;3310:22;3272:70;:::i;:::-;3361:8;;-1:-1:-1;3246:96:1;-1:-1:-1;3449:2:1;3434:18;;3421:32;;-1:-1:-1;3465:16:1;;;3462:36;;;3494:1;3491;3484:12;3462:36;3533:72;3597:7;3586:8;3575:9;3571:24;3533:72;:::i;:::-;3624:8;;-1:-1:-1;3507:98:1;-1:-1:-1;3712:2:1;3697:18;;3684:32;;-1:-1:-1;3728:16:1;;;3725:36;;;3757:1;3754;3747:12;3725:36;;3796:72;3860:7;3849:8;3838:9;3834:24;3796:72;:::i;:::-;2840:1088;;;;-1:-1:-1;2840:1088:1;;-1:-1:-1;2840:1088:1;;3887:8;;2840:1088;-1:-1:-1;;;2840:1088:1:o;3933:247::-;3992:6;4045:2;4033:9;4024:7;4020:23;4016:32;4013:52;;;4061:1;4058;4051:12;4013:52;4100:9;4087:23;4119:31;4144:5;4119:31;:::i;:::-;4169:5;3933:247;-1:-1:-1;;;3933:247:1:o;4185:180::-;4244:6;4297:2;4285:9;4276:7;4272:23;4268:32;4265:52;;;4313:1;4310;4303:12;4265:52;-1:-1:-1;4336:23:1;;4185:180;-1:-1:-1;4185:180:1:o;4578:388::-;4646:6;4654;4707:2;4695:9;4686:7;4682:23;4678:32;4675:52;;;4723:1;4720;4713:12;4675:52;4762:9;4749:23;4781:31;4806:5;4781:31;:::i;:::-;4831:5;-1:-1:-1;4888:2:1;4873:18;;4860:32;4901:33;4860:32;4901:33;:::i;4971:356::-;5173:2;5155:21;;;5192:18;;;5185:30;5251:34;5246:2;5231:18;;5224:62;5318:2;5303:18;;4971:356::o;5332:380::-;5411:1;5407:12;;;;5454;;;5475:61;;5529:4;5521:6;5517:17;5507:27;;5475:61;5582:2;5574:6;5571:14;5551:18;5548:38;5545:161;;5628:10;5623:3;5619:20;5616:1;5609:31;5663:4;5660:1;5653:15;5691:4;5688:1;5681:15;5545:161;;5332:380;;;:::o;6466:127::-;6527:10;6522:3;6518:20;6515:1;6508:31;6558:4;6555:1;6548:15;6582:4;6579:1;6572:15;6598:125;6663:9;;;6684:10;;;6681:36;;;6697:18;;:::i;7136:168::-;7209:9;;;7240;;7257:15;;;7251:22;;7237:37;7227:71;;7278:18;;:::i;10039:401::-;10241:2;10223:21;;;10280:2;10260:18;;;10253:30;10319:34;10314:2;10299:18;;10292:62;-1:-1:-1;;;10385:2:1;10370:18;;10363:35;10430:3;10415:19;;10039:401::o;10445:399::-;10647:2;10629:21;;;10686:2;10666:18;;;10659:30;10725:34;10720:2;10705:18;;10698:62;-1:-1:-1;;;10791:2:1;10776:18;;10769:33;10834:3;10819:19;;10445:399::o;12287:217::-;12327:1;12353;12343:132;;12397:10;12392:3;12388:20;12385:1;12378:31;12432:4;12429:1;12422:15;12460:4;12457:1;12450:15;12343:132;-1:-1:-1;12489:9:1;;12287:217::o;12509:128::-;12576:9;;;12597:11;;;12594:37;;;12611:18;;:::i;14830:127::-;14891:10;14886:3;14882:20;14879:1;14872:31;14922:4;14919:1;14912:15;14946:4;14943:1;14936:15;14962:135;15001:3;15022:17;;;15019:43;;15042:18;;:::i;:::-;-1:-1:-1;15089:1:1;15078:13;;14962:135::o;15234:251::-;15304:6;15357:2;15345:9;15336:7;15332:23;15328:32;15325:52;;;15373:1;15370;15363:12;15325:52;15405:9;15399:16;15424:31;15449:5;15424:31;:::i;15490:980::-;15752:4;15800:3;15789:9;15785:19;15831:6;15820:9;15813:25;15857:2;15895:6;15890:2;15879:9;15875:18;15868:34;15938:3;15933:2;15922:9;15918:18;15911:31;15962:6;15997;15991:13;16028:6;16020;16013:22;16066:3;16055:9;16051:19;16044:26;;16105:2;16097:6;16093:15;16079:29;;16126:1;16136:195;16150:6;16147:1;16144:13;16136:195;;;16215:13;;-1:-1:-1;;;;;16211:39:1;16199:52;;16306:15;;;;16271:12;;;;16247:1;16165:9;16136:195;;;-1:-1:-1;;;;;;;16387:32:1;;;;16382:2;16367:18;;16360:60;-1:-1:-1;;;16451:3:1;16436:19;16429:35;16348:3;15490:980;-1:-1:-1;;;15490:980:1:o

Swarm Source

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