ETH Price: $3,195.96 (+1.58%)
 

Overview

Max Total Supply

10,000,000 GFT

Holders

48

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

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:
Graffiti

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 500 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT
pragma solidity >=0.6.0 <0.9.0;

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    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 IFactoryV2 {
    event PairCreated(address indexed token0, address indexed token1, address lpPair, uint);
    function getPair(address tokenA, address tokenB) external view returns (address lpPair);
    function createPair(address tokenA, address tokenB) external returns (address lpPair);
}

interface IV2Pair {
    function factory() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function sync() external;
}

interface IRouter01 {
    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 addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function swapExactETHForTokens(
        uint amountOutMin, 
        address[] calldata path, 
        address to, uint deadline
    ) external payable returns (uint[] memory amounts);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IRouter02 is IRouter01 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
}

interface Initializer {
    function setLaunch(address _initialLpPair, uint32 _liqAddBlock, uint64 _liqAddStamp, uint8 dec) external;
    function getConfig() external returns (address, address);
    function setLpPair(address pair, bool enabled) external;
}

contract Graffiti is IERC20 {
    mapping (address => uint256) private _tOwned;
    mapping (address => bool) lpPairs;
    uint256 private timeSinceLastPair = 0;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _liquidityHolders;
    mapping (address => bool) private _isExcludedFromProtection;
    mapping (address => bool) private _isExcludedFromLimits;
    bool private allowedPresaleExclusion = true;
   
    uint256 constant private startingSupply = 100_000_00;
    string constant private _name = "Graffiti";
    string constant private _symbol = "GFT";
    uint8 constant private _decimals = 18;
    uint256 constant private _tTotal = startingSupply * 10**_decimals;
    bool public taxesAreLocked;
    IRouter02 public dexRouter;
    address public lpPair;
    address constant public DEAD = 0x000000000000000000000000000000000000dEaD;
    bool public tradingEnabled = false;
    bool public _hasLiqBeenAdded = false;
    Initializer initializer;

    constructor () payable {
        // Set the owner.
        _owner = msg.sender;
        originalDeployer = msg.sender;
        
        _liquidityHolders[_owner] = true;
        _tOwned[_owner] = _tTotal;
        emit Transfer(address(0), _owner, _tTotal);
    }

    receive() external payable {}

//===============================================================================================================
//===============================================================================================================
//===============================================================================================================
    // Ownable removed as a lib and added here to allow for custom transfers and renouncements.
    // This allows for removal of ownership privileges from the owner once renounced or transferred.

    address private _owner;

    modifier onlyOwner() { require(_owner == msg.sender, "Caller =/= owner."); _; }
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    function transferOwner(address newOwner) external onlyOwner {
        require(newOwner != address(0), "Call renounceOwnership to transfer owner to the zero address.");
        require(newOwner != DEAD, "Call renounceOwnership to transfer owner to the zero address.");
        if (balanceOf(_owner) > 0) {
            finalizeTransfer(_owner, newOwner, balanceOf(_owner), true);
        }
        
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
        
    }

    function renounceOwnership() external onlyOwner {
        require(tradingEnabled, "Cannot renounce until trading has been enabled.");
        address oldOwner = _owner;
        _owner = address(0);
        emit OwnershipTransferred(oldOwner, address(0));
    }

    address public originalDeployer;
    address public operator;

    // Function to set an operator to allow someone other the deployer to create things such as launchpads.
    // Only callable by original deployer.
    function setOperator(address newOperator) public {
        require(msg.sender == originalDeployer, "Can only be called by original deployer.");
        address oldOperator = operator;
        if (oldOperator != address(0)) {
            _liquidityHolders[oldOperator] = false;
        }
        operator = newOperator;
        _liquidityHolders[newOperator] = true;
    }

    function renounceOriginalDeployer() external {
        require(msg.sender == originalDeployer, "Can only be called by original deployer.");
        setOperator(address(0));
        originalDeployer = address(0);
    }

//===============================================================================================================
//===============================================================================================================
//===============================================================================================================

    function totalSupply() external pure override returns (uint256) { if (_tTotal == 0) { revert(); } return _tTotal; }
    function decimals() external pure override returns (uint8) { if (_tTotal == 0) { revert(); } return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure override returns (string memory) { return _name; }
    function getOwner() external view override returns (address) { return _owner; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }
    function balanceOf(address account) public view override returns (uint256) {
        return _tOwned[account];
    }

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

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

    function _approve(address sender, address spender, uint256 amount) internal {
        require(sender != address(0), "ERC20: Zero Address");
        require(spender != address(0), "ERC20: Zero Address");

        _allowances[sender][spender] = amount;
        emit Approval(sender, spender, amount);
    }

    function approveContractContingency() external onlyOwner returns (bool) {
        _approve(address(this), address(dexRouter), type(uint256).max);
        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if (_allowances[sender][msg.sender] != type(uint256).max) {
            _allowances[sender][msg.sender] -= amount;
        }

        return _transfer(sender, recipient, amount);
    }

    function setInitializer(address _initializer) public onlyOwner {
        require(!tradingEnabled);
        require(_initializer != address(this), "Can't be self.");
        initializer = Initializer(_initializer);
        try initializer.getConfig() returns (address router, address constructorLP) {
            dexRouter = IRouter02(router); lpPair = constructorLP; lpPairs[constructorLP] = true;
            _approve(_owner, address(dexRouter), type(uint256).max);
            _approve(address(this), address(dexRouter), type(uint256).max);
        } catch { revert(); }
    }

    function isExcludedFromProtection(address account) external view returns (bool) {
        return _isExcludedFromProtection[account];
    }

    function setExcludedFromProtection(address account, bool enabled) external onlyOwner {
        _isExcludedFromProtection[account] = enabled;
    }

    function getCirculatingSupply() public view returns (uint256) {
        return (_tTotal - (balanceOf(DEAD) + balanceOf(address(0))));
    }

    function excludePresaleAddresses(address router, address presale) external onlyOwner {
        require(allowedPresaleExclusion);
        require(router != address(this) 
                && presale != address(this) 
                && lpPair != router 
                && lpPair != presale, "Just don't.");
        if (router == presale) {
            _liquidityHolders[presale] = true;
        } else {
            _liquidityHolders[router] = true;
            _liquidityHolders[presale] = true;
        }
    }

    function _hasLimits(address from, address to) internal view returns (bool) {
        return from != _owner
            && to != _owner
            && tx.origin != _owner
            && !_liquidityHolders[to]
            && !_liquidityHolders[from]
            && to != DEAD
            && to != address(0)
            && from != address(this)
            && from != address(initializer)
            && to != address(initializer);
    }

    function _transfer(address from, address to, uint256 amount) internal returns (bool) {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        bool buy = false;
        bool sell = false;
        bool other = false;
        if (lpPairs[from]) {
            buy = true;
        } else if (lpPairs[to]) {
            sell = true;
        } else {
            other = true;
        }
        if (_hasLimits(from, to)) {
            if(!tradingEnabled) {
                if (!other) {
                    revert("Trading not yet enabled!");
                } else if (!_isExcludedFromProtection[from] && !_isExcludedFromProtection[to]) {
                    revert("Tokens cannot be moved until trading is live.");
                }
            }
        }

        return finalizeTransfer(from, to, amount, other);
    }

    function _checkLiquidityAdd(address from, address to) internal {
        require(!_hasLiqBeenAdded, "Liquidity already added and marked.");
        if (!_hasLimits(from, to) && to == lpPair) {
            if (address(initializer) == address(0)){
                initializer = Initializer(address(this));
            } else {
                _liquidityHolders[from] = true;
                _hasLiqBeenAdded = true;
            }
        }
    }

    function enableTrading() public onlyOwner {
        require(!tradingEnabled, "Trading already enabled!");
        require(_hasLiqBeenAdded, "Liquidity must be added.");
        if (address(initializer) == address(0)){
            initializer = Initializer(address(this));
        }
        try initializer.setLaunch(lpPair, uint32(block.number), uint64(block.timestamp), _decimals) {} catch {}
        tradingEnabled = true;
        allowedPresaleExclusion = false;
    }

    function sweepBalance() external onlyOwner {
        payable(_owner).transfer(address(this).balance);
    }
    
    function sweepExternalTokens(address token) external onlyOwner {
        IERC20 TOKEN = IERC20(token);
        TOKEN.transfer(_owner, TOKEN.balanceOf(address(this)));
    }

    function multiSendTokens(address[] memory accounts, uint256[] memory amounts) external onlyOwner {
        require(accounts.length == amounts.length, "Lengths do not match.");
        for (uint16 i = 0; i < accounts.length; i++) {
            require(balanceOf(msg.sender) >= amounts[i]*10**_decimals, "Not enough tokens.");
            finalizeTransfer(msg.sender, accounts[i], amounts[i]*10**_decimals, true);
        }
    }

    function finalizeTransfer(address from, address to, uint256 amount, bool other) internal returns (bool) {
        _tOwned[from] -= amount;
        _tOwned[to] += amount;
        emit Transfer(from, to, amount);
        if (!_hasLiqBeenAdded) {
            _checkLiquidityAdd(from, to);
            if (!_hasLiqBeenAdded && _hasLimits(from, to) && !_isExcludedFromProtection[from] && !_isExcludedFromProtection[to] && !other) {
                revert("Pre-liquidity transfer protection.");
            }
        }

        return true;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"payable","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":[],"name":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_hasLiqBeenAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"approveContractContingency","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":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IRouter02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"router","type":"address"},{"internalType":"address","name":"presale","type":"address"}],"name":"excludePresaleAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromProtection","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"multiSendTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"operator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"originalDeployer","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOriginalDeployer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromProtection","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_initializer","type":"address"}],"name":"setInitializer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOperator","type":"address"}],"name":"setOperator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sweepBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"sweepExternalTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"taxesAreLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"transferOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060409081526000600281905560078054600160ff1991821681179092556008805461ffff60a01b19169055600a8054336001600160a01b031991821681178355600b80549092168117909155845260046020529390922080549092161790556200006e906012906200020e565b6200007d906298968062000226565b600a80546001600160a01b0390811660009081526020819052604081209390935581541691907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90620000d3906012906200020e565b620000e2906298968062000226565b60405190815260200160405180910390a362000240565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000150578160001904821115620001345762000134620000f9565b808516156200014257918102915b93841c939080029062000114565b509250929050565b600082620001695750600162000208565b81620001785750600062000208565b81600181146200019157600281146200019c57620001bc565b600191505062000208565b60ff841115620001b057620001b0620000f9565b50506001821b62000208565b5060208310610133831016604e8410600b8410161715620001e1575081810a62000208565b620001ed83836200010f565b8060001904821115620002045762000204620000f9565b0290505b92915050565b60006200021f60ff84168362000158565b9392505050565b8082028115828204841417620002085762000208620000f9565b61223180620002506000396000f3fe6080604052600436106101e75760003560e01c806350a8e016116101025780638a8c523c11610095578063b3ab15fb11610064578063b3ab15fb146105c5578063c3513f6d146105e5578063dd62ed3e146105fa578063feadde9c1461064057600080fd5b80638a8c523c1461054457806395d89b4114610559578063a9059cbb14610585578063ab558e4d146105a557600080fd5b8063715018a6116100d1578063715018a6146104dc57806381cf58a9146104f1578063893d20e8146105115780638a63bd9b1461052f57600080fd5b806350a8e01614610445578063570ca735146104665780635c24b0741461048657806370a08231146104a657600080fd5b806323b872dd1161017a57806339a059021161014957806339a05902146103cf578063452ed4f1146103e45780634ada218b146104045780634fb2e45d1461042557600080fd5b806323b872dd146103535780632610eaca146103735780632b112e4914610393578063313ce567146103a857600080fd5b8063095ea7b3116101b6578063095ea7b3146102b55780630dcbcf1c146102d557806313b4a7f41461030e57806318160ddd1461033057600080fd5b806303fd2a45146101f357806306fdde03146102265780630758d9241461026057806307dd79e01461028657600080fd5b366101ee57005b600080fd5b3480156101ff57600080fd5b5061020961dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561023257600080fd5b50604080518082019091526008815267477261666669746960c01b60208201525b60405161021d9190611d1f565b34801561026c57600080fd5b50600754610209906201000090046001600160a01b031681565b34801561029257600080fd5b506007546102a590610100900460ff1681565b604051901515815260200161021d565b3480156102c157600080fd5b506102a56102d0366004611d82565b610660565b3480156102e157600080fd5b506102a56102f0366004611dae565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561031a57600080fd5b5061032e610329366004611dcb565b610677565b005b34801561033c57600080fd5b506103456107e6565b60405190815260200161021d565b34801561035f57600080fd5b506102a561036e366004611e04565b61082b565b34801561037f57600080fd5b5061032e61038e366004611f1b565b6108a3565b34801561039f57600080fd5b50610345610a5b565b3480156103b457600080fd5b506103bd610ad8565b60405160ff909116815260200161021d565b3480156103db57600080fd5b5061032e610b05565b3480156103f057600080fd5b50600854610209906001600160a01b031681565b34801561041057600080fd5b506008546102a590600160a01b900460ff1681565b34801561043157600080fd5b5061032e610440366004611dae565b610b8c565b34801561045157600080fd5b506008546102a590600160a81b900460ff1681565b34801561047257600080fd5b50600c54610209906001600160a01b031681565b34801561049257600080fd5b5061032e6104a1366004611dae565b610d72565b3480156104b257600080fd5b506103456104c1366004611dae565b6001600160a01b031660009081526020819052604090205490565b3480156104e857600080fd5b5061032e610f4e565b3480156104fd57600080fd5b50600b54610209906001600160a01b031681565b34801561051d57600080fd5b50600a546001600160a01b0316610209565b34801561053b57600080fd5b506102a5611069565b34801561055057600080fd5b5061032e6110e0565b34801561056557600080fd5b5060408051808201909152600381526211d19560ea1b6020820152610253565b34801561059157600080fd5b506102a56105a0366004611d82565b6112a1565b3480156105b157600080fd5b5061032e6105c0366004611dae565b6112b8565b3480156105d157600080fd5b5061032e6105e0366004611dae565b611408565b3480156105f157600080fd5b5061032e6114e1565b34801561060657600080fd5b50610345610615366004611dcb565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561064c57600080fd5b5061032e61065b366004611feb565b611568565b600061066d3384846115e1565b5060015b92915050565b600a546001600160a01b031633146106ca5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064015b60405180910390fd5b60075460ff166106d957600080fd5b6001600160a01b03821630148015906106fb57506001600160a01b0381163014155b801561071557506008546001600160a01b03838116911614155b801561072f57506008546001600160a01b03828116911614155b6107695760405162461bcd60e51b815260206004820152600b60248201526a253ab9ba103237b713ba1760a91b60448201526064016106c1565b806001600160a01b0316826001600160a01b0316036107a9576001600160a01b0381166000908152600460205260409020805460ff191660011790555050565b6001600160a01b038281166000908152600460205260408082208054600160ff1991821681179092559385168352912080549092161790555b5050565b60006107f46012600a612113565b6108019062989680612122565b60000361080d57600080fd5b6108196012600a612113565b6108269062989680612122565b905090565b6001600160a01b038316600090815260036020908152604080832033845290915281205460001914610890576001600160a01b03841660009081526003602090815260408083203384529091528120805484929061088a908490612139565b90915550505b61089b8484846116da565b949350505050565b600a546001600160a01b031633146108f15760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016106c1565b80518251146109425760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e000000000000000000000060448201526064016106c1565b60005b82518161ffff161015610a565761095e6012600a612113565b828261ffff16815181106109745761097461214c565b60200260200101516109869190612122565b3360009081526020819052604090205410156109e45760405162461bcd60e51b815260206004820152601260248201527f4e6f7420656e6f75676820746f6b656e732e000000000000000000000000000060448201526064016106c1565b610a4333848361ffff16815181106109fe576109fe61214c565b60200260200101516012600a610a149190612113565b858561ffff1681518110610a2a57610a2a61214c565b6020026020010151610a3c9190612122565b6001611989565b5080610a4e81612162565b915050610945565b505050565b600060208190527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb55461dead82527f44ad89ba62b98ff34f51403ac22759b55759460c0bb5521eb4b6ee3cff49cf8354610ab59190612183565b610ac16012600a612113565b610ace9062989680612122565b6108269190612139565b6000610ae66012600a612113565b610af39062989680612122565b600003610aff57600080fd5b50601290565b600b546001600160a01b03163314610b705760405162461bcd60e51b815260206004820152602860248201527f43616e206f6e6c792062652063616c6c6564206279206f726967696e616c206460448201526732b83637bcb2b91760c11b60648201526084016106c1565b610b7a6000611408565b600b80546001600160a01b0319169055565b600a546001600160a01b03163314610bda5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016106c1565b6001600160a01b038116610c565760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e00000060648201526084016106c1565b61deac196001600160a01b03821601610cd75760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e00000060648201526084016106c1565b600a546001600160a01b031660009081526020819052604090205415610d2057600a546001600160a01b0316600081815260208190526040902054610d1e91908390610a3c565b505b600a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600a546001600160a01b03163314610dc05760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016106c1565b600854600160a01b900460ff1615610dd757600080fd5b306001600160a01b03821603610e2f5760405162461bcd60e51b815260206004820152600e60248201527f43616e27742062652073656c662e00000000000000000000000000000000000060448201526064016106c1565b600980546001600160a01b0319166001600160a01b038316908117909155604080516330fe427560e21b8152815163c3f909d49260048084019391929182900301816000875af1925050508015610ea3575060408051601f3d908101601f19168201909252610ea091810190612196565b60015b610eac57600080fd5b6007805475ffffffffffffffffffffffffffffffffffffffff00001916620100006001600160a01b038581168202929092178355600880546001600160a01b0319168584169081179091556000908152600160208190526040909120805460ff19169091179055600a549254610f2b93831692919004166000196115e1565b600754610a569030906201000090046001600160a01b03166000196115e1565b50565b600a546001600160a01b03163314610f9c5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016106c1565b600854600160a01b900460ff1661101b5760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f742072656e6f756e636520756e74696c2074726164696e6720686160448201527f73206265656e20656e61626c65642e000000000000000000000000000000000060648201526084016106c1565b600a80546001600160a01b031981169091556040516001600160a01b039091169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b600a546000906001600160a01b031633146110ba5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016106c1565b6007546110da9030906201000090046001600160a01b03166000196115e1565b50600190565b600a546001600160a01b0316331461112e5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016106c1565b600854600160a01b900460ff16156111885760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c656421000000000000000060448201526064016106c1565b600854600160a81b900460ff166111e15760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e000000000000000060448201526064016106c1565b6009546001600160a01b031661120457600980546001600160a01b031916301790555b600954600854604051631b04570d60e21b81526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260126064820152911690636c115c3490608401600060405180830381600087803b15801561127057600080fd5b505af1925050508015611281575060015b506008805460ff60a01b1916600160a01b1790556007805460ff19169055565b60006112ae3384846116da565b5060019392505050565b600a546001600160a01b031633146113065760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016106c1565b600a546040516370a0823160e01b815230600482015282916001600160a01b038084169263a9059cbb92919091169083906370a0823190602401602060405180830381865afa15801561135d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138191906121c5565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af11580156113e4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a5691906121de565b600b546001600160a01b031633146114735760405162461bcd60e51b815260206004820152602860248201527f43616e206f6e6c792062652063616c6c6564206279206f726967696e616c206460448201526732b83637bcb2b91760c11b60648201526084016106c1565b600c546001600160a01b031680156114a6576001600160a01b0381166000908152600460205260409020805460ff191690555b50600c80546001600160a01b039092166001600160a01b0319909216821790556000908152600460205260409020805460ff19166001179055565b600a546001600160a01b0316331461152f5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016106c1565b600a546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015610f4b573d6000803e3d6000fd5b600a546001600160a01b031633146115b65760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016106c1565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6001600160a01b03831661162d5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064016106c1565b6001600160a01b0382166116795760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064016106c1565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b0384166117405760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016106c1565b6001600160a01b0383166117a25760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016106c1565b600082116118045760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016106c1565b6001600160a01b0384166000908152600160205260408120548190819060ff16156118325760019250611860565b6001600160a01b03861660009081526001602052604090205460ff161561185c5760019150611860565b5060015b61186a8787611b25565b1561197257600854600160a01b900460ff1661197257806118cd5760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c656421000000000000000060448201526064016106c1565b6001600160a01b03871660009081526005602052604090205460ff1615801561190f57506001600160a01b03861660009081526005602052604090205460ff16155b156119725760405162461bcd60e51b815260206004820152602d60248201527f546f6b656e732063616e6e6f74206265206d6f76656420756e74696c2074726160448201526c3234b7339034b9903634bb329760991b60648201526084016106c1565b61197e87878784611989565b979650505050505050565b6001600160a01b0384166000908152602081905260408120805484919083906119b3908490612139565b90915550506001600160a01b038416600090815260208190526040812080548592906119e0908490612183565b92505081905550836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611a2c91815260200190565b60405180910390a3600854600160a81b900460ff16611b1a57611a4f8585611c30565b600854600160a81b900460ff16158015611a6e5750611a6e8585611b25565b8015611a9357506001600160a01b03851660009081526005602052604090205460ff16155b8015611ab857506001600160a01b03841660009081526005602052604090205460ff16155b8015611ac2575081155b15611b1a5760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604482015261371760f11b60648201526084016106c1565b506001949350505050565b600a546000906001600160a01b03848116911614801590611b545750600a546001600160a01b03838116911614155b8015611b6b5750600a546001600160a01b03163214155b8015611b9057506001600160a01b03821660009081526004602052604090205460ff16155b8015611bb557506001600160a01b03831660009081526004602052604090205460ff16155b8015611bcc57506001600160a01b03821661dead14155b8015611be057506001600160a01b03821615155b8015611bf557506001600160a01b0383163014155b8015611c0f57506009546001600160a01b03848116911614155b8015611c2957506009546001600160a01b03838116911614155b9392505050565b600854600160a81b900460ff1615611c965760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b60648201526084016106c1565b611ca08282611b25565b158015611cba57506008546001600160a01b038281169116145b156107e2576009546001600160a01b0316611ce557600980546001600160a01b031916301790555050565b6001600160a01b0382166000908152600460205260409020805460ff191660011790556008805460ff60a81b1916600160a81b1790555050565b600060208083528351808285015260005b81811015611d4c57858101830151858201604001528201611d30565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610f4b57600080fd5b60008060408385031215611d9557600080fd5b8235611da081611d6d565b946020939093013593505050565b600060208284031215611dc057600080fd5b8135611c2981611d6d565b60008060408385031215611dde57600080fd5b8235611de981611d6d565b91506020830135611df981611d6d565b809150509250929050565b600080600060608486031215611e1957600080fd5b8335611e2481611d6d565b92506020840135611e3481611d6d565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715611e8457611e84611e45565b604052919050565b600067ffffffffffffffff821115611ea657611ea6611e45565b5060051b60200190565b600082601f830112611ec157600080fd5b81356020611ed6611ed183611e8c565b611e5b565b82815260059290921b84018101918181019086841115611ef557600080fd5b8286015b84811015611f105780358352918301918301611ef9565b509695505050505050565b60008060408385031215611f2e57600080fd5b823567ffffffffffffffff80821115611f4657600080fd5b818501915085601f830112611f5a57600080fd5b81356020611f6a611ed183611e8c565b82815260059290921b84018101918181019089841115611f8957600080fd5b948201945b83861015611fb0578535611fa181611d6d565b82529482019490820190611f8e565b96505086013592505080821115611fc657600080fd5b50611fd385828601611eb0565b9150509250929050565b8015158114610f4b57600080fd5b60008060408385031215611ffe57600080fd5b823561200981611d6d565b91506020830135611df981611fdd565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561206a57816000190482111561205057612050612019565b8085161561205d57918102915b93841c9390800290612034565b509250929050565b60008261208157506001610671565b8161208e57506000610671565b81600181146120a457600281146120ae576120ca565b6001915050610671565b60ff8411156120bf576120bf612019565b50506001821b610671565b5060208310610133831016604e8410600b84101617156120ed575081810a610671565b6120f7838361202f565b806000190482111561210b5761210b612019565b029392505050565b6000611c2960ff841683612072565b808202811582820484141761067157610671612019565b8181038181111561067157610671612019565b634e487b7160e01b600052603260045260246000fd5b600061ffff80831681810361217957612179612019565b6001019392505050565b8082018082111561067157610671612019565b600080604083850312156121a957600080fd5b82516121b481611d6d565b6020840151909250611df981611d6d565b6000602082840312156121d757600080fd5b5051919050565b6000602082840312156121f057600080fd5b8151611c2981611fdd56fea264697066735822122075e4b752d8ec41d5024c7513d05ee1a9d8685781beef4fb650a095de4f17a3b464736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101e75760003560e01c806350a8e016116101025780638a8c523c11610095578063b3ab15fb11610064578063b3ab15fb146105c5578063c3513f6d146105e5578063dd62ed3e146105fa578063feadde9c1461064057600080fd5b80638a8c523c1461054457806395d89b4114610559578063a9059cbb14610585578063ab558e4d146105a557600080fd5b8063715018a6116100d1578063715018a6146104dc57806381cf58a9146104f1578063893d20e8146105115780638a63bd9b1461052f57600080fd5b806350a8e01614610445578063570ca735146104665780635c24b0741461048657806370a08231146104a657600080fd5b806323b872dd1161017a57806339a059021161014957806339a05902146103cf578063452ed4f1146103e45780634ada218b146104045780634fb2e45d1461042557600080fd5b806323b872dd146103535780632610eaca146103735780632b112e4914610393578063313ce567146103a857600080fd5b8063095ea7b3116101b6578063095ea7b3146102b55780630dcbcf1c146102d557806313b4a7f41461030e57806318160ddd1461033057600080fd5b806303fd2a45146101f357806306fdde03146102265780630758d9241461026057806307dd79e01461028657600080fd5b366101ee57005b600080fd5b3480156101ff57600080fd5b5061020961dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561023257600080fd5b50604080518082019091526008815267477261666669746960c01b60208201525b60405161021d9190611d1f565b34801561026c57600080fd5b50600754610209906201000090046001600160a01b031681565b34801561029257600080fd5b506007546102a590610100900460ff1681565b604051901515815260200161021d565b3480156102c157600080fd5b506102a56102d0366004611d82565b610660565b3480156102e157600080fd5b506102a56102f0366004611dae565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561031a57600080fd5b5061032e610329366004611dcb565b610677565b005b34801561033c57600080fd5b506103456107e6565b60405190815260200161021d565b34801561035f57600080fd5b506102a561036e366004611e04565b61082b565b34801561037f57600080fd5b5061032e61038e366004611f1b565b6108a3565b34801561039f57600080fd5b50610345610a5b565b3480156103b457600080fd5b506103bd610ad8565b60405160ff909116815260200161021d565b3480156103db57600080fd5b5061032e610b05565b3480156103f057600080fd5b50600854610209906001600160a01b031681565b34801561041057600080fd5b506008546102a590600160a01b900460ff1681565b34801561043157600080fd5b5061032e610440366004611dae565b610b8c565b34801561045157600080fd5b506008546102a590600160a81b900460ff1681565b34801561047257600080fd5b50600c54610209906001600160a01b031681565b34801561049257600080fd5b5061032e6104a1366004611dae565b610d72565b3480156104b257600080fd5b506103456104c1366004611dae565b6001600160a01b031660009081526020819052604090205490565b3480156104e857600080fd5b5061032e610f4e565b3480156104fd57600080fd5b50600b54610209906001600160a01b031681565b34801561051d57600080fd5b50600a546001600160a01b0316610209565b34801561053b57600080fd5b506102a5611069565b34801561055057600080fd5b5061032e6110e0565b34801561056557600080fd5b5060408051808201909152600381526211d19560ea1b6020820152610253565b34801561059157600080fd5b506102a56105a0366004611d82565b6112a1565b3480156105b157600080fd5b5061032e6105c0366004611dae565b6112b8565b3480156105d157600080fd5b5061032e6105e0366004611dae565b611408565b3480156105f157600080fd5b5061032e6114e1565b34801561060657600080fd5b50610345610615366004611dcb565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561064c57600080fd5b5061032e61065b366004611feb565b611568565b600061066d3384846115e1565b5060015b92915050565b600a546001600160a01b031633146106ca5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064015b60405180910390fd5b60075460ff166106d957600080fd5b6001600160a01b03821630148015906106fb57506001600160a01b0381163014155b801561071557506008546001600160a01b03838116911614155b801561072f57506008546001600160a01b03828116911614155b6107695760405162461bcd60e51b815260206004820152600b60248201526a253ab9ba103237b713ba1760a91b60448201526064016106c1565b806001600160a01b0316826001600160a01b0316036107a9576001600160a01b0381166000908152600460205260409020805460ff191660011790555050565b6001600160a01b038281166000908152600460205260408082208054600160ff1991821681179092559385168352912080549092161790555b5050565b60006107f46012600a612113565b6108019062989680612122565b60000361080d57600080fd5b6108196012600a612113565b6108269062989680612122565b905090565b6001600160a01b038316600090815260036020908152604080832033845290915281205460001914610890576001600160a01b03841660009081526003602090815260408083203384529091528120805484929061088a908490612139565b90915550505b61089b8484846116da565b949350505050565b600a546001600160a01b031633146108f15760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016106c1565b80518251146109425760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e000000000000000000000060448201526064016106c1565b60005b82518161ffff161015610a565761095e6012600a612113565b828261ffff16815181106109745761097461214c565b60200260200101516109869190612122565b3360009081526020819052604090205410156109e45760405162461bcd60e51b815260206004820152601260248201527f4e6f7420656e6f75676820746f6b656e732e000000000000000000000000000060448201526064016106c1565b610a4333848361ffff16815181106109fe576109fe61214c565b60200260200101516012600a610a149190612113565b858561ffff1681518110610a2a57610a2a61214c565b6020026020010151610a3c9190612122565b6001611989565b5080610a4e81612162565b915050610945565b505050565b600060208190527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb55461dead82527f44ad89ba62b98ff34f51403ac22759b55759460c0bb5521eb4b6ee3cff49cf8354610ab59190612183565b610ac16012600a612113565b610ace9062989680612122565b6108269190612139565b6000610ae66012600a612113565b610af39062989680612122565b600003610aff57600080fd5b50601290565b600b546001600160a01b03163314610b705760405162461bcd60e51b815260206004820152602860248201527f43616e206f6e6c792062652063616c6c6564206279206f726967696e616c206460448201526732b83637bcb2b91760c11b60648201526084016106c1565b610b7a6000611408565b600b80546001600160a01b0319169055565b600a546001600160a01b03163314610bda5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016106c1565b6001600160a01b038116610c565760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e00000060648201526084016106c1565b61deac196001600160a01b03821601610cd75760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e00000060648201526084016106c1565b600a546001600160a01b031660009081526020819052604090205415610d2057600a546001600160a01b0316600081815260208190526040902054610d1e91908390610a3c565b505b600a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600a546001600160a01b03163314610dc05760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016106c1565b600854600160a01b900460ff1615610dd757600080fd5b306001600160a01b03821603610e2f5760405162461bcd60e51b815260206004820152600e60248201527f43616e27742062652073656c662e00000000000000000000000000000000000060448201526064016106c1565b600980546001600160a01b0319166001600160a01b038316908117909155604080516330fe427560e21b8152815163c3f909d49260048084019391929182900301816000875af1925050508015610ea3575060408051601f3d908101601f19168201909252610ea091810190612196565b60015b610eac57600080fd5b6007805475ffffffffffffffffffffffffffffffffffffffff00001916620100006001600160a01b038581168202929092178355600880546001600160a01b0319168584169081179091556000908152600160208190526040909120805460ff19169091179055600a549254610f2b93831692919004166000196115e1565b600754610a569030906201000090046001600160a01b03166000196115e1565b50565b600a546001600160a01b03163314610f9c5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016106c1565b600854600160a01b900460ff1661101b5760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f742072656e6f756e636520756e74696c2074726164696e6720686160448201527f73206265656e20656e61626c65642e000000000000000000000000000000000060648201526084016106c1565b600a80546001600160a01b031981169091556040516001600160a01b039091169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b600a546000906001600160a01b031633146110ba5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016106c1565b6007546110da9030906201000090046001600160a01b03166000196115e1565b50600190565b600a546001600160a01b0316331461112e5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016106c1565b600854600160a01b900460ff16156111885760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c656421000000000000000060448201526064016106c1565b600854600160a81b900460ff166111e15760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e000000000000000060448201526064016106c1565b6009546001600160a01b031661120457600980546001600160a01b031916301790555b600954600854604051631b04570d60e21b81526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260126064820152911690636c115c3490608401600060405180830381600087803b15801561127057600080fd5b505af1925050508015611281575060015b506008805460ff60a01b1916600160a01b1790556007805460ff19169055565b60006112ae3384846116da565b5060019392505050565b600a546001600160a01b031633146113065760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016106c1565b600a546040516370a0823160e01b815230600482015282916001600160a01b038084169263a9059cbb92919091169083906370a0823190602401602060405180830381865afa15801561135d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138191906121c5565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af11580156113e4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a5691906121de565b600b546001600160a01b031633146114735760405162461bcd60e51b815260206004820152602860248201527f43616e206f6e6c792062652063616c6c6564206279206f726967696e616c206460448201526732b83637bcb2b91760c11b60648201526084016106c1565b600c546001600160a01b031680156114a6576001600160a01b0381166000908152600460205260409020805460ff191690555b50600c80546001600160a01b039092166001600160a01b0319909216821790556000908152600460205260409020805460ff19166001179055565b600a546001600160a01b0316331461152f5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016106c1565b600a546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015610f4b573d6000803e3d6000fd5b600a546001600160a01b031633146115b65760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016106c1565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6001600160a01b03831661162d5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064016106c1565b6001600160a01b0382166116795760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064016106c1565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b0384166117405760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016106c1565b6001600160a01b0383166117a25760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016106c1565b600082116118045760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016106c1565b6001600160a01b0384166000908152600160205260408120548190819060ff16156118325760019250611860565b6001600160a01b03861660009081526001602052604090205460ff161561185c5760019150611860565b5060015b61186a8787611b25565b1561197257600854600160a01b900460ff1661197257806118cd5760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c656421000000000000000060448201526064016106c1565b6001600160a01b03871660009081526005602052604090205460ff1615801561190f57506001600160a01b03861660009081526005602052604090205460ff16155b156119725760405162461bcd60e51b815260206004820152602d60248201527f546f6b656e732063616e6e6f74206265206d6f76656420756e74696c2074726160448201526c3234b7339034b9903634bb329760991b60648201526084016106c1565b61197e87878784611989565b979650505050505050565b6001600160a01b0384166000908152602081905260408120805484919083906119b3908490612139565b90915550506001600160a01b038416600090815260208190526040812080548592906119e0908490612183565b92505081905550836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611a2c91815260200190565b60405180910390a3600854600160a81b900460ff16611b1a57611a4f8585611c30565b600854600160a81b900460ff16158015611a6e5750611a6e8585611b25565b8015611a9357506001600160a01b03851660009081526005602052604090205460ff16155b8015611ab857506001600160a01b03841660009081526005602052604090205460ff16155b8015611ac2575081155b15611b1a5760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604482015261371760f11b60648201526084016106c1565b506001949350505050565b600a546000906001600160a01b03848116911614801590611b545750600a546001600160a01b03838116911614155b8015611b6b5750600a546001600160a01b03163214155b8015611b9057506001600160a01b03821660009081526004602052604090205460ff16155b8015611bb557506001600160a01b03831660009081526004602052604090205460ff16155b8015611bcc57506001600160a01b03821661dead14155b8015611be057506001600160a01b03821615155b8015611bf557506001600160a01b0383163014155b8015611c0f57506009546001600160a01b03848116911614155b8015611c2957506009546001600160a01b03838116911614155b9392505050565b600854600160a81b900460ff1615611c965760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b60648201526084016106c1565b611ca08282611b25565b158015611cba57506008546001600160a01b038281169116145b156107e2576009546001600160a01b0316611ce557600980546001600160a01b031916301790555050565b6001600160a01b0382166000908152600460205260409020805460ff191660011790556008805460ff60a81b1916600160a81b1790555050565b600060208083528351808285015260005b81811015611d4c57858101830151858201604001528201611d30565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610f4b57600080fd5b60008060408385031215611d9557600080fd5b8235611da081611d6d565b946020939093013593505050565b600060208284031215611dc057600080fd5b8135611c2981611d6d565b60008060408385031215611dde57600080fd5b8235611de981611d6d565b91506020830135611df981611d6d565b809150509250929050565b600080600060608486031215611e1957600080fd5b8335611e2481611d6d565b92506020840135611e3481611d6d565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715611e8457611e84611e45565b604052919050565b600067ffffffffffffffff821115611ea657611ea6611e45565b5060051b60200190565b600082601f830112611ec157600080fd5b81356020611ed6611ed183611e8c565b611e5b565b82815260059290921b84018101918181019086841115611ef557600080fd5b8286015b84811015611f105780358352918301918301611ef9565b509695505050505050565b60008060408385031215611f2e57600080fd5b823567ffffffffffffffff80821115611f4657600080fd5b818501915085601f830112611f5a57600080fd5b81356020611f6a611ed183611e8c565b82815260059290921b84018101918181019089841115611f8957600080fd5b948201945b83861015611fb0578535611fa181611d6d565b82529482019490820190611f8e565b96505086013592505080821115611fc657600080fd5b50611fd385828601611eb0565b9150509250929050565b8015158114610f4b57600080fd5b60008060408385031215611ffe57600080fd5b823561200981611d6d565b91506020830135611df981611fdd565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561206a57816000190482111561205057612050612019565b8085161561205d57918102915b93841c9390800290612034565b509250929050565b60008261208157506001610671565b8161208e57506000610671565b81600181146120a457600281146120ae576120ca565b6001915050610671565b60ff8411156120bf576120bf612019565b50506001821b610671565b5060208310610133831016604e8410600b84101617156120ed575081810a610671565b6120f7838361202f565b806000190482111561210b5761210b612019565b029392505050565b6000611c2960ff841683612072565b808202811582820484141761067157610671612019565b8181038181111561067157610671612019565b634e487b7160e01b600052603260045260246000fd5b600061ffff80831681810361217957612179612019565b6001019392505050565b8082018082111561067157610671612019565b600080604083850312156121a957600080fd5b82516121b481611d6d565b6020840151909250611df981611d6d565b6000602082840312156121d757600080fd5b5051919050565b6000602082840312156121f057600080fd5b8151611c2981611fdd56fea264697066735822122075e4b752d8ec41d5024c7513d05ee1a9d8685781beef4fb650a095de4f17a3b464736f6c63430008130033

Deployed Bytecode Sourcemap

3813:11353:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4664:73;;;;;;;;;;;;4695:42;4664:73;;;;;-1:-1:-1;;;;;178:55:1;;;160:74;;148:2;133:18;4664:73:0;;;;;;;;8264:80;;;;;;;;;;-1:-1:-1;8336:5:0;;;;;;;;;;;;-1:-1:-1;;;8336:5:0;;;;8264:80;;;;;;;:::i;4603:26::-;;;;;;;;;;-1:-1:-1;4603:26:0;;;;;;;-1:-1:-1;;;;;4603:26:0;;;4570;;;;;;;;;;-1:-1:-1;4570:26:0;;;;;;;;;;;;;;1211:14:1;;1204:22;1186:41;;1174:2;1159:18;4570:26:0;1046:187:1;8872:161:0;;;;;;;;;;-1:-1:-1;8872:161:0;;;;;:::i;:::-;;:::i;10451:140::-;;;;;;;;;;-1:-1:-1;10451:140:0;;;;;:::i;:::-;-1:-1:-1;;;;;10549:34:0;10525:4;10549:34;;;:25;:34;;;;;;;;;10451:140;10904:523;;;;;;;;;;-1:-1:-1;10904:523:0;;;;;:::i;:::-;;:::i;:::-;;7935:115;;;;;;;;;;;;;:::i;:::-;;;2508:25:1;;;2496:2;2481:18;7935:115:0;2362:177:1;9542:306:0;;;;;;;;;;-1:-1:-1;9542:306:0;;;;;:::i;:::-;;:::i;14170:433::-;;;;;;;;;;-1:-1:-1;14170:433:0;;;;;:::i;:::-;;:::i;10755:141::-;;;;;;;;;;;;;:::i;8056:112::-;;;;;;;;;;;;;:::i;:::-;;;5664:4:1;5652:17;;;5634:36;;5622:2;5607:18;8056:112:0;5492:184:1;7359:221:0;;;;;;;;;;;;;:::i;4636:21::-;;;;;;;;;;-1:-1:-1;4636:21:0;;;;-1:-1:-1;;;;;4636:21:0;;;4744:34;;;;;;;;;;-1:-1:-1;4744:34:0;;;;-1:-1:-1;;;4744:34:0;;;;;;5929:539;;;;;;;;;;-1:-1:-1;5929:539:0;;;;;:::i;:::-;;:::i;4785:36::-;;;;;;;;;;-1:-1:-1;4785:36:0;;;;-1:-1:-1;;;4785:36:0;;;;;;6787:23;;;;;;;;;;-1:-1:-1;6787:23:0;;;;-1:-1:-1;;;;;6787:23:0;;;9856:587;;;;;;;;;;-1:-1:-1;9856:587:0;;;;;:::i;:::-;;:::i;8574:117::-;;;;;;;;;;-1:-1:-1;8574:117:0;;;;;:::i;:::-;-1:-1:-1;;;;;8667:16:0;8640:7;8667:16;;;;;;;;;;;;8574:117;6476:265;;;;;;;;;;;;;:::i;6749:31::-;;;;;;;;;;-1:-1:-1;6749:31:0;;;;-1:-1:-1;;;;;6749:31:0;;;8350:79;;;;;;;;;;-1:-1:-1;8420:6:0;;-1:-1:-1;;;;;8420:6:0;8350:79;;9359:175;;;;;;;;;;;;;:::i;13378:480::-;;;;;;;;;;;;;:::i;8174:84::-;;;;;;;;;;-1:-1:-1;8248:7:0;;;;;;;;;;;;-1:-1:-1;;;8248:7:0;;;;8174:84;;8699:165;;;;;;;;;;-1:-1:-1;8699:165:0;;;;;:::i;:::-;;:::i;13987:175::-;;;;;;;;;;-1:-1:-1;13987:175:0;;;;;:::i;:::-;;:::i;6972:379::-;;;;;;;;;;-1:-1:-1;6972:379:0;;;;;:::i;:::-;;:::i;13866:109::-;;;;;;;;;;;;;:::i;8435:133::-;;;;;;;;;;-1:-1:-1;8435:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;8537:19:0;;;8519:7;8537:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;8435:133;10599:148;;;;;;;;;;-1:-1:-1;10599:148:0;;;;;:::i;:::-;;:::i;8872:161::-;8949:4;8966:37;8975:10;8987:7;8996:6;8966:8;:37::i;:::-;-1:-1:-1;9021:4:0;8872:161;;;;;:::o;10904:523::-;5783:6;;-1:-1:-1;;;;;5783:6:0;5793:10;5783:20;5775:50;;;;-1:-1:-1;;;5775:50:0;;6393:2:1;5775:50:0;;;6375:21:1;6432:2;6412:18;;;6405:30;-1:-1:-1;;;6451:18:1;;;6444:47;6508:18;;5775:50:0;;;;;;;;;11008:23:::1;::::0;::::1;;11000:32;;;::::0;::::1;;-1:-1:-1::0;;;;;11051:23:0;::::1;11069:4;11051:23;::::0;::::1;::::0;:69:::1;;-1:-1:-1::0;;;;;;11096:24:0;::::1;11115:4;11096:24;;11051:69;:107;;;;-1:-1:-1::0;11142:6:0::1;::::0;-1:-1:-1;;;;;11142:16:0;;::::1;:6:::0;::::1;:16;;11051:107;:146;;;;-1:-1:-1::0;11180:6:0::1;::::0;-1:-1:-1;;;;;11180:17:0;;::::1;:6:::0;::::1;:17;;11051:146;11043:170;;;::::0;-1:-1:-1;;;11043:170:0;;6739:2:1;11043:170:0::1;::::0;::::1;6721:21:1::0;6778:2;6758:18;;;6751:30;-1:-1:-1;;;6797:18:1;;;6790:41;6848:18;;11043:170:0::1;6537:335:1::0;11043:170:0::1;11238:7;-1:-1:-1::0;;;;;11228:17:0::1;:6;-1:-1:-1::0;;;;;11228:17:0::1;::::0;11224:196:::1;;-1:-1:-1::0;;;;;11262:26:0;::::1;;::::0;;;:17:::1;:26;::::0;;;;:33;;-1:-1:-1;;11262:33:0::1;11291:4;11262:33;::::0;;10904:523;;:::o;11224:196::-:1;-1:-1:-1::0;;;;;11328:25:0;;::::1;;::::0;;;:17:::1;:25;::::0;;;;;:32;;11356:4:::1;-1:-1:-1::0;;11328:32:0;;::::1;::::0;::::1;::::0;;;11375:26;;::::1;::::0;;;;:33;;;;::::1;;::::0;;11224:196:::1;10904:523:::0;;:::o;7935:115::-;7990:7;4550:13;4489:2;4550;:13;:::i;:::-;4533:30;;4342:10;4533:30;:::i;:::-;8016:1;8005:12;8001:31;;8021:8;;;8001:31;4550:13;4489:2;4550;:13;:::i;:::-;4533:30;;4342:10;4533:30;:::i;:::-;8033:14;;7935:115;:::o;9542:306::-;-1:-1:-1;;;;;9663:19:0;;9642:4;9663:19;;;:11;:19;;;;;;;;9683:10;9663:31;;;;;;;;-1:-1:-1;;9663:52:0;9659:126;;-1:-1:-1;;;;;9732:19:0;;;;;;:11;:19;;;;;;;;9752:10;9732:31;;;;;;;:41;;9767:6;;9732:19;:41;;9767:6;;9732:41;:::i;:::-;;;;-1:-1:-1;;9659:126:0;9804:36;9814:6;9822:9;9833:6;9804:9;:36::i;:::-;9797:43;9542:306;-1:-1:-1;;;;9542:306:0:o;14170:433::-;5783:6;;-1:-1:-1;;;;;5783:6:0;5793:10;5783:20;5775:50;;;;-1:-1:-1;;;5775:50:0;;6393:2:1;5775:50:0;;;6375:21:1;6432:2;6412:18;;;6405:30;-1:-1:-1;;;6451:18:1;;;6444:47;6508:18;;5775:50:0;6191:341:1;5775:50:0;14305:7:::1;:14;14286:8;:15;:33;14278:67;;;::::0;-1:-1:-1;;;14278:67:0;;8900:2:1;14278:67:0::1;::::0;::::1;8882:21:1::0;8939:2;8919:18;;;8912:30;8978:23;8958:18;;;8951:51;9019:18;;14278:67:0::1;8698:345:1::0;14278:67:0::1;14361:8;14356:240;14379:8;:15;14375:1;:19;;;14356:240;;;14460:13;4489:2;14460;:13;:::i;:::-;14449:7;14457:1;14449:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;14434:10;8640:7:::0;8667:16;;;;;;;;;;;14424:49:::1;;14416:80;;;::::0;-1:-1:-1;;;14416:80:0;;9382:2:1;14416:80:0::1;::::0;::::1;9364:21:1::0;9421:2;9401:18;;;9394:30;9460:20;9440:18;;;9433:48;9498:18;;14416:80:0::1;9180:342:1::0;14416:80:0::1;14511:73;14528:10;14540:8;14549:1;14540:11;;;;;;;;;;:::i;:::-;;;;;;;4489:2;14564;:13;;;;:::i;:::-;14553:7;14561:1;14553:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;14579:4;14511:16;:73::i;:::-;-1:-1:-1::0;14396:3:0;::::1;::::0;::::1;:::i;:::-;;;;14356:240;;;;14170:433:::0;;:::o;10755:141::-;10808:7;8667:16;;;;;;4695:42;8667:16;;;;10847:39;;8667:16;10847:39;:::i;:::-;4550:13;4489:2;4550;:13;:::i;:::-;4533:30;;4342:10;4533:30;:::i;:::-;10836:51;;;;:::i;8056:112::-;8108:5;4550:13;4489:2;4550;:13;:::i;:::-;4533:30;;4342:10;4533:30;:::i;:::-;8132:1;8121:12;8117:31;;8137:8;;;8117:31;-1:-1:-1;4489:2:0;;8056:112::o;7359:221::-;7437:16;;-1:-1:-1;;;;;7437:16:0;7423:10;:30;7415:83;;;;-1:-1:-1;;;7415:83:0;;10061:2:1;7415:83:0;;;10043:21:1;10100:2;10080:18;;;10073:30;10139:34;10119:18;;;10112:62;-1:-1:-1;;;10190:18:1;;;10183:38;10238:19;;7415:83:0;9859:404:1;7415:83:0;7509:23;7529:1;7509:11;:23::i;:::-;7543:16;:29;;-1:-1:-1;;;;;;7543:29:0;;;7359:221::o;5929:539::-;5783:6;;-1:-1:-1;;;;;5783:6:0;5793:10;5783:20;5775:50;;;;-1:-1:-1;;;5775:50:0;;6393:2:1;5775:50:0;;;6375:21:1;6432:2;6412:18;;;6405:30;-1:-1:-1;;;6451:18:1;;;6444:47;6508:18;;5775:50:0;6191:341:1;5775:50:0;-1:-1:-1;;;;;6008:22:0;::::1;6000:96;;;::::0;-1:-1:-1;;;6000:96:0;;10470:2:1;6000:96:0::1;::::0;::::1;10452:21:1::0;10509:2;10489:18;;;10482:30;10548:34;10528:18;;;10521:62;10619:31;10599:18;;;10592:59;10668:19;;6000:96:0::1;10268:425:1::0;6000:96:0::1;-1:-1:-1::0;;;;;;;6115:16:0;::::1;::::0;6107:90:::1;;;::::0;-1:-1:-1;;;6107:90:0;;10470:2:1;6107:90:0::1;::::0;::::1;10452:21:1::0;10509:2;10489:18;;;10482:30;10548:34;10528:18;;;10521:62;10619:31;10599:18;;;10592:59;10668:19;;6107:90:0::1;10268:425:1::0;6107:90:0::1;6222:6;::::0;-1:-1:-1;;;;;6222:6:0::1;6232:1;8667:16:::0;;;;;;;;;;;6212:21;6208:113:::1;;6267:6;::::0;-1:-1:-1;;;;;6267:6:0::1;8640:7:::0;8667:16;;;;;;;;;;;6250:59:::1;::::0;6267:6;6275:8;;6285:17:::1;8574:117:::0;6250:59:::1;;6208:113;6360:6;::::0;;-1:-1:-1;;;;;6377:17:0;;::::1;-1:-1:-1::0;;;;;;6377:17:0;::::1;::::0;::::1;::::0;;;6410:40:::1;::::0;6360:6;::::1;::::0;6377:17;6360:6;;6410:40:::1;::::0;6341:16:::1;::::0;6410:40:::1;5989:479;5929:539:::0;:::o;9856:587::-;5783:6;;-1:-1:-1;;;;;5783:6:0;5793:10;5783:20;5775:50;;;;-1:-1:-1;;;5775:50:0;;6393:2:1;5775:50:0;;;6375:21:1;6432:2;6412:18;;;6405:30;-1:-1:-1;;;6451:18:1;;;6444:47;6508:18;;5775:50:0;6191:341:1;5775:50:0;9939:14:::1;::::0;-1:-1:-1;;;9939:14:0;::::1;;;9938:15;9930:24;;;::::0;::::1;;9997:4;-1:-1:-1::0;;;;;9973:29:0;::::1;::::0;9965:56:::1;;;::::0;-1:-1:-1;;;9965:56:0;;10900:2:1;9965:56:0::1;::::0;::::1;10882:21:1::0;10939:2;10919:18;;;10912:30;10978:16;10958:18;;;10951:44;11012:18;;9965:56:0::1;10698:338:1::0;9965:56:0::1;10032:11;:39:::0;;-1:-1:-1;;;;;;10032:39:0::1;-1:-1:-1::0;;;;;10032:39:0;::::1;::::0;;::::1;::::0;;;10086:23:::1;::::0;;-1:-1:-1;;;10086:23:0;;;;:21:::1;::::0;:23:::1;::::0;;::::1;::::0;;;;;;;;;-1:-1:-1;10032:39:0;10086:23:::1;;;;;;;;;;-1:-1:-1::0;10086:23:0::1;::::0;;::::1;;::::0;;::::1;-1:-1:-1::0;;10086:23:0::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;;;10082:354;;10425:8;::::0;::::1;10082:354;10173:9;:29:::0;;-1:-1:-1;;10173:29:0::1;::::0;-1:-1:-1;;;;;10173:29:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;10204:6:::1;:22:::0;;-1:-1:-1;;;;;;10204:22:0::1;::::0;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;10228:22:0;;;-1:-1:-1;10228:22:0::1;::::0;;;;;;;:29;;-1:-1:-1;;10228:29:0::1;::::0;;::::1;::::0;;10281:6:::1;::::0;10297:9;;10272:55:::1;::::0;10281:6;::::1;::::0;10297:9;;::::1;;-1:-1:-1::0;;10272:8:0::1;:55::i;:::-;10374:9;::::0;10342:62:::1;::::0;10359:4:::1;::::0;10374:9;;::::1;-1:-1:-1::0;;;;;10374:9:0::1;-1:-1:-1::0;;10342:8:0::1;:62::i;10082:354::-;9856:587:::0;:::o;6476:265::-;5783:6;;-1:-1:-1;;;;;5783:6:0;5793:10;5783:20;5775:50;;;;-1:-1:-1;;;5775:50:0;;6393:2:1;5775:50:0;;;6375:21:1;6432:2;6412:18;;;6405:30;-1:-1:-1;;;6451:18:1;;;6444:47;6508:18;;5775:50:0;6191:341:1;5775:50:0;6543:14:::1;::::0;-1:-1:-1;;;6543:14:0;::::1;;;6535:74;;;::::0;-1:-1:-1;;;6535:74:0;;11633:2:1;6535:74:0::1;::::0;::::1;11615:21:1::0;11672:2;11652:18;;;11645:30;11711:34;11691:18;;;11684:62;11782:17;11762:18;;;11755:45;11817:19;;6535:74:0::1;11431:411:1::0;6535:74:0::1;6639:6;::::0;;-1:-1:-1;;;;;;6656:19:0;::::1;::::0;;;6691:42:::1;::::0;-1:-1:-1;;;;;6639:6:0;;::::1;::::0;6620:16:::1;::::0;6639:6;;6691:42:::1;::::0;6620:16;;6691:42:::1;6524:217;6476:265::o:0;9359:175::-;5783:6;;9425:4;;-1:-1:-1;;;;;5783:6:0;5793:10;5783:20;5775:50;;;;-1:-1:-1;;;5775:50:0;;6393:2:1;5775:50:0;;;6375:21:1;6432:2;6412:18;;;6405:30;-1:-1:-1;;;6451:18:1;;;6444:47;6508:18;;5775:50:0;6191:341:1;5775:50:0;9474:9:::1;::::0;9442:62:::1;::::0;9459:4:::1;::::0;9474:9;;::::1;-1:-1:-1::0;;;;;9474:9:0::1;-1:-1:-1::0;;9442:8:0::1;:62::i;:::-;-1:-1:-1::0;9522:4:0::1;9359:175:::0;:::o;13378:480::-;5783:6;;-1:-1:-1;;;;;5783:6:0;5793:10;5783:20;5775:50;;;;-1:-1:-1;;;5775:50:0;;6393:2:1;5775:50:0;;;6375:21:1;6432:2;6412:18;;;6405:30;-1:-1:-1;;;6451:18:1;;;6444:47;6508:18;;5775:50:0;6191:341:1;5775:50:0;13440:14:::1;::::0;-1:-1:-1;;;13440:14:0;::::1;;;13439:15;13431:52;;;::::0;-1:-1:-1;;;13431:52:0;;12049:2:1;13431:52:0::1;::::0;::::1;12031:21:1::0;12088:2;12068:18;;;12061:30;12127:26;12107:18;;;12100:54;12171:18;;13431:52:0::1;11847:348:1::0;13431:52:0::1;13502:16;::::0;-1:-1:-1;;;13502:16:0;::::1;;;13494:53;;;::::0;-1:-1:-1;;;13494:53:0;;12402:2:1;13494:53:0::1;::::0;::::1;12384:21:1::0;12441:2;12421:18;;;12414:30;12480:26;12460:18;;;12453:54;12524:18;;13494:53:0::1;12200:348:1::0;13494:53:0::1;13570:11;::::0;-1:-1:-1;;;;;13570:11:0::1;13558:106;;13612:11;:40:::0;;-1:-1:-1;;;;;;13612:40:0::1;13646:4;13612:40;::::0;;13558:106:::1;13678:11;::::0;13700:6:::1;::::0;13678:87:::1;::::0;-1:-1:-1;;;13678:87:0;;-1:-1:-1;;;;;13700:6:0;;::::1;13678:87;::::0;::::1;12776:74:1::0;12898:10;13715:12:0::1;12886:23:1::0;12866:18;;;12859:51;12958:18;13737:15:0::1;12946:31:1::0;12926:18;;;12919:59;4489:2:0::1;12994:18:1::0;;;12987:45;13678:11:0;::::1;::::0;:21:::1;::::0;12748:19:1;;13678:87:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;13674:103:::0;13787:14:::1;:21:::0;;-1:-1:-1;;;;13787:21:0::1;-1:-1:-1::0;;;13787:21:0::1;::::0;;13819:23:::1;:31:::0;;-1:-1:-1;;13819:31:0::1;::::0;;13378:480::o;8699:165::-;8777:4;8794:40;8804:10;8816:9;8827:6;8794:9;:40::i;:::-;-1:-1:-1;8852:4:0;;8699:165;-1:-1:-1;;;8699:165:0:o;13987:175::-;5783:6;;-1:-1:-1;;;;;5783:6:0;5793:10;5783:20;5775:50;;;;-1:-1:-1;;;5775:50:0;;6393:2:1;5775:50:0;;;6375:21:1;6432:2;6412:18;;;6405:30;-1:-1:-1;;;6451:18:1;;;6444:47;6508:18;;5775:50:0;6191:341:1;5775:50:0;14115:6:::1;::::0;14123:30:::1;::::0;-1:-1:-1;;;14123:30:0;;14147:4:::1;14123:30;::::0;::::1;160:74:1::0;14083:5:0;;-1:-1:-1;;;;;14100:14:0;;::::1;::::0;::::1;::::0;14115:6;;;::::1;::::0;14100:14;;14123:15:::1;::::0;133:18:1;;14123:30:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14100:54;::::0;;::::1;::::0;;;;;;-1:-1:-1;;;;;13424:55:1;;;14100:54:0::1;::::0;::::1;13406:74:1::0;13496:18;;;13489:34;13379:18;;14100:54:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;6972:379::-:0;7054:16;;-1:-1:-1;;;;;7054:16:0;7040:10;:30;7032:83;;;;-1:-1:-1;;;7032:83:0;;10061:2:1;7032:83:0;;;10043:21:1;10100:2;10080:18;;;10073:30;10139:34;10119:18;;;10112:62;-1:-1:-1;;;10190:18:1;;;10183:38;10238:19;;7032:83:0;9859:404:1;7032:83:0;7148:8;;-1:-1:-1;;;;;7148:8:0;7171:25;;7167:96;;-1:-1:-1;;;;;7213:30:0;;7246:5;7213:30;;;:17;:30;;;;;:38;;-1:-1:-1;;7213:38:0;;;7167:96;-1:-1:-1;7273:8:0;:22;;-1:-1:-1;;;;;7273:22:0;;;-1:-1:-1;;;;;;7273:22:0;;;;;;;:8;7306:30;;;:17;:30;;;;;:37;;-1:-1:-1;;7306:37:0;7273:22;7306:37;;;6972:379::o;13866:109::-;5783:6;;-1:-1:-1;;;;;5783:6:0;5793:10;5783:20;5775:50;;;;-1:-1:-1;;;5775:50:0;;6393:2:1;5775:50:0;;;6375:21:1;6432:2;6412:18;;;6405:30;-1:-1:-1;;;6451:18:1;;;6444:47;6508:18;;5775:50:0;6191:341:1;5775:50:0;13928:6:::1;::::0;13920:47:::1;::::0;-1:-1:-1;;;;;13928:6:0;;::::1;::::0;13945:21:::1;13920:47:::0;::::1;;;::::0;13928:6:::1;13920:47:::0;13928:6;13920:47;13945:21;13928:6;13920:47;::::1;;;;;;;;;;;;;::::0;::::1;;;;10599:148:::0;5783:6;;-1:-1:-1;;;;;5783:6:0;5793:10;5783:20;5775:50;;;;-1:-1:-1;;;5775:50:0;;6393:2:1;5775:50:0;;;6375:21:1;6432:2;6412:18;;;6405:30;-1:-1:-1;;;6451:18:1;;;6444:47;6508:18;;5775:50:0;6191:341:1;5775:50:0;-1:-1:-1;;;;;10695:34:0;;;::::1;;::::0;;;:25:::1;:34;::::0;;;;:44;;-1:-1:-1;;10695:44:0::1;::::0;::::1;;::::0;;;::::1;::::0;;10599:148::o;9041:310::-;-1:-1:-1;;;;;9136:20:0;;9128:52;;;;-1:-1:-1;;;9128:52:0;;13986:2:1;9128:52:0;;;13968:21:1;14025:2;14005:18;;;13998:30;-1:-1:-1;;;14044:18:1;;;14037:49;14103:18;;9128:52:0;13784:343:1;9128:52:0;-1:-1:-1;;;;;9199:21:0;;9191:53;;;;-1:-1:-1;;;9191:53:0;;13986:2:1;9191:53:0;;;13968:21:1;14025:2;14005:18;;;13998:30;-1:-1:-1;;;14044:18:1;;;14037:49;14103:18;;9191:53:0;13784:343:1;9191:53:0;-1:-1:-1;;;;;9257:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;9310:33;;2508:25:1;;;9310:33:0;;2481:18:1;9310:33:0;;;;;;;9041:310;;;:::o;11889:1020::-;11968:4;-1:-1:-1;;;;;11993:18:0;;11985:68;;;;-1:-1:-1;;;11985:68:0;;14334:2:1;11985:68:0;;;14316:21:1;14373:2;14353:18;;;14346:30;14412:34;14392:18;;;14385:62;-1:-1:-1;;;14463:18:1;;;14456:35;14508:19;;11985:68:0;14132:401:1;11985:68:0;-1:-1:-1;;;;;12072:16:0;;12064:64;;;;-1:-1:-1;;;12064:64:0;;14740:2:1;12064:64:0;;;14722:21:1;14779:2;14759:18;;;14752:30;14818:34;14798:18;;;14791:62;-1:-1:-1;;;14869:18:1;;;14862:33;14912:19;;12064:64:0;14538:399:1;12064:64:0;12156:1;12147:6;:10;12139:64;;;;-1:-1:-1;;;12139:64:0;;15144:2:1;12139:64:0;;;15126:21:1;15183:2;15163:18;;;15156:30;15222:34;15202:18;;;15195:62;-1:-1:-1;;;15273:18:1;;;15266:39;15322:19;;12139:64:0;14942:405:1;12139:64:0;-1:-1:-1;;;;;12302:13:0;;12214:8;12302:13;;;:7;:13;;;;;;12214:8;;;;12302:13;;12298:162;;;12338:4;12332:10;;12298:162;;;-1:-1:-1;;;;;12364:11:0;;;;;;:7;:11;;;;;;;;12360:100;;;12399:4;12392:11;;12360:100;;;-1:-1:-1;12444:4:0;12360:100;12474:20;12485:4;12491:2;12474:10;:20::i;:::-;12470:371;;;12515:14;;-1:-1:-1;;;12515:14:0;;;;12511:319;;12555:5;12550:265;;12585:34;;-1:-1:-1;;;12585:34:0;;15554:2:1;12585:34:0;;;15536:21:1;15593:2;15573:18;;;15566:30;15632:26;15612:18;;;15605:54;15676:18;;12585:34:0;15352:348:1;12550:265:0;-1:-1:-1;;;;;12650:31:0;;;;;;:25;:31;;;;;;;;12649:32;:66;;;;-1:-1:-1;;;;;;12686:29:0;;;;;;:25;:29;;;;;;;;12685:30;12649:66;12645:170;;;12740:55;;-1:-1:-1;;;12740:55:0;;15907:2:1;12740:55:0;;;15889:21:1;15946:2;15926:18;;;15919:30;15985:34;15965:18;;;15958:62;-1:-1:-1;;;16036:18:1;;;16029:43;16089:19;;12740:55:0;15705:409:1;12645:170:0;12860:41;12877:4;12883:2;12887:6;12895:5;12860:16;:41::i;:::-;12853:48;11889:1020;-1:-1:-1;;;;;;;11889:1020:0:o;14611:552::-;-1:-1:-1;;;;;14726:13:0;;14709:4;14726:13;;;;;;;;;;:23;;14743:6;;14726:13;14709:4;;14726:23;;14743:6;;14726:23;:::i;:::-;;;;-1:-1:-1;;;;;;;14760:11:0;;:7;:11;;;;;;;;;;:21;;14775:6;;14760:7;:21;;14775:6;;14760:21;:::i;:::-;;;;;;;;14812:2;-1:-1:-1;;;;;14797:26:0;14806:4;-1:-1:-1;;;;;14797:26:0;;14816:6;14797:26;;;;2508:25:1;;2496:2;2481:18;;2362:177;14797:26:0;;;;;;;;14839:16;;-1:-1:-1;;;14839:16:0;;;;14834:298;;14872:28;14891:4;14897:2;14872:18;:28::i;:::-;14920:16;;-1:-1:-1;;;14920:16:0;;;;14919:17;:41;;;;;14940:20;14951:4;14957:2;14940:10;:20::i;:::-;14919:77;;;;-1:-1:-1;;;;;;14965:31:0;;;;;;:25;:31;;;;;;;;14964:32;14919:77;:111;;;;-1:-1:-1;;;;;;15001:29:0;;;;;;:25;:29;;;;;;;;15000:30;14919:111;:121;;;;;15035:5;15034:6;14919:121;14915:206;;;15061:44;;-1:-1:-1;;;15061:44:0;;16321:2:1;15061:44:0;;;16303:21:1;16360:2;16340:18;;;16333:30;16399:34;16379:18;;;16372:62;-1:-1:-1;;;16450:18:1;;;16443:32;16492:19;;15061:44:0;16119:398:1;14915:206:0;-1:-1:-1;15151:4:0;14611:552;;;;;;:::o;11435:446::-;11536:6;;11504:4;;-1:-1:-1;;;;;11528:14:0;;;11536:6;;11528:14;;;;:43;;-1:-1:-1;11565:6:0;;-1:-1:-1;;;;;11559:12:0;;;11565:6;;11559:12;;11528:43;:79;;;;-1:-1:-1;11601:6:0;;-1:-1:-1;;;;;11601:6:0;11588:9;:19;;11528:79;:118;;;;-1:-1:-1;;;;;;11625:21:0;;;;;;:17;:21;;;;;;;;11624:22;11528:118;:159;;;;-1:-1:-1;;;;;;11664:23:0;;;;;;:17;:23;;;;;;;;11663:24;11528:159;:186;;;;-1:-1:-1;;;;;;11704:10:0;;4695:42;11704:10;;11528:186;:219;;;;-1:-1:-1;;;;;;11731:16:0;;;;11528:219;:257;;;;-1:-1:-1;;;;;;11764:21:0;;11780:4;11764:21;;11528:257;:302;;;;-1:-1:-1;11818:11:0;;-1:-1:-1;;;;;11802:28:0;;;11818:11;;11802:28;;11528:302;:345;;;;-1:-1:-1;11861:11:0;;-1:-1:-1;;;;;11847:26:0;;;11861:11;;11847:26;;11528:345;11521:352;11435:446;-1:-1:-1;;;11435:446:0:o;12917:453::-;13000:16;;-1:-1:-1;;;13000:16:0;;;;12999:17;12991:65;;;;-1:-1:-1;;;12991:65:0;;16724:2:1;12991:65:0;;;16706:21:1;16763:2;16743:18;;;16736:30;16802:34;16782:18;;;16775:62;-1:-1:-1;;;16853:18:1;;;16846:33;16896:19;;12991:65:0;16522:399:1;12991:65:0;13072:20;13083:4;13089:2;13072:10;:20::i;:::-;13071:21;:37;;;;-1:-1:-1;13102:6:0;;-1:-1:-1;;;;;13096:12:0;;;13102:6;;13096:12;13071:37;13067:296;;;13137:11;;-1:-1:-1;;;;;13137:11:0;13125:227;;13183:11;:40;;-1:-1:-1;;;;;;13183:40:0;13217:4;13183:40;;;10904:523;;:::o;13125:227::-;-1:-1:-1;;;;;13264:23:0;;;;;;:17;:23;;;;;:30;;-1:-1:-1;;13264:30:0;13290:4;13264:30;;;13313:16;:23;;-1:-1:-1;;;;13313:23:0;-1:-1:-1;;;13313:23:0;;;12917:453;;:::o;245:548:1:-;357:4;386:2;415;404:9;397:21;447:6;441:13;490:6;485:2;474:9;470:18;463:34;515:1;525:140;539:6;536:1;533:13;525:140;;;634:14;;;630:23;;624:30;600:17;;;619:2;596:26;589:66;554:10;;525:140;;;529:3;714:1;709:2;700:6;689:9;685:22;681:31;674:42;784:2;777;773:7;768:2;760:6;756:15;752:29;741:9;737:45;733:54;725:62;;;;245:548;;;;:::o;1238:154::-;-1:-1:-1;;;;;1317:5:1;1313:54;1306:5;1303:65;1293:93;;1382:1;1379;1372:12;1397:315;1465:6;1473;1526:2;1514:9;1505:7;1501:23;1497:32;1494:52;;;1542:1;1539;1532:12;1494:52;1581:9;1568:23;1600:31;1625:5;1600:31;:::i;:::-;1650:5;1702:2;1687:18;;;;1674:32;;-1:-1:-1;;;1397:315:1:o;1717:247::-;1776:6;1829:2;1817:9;1808:7;1804:23;1800:32;1797:52;;;1845:1;1842;1835:12;1797:52;1884:9;1871:23;1903:31;1928:5;1903:31;:::i;1969:388::-;2037:6;2045;2098:2;2086:9;2077:7;2073:23;2069:32;2066:52;;;2114:1;2111;2104:12;2066:52;2153:9;2140:23;2172:31;2197:5;2172:31;:::i;:::-;2222:5;-1:-1:-1;2279:2:1;2264:18;;2251:32;2292:33;2251:32;2292:33;:::i;:::-;2344:7;2334:17;;;1969:388;;;;;:::o;2544:456::-;2621:6;2629;2637;2690:2;2678:9;2669:7;2665:23;2661:32;2658:52;;;2706:1;2703;2696:12;2658:52;2745:9;2732:23;2764:31;2789:5;2764:31;:::i;:::-;2814:5;-1:-1:-1;2871:2:1;2856:18;;2843:32;2884:33;2843:32;2884:33;:::i;:::-;2544:456;;2936:7;;-1:-1:-1;;;2990:2:1;2975:18;;;;2962:32;;2544:456::o;3005:127::-;3066:10;3061:3;3057:20;3054:1;3047:31;3097:4;3094:1;3087:15;3121:4;3118:1;3111:15;3137:275;3208:2;3202:9;3273:2;3254:13;;-1:-1:-1;;3250:27:1;3238:40;;3308:18;3293:34;;3329:22;;;3290:62;3287:88;;;3355:18;;:::i;:::-;3391:2;3384:22;3137:275;;-1:-1:-1;3137:275:1:o;3417:183::-;3477:4;3510:18;3502:6;3499:30;3496:56;;;3532:18;;:::i;:::-;-1:-1:-1;3577:1:1;3573:14;3589:4;3569:25;;3417:183::o;3605:662::-;3659:5;3712:3;3705:4;3697:6;3693:17;3689:27;3679:55;;3730:1;3727;3720:12;3679:55;3766:6;3753:20;3792:4;3816:60;3832:43;3872:2;3832:43;:::i;:::-;3816:60;:::i;:::-;3910:15;;;3996:1;3992:10;;;;3980:23;;3976:32;;;3941:12;;;;4020:15;;;4017:35;;;4048:1;4045;4038:12;4017:35;4084:2;4076:6;4072:15;4096:142;4112:6;4107:3;4104:15;4096:142;;;4178:17;;4166:30;;4216:12;;;;4129;;4096:142;;;-1:-1:-1;4256:5:1;3605:662;-1:-1:-1;;;;;;3605:662:1:o;4272:1215::-;4390:6;4398;4451:2;4439:9;4430:7;4426:23;4422:32;4419:52;;;4467:1;4464;4457:12;4419:52;4507:9;4494:23;4536:18;4577:2;4569:6;4566:14;4563:34;;;4593:1;4590;4583:12;4563:34;4631:6;4620:9;4616:22;4606:32;;4676:7;4669:4;4665:2;4661:13;4657:27;4647:55;;4698:1;4695;4688:12;4647:55;4734:2;4721:16;4756:4;4780:60;4796:43;4836:2;4796:43;:::i;4780:60::-;4874:15;;;4956:1;4952:10;;;;4944:19;;4940:28;;;4905:12;;;;4980:19;;;4977:39;;;5012:1;5009;5002:12;4977:39;5036:11;;;;5056:217;5072:6;5067:3;5064:15;5056:217;;;5152:3;5139:17;5169:31;5194:5;5169:31;:::i;:::-;5213:18;;5089:12;;;;5251;;;;5056:217;;;5292:5;-1:-1:-1;;5335:18:1;;5322:32;;-1:-1:-1;;5366:16:1;;;5363:36;;;5395:1;5392;5385:12;5363:36;;5418:63;5473:7;5462:8;5451:9;5447:24;5418:63;:::i;:::-;5408:73;;;4272:1215;;;;;:::o;5681:118::-;5767:5;5760:13;5753:21;5746:5;5743:32;5733:60;;5789:1;5786;5779:12;5804:382;5869:6;5877;5930:2;5918:9;5909:7;5905:23;5901:32;5898:52;;;5946:1;5943;5936:12;5898:52;5985:9;5972:23;6004:31;6029:5;6004:31;:::i;:::-;6054:5;-1:-1:-1;6111:2:1;6096:18;;6083:32;6124:30;6083:32;6124:30;:::i;6877:127::-;6938:10;6933:3;6929:20;6926:1;6919:31;6969:4;6966:1;6959:15;6993:4;6990:1;6983:15;7009:422;7098:1;7141:5;7098:1;7155:270;7176:7;7166:8;7163:21;7155:270;;;7235:4;7231:1;7227:6;7223:17;7217:4;7214:27;7211:53;;;7244:18;;:::i;:::-;7294:7;7284:8;7280:22;7277:55;;;7314:16;;;;7277:55;7393:22;;;;7353:15;;;;7155:270;;;7159:3;7009:422;;;;;:::o;7436:806::-;7485:5;7515:8;7505:80;;-1:-1:-1;7556:1:1;7570:5;;7505:80;7604:4;7594:76;;-1:-1:-1;7641:1:1;7655:5;;7594:76;7686:4;7704:1;7699:59;;;;7772:1;7767:130;;;;7679:218;;7699:59;7729:1;7720:10;;7743:5;;;7767:130;7804:3;7794:8;7791:17;7788:43;;;7811:18;;:::i;:::-;-1:-1:-1;;7867:1:1;7853:16;;7882:5;;7679:218;;7981:2;7971:8;7968:16;7962:3;7956:4;7953:13;7949:36;7943:2;7933:8;7930:16;7925:2;7919:4;7916:12;7912:35;7909:77;7906:159;;;-1:-1:-1;8018:19:1;;;8050:5;;7906:159;8097:34;8122:8;8116:4;8097:34;:::i;:::-;8167:6;8163:1;8159:6;8155:19;8146:7;8143:32;8140:58;;;8178:18;;:::i;:::-;8216:20;;7436:806;-1:-1:-1;;;7436:806:1:o;8247:140::-;8305:5;8334:47;8375:4;8365:8;8361:19;8355:4;8334:47;:::i;8392:168::-;8465:9;;;8496;;8513:15;;;8507:22;;8493:37;8483:71;;8534:18;;:::i;8565:128::-;8632:9;;;8653:11;;;8650:37;;;8667:18;;:::i;9048:127::-;9109:10;9104:3;9100:20;9097:1;9090:31;9140:4;9137:1;9130:15;9164:4;9161:1;9154:15;9527:197;9565:3;9593:6;9634:2;9627:5;9623:14;9661:2;9652:7;9649:15;9646:41;;9667:18;;:::i;:::-;9716:1;9703:15;;9527:197;-1:-1:-1;;;9527:197:1:o;9729:125::-;9794:9;;;9815:10;;;9812:36;;;9828:18;;:::i;11041:385::-;11120:6;11128;11181:2;11169:9;11160:7;11156:23;11152:32;11149:52;;;11197:1;11194;11187:12;11149:52;11229:9;11223:16;11248:31;11273:5;11248:31;:::i;:::-;11348:2;11333:18;;11327:25;11298:5;;-1:-1:-1;11361:33:1;11327:25;11361:33;:::i;13043:184::-;13113:6;13166:2;13154:9;13145:7;13141:23;13137:32;13134:52;;;13182:1;13179;13172:12;13134:52;-1:-1:-1;13205:16:1;;13043:184;-1:-1:-1;13043:184:1:o;13534:245::-;13601:6;13654:2;13642:9;13633:7;13629:23;13625:32;13622:52;;;13670:1;13667;13660:12;13622:52;13702:9;13696:16;13721:28;13743:5;13721:28;:::i

Swarm Source

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