ETH Price: $3,396.04 (+6.40%)
Gas: 26 Gwei

Token

Block Rover (ROVER)
 

Overview

Max Total Supply

1,000,000,000 ROVER

Holders

638

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
juffrei.eth
Balance
0.633151438736611479 ROVER

Value
$0.00
0xD00397a93a73e0b428b78Ec5D44A912C89D93506
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:
BlockRover

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-07-25
*/

// 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) {
        this; 
        return msg.data;
    }
}

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


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

    mapping (address => mapping (address => uint256)) internal _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");
        _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");
        _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");
        _balances[sender] = senderBalance - amount;
        _balances[recipient] += amount;

        emit Transfer(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);
    }

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

library Address{
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
}

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _setOwner(_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 {
        _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);
    }
}

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 addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline) external;
}

contract BlockRover is ERC20, Ownable{
    using Address for address payable;
    
    IRouter public router;
    address public pair;
    
    bool private swapping;
    bool public swapEnabled;
    bool public launched;
    
    event TransferForeignToken(address token, uint256 amount);
    event Launched();
    event SwapEnabled();
    event SwapThresholdUpdated();
    event BuyTaxesUpdated();
    event SellTaxesUpdated();
    event MarketingWalletUpdated();
    event DevWalletUpdated();
    event ExcludedFromFeesUpdated();
    event MaxTxAmountUpdated();
    event MaxWalletAmountUpdated();
    event StuckEthersCleared();
    
    uint256 public swapThreshold = 1000000 * 10**18; //0.1% of total supply
    uint256 public maxTxAmount = 1000000000 * 10**18; 
    uint256 public maxWalletAmount = 1000000000 * 10**18;
    
    address public marketingWallet = 0x24dE903d71a370b901B0D479C1d0f0aC5fBD4F55;
    address public devWallet = 0x4495fb3D48759F2e6167957bDF0cde1264368278;
    
    struct Taxes {
        uint256 marketing;
        uint256 liquidity;
        uint256 dev;
     }
    
    Taxes public buyTaxes = Taxes(4,0,1);
    Taxes public sellTaxes = Taxes(4,0,1);
    uint256 private totBuyTax = 5;
    uint256 private totSellTax = 5;
    
    mapping (address => bool) public excludedFromFees;
    
    modifier inSwap() {
        if (!swapping) {
            swapping = true;
            _;
            swapping = false;
        }
    }

    constructor() ERC20("Block Rover", "ROVER") {
        _mint(msg.sender, 1000000000 * 10 ** decimals());
        excludedFromFees[msg.sender] = true;

        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        address _pair = IFactory(_router.factory())
            .createPair(address(this), _router.WETH());

        router = _router;
        pair = _pair;
        excludedFromFees[address(this)] = true;
        excludedFromFees[marketingWallet] = true;
        excludedFromFees[devWallet] = true;
    }
    
    function _transfer(address sender, address recipient, uint256 amount) internal override {
        require(amount > 0, "Transfer amount must be greater than zero");
                
        
        if(!excludedFromFees[sender] && !excludedFromFees[recipient] && !swapping){
            require(launched, "Trading not active yet");
            require(amount <= maxTxAmount, "You are exceeding maxTxAmount");
            if(recipient != pair){
                require(balanceOf(recipient) + amount <= maxWalletAmount, "You are exceeding maxWalletAmount");
            }
        }

        uint256 fee;
          
        if (swapping || excludedFromFees[sender] || excludedFromFees[recipient]) fee = 0;
         
        else{
            if(recipient == pair) fee = amount * totSellTax / 100;
            else if(sender == pair) fee = amount * totBuyTax / 100;
            else fee = 0;
        }
        
        if (swapEnabled && !swapping && sender != pair && fee > 0) swapForFees();

        super._transfer(sender, recipient, amount - fee);
        if(fee > 0) super._transfer(sender, address(this) ,fee);

    }
    function swapForFees() private inSwap {
        uint256 contractBalance = balanceOf(address(this));

        if (contractBalance >= swapThreshold) {

            uint256 denominator = totSellTax * 2;
            uint256 tokensToAddLiquidityWith = contractBalance * sellTaxes.liquidity / denominator;
            uint256 toSwap = contractBalance - tokensToAddLiquidityWith;
    
            uint256 initialBalance = address(this).balance;
    
            swapTokensForETH(toSwap);
    
            uint256 deltaBalance = address(this).balance - initialBalance;
            uint256 unitBalance= deltaBalance / (denominator - sellTaxes.liquidity);
            uint256 ethToAddLiquidityWith = unitBalance * sellTaxes.liquidity;
    
            if(tokensToAddLiquidityWith > 0 && ethToAddLiquidityWith > 0){
                // Add liquidity to dex
                addLiquidity(tokensToAddLiquidityWith, ethToAddLiquidityWith);
            }
    
            uint256 marketingAmt = unitBalance * 2 * sellTaxes.marketing;
            if(marketingAmt > 0){
                payable(marketingWallet).sendValue(marketingAmt);
            }
            
            uint256 devAmt = unitBalance * 2 * sellTaxes.dev;
            if(devAmt > 0){
                payable(devWallet).sendValue(devAmt);
            }
        }
    }

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

        // make the swap
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount, 0, path, address(this), block.timestamp);
    }

    function addLiquidity(uint256 tokenAmount, uint256 bnbAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(router), tokenAmount);

        // add the liquidity
        router.addLiquidityETH{value: bnbAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            address(0xdead),
            block.timestamp
        );
    }
    function setSwapEnabled(bool state) external onlyOwner { // to be used only in case of dire emergency
        swapEnabled = state;
        emit SwapEnabled();
    }

    function setSwapThreshold(uint256 new_amount) external onlyOwner {
        require(new_amount >= 10000, "Swap amount cannot be lower than 0.001% total supply.");
        require(new_amount <= 30000000, "Swap amount cannot be higher than 3% total supply.");
        swapThreshold = new_amount * (10**18);
        emit SwapThresholdUpdated();
    }

    function launch() external onlyOwner{
        require(!launched, "Trading already active");
        launched = true;
        swapEnabled = true;
        emit Launched();
    }

    function setTaxes(uint256 _bmarketing, uint256 _bliquidity, uint256 _bdev, uint256 _smarketing, uint256 _sliquidity, uint256 _sdev) external onlyOwner{
        buyTaxes = Taxes(_bmarketing, _bliquidity, _bdev);
        totBuyTax = _bmarketing + _bliquidity + _bdev;
        sellTaxes = Taxes(_smarketing, _sliquidity, _sdev);
        totSellTax = _smarketing + _sliquidity + _sdev;
        require(totBuyTax <= 26,"Total buy fees cannot be greater than 5%");
        require(totSellTax <= 26,"Total sell fees cannot be greater than 5%");
        require(totSellTax >= 1,"Total sell fees cannot beless  than 1%");
    }
    
    function updateMarketingWallet(address newWallet) external onlyOwner{
        excludedFromFees[marketingWallet] = false;
        require(newWallet != address(0), "Marketing Wallet cannot be zero address");
        marketingWallet = newWallet;
        emit MarketingWalletUpdated();     
    }
   
    function updateDevWallet(address newWallet) external onlyOwner{
        excludedFromFees[devWallet] = false;
        require(newWallet != address(0), "Dev Wallet cannot be zero address");
        devWallet = newWallet;
        emit DevWalletUpdated();
    }

    function updateExcludedFromFees(address _address, bool state) external onlyOwner {
        excludedFromFees[_address] = state;
        emit ExcludedFromFeesUpdated();
    }
    
    function updateMaxTxAmount(uint256 amount) external onlyOwner{
        require(amount >= 2500000, "Cannot set maxSell lower than 0.25%");
        maxTxAmount = amount * (10**18);
        emit MaxTxAmountUpdated();
    }
    
    function updateMaxWalletAmount(uint256 amount) external onlyOwner{
        require(amount >= 2500000, "Cannot set maxSell lower than 0.25%");
        maxWalletAmount = amount * (10**18);
        emit MaxWalletAmountUpdated();
    }

    function withdrawStuckTokens(address _token, address _to) external onlyOwner returns (bool _sent) {
        uint256 _contractBalance = IERC20(_token).balanceOf(address(this));
        _sent = IERC20(_token).transfer(_to, _contractBalance);
        emit TransferForeignToken(_token, _contractBalance);
    }

    function clearStuckEthers(uint256 amountPercentage) external onlyOwner {
        uint256 amountETH = address(this).balance;
        payable(msg.sender).transfer((amountETH * amountPercentage) / 100);
        emit StuckEthersCleared();
    }


    // fallbacks
    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":[],"name":"BuyTaxesUpdated","type":"event"},{"anonymous":false,"inputs":[],"name":"DevWalletUpdated","type":"event"},{"anonymous":false,"inputs":[],"name":"ExcludedFromFeesUpdated","type":"event"},{"anonymous":false,"inputs":[],"name":"Launched","type":"event"},{"anonymous":false,"inputs":[],"name":"MarketingWalletUpdated","type":"event"},{"anonymous":false,"inputs":[],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[],"name":"MaxWalletAmountUpdated","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":[],"name":"SellTaxesUpdated","type":"event"},{"anonymous":false,"inputs":[],"name":"StuckEthersCleared","type":"event"},{"anonymous":false,"inputs":[],"name":"SwapEnabled","type":"event"},{"anonymous":false,"inputs":[],"name":"SwapThresholdUpdated","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferForeignToken","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":[],"name":"buyTaxes","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"dev","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"clearStuckEthers","outputs":[],"stateMutability":"nonpayable","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":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"excludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"launched","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTaxes","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"dev","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"state","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"new_amount","type":"uint256"}],"name":"setSwapThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_bmarketing","type":"uint256"},{"internalType":"uint256","name":"_bliquidity","type":"uint256"},{"internalType":"uint256","name":"_bdev","type":"uint256"},{"internalType":"uint256","name":"_smarketing","type":"uint256"},{"internalType":"uint256","name":"_sliquidity","type":"uint256"},{"internalType":"uint256","name":"_sdev","type":"uint256"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"newWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"updateExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"name":"withdrawStuckTokens","outputs":[{"internalType":"bool","name":"_sent","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

69d3c21bcecceda10000006008556b033b2e3c9fd0803ce80000006009819055600a55600b80546001600160a01b03199081167324de903d71a370b901b0d479c1d0f0ac5fbd4f5517909155600c8054909116734495fb3d48759f2e6167957bdf0cde1264368278179055600460808190525f60a0819052600160c0819052600d839055600e829055600f81905561014060405260e083905261010082905261012081905260109290925560115560125560056013819055601455348015620000c6575f80fd5b506040518060400160405280600b81526020016a213637b1b5902937bb32b960a91b815250604051806040016040528060058152602001642927ab22a960d91b81525081600390816200011a919062000537565b50600462000129828262000537565b50505062000146620001406200035960201b60201c565b6200035d565b6200016f33620001596012600a6200070e565b6200016990633b9aca0062000725565b620003ae565b335f908152601560209081526040808320805460ff19166001179055805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9392849263c45a015592600480830193928290030181865afa158015620001d7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001fd91906200073f565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000249573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200026f91906200073f565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015620002ba573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002e091906200073f565b600680546001600160a01b03199081166001600160a01b03958616179091556007805490911691841691909117905550305f90815260156020526040808220805460ff199081166001908117909255600b54851684528284208054821683179055600c549094168352912080549092161790556200077d565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b038216620004095760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b8060025f8282546200041c919062000767565b90915550506001600160a01b0382165f90815260208190526040812080548392906200044a90849062000767565b90915550506040518181526001600160a01b038316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c90821680620004c157607f821691505b602082108103620004e057634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111562000493575f81815260208120601f850160051c810160208610156200050e5750805b601f850160051c820191505b818110156200052f578281556001016200051a565b505050505050565b81516001600160401b0381111562000553576200055362000498565b6200056b81620005648454620004ac565b84620004e6565b602080601f831160018114620005a1575f8415620005895750858301515b5f19600386901b1c1916600185901b1785556200052f565b5f85815260208120601f198616915b82811015620005d157888601518255948401946001909101908401620005b0565b5085821015620005ef57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200065357815f1904821115620006375762000637620005ff565b808516156200064557918102915b93841c939080029062000618565b509250929050565b5f826200066b5750600162000708565b816200067957505f62000708565b81600181146200069257600281146200069d57620006bd565b600191505062000708565b60ff841115620006b157620006b1620005ff565b50506001821b62000708565b5060208310610133831016604e8410600b8410161715620006e2575081810a62000708565b620006ee838362000613565b805f1904821115620007045762000704620005ff565b0290505b92915050565b5f6200071e60ff8416836200065b565b9392505050565b8082028115828204841417620007085762000708620005ff565b5f6020828403121562000750575f80fd5b81516001600160a01b03811681146200071e575f80fd5b80820180821115620007085762000708620005ff565b6122c0806200078b5f395ff3fe608060405260043610610215575f3560e01c80638c0b5e221161011e578063aa4bde28116100a8578063e01af92c1161006d578063e01af92c14610654578063e545fd6d14610673578063f2fde38b14610692578063f66895a3146106b1578063f887ea40146106cf575f80fd5b8063aa4bde281461058f578063aacebbe3146105a4578063c18bc195146105c3578063dbe66ca0146105e2578063dd62ed3e14610610575f80fd5b80639aed7370116100ee5780639aed7370146104f45780639d0014b114610513578063a457c2d714610532578063a8aa1b3114610551578063a9059cbb14610570575f80fd5b80638c0b5e221461048f5780638da5cb5b146104a45780638ea5220f146104c157806395d89b41146104e0575f80fd5b8063313ce5671161019f57806370a082311161016f57806370a08231146103b7578063715018a6146103eb57806375f0a874146103ff5780638091f3bf14610436578063864701a514610456575f80fd5b8063313ce5671461033e57806339509351146103595780636256d181146103785780636ddd171314610397575f80fd5b8063095ea7b3116101e5578063095ea7b31461029e57806318160ddd146102cd5780631816467f146102e157806323b872dd1461030057806325b86edf1461031f575f80fd5b806301339c21146102205780630445b6671461023657806304d4c9901461025e57806306fdde031461027d575f80fd5b3661021c57005b5f80fd5b34801561022b575f80fd5b506102346106ee565b005b348015610241575f80fd5b5061024b60085481565b6040519081526020015b60405180910390f35b348015610269575f80fd5b50610234610278366004611ea5565b6107b3565b348015610288575f80fd5b5061029161098e565b6040516102559190611ee4565b3480156102a9575f80fd5b506102bd6102b8366004611f43565b610a1e565b6040519015158152602001610255565b3480156102d8575f80fd5b5060025461024b565b3480156102ec575f80fd5b506102346102fb366004611f6d565b610a34565b34801561030b575f80fd5b506102bd61031a366004611f8f565b610b1f565b34801561032a575f80fd5b506102bd610339366004611fcd565b610bce565b348015610349575f80fd5b5060405160128152602001610255565b348015610364575f80fd5b506102bd610373366004611f43565b610d22565b348015610383575f80fd5b50610234610392366004612004565b610d58565b3480156103a2575f80fd5b506007546102bd90600160a81b900460ff1681565b3480156103c2575f80fd5b5061024b6103d1366004611f6d565b6001600160a01b03165f9081526020819052604090205490565b3480156103f6575f80fd5b50610234610de5565b34801561040a575f80fd5b50600b5461041e906001600160a01b031681565b6040516001600160a01b039091168152602001610255565b348015610441575f80fd5b506007546102bd90600160b01b900460ff1681565b348015610461575f80fd5b50600d54600e54600f5461047492919083565b60408051938452602084019290925290820152606001610255565b34801561049a575f80fd5b5061024b60095481565b3480156104af575f80fd5b506005546001600160a01b031661041e565b3480156104cc575f80fd5b50600c5461041e906001600160a01b031681565b3480156104eb575f80fd5b50610291610e1a565b3480156104ff575f80fd5b5061023461050e366004612004565b610e29565b34801561051e575f80fd5b5061023461052d366004612004565b610ec0565b34801561053d575f80fd5b506102bd61054c366004611f43565b611008565b34801561055c575f80fd5b5060075461041e906001600160a01b031681565b34801561057b575f80fd5b506102bd61058a366004611f43565b6110a2565b34801561059a575f80fd5b5061024b600a5481565b3480156105af575f80fd5b506102346105be366004611f6d565b6110ae565b3480156105ce575f80fd5b506102346105dd366004612004565b61119f565b3480156105ed575f80fd5b506102bd6105fc366004611f6d565b60156020525f908152604090205460ff1681565b34801561061b575f80fd5b5061024b61062a366004611fcd565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b34801561065f575f80fd5b5061023461066e366004612028565b61122c565b34801561067e575f80fd5b5061023461068d366004612043565b611298565b34801561069d575f80fd5b506102346106ac366004611f6d565b61130f565b3480156106bc575f80fd5b5060105460115460125461047492919083565b3480156106da575f80fd5b5060065461041e906001600160a01b031681565b6005546001600160a01b031633146107215760405162461bcd60e51b81526004016107189061206f565b60405180910390fd5b600754600160b01b900460ff16156107745760405162461bcd60e51b815260206004820152601660248201527554726164696e6720616c72656164792061637469766560501b6044820152606401610718565b6007805461ffff60a81b191661010160a81b1790556040517fba61a96074b3d636edeee92caddc86293c917d5b6818b7d3698bb52e02ec86c8905f90a1565b6005546001600160a01b031633146107dd5760405162461bcd60e51b81526004016107189061206f565b604080516060810182528781526020810187905201849052600d869055600e859055600f8490558361080f86886120b8565b61081991906120b8565b6013556040805160608101825284815260208101849052018190526010839055601182905560128190558061084e83856120b8565b61085891906120b8565b601455601354601a10156108bf5760405162461bcd60e51b815260206004820152602860248201527f546f74616c2062757920666565732063616e6e6f742062652067726561746572604482015267207468616e20352560c01b6064820152608401610718565b601a60145411156109245760405162461bcd60e51b815260206004820152602960248201527f546f74616c2073656c6c20666565732063616e6e6f742062652067726561746560448201526872207468616e20352560b81b6064820152608401610718565b600160145410156109865760405162461bcd60e51b815260206004820152602660248201527f546f74616c2073656c6c20666565732063616e6e6f742062656c65737320207460448201526568616e20312560d01b6064820152608401610718565b505050505050565b60606003805461099d906120cb565b80601f01602080910402602001604051908101604052809291908181526020018280546109c9906120cb565b8015610a145780601f106109eb57610100808354040283529160200191610a14565b820191905f5260205f20905b8154815290600101906020018083116109f757829003601f168201915b5050505050905090565b5f610a2a3384846113aa565b5060015b92915050565b6005546001600160a01b03163314610a5e5760405162461bcd60e51b81526004016107189061206f565b600c546001600160a01b039081165f908152601560205260409020805460ff191690558116610ad95760405162461bcd60e51b815260206004820152602160248201527f4465762057616c6c65742063616e6e6f74206265207a65726f206164647265736044820152607360f81b6064820152608401610718565b600c80546001600160a01b0319166001600160a01b0383161790556040517fb1ff7734afd0bd4b584e4245b67b49289f9a8f5cce43431866ec130f40d81831905f90a150565b5f610b2b8484846114cd565b6001600160a01b0384165f90815260016020908152604080832033845290915290205482811015610baf5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610718565b610bc38533610bbe8685612103565b6113aa565b506001949350505050565b6005545f906001600160a01b03163314610bfa5760405162461bcd60e51b81526004016107189061206f565b6040516370a0823160e01b81523060048201525f906001600160a01b038516906370a0823190602401602060405180830381865afa158015610c3e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c629190612116565b60405163a9059cbb60e01b81526001600160a01b038581166004830152602482018390529192509085169063a9059cbb906044016020604051808303815f875af1158015610cb2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cd6919061212d565b604080516001600160a01b0387168152602081018490529193507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e438910160405180910390a15092915050565b335f8181526001602090815260408083206001600160a01b03871684529091528120549091610a2a918590610bbe9086906120b8565b6005546001600160a01b03163314610d825760405162461bcd60e51b81526004016107189061206f565b622625a0811015610da55760405162461bcd60e51b815260040161071890612148565b610db781670de0b6b3a764000061218b565b6009556040517f3fb2441f7fb0cf4882020ee77c4b9fb347bdbbf2fa439c76ca667e1b55f18b2b905f90a150565b6005546001600160a01b03163314610e0f5760405162461bcd60e51b81526004016107189061206f565b610e185f611805565b565b60606004805461099d906120cb565b6005546001600160a01b03163314610e535760405162461bcd60e51b81526004016107189061206f565b47336108fc6064610e64858561218b565b610e6e91906121a2565b6040518115909202915f818181858888f19350505050158015610e93573d5f803e3d5ffd5b506040517ff20a449062e534a116785d71bddf65609cfc0bc86030f808c97d76660ddb4bf9905f90a15050565b6005546001600160a01b03163314610eea5760405162461bcd60e51b81526004016107189061206f565b612710811015610f5a5760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610718565b6301c9c380811115610fc95760405162461bcd60e51b815260206004820152603260248201527f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160448201527137101992903a37ba30b61039bab838363c9760711b6064820152608401610718565b610fdb81670de0b6b3a764000061218b565b6008556040517ee5ce26a39fffb27e333aa941bc88d6cc7491c7ad00e1dc92cae29c83aec93d905f90a150565b335f9081526001602090815260408083206001600160a01b0386168452909152812054828110156110895760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610718565b6110983385610bbe8685612103565b5060019392505050565b5f610a2a3384846114cd565b6005546001600160a01b031633146110d85760405162461bcd60e51b81526004016107189061206f565b600b546001600160a01b039081165f908152601560205260409020805460ff1916905581166111595760405162461bcd60e51b815260206004820152602760248201527f4d61726b6574696e672057616c6c65742063616e6e6f74206265207a65726f206044820152666164647265737360c81b6064820152608401610718565b600b80546001600160a01b0319166001600160a01b0383161790556040517fecc84d499d57318161ab7effa4a1797c7500e9cce582fce989611566acadb0e0905f90a150565b6005546001600160a01b031633146111c95760405162461bcd60e51b81526004016107189061206f565b622625a08110156111ec5760405162461bcd60e51b815260040161071890612148565b6111fe81670de0b6b3a764000061218b565b600a556040517f49b5ebe6b6bd29b732eb93789df6cb9d7d384e64ab8600b8ab879f82a4fb1dec905f90a150565b6005546001600160a01b031633146112565760405162461bcd60e51b81526004016107189061206f565b6007805460ff60a81b1916600160a81b831515021790556040517f41c787961cb389554b90a8dbfb700790a3f278f50ba1d330c0b555d884789b5a905f90a150565b6005546001600160a01b031633146112c25760405162461bcd60e51b81526004016107189061206f565b6001600160a01b0382165f90815260156020526040808220805460ff1916841515179055517fd03e5aecc1463f851cb441202cc200cd8754891d6b125b332588db1948d4cbed9190a15050565b6005546001600160a01b031633146113395760405162461bcd60e51b81526004016107189061206f565b6001600160a01b03811661139e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610718565b6113a781611805565b50565b6001600160a01b03831661140c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610718565b6001600160a01b03821661146d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610718565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f811161152e5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610718565b6001600160a01b0383165f9081526015602052604090205460ff1615801561156e57506001600160a01b0382165f9081526015602052604090205460ff16155b80156115845750600754600160a01b900460ff16155b156116c657600754600160b01b900460ff166115db5760405162461bcd60e51b8152602060048201526016602482015275151c98591a5b99c81b9bdd081858dd1a5d99481e595d60521b6044820152606401610718565b60095481111561162d5760405162461bcd60e51b815260206004820152601d60248201527f596f752061726520657863656564696e67206d61785478416d6f756e740000006044820152606401610718565b6007546001600160a01b038381169116146116c657600a5481611664846001600160a01b03165f9081526020819052604090205490565b61166e91906120b8565b11156116c65760405162461bcd60e51b815260206004820152602160248201527f596f752061726520657863656564696e67206d617857616c6c6574416d6f756e6044820152601d60fa1b6064820152608401610718565b6007545f90600160a01b900460ff16806116f757506001600160a01b0384165f9081526015602052604090205460ff165b8061171957506001600160a01b0383165f9081526015602052604090205460ff165b1561172557505f611785565b6007546001600160a01b039081169084160361175c5760646014548361174b919061218b565b61175591906121a2565b9050611785565b6007546001600160a01b03908116908516036117825760646013548361174b919061218b565b505f5b600754600160a81b900460ff1680156117a85750600754600160a01b900460ff16155b80156117c257506007546001600160a01b03858116911614155b80156117cd57505f81115b156117da576117da611856565b6117ee84846117e98486612103565b6119be565b80156117ff576117ff8430836119be565b50505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b600754600160a01b900460ff16610e18576007805460ff60a01b1916600160a01b179055305f90815260208190526040812054905060085481106119ae575f60145460026118a4919061218b565b90505f81601060010154846118b9919061218b565b6118c391906121a2565b90505f6118d08285612103565b9050476118dc82611b94565b5f6118e78247612103565b6011549091505f906118f99087612103565b61190390836121a2565b6011549091505f90611915908361218b565b90505f8611801561192557505f81115b15611934576119348682611cdc565b6010545f9061194484600261218b565b61194e919061218b565b9050801561196c57600b5461196c906001600160a01b031682611d8b565b6012545f9061197c85600261218b565b611986919061218b565b905080156119a457600c546119a4906001600160a01b031682611d8b565b5050505050505050505b506007805460ff60a01b19169055565b6001600160a01b038316611a225760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610718565b6001600160a01b038216611a845760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610718565b6001600160a01b0383165f9081526020819052604090205481811015611afb5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610718565b611b058282612103565b6001600160a01b038086165f908152602081905260408082209390935590851681529081208054849290611b3a9084906120b8565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611b8691815260200190565b60405180910390a350505050565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611bc757611bc76121c1565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611c1e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c4291906121d5565b81600181518110611c5557611c556121c1565b6001600160a01b039283166020918202929092010152600654611c7b91309116846113aa565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790611cb39085905f908690309042906004016121f0565b5f604051808303815f87803b158015611cca575f80fd5b505af1158015610986573d5f803e3d5ffd5b600654611cf49030906001600160a01b0316846113aa565b60065460405163f305d71960e01b8152306004820152602481018490525f60448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af1158015611d5f573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611d84919061225f565b5050505050565b80471015611ddb5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610718565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114611e24576040519150601f19603f3d011682016040523d82523d5f602084013e611e29565b606091505b5050905080611ea05760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610718565b505050565b5f805f805f8060c08789031215611eba575f80fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b5f6020808352835180828501525f5b81811015611f0f57858101830151858201604001528201611ef3565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146113a7575f80fd5b5f8060408385031215611f54575f80fd5b8235611f5f81611f2f565b946020939093013593505050565b5f60208284031215611f7d575f80fd5b8135611f8881611f2f565b9392505050565b5f805f60608486031215611fa1575f80fd5b8335611fac81611f2f565b92506020840135611fbc81611f2f565b929592945050506040919091013590565b5f8060408385031215611fde575f80fd5b8235611fe981611f2f565b91506020830135611ff981611f2f565b809150509250929050565b5f60208284031215612014575f80fd5b5035919050565b80151581146113a7575f80fd5b5f60208284031215612038575f80fd5b8135611f888161201b565b5f8060408385031215612054575f80fd5b823561205f81611f2f565b91506020830135611ff98161201b565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610a2e57610a2e6120a4565b600181811c908216806120df57607f821691505b6020821081036120fd57634e487b7160e01b5f52602260045260245ffd5b50919050565b81810381811115610a2e57610a2e6120a4565b5f60208284031215612126575f80fd5b5051919050565b5f6020828403121561213d575f80fd5b8151611f888161201b565b60208082526023908201527f43616e6e6f7420736574206d617853656c6c206c6f776572207468616e20302e60408201526232352560e81b606082015260800190565b8082028115828204841417610a2e57610a2e6120a4565b5f826121bc57634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156121e5575f80fd5b8151611f8881611f2f565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b8181101561223e5784516001600160a01b031683529383019391830191600101612219565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215612271575f80fd5b835192506020840151915060408401519050925092509256fea2646970667358221220f88e5ef4ce65801276777b1d0a67cf9038b0b1abdfab39665e44694ca9f6950f64736f6c63430008140033

Deployed Bytecode

0x608060405260043610610215575f3560e01c80638c0b5e221161011e578063aa4bde28116100a8578063e01af92c1161006d578063e01af92c14610654578063e545fd6d14610673578063f2fde38b14610692578063f66895a3146106b1578063f887ea40146106cf575f80fd5b8063aa4bde281461058f578063aacebbe3146105a4578063c18bc195146105c3578063dbe66ca0146105e2578063dd62ed3e14610610575f80fd5b80639aed7370116100ee5780639aed7370146104f45780639d0014b114610513578063a457c2d714610532578063a8aa1b3114610551578063a9059cbb14610570575f80fd5b80638c0b5e221461048f5780638da5cb5b146104a45780638ea5220f146104c157806395d89b41146104e0575f80fd5b8063313ce5671161019f57806370a082311161016f57806370a08231146103b7578063715018a6146103eb57806375f0a874146103ff5780638091f3bf14610436578063864701a514610456575f80fd5b8063313ce5671461033e57806339509351146103595780636256d181146103785780636ddd171314610397575f80fd5b8063095ea7b3116101e5578063095ea7b31461029e57806318160ddd146102cd5780631816467f146102e157806323b872dd1461030057806325b86edf1461031f575f80fd5b806301339c21146102205780630445b6671461023657806304d4c9901461025e57806306fdde031461027d575f80fd5b3661021c57005b5f80fd5b34801561022b575f80fd5b506102346106ee565b005b348015610241575f80fd5b5061024b60085481565b6040519081526020015b60405180910390f35b348015610269575f80fd5b50610234610278366004611ea5565b6107b3565b348015610288575f80fd5b5061029161098e565b6040516102559190611ee4565b3480156102a9575f80fd5b506102bd6102b8366004611f43565b610a1e565b6040519015158152602001610255565b3480156102d8575f80fd5b5060025461024b565b3480156102ec575f80fd5b506102346102fb366004611f6d565b610a34565b34801561030b575f80fd5b506102bd61031a366004611f8f565b610b1f565b34801561032a575f80fd5b506102bd610339366004611fcd565b610bce565b348015610349575f80fd5b5060405160128152602001610255565b348015610364575f80fd5b506102bd610373366004611f43565b610d22565b348015610383575f80fd5b50610234610392366004612004565b610d58565b3480156103a2575f80fd5b506007546102bd90600160a81b900460ff1681565b3480156103c2575f80fd5b5061024b6103d1366004611f6d565b6001600160a01b03165f9081526020819052604090205490565b3480156103f6575f80fd5b50610234610de5565b34801561040a575f80fd5b50600b5461041e906001600160a01b031681565b6040516001600160a01b039091168152602001610255565b348015610441575f80fd5b506007546102bd90600160b01b900460ff1681565b348015610461575f80fd5b50600d54600e54600f5461047492919083565b60408051938452602084019290925290820152606001610255565b34801561049a575f80fd5b5061024b60095481565b3480156104af575f80fd5b506005546001600160a01b031661041e565b3480156104cc575f80fd5b50600c5461041e906001600160a01b031681565b3480156104eb575f80fd5b50610291610e1a565b3480156104ff575f80fd5b5061023461050e366004612004565b610e29565b34801561051e575f80fd5b5061023461052d366004612004565b610ec0565b34801561053d575f80fd5b506102bd61054c366004611f43565b611008565b34801561055c575f80fd5b5060075461041e906001600160a01b031681565b34801561057b575f80fd5b506102bd61058a366004611f43565b6110a2565b34801561059a575f80fd5b5061024b600a5481565b3480156105af575f80fd5b506102346105be366004611f6d565b6110ae565b3480156105ce575f80fd5b506102346105dd366004612004565b61119f565b3480156105ed575f80fd5b506102bd6105fc366004611f6d565b60156020525f908152604090205460ff1681565b34801561061b575f80fd5b5061024b61062a366004611fcd565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b34801561065f575f80fd5b5061023461066e366004612028565b61122c565b34801561067e575f80fd5b5061023461068d366004612043565b611298565b34801561069d575f80fd5b506102346106ac366004611f6d565b61130f565b3480156106bc575f80fd5b5060105460115460125461047492919083565b3480156106da575f80fd5b5060065461041e906001600160a01b031681565b6005546001600160a01b031633146107215760405162461bcd60e51b81526004016107189061206f565b60405180910390fd5b600754600160b01b900460ff16156107745760405162461bcd60e51b815260206004820152601660248201527554726164696e6720616c72656164792061637469766560501b6044820152606401610718565b6007805461ffff60a81b191661010160a81b1790556040517fba61a96074b3d636edeee92caddc86293c917d5b6818b7d3698bb52e02ec86c8905f90a1565b6005546001600160a01b031633146107dd5760405162461bcd60e51b81526004016107189061206f565b604080516060810182528781526020810187905201849052600d869055600e859055600f8490558361080f86886120b8565b61081991906120b8565b6013556040805160608101825284815260208101849052018190526010839055601182905560128190558061084e83856120b8565b61085891906120b8565b601455601354601a10156108bf5760405162461bcd60e51b815260206004820152602860248201527f546f74616c2062757920666565732063616e6e6f742062652067726561746572604482015267207468616e20352560c01b6064820152608401610718565b601a60145411156109245760405162461bcd60e51b815260206004820152602960248201527f546f74616c2073656c6c20666565732063616e6e6f742062652067726561746560448201526872207468616e20352560b81b6064820152608401610718565b600160145410156109865760405162461bcd60e51b815260206004820152602660248201527f546f74616c2073656c6c20666565732063616e6e6f742062656c65737320207460448201526568616e20312560d01b6064820152608401610718565b505050505050565b60606003805461099d906120cb565b80601f01602080910402602001604051908101604052809291908181526020018280546109c9906120cb565b8015610a145780601f106109eb57610100808354040283529160200191610a14565b820191905f5260205f20905b8154815290600101906020018083116109f757829003601f168201915b5050505050905090565b5f610a2a3384846113aa565b5060015b92915050565b6005546001600160a01b03163314610a5e5760405162461bcd60e51b81526004016107189061206f565b600c546001600160a01b039081165f908152601560205260409020805460ff191690558116610ad95760405162461bcd60e51b815260206004820152602160248201527f4465762057616c6c65742063616e6e6f74206265207a65726f206164647265736044820152607360f81b6064820152608401610718565b600c80546001600160a01b0319166001600160a01b0383161790556040517fb1ff7734afd0bd4b584e4245b67b49289f9a8f5cce43431866ec130f40d81831905f90a150565b5f610b2b8484846114cd565b6001600160a01b0384165f90815260016020908152604080832033845290915290205482811015610baf5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610718565b610bc38533610bbe8685612103565b6113aa565b506001949350505050565b6005545f906001600160a01b03163314610bfa5760405162461bcd60e51b81526004016107189061206f565b6040516370a0823160e01b81523060048201525f906001600160a01b038516906370a0823190602401602060405180830381865afa158015610c3e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c629190612116565b60405163a9059cbb60e01b81526001600160a01b038581166004830152602482018390529192509085169063a9059cbb906044016020604051808303815f875af1158015610cb2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cd6919061212d565b604080516001600160a01b0387168152602081018490529193507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e438910160405180910390a15092915050565b335f8181526001602090815260408083206001600160a01b03871684529091528120549091610a2a918590610bbe9086906120b8565b6005546001600160a01b03163314610d825760405162461bcd60e51b81526004016107189061206f565b622625a0811015610da55760405162461bcd60e51b815260040161071890612148565b610db781670de0b6b3a764000061218b565b6009556040517f3fb2441f7fb0cf4882020ee77c4b9fb347bdbbf2fa439c76ca667e1b55f18b2b905f90a150565b6005546001600160a01b03163314610e0f5760405162461bcd60e51b81526004016107189061206f565b610e185f611805565b565b60606004805461099d906120cb565b6005546001600160a01b03163314610e535760405162461bcd60e51b81526004016107189061206f565b47336108fc6064610e64858561218b565b610e6e91906121a2565b6040518115909202915f818181858888f19350505050158015610e93573d5f803e3d5ffd5b506040517ff20a449062e534a116785d71bddf65609cfc0bc86030f808c97d76660ddb4bf9905f90a15050565b6005546001600160a01b03163314610eea5760405162461bcd60e51b81526004016107189061206f565b612710811015610f5a5760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610718565b6301c9c380811115610fc95760405162461bcd60e51b815260206004820152603260248201527f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160448201527137101992903a37ba30b61039bab838363c9760711b6064820152608401610718565b610fdb81670de0b6b3a764000061218b565b6008556040517ee5ce26a39fffb27e333aa941bc88d6cc7491c7ad00e1dc92cae29c83aec93d905f90a150565b335f9081526001602090815260408083206001600160a01b0386168452909152812054828110156110895760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610718565b6110983385610bbe8685612103565b5060019392505050565b5f610a2a3384846114cd565b6005546001600160a01b031633146110d85760405162461bcd60e51b81526004016107189061206f565b600b546001600160a01b039081165f908152601560205260409020805460ff1916905581166111595760405162461bcd60e51b815260206004820152602760248201527f4d61726b6574696e672057616c6c65742063616e6e6f74206265207a65726f206044820152666164647265737360c81b6064820152608401610718565b600b80546001600160a01b0319166001600160a01b0383161790556040517fecc84d499d57318161ab7effa4a1797c7500e9cce582fce989611566acadb0e0905f90a150565b6005546001600160a01b031633146111c95760405162461bcd60e51b81526004016107189061206f565b622625a08110156111ec5760405162461bcd60e51b815260040161071890612148565b6111fe81670de0b6b3a764000061218b565b600a556040517f49b5ebe6b6bd29b732eb93789df6cb9d7d384e64ab8600b8ab879f82a4fb1dec905f90a150565b6005546001600160a01b031633146112565760405162461bcd60e51b81526004016107189061206f565b6007805460ff60a81b1916600160a81b831515021790556040517f41c787961cb389554b90a8dbfb700790a3f278f50ba1d330c0b555d884789b5a905f90a150565b6005546001600160a01b031633146112c25760405162461bcd60e51b81526004016107189061206f565b6001600160a01b0382165f90815260156020526040808220805460ff1916841515179055517fd03e5aecc1463f851cb441202cc200cd8754891d6b125b332588db1948d4cbed9190a15050565b6005546001600160a01b031633146113395760405162461bcd60e51b81526004016107189061206f565b6001600160a01b03811661139e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610718565b6113a781611805565b50565b6001600160a01b03831661140c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610718565b6001600160a01b03821661146d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610718565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f811161152e5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610718565b6001600160a01b0383165f9081526015602052604090205460ff1615801561156e57506001600160a01b0382165f9081526015602052604090205460ff16155b80156115845750600754600160a01b900460ff16155b156116c657600754600160b01b900460ff166115db5760405162461bcd60e51b8152602060048201526016602482015275151c98591a5b99c81b9bdd081858dd1a5d99481e595d60521b6044820152606401610718565b60095481111561162d5760405162461bcd60e51b815260206004820152601d60248201527f596f752061726520657863656564696e67206d61785478416d6f756e740000006044820152606401610718565b6007546001600160a01b038381169116146116c657600a5481611664846001600160a01b03165f9081526020819052604090205490565b61166e91906120b8565b11156116c65760405162461bcd60e51b815260206004820152602160248201527f596f752061726520657863656564696e67206d617857616c6c6574416d6f756e6044820152601d60fa1b6064820152608401610718565b6007545f90600160a01b900460ff16806116f757506001600160a01b0384165f9081526015602052604090205460ff165b8061171957506001600160a01b0383165f9081526015602052604090205460ff165b1561172557505f611785565b6007546001600160a01b039081169084160361175c5760646014548361174b919061218b565b61175591906121a2565b9050611785565b6007546001600160a01b03908116908516036117825760646013548361174b919061218b565b505f5b600754600160a81b900460ff1680156117a85750600754600160a01b900460ff16155b80156117c257506007546001600160a01b03858116911614155b80156117cd57505f81115b156117da576117da611856565b6117ee84846117e98486612103565b6119be565b80156117ff576117ff8430836119be565b50505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b600754600160a01b900460ff16610e18576007805460ff60a01b1916600160a01b179055305f90815260208190526040812054905060085481106119ae575f60145460026118a4919061218b565b90505f81601060010154846118b9919061218b565b6118c391906121a2565b90505f6118d08285612103565b9050476118dc82611b94565b5f6118e78247612103565b6011549091505f906118f99087612103565b61190390836121a2565b6011549091505f90611915908361218b565b90505f8611801561192557505f81115b15611934576119348682611cdc565b6010545f9061194484600261218b565b61194e919061218b565b9050801561196c57600b5461196c906001600160a01b031682611d8b565b6012545f9061197c85600261218b565b611986919061218b565b905080156119a457600c546119a4906001600160a01b031682611d8b565b5050505050505050505b506007805460ff60a01b19169055565b6001600160a01b038316611a225760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610718565b6001600160a01b038216611a845760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610718565b6001600160a01b0383165f9081526020819052604090205481811015611afb5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610718565b611b058282612103565b6001600160a01b038086165f908152602081905260408082209390935590851681529081208054849290611b3a9084906120b8565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611b8691815260200190565b60405180910390a350505050565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611bc757611bc76121c1565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611c1e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c4291906121d5565b81600181518110611c5557611c556121c1565b6001600160a01b039283166020918202929092010152600654611c7b91309116846113aa565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790611cb39085905f908690309042906004016121f0565b5f604051808303815f87803b158015611cca575f80fd5b505af1158015610986573d5f803e3d5ffd5b600654611cf49030906001600160a01b0316846113aa565b60065460405163f305d71960e01b8152306004820152602481018490525f60448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af1158015611d5f573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611d84919061225f565b5050505050565b80471015611ddb5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610718565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114611e24576040519150601f19603f3d011682016040523d82523d5f602084013e611e29565b606091505b5050905080611ea05760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610718565b505050565b5f805f805f8060c08789031215611eba575f80fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b5f6020808352835180828501525f5b81811015611f0f57858101830151858201604001528201611ef3565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146113a7575f80fd5b5f8060408385031215611f54575f80fd5b8235611f5f81611f2f565b946020939093013593505050565b5f60208284031215611f7d575f80fd5b8135611f8881611f2f565b9392505050565b5f805f60608486031215611fa1575f80fd5b8335611fac81611f2f565b92506020840135611fbc81611f2f565b929592945050506040919091013590565b5f8060408385031215611fde575f80fd5b8235611fe981611f2f565b91506020830135611ff981611f2f565b809150509250929050565b5f60208284031215612014575f80fd5b5035919050565b80151581146113a7575f80fd5b5f60208284031215612038575f80fd5b8135611f888161201b565b5f8060408385031215612054575f80fd5b823561205f81611f2f565b91506020830135611ff98161201b565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610a2e57610a2e6120a4565b600181811c908216806120df57607f821691505b6020821081036120fd57634e487b7160e01b5f52602260045260245ffd5b50919050565b81810381811115610a2e57610a2e6120a4565b5f60208284031215612126575f80fd5b5051919050565b5f6020828403121561213d575f80fd5b8151611f888161201b565b60208082526023908201527f43616e6e6f7420736574206d617853656c6c206c6f776572207468616e20302e60408201526232352560e81b606082015260800190565b8082028115828204841417610a2e57610a2e6120a4565b5f826121bc57634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156121e5575f80fd5b8151611f8881611f2f565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b8181101561223e5784516001600160a01b031683529383019391830191600101612219565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215612271575f80fd5b835192506020840151915060408401519050925092509256fea2646970667358221220f88e5ef4ce65801276777b1d0a67cf9038b0b1abdfab39665e44694ca9f6950f64736f6c63430008140033

Deployed Bytecode Sourcemap

7256:8721:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13286:180;;;;;;;;;;;;;:::i;:::-;;7921:47;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;7921:47:0;;;;;;;;13474:626;;;;;;;;;;-1:-1:-1;13474:626:0;;;;;:::i;:::-;;:::i;1693:100::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;2607:169::-;;;;;;;;;;-1:-1:-1;2607:169:0;;;;;:::i;:::-;;:::i;:::-;;;1898:14:1;;1891:22;1873:41;;1861:2;1846:18;2607:169:0;1733:187:1;2014:108:0;;;;;;;;;;-1:-1:-1;2102:12:0;;2014:108;;14420:262;;;;;;;;;;-1:-1:-1;14420:262:0;;;;;:::i;:::-;;:::i;2784:422::-;;;;;;;;;;-1:-1:-1;2784:422:0;;;;;:::i;:::-;;:::i;15355:310::-;;;;;;;;;;-1:-1:-1;15355:310:0;;;;;:::i;:::-;;:::i;1913:93::-;;;;;;;;;;-1:-1:-1;1913:93:0;;1996:2;3173:36:1;;3161:2;3146:18;1913:93:0;3031:184:1;3214:215:0;;;;;;;;;;-1:-1:-1;3214:215:0;;;;;:::i;:::-;;:::i;14877:223::-;;;;;;;;;;-1:-1:-1;14877:223:0;;;;;:::i;:::-;;:::i;7434:23::-;;;;;;;;;;-1:-1:-1;7434:23:0;;;;-1:-1:-1;;;7434:23:0;;;;;;2130:127;;;;;;;;;;-1:-1:-1;2130:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;2231:18:0;2204:7;2231:18;;;;;;;;;;;;2130:127;6033:94;;;;;;;;;;;;;:::i;8119:75::-;;;;;;;;;;-1:-1:-1;8119:75:0;;;;-1:-1:-1;;;;;8119:75:0;;;;;;-1:-1:-1;;;;;3569:32:1;;;3551:51;;3539:2;3524:18;8119:75:0;3405:203:1;7464:20:0;;;;;;;;;;-1:-1:-1;7464:20:0;;;;-1:-1:-1;;;7464:20:0;;;;;;8395:36;;;;;;;;;;-1:-1:-1;8395:36:0;;;;;;;;;;;;;;;;3815:25:1;;;3871:2;3856:18;;3849:34;;;;3899:18;;;3892:34;3803:2;3788:18;8395:36:0;3613:319:1;7998:48:0;;;;;;;;;;;;;;;;5810:87;;;;;;;;;;-1:-1:-1;5883:6:0;;-1:-1:-1;;;;;5883:6:0;5810:87;;8201:69;;;;;;;;;;-1:-1:-1;8201:69:0;;;;-1:-1:-1;;;;;8201:69:0;;;1801:104;;;;;;;;;;;;;:::i;15673:244::-;;;;;;;;;;-1:-1:-1;15673:244:0;;;;;:::i;:::-;;:::i;12927:351::-;;;;;;;;;;-1:-1:-1;12927:351:0;;;;;:::i;:::-;;:::i;3437:377::-;;;;;;;;;;-1:-1:-1;3437:377:0;;;;;:::i;:::-;;:::i;7374:19::-;;;;;;;;;;-1:-1:-1;7374:19:0;;;;-1:-1:-1;;;;;7374:19:0;;;2265:175;;;;;;;;;;-1:-1:-1;2265:175:0;;;;;:::i;:::-;;:::i;8054:52::-;;;;;;;;;;;;;;;;14112:297;;;;;;;;;;-1:-1:-1;14112:297:0;;;;;:::i;:::-;;:::i;15112:235::-;;;;;;;;;;-1:-1:-1;15112:235:0;;;;;:::i;:::-;;:::i;8561:49::-;;;;;;;;;;-1:-1:-1;8561:49:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;2448:151;;;;;;;;;;-1:-1:-1;2448:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;2564:18:0;;;2537:7;2564:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;2448:151;12752:167;;;;;;;;;;-1:-1:-1;12752:167:0;;;;;:::i;:::-;;:::i;14690:175::-;;;;;;;;;;-1:-1:-1;14690:175:0;;;;;:::i;:::-;;:::i;6135:192::-;;;;;;;;;;-1:-1:-1;6135:192:0;;;;;:::i;:::-;;:::i;8438:37::-;;;;;;;;;;-1:-1:-1;8438:37:0;;;;;;;;;;;;7346:21;;;;;;;;;;-1:-1:-1;7346:21:0;;;;-1:-1:-1;;;;;7346:21:0;;;13286:180;5883:6;;-1:-1:-1;;;;;5883:6:0;175:10;5945:23;5937:68;;;;-1:-1:-1;;;5937:68:0;;;;;;;:::i;:::-;;;;;;;;;13342:8:::1;::::0;-1:-1:-1;;;13342:8:0;::::1;;;13341:9;13333:44;;;::::0;-1:-1:-1;;;13333:44:0;;5479:2:1;13333:44:0::1;::::0;::::1;5461:21:1::0;5518:2;5498:18;;;5491:30;-1:-1:-1;;;5537:18:1;;;5530:52;5599:18;;13333:44:0::1;5277:346:1::0;13333:44:0::1;13388:8;:15:::0;;-1:-1:-1;;;;13414:18:0;-1:-1:-1;;;13414:18:0;;;13448:10:::1;::::0;::::1;::::0;-1:-1:-1;;13448:10:0::1;13286:180::o:0;13474:626::-;5883:6;;-1:-1:-1;;;;;5883:6:0;175:10;5945:23;5937:68;;;;-1:-1:-1;;;5937:68:0;;;;;;;:::i;:::-;13646:38:::1;::::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;13635:8:::1;:49:::0;;;;;;;;;;;13678:5;13707:25:::1;13665:11:::0;13652;13707:25:::1;:::i;:::-;:33;;;;:::i;:::-;13695:9;:45:::0;13763:38:::1;::::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;13751:9:::1;:50:::0;;;;;;;;;;;13795:5;13825:25:::1;13782:11:::0;13769;13825:25:::1;:::i;:::-;:33;;;;:::i;:::-;13812:10;:46:::0;13877:9:::1;::::0;13890:2:::1;-1:-1:-1::0;13877:15:0::1;13869:67;;;::::0;-1:-1:-1;;;13869:67:0;;6092:2:1;13869:67:0::1;::::0;::::1;6074:21:1::0;6131:2;6111:18;;;6104:30;6170:34;6150:18;;;6143:62;-1:-1:-1;;;6221:18:1;;;6214:38;6269:19;;13869:67:0::1;5890:404:1::0;13869:67:0::1;13969:2;13955:10;;:16;;13947:69;;;::::0;-1:-1:-1;;;13947:69:0;;6501:2:1;13947:69:0::1;::::0;::::1;6483:21:1::0;6540:2;6520:18;;;6513:30;6579:34;6559:18;;;6552:62;-1:-1:-1;;;6630:18:1;;;6623:39;6679:19;;13947:69:0::1;6299:405:1::0;13947:69:0::1;14049:1;14035:10;;:15;;14027:65;;;::::0;-1:-1:-1;;;14027:65:0;;6911:2:1;14027:65:0::1;::::0;::::1;6893:21:1::0;6950:2;6930:18;;;6923:30;6989:34;6969:18;;;6962:62;-1:-1:-1;;;7040:18:1;;;7033:36;7086:19;;14027:65:0::1;6709:402:1::0;14027:65:0::1;13474:626:::0;;;;;;:::o;1693:100::-;1747:13;1780:5;1773:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1693:100;:::o;2607:169::-;2690:4;2707:39;175:10;2730:7;2739:6;2707:8;:39::i;:::-;-1:-1:-1;2764:4:0;2607:169;;;;;:::o;14420:262::-;5883:6;;-1:-1:-1;;;;;5883:6:0;175:10;5945:23;5937:68;;;;-1:-1:-1;;;5937:68:0;;;;;;;:::i;:::-;14510:9:::1;::::0;-1:-1:-1;;;;;14510:9:0;;::::1;14523:5;14493:27:::0;;;:16:::1;:27;::::0;;;;:35;;-1:-1:-1;;14493:35:0::1;::::0;;14547:23;::::1;14539:69;;;::::0;-1:-1:-1;;;14539:69:0;;7703:2:1;14539:69:0::1;::::0;::::1;7685:21:1::0;7742:2;7722:18;;;7715:30;7781:34;7761:18;;;7754:62;-1:-1:-1;;;7832:18:1;;;7825:31;7873:19;;14539:69:0::1;7501:397:1::0;14539:69:0::1;14619:9;:21:::0;;-1:-1:-1;;;;;;14619:21:0::1;-1:-1:-1::0;;;;;14619:21:0;::::1;;::::0;;14656:18:::1;::::0;::::1;::::0;-1:-1:-1;;14656:18:0::1;14420:262:::0;:::o;2784:422::-;2890:4;2907:36;2917:6;2925:9;2936:6;2907:9;:36::i;:::-;-1:-1:-1;;;;;2983:19:0;;2956:24;2983:19;;;:11;:19;;;;;;;;175:10;2983:33;;;;;;;;3035:26;;;;3027:79;;;;-1:-1:-1;;;3027:79:0;;8105:2:1;3027:79:0;;;8087:21:1;8144:2;8124:18;;;8117:30;8183:34;8163:18;;;8156:62;-1:-1:-1;;;8234:18:1;;;8227:38;8282:19;;3027:79:0;7903:404:1;3027:79:0;3117:57;3126:6;175:10;3148:25;3167:6;3148:16;:25;:::i;:::-;3117:8;:57::i;:::-;-1:-1:-1;3194:4:0;;2784:422;-1:-1:-1;;;;2784:422:0:o;15355:310::-;5883:6;;15441:10;;-1:-1:-1;;;;;5883:6:0;175:10;5945:23;5937:68;;;;-1:-1:-1;;;5937:68:0;;;;;;;:::i;:::-;15491:39:::1;::::0;-1:-1:-1;;;15491:39:0;;15524:4:::1;15491:39;::::0;::::1;3551:51:1::0;15464:24:0::1;::::0;-1:-1:-1;;;;;15491:24:0;::::1;::::0;::::1;::::0;3524:18:1;;15491:39:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15549:46;::::0;-1:-1:-1;;;15549:46:0;;-1:-1:-1;;;;;8826:32:1;;;15549:46:0::1;::::0;::::1;8808:51:1::0;8875:18;;;8868:34;;;15464:66:0;;-1:-1:-1;15549:23:0;;::::1;::::0;::::1;::::0;8781:18:1;;15549:46:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15611;::::0;;-1:-1:-1;;;;;8826:32:1;;8808:51;;8890:2;8875:18;;8868:34;;;15541:54:0;;-1:-1:-1;15611:46:0::1;::::0;8781:18:1;15611:46:0::1;;;;;;;15453:212;15355:310:::0;;;;:::o;3214:215::-;175:10;3302:4;3351:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;3351:34:0;;;;;;;;;;3302:4;;3319:80;;3342:7;;3351:47;;3388:10;;3351:47;:::i;14877:223::-;5883:6;;-1:-1:-1;;;;;5883:6:0;175:10;5945:23;5937:68;;;;-1:-1:-1;;;5937:68:0;;;;;;;:::i;:::-;14967:7:::1;14957:6;:17;;14949:65;;;;-1:-1:-1::0;;;14949:65:0::1;;;;;;;:::i;:::-;15039:17;:6:::0;15049::::1;15039:17;:::i;:::-;15025:11;:31:::0;15072:20:::1;::::0;::::1;::::0;;;::::1;14877:223:::0;:::o;6033:94::-;5883:6;;-1:-1:-1;;;;;5883:6:0;175:10;5945:23;5937:68;;;;-1:-1:-1;;;5937:68:0;;;;;;;:::i;:::-;6098:21:::1;6116:1;6098:9;:21::i;:::-;6033:94::o:0;1801:104::-;1857:13;1890:7;1883:14;;;;;:::i;15673:244::-;5883:6;;-1:-1:-1;;;;;5883:6:0;175:10;5945:23;5937:68;;;;-1:-1:-1;;;5937:68:0;;;;;;;:::i;:::-;15775:21:::1;15815:10;15807:66;15869:3;15837:28;15849:16:::0;15775:21;15837:28:::1;:::i;:::-;15836:36;;;;:::i;:::-;15807:66;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;15889:20:0::1;::::0;::::1;::::0;;;::::1;15744:173;15673:244:::0;:::o;12927:351::-;5883:6;;-1:-1:-1;;;;;5883:6:0;175:10;5945:23;5937:68;;;;-1:-1:-1;;;5937:68:0;;;;;;;:::i;:::-;13025:5:::1;13011:10;:19;;13003:85;;;::::0;-1:-1:-1;;;13003:85:0;;10164:2:1;13003:85:0::1;::::0;::::1;10146:21:1::0;10203:2;10183:18;;;10176:30;10242:34;10222:18;;;10215:62;-1:-1:-1;;;10293:18:1;;;10286:51;10354:19;;13003:85:0::1;9962:417:1::0;13003:85:0::1;13121:8;13107:10;:22;;13099:85;;;::::0;-1:-1:-1;;;13099:85:0;;10586:2:1;13099:85:0::1;::::0;::::1;10568:21:1::0;10625:2;10605:18;;;10598:30;10664:34;10644:18;;;10637:62;-1:-1:-1;;;10715:18:1;;;10708:48;10773:19;;13099:85:0::1;10384:414:1::0;13099:85:0::1;13211:21;:10:::0;13225:6:::1;13211:21;:::i;:::-;13195:13;:37:::0;13248:22:::1;::::0;::::1;::::0;;;::::1;12927:351:::0;:::o;3437:377::-;175:10;3530:4;3574:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;3574:34:0;;;;;;;;;;3627:35;;;;3619:85;;;;-1:-1:-1;;;3619:85:0;;11005:2:1;3619:85:0;;;10987:21:1;11044:2;11024:18;;;11017:30;11083:34;11063:18;;;11056:62;-1:-1:-1;;;11134:18:1;;;11127:35;11179:19;;3619:85:0;10803:401:1;3619:85:0;3715:67;175:10;3738:7;3747:34;3766:15;3747:16;:34;:::i;3715:67::-;-1:-1:-1;3802:4:0;;3437:377;-1:-1:-1;;;3437:377:0:o;2265:175::-;2351:4;2368:42;175:10;2392:9;2403:6;2368:9;:42::i;14112:297::-;5883:6;;-1:-1:-1;;;;;5883:6:0;175:10;5945:23;5937:68;;;;-1:-1:-1;;;5937:68:0;;;;;;;:::i;:::-;14208:15:::1;::::0;-1:-1:-1;;;;;14208:15:0;;::::1;14227:5;14191:33:::0;;;:16:::1;:33;::::0;;;;:41;;-1:-1:-1;;14191:41:0::1;::::0;;14251:23;::::1;14243:75;;;::::0;-1:-1:-1;;;14243:75:0;;11411:2:1;14243:75:0::1;::::0;::::1;11393:21:1::0;11450:2;11430:18;;;11423:30;11489:34;11469:18;;;11462:62;-1:-1:-1;;;11540:18:1;;;11533:37;11587:19;;14243:75:0::1;11209:403:1::0;14243:75:0::1;14329:15;:27:::0;;-1:-1:-1;;;;;;14329:27:0::1;-1:-1:-1::0;;;;;14329:27:0;::::1;;::::0;;14372:24:::1;::::0;::::1;::::0;-1:-1:-1;;14372:24:0::1;14112:297:::0;:::o;15112:235::-;5883:6;;-1:-1:-1;;;;;5883:6:0;175:10;5945:23;5937:68;;;;-1:-1:-1;;;5937:68:0;;;;;;;:::i;:::-;15206:7:::1;15196:6;:17;;15188:65;;;;-1:-1:-1::0;;;15188:65:0::1;;;;;;;:::i;:::-;15282:17;:6:::0;15292::::1;15282:17;:::i;:::-;15264:15;:35:::0;15315:24:::1;::::0;::::1;::::0;;;::::1;15112:235:::0;:::o;12752:167::-;5883:6;;-1:-1:-1;;;;;5883:6:0;175:10;5945:23;5937:68;;;;-1:-1:-1;;;5937:68:0;;;;;;;:::i;:::-;12863:11:::1;:19:::0;;-1:-1:-1;;;;12863:19:0::1;-1:-1:-1::0;;;12863:19:0;::::1;;;;::::0;;12898:13:::1;::::0;::::1;::::0;-1:-1:-1;;12898:13:0::1;12752:167:::0;:::o;14690:175::-;5883:6;;-1:-1:-1;;;;;5883:6:0;175:10;5945:23;5937:68;;;;-1:-1:-1;;;5937:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14782:26:0;::::1;;::::0;;;:16:::1;:26;::::0;;;;;:34;;-1:-1:-1;;14782:34:0::1;::::0;::::1;;;::::0;;14832:25;::::1;::::0;14782:26;14832:25:::1;14690:175:::0;;:::o;6135:192::-;5883:6;;-1:-1:-1;;;;;5883:6:0;175:10;5945:23;5937:68;;;;-1:-1:-1;;;5937:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6224:22:0;::::1;6216:73;;;::::0;-1:-1:-1;;;6216:73:0;;11819:2:1;6216:73:0::1;::::0;::::1;11801:21:1::0;11858:2;11838:18;;;11831:30;11897:34;11877:18;;;11870:62;-1:-1:-1;;;11948:18:1;;;11941:36;11994:19;;6216:73:0::1;11617:402:1::0;6216:73:0::1;6300:19;6310:8;6300:9;:19::i;:::-;6135:192:::0;:::o;4780:346::-;-1:-1:-1;;;;;4882:19:0;;4874:68;;;;-1:-1:-1;;;4874:68:0;;12226:2:1;4874:68:0;;;12208:21:1;12265:2;12245:18;;;12238:30;12304:34;12284:18;;;12277:62;-1:-1:-1;;;12355:18:1;;;12348:34;12399:19;;4874:68:0;12024:400:1;4874:68:0;-1:-1:-1;;;;;4961:21:0;;4953:68;;;;-1:-1:-1;;;4953:68:0;;12631:2:1;4953:68:0;;;12613:21:1;12670:2;12650:18;;;12643:30;12709:34;12689:18;;;12682:62;-1:-1:-1;;;12760:18:1;;;12753:32;12802:19;;4953:68:0;12429:398:1;4953:68:0;-1:-1:-1;;;;;5034:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;5086:32;;160:25:1;;;5086:32:0;;133:18:1;5086:32:0;;;;;;;4780:346;;;:::o;9329:1145::-;9445:1;9436:6;:10;9428:64;;;;-1:-1:-1;;;9428:64:0;;13034:2:1;9428:64:0;;;13016:21:1;13073:2;13053:18;;;13046:30;13112:34;13092:18;;;13085:62;-1:-1:-1;;;13163:18:1;;;13156:39;13212:19;;9428:64:0;12832:405:1;9428:64:0;-1:-1:-1;;;;;9535:24:0;;;;;;:16;:24;;;;;;;;9534:25;:57;;;;-1:-1:-1;;;;;;9564:27:0;;;;;;:16;:27;;;;;;;;9563:28;9534:57;:70;;;;-1:-1:-1;9596:8:0;;-1:-1:-1;;;9596:8:0;;;;9595:9;9534:70;9531:386;;;9628:8;;-1:-1:-1;;;9628:8:0;;;;9620:43;;;;-1:-1:-1;;;9620:43:0;;13444:2:1;9620:43:0;;;13426:21:1;13483:2;13463:18;;;13456:30;-1:-1:-1;;;13502:18:1;;;13495:52;13564:18;;9620:43:0;13242:346:1;9620:43:0;9696:11;;9686:6;:21;;9678:63;;;;-1:-1:-1;;;9678:63:0;;13795:2:1;9678:63:0;;;13777:21:1;13834:2;13814:18;;;13807:30;13873:31;13853:18;;;13846:59;13922:18;;9678:63:0;13593:353:1;9678:63:0;9772:4;;-1:-1:-1;;;;;9759:17:0;;;9772:4;;9759:17;9756:150;;9837:15;;9827:6;9804:20;9814:9;-1:-1:-1;;;;;2231:18:0;2204:7;2231:18;;;;;;;;;;;;2130:127;9804:20;:29;;;;:::i;:::-;:48;;9796:94;;;;-1:-1:-1;;;9796:94:0;;14153:2:1;9796:94:0;;;14135:21:1;14192:2;14172:18;;;14165:30;14231:34;14211:18;;;14204:62;-1:-1:-1;;;14282:18:1;;;14275:31;14323:19;;9796:94:0;13951:397:1;9796:94:0;9967:8;;9929:11;;-1:-1:-1;;;9967:8:0;;;;;:36;;-1:-1:-1;;;;;;9979:24:0;;;;;;:16;:24;;;;;;;;9967:36;:67;;;-1:-1:-1;;;;;;10007:27:0;;;;;;:16;:27;;;;;;;;9967:67;9963:282;;;-1:-1:-1;10042:1:0;9963:282;;;10100:4;;-1:-1:-1;;;;;10100:4:0;;;10087:17;;;;10084:149;;10134:3;10121:10;;10112:6;:19;;;;:::i;:::-;:25;;;;:::i;:::-;10106:31;;10084:149;;;10170:4;;-1:-1:-1;;;;;10170:4:0;;;10160:14;;;;10157:76;;10203:3;10191:9;;10182:6;:18;;;;:::i;10157:76::-;-1:-1:-1;10232:1:0;10157:76;10269:11;;-1:-1:-1;;;10269:11:0;;;;:24;;;;-1:-1:-1;10285:8:0;;-1:-1:-1;;;10285:8:0;;;;10284:9;10269:24;:42;;;;-1:-1:-1;10307:4:0;;-1:-1:-1;;;;;10297:14:0;;;10307:4;;10297:14;;10269:42;:53;;;;;10321:1;10315:3;:7;10269:53;10265:72;;;10324:13;:11;:13::i;:::-;10350:48;10366:6;10374:9;10385:12;10394:3;10385:6;:12;:::i;:::-;10350:15;:48::i;:::-;10412:7;;10409:55;;10421:43;10437:6;10453:4;10460:3;10421:15;:43::i;:::-;9417:1057;9329:1145;;;:::o;6335:173::-;6410:6;;;-1:-1:-1;;;;;6427:17:0;;;-1:-1:-1;;;;;;6427:17:0;;;;;;;6460:40;;6410:6;;;6427:17;6410:6;;6460:40;;6391:16;;6460:40;6380:128;6335:173;:::o;10480:1349::-;8657:8;;-1:-1:-1;;;8657:8:0;;;;8652:104;;8682:8;:15;;-1:-1:-1;;;;8682:15:0;-1:-1:-1;;;8682:15:0;;;10573:4:::1;-1:-1:-1::0;2231:18:0;;;;;;;;;;;10529:50:::1;;10615:13;;10596:15;:32;10592:1230;;10647:19;10669:10;;10682:1;10669:14;;;;:::i;:::-;10647:36;;10698:32;10773:11;10751:9;:19;;;10733:15;:37;;;;:::i;:::-;:51;;;;:::i;:::-;10698:86:::0;-1:-1:-1;10799:14:0::1;10816:42;10698:86:::0;10816:15;:42:::1;:::i;:::-;10799:59:::0;-1:-1:-1;10904:21:0::1;10946:24;10799:59:::0;10946:16:::1;:24::i;:::-;10991:20;11014:38;11038:14:::0;11014:21:::1;:38;:::i;:::-;11118:19:::0;;10991:61;;-1:-1:-1;11067:19:0::1;::::0;11104:33:::1;::::0;:11;:33:::1;:::i;:::-;11088:50;::::0;:12;:50:::1;:::i;:::-;11199:19:::0;;11067:71;;-1:-1:-1;11153:29:0::1;::::0;11185:33:::1;::::0;11067:71;11185:33:::1;:::i;:::-;11153:65;;11269:1;11242:24;:28;:57;;;;;11298:1;11274:21;:25;11242:57;11239:198;;;11360:61;11373:24;11399:21;11360:12;:61::i;:::-;11498:9;:19:::0;11457:20:::1;::::0;11480:15:::1;:11:::0;11494:1:::1;11480:15;:::i;:::-;:37;;;;:::i;:::-;11457:60:::0;-1:-1:-1;11535:16:0;;11532:103:::1;;11579:15;::::0;11571:48:::1;::::0;-1:-1:-1;;;;;11579:15:0::1;11606:12:::0;11571:34:::1;:48::i;:::-;11698:13:::0;;11663:14:::1;::::0;11680:15:::1;:11:::0;11698:13:::1;11680:15;:::i;:::-;:31;;;;:::i;:::-;11663:48:::0;-1:-1:-1;11729:10:0;;11726:85:::1;;11767:9;::::0;11759:36:::1;::::0;-1:-1:-1;;;;;11767:9:0::1;11788:6:::0;11759:28:::1;:36::i;:::-;10630:1192;;;;;;;;;10592:1230;-1:-1:-1::0;8728:8:0;:16;;-1:-1:-1;;;;8728:16:0;;;10480:1349::o;3822:604::-;-1:-1:-1;;;;;3928:20:0;;3920:70;;;;-1:-1:-1;;;3920:70:0;;14555:2:1;3920:70:0;;;14537:21:1;14594:2;14574:18;;;14567:30;14633:34;14613:18;;;14606:62;-1:-1:-1;;;14684:18:1;;;14677:35;14729:19;;3920:70:0;14353:401:1;3920:70:0;-1:-1:-1;;;;;4009:23:0;;4001:71;;;;-1:-1:-1;;;4001:71:0;;14961:2:1;4001:71:0;;;14943:21:1;15000:2;14980:18;;;14973:30;15039:34;15019:18;;;15012:62;-1:-1:-1;;;15090:18:1;;;15083:33;15133:19;;4001:71:0;14759:399:1;4001:71:0;-1:-1:-1;;;;;4169:17:0;;4145:21;4169:17;;;;;;;;;;;4205:23;;;;4197:74;;;;-1:-1:-1;;;4197:74:0;;15365:2:1;4197:74:0;;;15347:21:1;15404:2;15384:18;;;15377:30;15443:34;15423:18;;;15416:62;-1:-1:-1;;;15494:18:1;;;15487:36;15540:19;;4197:74:0;15163:402:1;4197:74:0;4302:22;4318:6;4302:13;:22;:::i;:::-;-1:-1:-1;;;;;4282:17:0;;;:9;:17;;;;;;;;;;;:42;;;;4335:20;;;;;;;;:30;;4359:6;;4282:9;4335:30;;4359:6;;4335:30;:::i;:::-;;;;;;;;4400:9;-1:-1:-1;;;;;4383:35:0;4392:6;-1:-1:-1;;;;;4383:35:0;;4411:6;4383:35;;;;160:25:1;;148:2;133:18;;14:177;4383:35:0;;;;;;;;3909:517;3822:604;;;:::o;11837:398::-;11927:16;;;11941:1;11927:16;;;;;;;;11903:21;;11927:16;;;;;;;;;;-1:-1:-1;11927:16:0;11903:40;;11972:4;11954;11959:1;11954:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;11954:23:0;;;:7;;;;;;;;;;:23;;;;11998:6;;:13;;;-1:-1:-1;;;11998:13:0;;;;:6;;;;;:11;;:13;;;;;11954:7;;11998:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11988:4;11993:1;11988:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;11988:23:0;;;:7;;;;;;;;;:23;12056:6;;12024:53;;12041:4;;12056:6;12065:11;12024:8;:53::i;:::-;12116:6;;:111;;-1:-1:-1;;;12116:111:0;;-1:-1:-1;;;;;12116:6:0;;;;:57;;:111;;12174:11;;12116:6;;12190:4;;12204;;12211:15;;12116:111;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12243:503;12423:6;;12391:53;;12408:4;;-1:-1:-1;;;;;12423:6:0;12432:11;12391:8;:53::i;:::-;12487:6;;:251;;-1:-1:-1;;;12487:251:0;;12550:4;12487:251;;;17416:34:1;17466:18;;;17459:34;;;12487:6:0;17509:18:1;;;17502:34;;;17552:18;;;17545:34;12690:6:0;17595:19:1;;;17588:44;12712:15:0;17648:19:1;;;17641:35;-1:-1:-1;;;;;12487:6:0;;;;:22;;12517:9;;17350:19:1;;12487:251:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;12243:503;;:::o;5255:317::-;5370:6;5345:21;:31;;5337:73;;;;-1:-1:-1;;;5337:73:0;;18200:2:1;5337:73:0;;;18182:21:1;18239:2;18219:18;;;18212:30;18278:31;18258:18;;;18251:59;18327:18;;5337:73:0;17998:353:1;5337:73:0;5424:12;5442:9;-1:-1:-1;;;;;5442:14:0;5464:6;5442:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5423:52;;;5494:7;5486:78;;;;-1:-1:-1;;;5486:78:0;;18768:2:1;5486:78:0;;;18750:21:1;18807:2;18787:18;;;18780:30;18846:34;18826:18;;;18819:62;18917:28;18897:18;;;18890:56;18963:19;;5486:78:0;18566:422:1;5486:78:0;5326:246;5255:317;;:::o;196:523:1:-;300:6;308;316;324;332;340;393:3;381:9;372:7;368:23;364:33;361:53;;;410:1;407;400:12;361:53;-1:-1:-1;;433:23:1;;;503:2;488:18;;475:32;;-1:-1:-1;554:2:1;539:18;;526:32;;605:2;590:18;;577:32;;-1:-1:-1;656:3:1;641:19;;628:33;;-1:-1:-1;708:3:1;693:19;680:33;;-1:-1:-1;196:523:1;-1:-1:-1;196:523:1:o;724:548::-;836:4;865:2;894;883:9;876:21;926:6;920:13;969:6;964:2;953:9;949:18;942:34;994:1;1004:140;1018:6;1015:1;1012:13;1004:140;;;1113:14;;;1109:23;;1103:30;1079:17;;;1098:2;1075:26;1068:66;1033:10;;1004:140;;;1008:3;1193:1;1188:2;1179:6;1168:9;1164:22;1160:31;1153:42;1263:2;1256;1252:7;1247:2;1239:6;1235:15;1231:29;1220:9;1216:45;1212:54;1204:62;;;;724:548;;;;:::o;1277:131::-;-1:-1:-1;;;;;1352:31:1;;1342:42;;1332:70;;1398:1;1395;1388:12;1413:315;1481:6;1489;1542:2;1530:9;1521:7;1517:23;1513:32;1510:52;;;1558:1;1555;1548:12;1510:52;1597:9;1584:23;1616:31;1641:5;1616:31;:::i;:::-;1666:5;1718:2;1703:18;;;;1690:32;;-1:-1:-1;;;1413:315:1:o;1925:247::-;1984:6;2037:2;2025:9;2016:7;2012:23;2008:32;2005:52;;;2053:1;2050;2043:12;2005:52;2092:9;2079:23;2111:31;2136:5;2111:31;:::i;:::-;2161:5;1925:247;-1:-1:-1;;;1925:247:1:o;2177:456::-;2254:6;2262;2270;2323:2;2311:9;2302:7;2298:23;2294:32;2291:52;;;2339:1;2336;2329:12;2291:52;2378:9;2365:23;2397:31;2422:5;2397:31;:::i;:::-;2447:5;-1:-1:-1;2504:2:1;2489:18;;2476:32;2517:33;2476:32;2517:33;:::i;:::-;2177:456;;2569:7;;-1:-1:-1;;;2623:2:1;2608:18;;;;2595:32;;2177:456::o;2638:388::-;2706:6;2714;2767:2;2755:9;2746:7;2742:23;2738:32;2735:52;;;2783:1;2780;2773:12;2735:52;2822:9;2809:23;2841:31;2866:5;2841:31;:::i;:::-;2891:5;-1:-1:-1;2948:2:1;2933:18;;2920:32;2961:33;2920:32;2961:33;:::i;:::-;3013:7;3003:17;;;2638:388;;;;;:::o;3220:180::-;3279:6;3332:2;3320:9;3311:7;3307:23;3303:32;3300:52;;;3348:1;3345;3338:12;3300:52;-1:-1:-1;3371:23:1;;3220:180;-1:-1:-1;3220:180:1:o;3937:118::-;4023:5;4016:13;4009:21;4002:5;3999:32;3989:60;;4045:1;4042;4035:12;4060:241;4116:6;4169:2;4157:9;4148:7;4144:23;4140:32;4137:52;;;4185:1;4182;4175:12;4137:52;4224:9;4211:23;4243:28;4265:5;4243:28;:::i;4306:382::-;4371:6;4379;4432:2;4420:9;4411:7;4407:23;4403:32;4400:52;;;4448:1;4445;4438:12;4400:52;4487:9;4474:23;4506:31;4531:5;4506:31;:::i;:::-;4556:5;-1:-1:-1;4613:2:1;4598:18;;4585:32;4626:30;4585:32;4626:30;:::i;4916:356::-;5118:2;5100:21;;;5137:18;;;5130:30;5196:34;5191:2;5176:18;;5169:62;5263:2;5248:18;;4916:356::o;5628:127::-;5689:10;5684:3;5680:20;5677:1;5670:31;5720:4;5717:1;5710:15;5744:4;5741:1;5734:15;5760:125;5825:9;;;5846:10;;;5843:36;;;5859:18;;:::i;7116:380::-;7195:1;7191:12;;;;7238;;;7259:61;;7313:4;7305:6;7301:17;7291:27;;7259:61;7366:2;7358:6;7355:14;7335:18;7332:38;7329:161;;7412:10;7407:3;7403:20;7400:1;7393:31;7447:4;7444:1;7437:15;7475:4;7472:1;7465:15;7329:161;;7116:380;;;:::o;8312:128::-;8379:9;;;8400:11;;;8397:37;;;8414:18;;:::i;8445:184::-;8515:6;8568:2;8556:9;8547:7;8543:23;8539:32;8536:52;;;8584:1;8581;8574:12;8536:52;-1:-1:-1;8607:16:1;;8445:184;-1:-1:-1;8445:184:1:o;8913:245::-;8980:6;9033:2;9021:9;9012:7;9008:23;9004:32;9001:52;;;9049:1;9046;9039:12;9001:52;9081:9;9075:16;9100:28;9122:5;9100:28;:::i;9163:399::-;9365:2;9347:21;;;9404:2;9384:18;;;9377:30;9443:34;9438:2;9423:18;;9416:62;-1:-1:-1;;;9509:2:1;9494:18;;9487:33;9552:3;9537:19;;9163:399::o;9567:168::-;9640:9;;;9671;;9688:15;;;9682:22;;9668:37;9658:71;;9709:18;;:::i;9740:217::-;9780:1;9806;9796:132;;9850:10;9845:3;9841:20;9838:1;9831:31;9885:4;9882:1;9875:15;9913:4;9910:1;9903:15;9796:132;-1:-1:-1;9942:9:1;;9740:217::o;15702:127::-;15763:10;15758:3;15754:20;15751:1;15744:31;15794:4;15791:1;15784:15;15818:4;15815:1;15808:15;15834:251;15904:6;15957:2;15945:9;15936:7;15932:23;15928:32;15925:52;;;15973:1;15970;15963:12;15925:52;16005:9;15999:16;16024:31;16049:5;16024:31;:::i;16090:980::-;16352:4;16400:3;16389:9;16385:19;16431:6;16420:9;16413:25;16457:2;16495:6;16490:2;16479:9;16475:18;16468:34;16538:3;16533:2;16522:9;16518:18;16511:31;16562:6;16597;16591:13;16628:6;16620;16613:22;16666:3;16655:9;16651:19;16644:26;;16705:2;16697:6;16693:15;16679:29;;16726:1;16736:195;16750:6;16747:1;16744:13;16736:195;;;16815:13;;-1:-1:-1;;;;;16811:39:1;16799:52;;16906:15;;;;16871:12;;;;16847:1;16765:9;16736:195;;;-1:-1:-1;;;;;;;16987:32:1;;;;16982:2;16967:18;;16960:60;-1:-1:-1;;;17051:3:1;17036:19;17029:35;16948:3;16090:980;-1:-1:-1;;;16090:980:1:o;17687:306::-;17775:6;17783;17791;17844:2;17832:9;17823:7;17819:23;17815:32;17812:52;;;17860:1;17857;17850:12;17812:52;17889:9;17883:16;17873:26;;17939:2;17928:9;17924:18;17918:25;17908:35;;17983:2;17972:9;17968:18;17962:25;17952:35;;17687:306;;;;;:::o

Swarm Source

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