ETH Price: $2,481.27 (-0.72%)

Token

SH.AI (SH.AI)
 

Overview

Max Total Supply

100,000,000 SH.AI

Holders

82

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.000000001 SH.AI

Value
$0.00
0xA9Bf428fECc148ca9F04455f475b29aDD1365cD1
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:
SHAI

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-02-27
*/

/**

Your personal AI trading Dapp controlled by words and complete tools , to maximize your X's in DeFi.

-NEW TEH UTILITY : AI TRADING DAPP
-DAO , NFT , AI MARKETPLACE
-BIG INFLUENCERS INVOLVED 
-LIQUIDITY LOCKED
-5% TAXES
-AUDITED CA 


Telegram:  https://t.me/ShaiPortal
Twitter: https://twitter.com/SH_AITech
Website: https://www.Sh-ai.tech

*/

// SPDX-License-Identifier: unlicense

pragma solidity ^0.8.7;
 
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
}
 
interface IERC20 {
    function totalSupply() external view returns (uint256);
 
    function balanceOf(address account) external view returns (uint256);
 
    function transfer(address recipient, uint256 amount) external returns (bool);
 
    function allowance(address owner, address spender) external view returns (uint256);
 
    function approve(address spender, uint256 amount) external returns (bool);
 
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);
 
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}
 
contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );
 
    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }
 
    function owner() public view returns (address) {
        return _owner;
    }
 
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
 
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
 
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
 
}
 
library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }
 
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
 
    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        return c;
    }
 
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }
 
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
 
    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}
 
interface IUniswapV2Factory {
    function createPair(address tokenA, address tokenB)
        external
        returns (address pair);
}
 
interface IUniswapV2Router02 {    
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
 
    function factory() external pure returns (address);
}
 
contract SHAI is Context, IERC20, Ownable {
 
    using SafeMath for uint256;
 
    string private constant _name = "SH.AI";//
    string private constant _symbol = "SH.AI";//  
    uint8 private constant _decimals = 9;
 
    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 100_000_000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 public launchBlock;
 
    //Buy Fee
    uint256 private _redisFeeOnBuy = 0;//
    uint256 private _taxFeeOnBuy = 98;//
 
    //Sell Fee
    uint256 private _redisFeeOnSell = 0;//
    uint256 private _taxFeeOnSell = 45;//
 
    //Original Fee
    uint256 private _redisFee = _redisFeeOnSell;
    uint256 private _taxFee = _taxFeeOnSell;
 
    uint256 private _previousredisFee = _redisFee;
    uint256 private _previoustaxFee = _taxFee;
 
    mapping(address => bool) public bots;
    mapping(address => uint256) private cooldown;
 
    address private constant _developmentAddress = 0x43993A32190Bf8BF8655eC85073A3619889904B3;//
    address private constant _marketingAddress = 0xEAaf49b88f7FF19Bb685E4a71BC8C8EDa7139a7D;//
 
    IUniswapV2Router02 immutable public uniswapV2Router;
    address immutable public uniswapV2Pair;
    address constant public USDC_ADDRESS = 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48;    
    IERC20 immutable USDC = IERC20(USDC_ADDRESS);
      
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = true;
 
    uint256 public _maxTxAmount = 2_000_000 * 10**9; //
    uint256 public _maxWalletSize = 3_000_000 * 10**9; //
    uint256 public _swapTokensAtAmount = 100_000 * 10**9; //
 
    event MaxTxAmountUpdated(uint256 _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }
 
    constructor() {
 
        _rOwned[_msgSender()] = _rTotal;
 
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), USDC_ADDRESS);
 
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_developmentAddress] = true;
        _isExcludedFromFee[_marketingAddress] = true;
  
        emit Transfer(address(0), _msgSender(), _tTotal);
    }
 
    function name() public pure returns (string memory) {
        return _name;
    }
 
    function symbol() public pure returns (string memory) {
        return _symbol;
    }
 
    function decimals() public pure returns (uint8) {
        return _decimals;
    }
 
    function totalSupply() public pure override returns (uint256) {
        return _tTotal;
    }
 
    function balanceOf(address account) public view override returns (uint256) {
        return tokenFromReflection(_rOwned[account]);
    }
 
    function transfer(address recipient, uint256 amount)
        public
        override
        returns (bool)
    {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }
 
    function allowance(address owner, address spender)
        public
        view
        override
        returns (uint256)
    {
        return _allowances[owner][spender];
    }
 
    function approve(address spender, uint256 amount)
        public
        override
        returns (bool)
    {
        _approve(_msgSender(), spender, amount);
        return true;
    }
 
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(
            sender,
            _msgSender(),
            _allowances[sender][_msgSender()].sub(
                amount,
                "ERC20: transfer amount exceeds allowance"
            )
        );
        return true;
    }
 
    function tokenFromReflection(uint256 rAmount)
        private
        view
        returns (uint256)
    {
        require(
            rAmount <= _rTotal,
            "Amount must be less than total reflections"
        );
        uint256 currentRate = _getRate();
        return rAmount.div(currentRate);
    }
 
    function removeAllFee() private {
        if (_redisFee == 0 && _taxFee == 0) return;
 
        _previousredisFee = _redisFee;
        _previoustaxFee = _taxFee;
 
        _redisFee = 0;
        _taxFee = 0;
    }
 
    function restoreAllFee() private {
        _redisFee = _previousredisFee;
        _taxFee = _previoustaxFee;
    }
 
    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
 
    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");

        if(inSwap){
            return _tokenTransfer(from, to, amount, false);
        }
 
        if (from != _developmentAddress && to != _developmentAddress) {
 
            //Trade start check
            require(tradingOpen, "TOKEN: This account cannot send tokens until trading is enabled");
            
            require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit");
            require(!bots[from] && !bots[to], "TOKEN: Your account is blacklisted!");
 
            if(block.number <= launchBlock + 0 && from == uniswapV2Pair && 
            to != address(uniswapV2Router) && to != address(this) && to != uniswapV2Pair){   
                bots[to] = true;
            } 
 
            if(to != uniswapV2Pair) {
                require(balanceOf(to) + amount < _maxWalletSize, "TOKEN: Balance exceeds wallet size!");
            }
 
            uint256 contractTokenBalance = balanceOf(address(this));
            bool canSwap = contractTokenBalance >= _swapTokensAtAmount;
              
            if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled 
            && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
                if(contractTokenBalance >= _maxTxAmount) {
                    contractTokenBalance = _maxTxAmount;
                }
                swapTokensForUSDC(contractTokenBalance);
            }
        }
 
        bool takeFee = true;
 
        //Transfer Tokens
        if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapV2Pair && to != uniswapV2Pair)) {
            takeFee = false;
        } else {
 
            //Set Fee for Buys
            if(from == uniswapV2Pair && to != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnBuy;
                _taxFee = _taxFeeOnBuy;
            }
 
            //Set Fee for Sells
            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnSell;
                _taxFee = _taxFeeOnSell;
            }
        }

        _tokenTransfer(from, to, amount, takeFee);
    }
 
    function swapTokensForUSDC(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = USDC_ADDRESS;

        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(
            (tokenAmount.div(2)),
            0,
            path,
            _marketingAddress,
            block.timestamp
        );

        uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(
            (tokenAmount.div(2)),
            0,
            path,
            _developmentAddress,
            block.timestamp
        );

    }
     
    function setTrading(bool _tradingOpen) public onlyOwner {
        tradingOpen = _tradingOpen;
        launchBlock = block.number;
    }
 
    function manualswap() external {
        require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress);
        uint256 contractTokenBalance = balanceOf(address(this));
        swapTokensForUSDC(contractTokenBalance);
    }

    function blockBots(address[] memory bots_) public onlyOwner {
        for (uint256 i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }
 
    function unblockBot(address notbot) public onlyOwner {
        bots[notbot] = false;
    }
 
    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (!takeFee) removeAllFee();
        _transferStandard(sender, recipient, amount);
        if (!takeFee) restoreAllFee();
    }
 
    function _transferStandard(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tTeam
        ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeTeam(tTeam);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }
 
    function _takeTeam(uint256 tTeam) private {
        uint256 currentRate = _getRate();
        uint256 rTeam = tTeam.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
    }
 
    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }
 
    receive() external payable {}
 
    function _getValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) =
            _getTValues(tAmount, _redisFee, _taxFee);
        uint256 currentRate = _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) =
            _getRValues(tAmount, tFee, tTeam, currentRate);
 
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }
 
    function _getTValues(
        uint256 tAmount,
        uint256 redisFee,
        uint256 taxFee
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = tAmount.mul(redisFee).div(100);
        uint256 tTeam = tAmount.mul(taxFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
 
        return (tTransferAmount, tFee, tTeam);
    }
 
    function _getRValues(
        uint256 tAmount,
        uint256 tFee,
        uint256 tTeam,
        uint256 currentRate
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTeam = tTeam.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam);
 
        return (rAmount, rTransferAmount, rFee); 
    }
 
    function _getRate() private view returns (uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
 
        return rSupply.div(tSupply);
    }
 
    function _getCurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
 
        return (rSupply, tSupply);
    }
 
    function setFee(uint256 redisFeeOnBuy, uint256 redisFeeOnSell, uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner {
        _redisFeeOnBuy = redisFeeOnBuy;
        _redisFeeOnSell = redisFeeOnSell;
 
        _taxFeeOnBuy = taxFeeOnBuy;
        _taxFeeOnSell = taxFeeOnSell;
    }
 
    //Set minimum tokens required to swap.
    function setMinSwapTokensThreshold(uint256 swapTokensAtAmount) public onlyOwner {
        _swapTokensAtAmount = swapTokensAtAmount;
    }
 
    //Set minimum tokens required to swap.
    function toggleSwap(bool _swapEnabled) public onlyOwner {
        swapEnabled = _swapEnabled;
    }
 
    //Set maximum transaction
    function setMaxTxnAmount(uint256 maxTxAmount) public onlyOwner {
        _maxTxAmount = maxTxAmount;
    }
 
    function setMaxWalletSize(uint256 maxWalletSize) public onlyOwner {
        _maxWalletSize = maxWalletSize;
    }
 
    function excludeMultipleAccountsFromFees(address[] calldata accounts, bool excluded) public onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFromFee[accounts[i]] = excluded;
        }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","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":"USDC_ADDRESS","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":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"blockBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"launchBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"redisFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"redisFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_tradingOpen","type":"bool"}],"name":"setTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"unblockBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60e06040526200001a67016345785d8a0000600019620003e6565b6200002890600019620003c0565b600655600060098190556062600a55600b819055602d600c819055600d829055600e819055600f919091556010557fa0b86991c6218b36c1d19d4a2e9eb0ce3606eb4800000000000000000000000060c0526013805462ffff0019166201000017905566071afd498d0000601455660aa87bee538000601555655af3107a4000601655348015620000b857600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060065433600090815260026020908152604091829020929092557f7a250d5630b4cf539739df2c5dacb4c659f2488d000000000000000000000000608052805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d92839263c45a01559260048083019392829003018186803b1580156200018057600080fd5b505afa15801562000195573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001bb91906200038e565b6040516364e329cb60e11b815230600482015273a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4860248201526001600160a01b03919091169063c9c6539690604401602060405180830381600087803b1580156200021957600080fd5b505af11580156200022e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200025491906200038e565b60601b6001600160601b03191660a0526001600560006200027d6000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff19958616179055308152600590925281208054831660019081179091557f0ca6016fc9be612d34231340ce243bd563272f8debdc64e6412b1ddd5fd2fa1c805484168217905573eaaf49b88f7ff19bb685e4a71bc8c8eda7139a7d9091527f4a85a9e47c2105879a8ace3c8154d8839bb80079ceb40063f50d20cd9d5df9bf8054909216179055620003313390565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef67016345785d8a00006040516200037f91815260200190565b60405180910390a35062000409565b600060208284031215620003a157600080fd5b81516001600160a01b0381168114620003b957600080fd5b9392505050565b600082821015620003e157634e487b7160e01b600052601160045260246000fd5b500390565b6000826200040457634e487b7160e01b600052601260045260246000fd5b500690565b60805160601c60a05160601c60c05160601c612024620004a1600039600050506000818161034001528181610f6601528181610ff601528181611056015281816111300152818161122d0152818161126a015281816112ae015261133301526000818161027d01528181610fa3015281816112ea0152818161136f0152818161153201528181611561015261160401526120246000f3fe6080604052600436106101d05760003560e01c80638da5cb5b116100f7578063bb09d9b711610095578063d00efb2f11610064578063d00efb2f1461054e578063dd62ed3e14610564578063ea1644d5146105aa578063f2fde38b146105ca57600080fd5b8063bb09d9b7146104c1578063bfd79284146104e9578063c3c8cd8014610519578063c492f0461461052e57600080fd5b806395d89b41116100d157806395d89b41146101fe57806398a5c31514610461578063a2a957bb14610481578063a9059cbb146104a157600080fd5b80638da5cb5b1461040d5780638f70ccf71461042b5780638f9a55c01461044b57600080fd5b8063313ce5671161016f57806370a082311161013e57806370a08231146103a2578063715018a6146103c257806374010ece146103d75780637d1db4a5146103f757600080fd5b8063313ce5671461031257806349bd5a5e1461032e5780636b999053146103625780636d8aa8f81461038257600080fd5b80631694505e116101ab5780631694505e1461026b57806318160ddd146102b757806323b872dd146102dc5780632fd689e3146102fc57600080fd5b8062b8cf2a146101dc57806306fdde03146101fe578063095ea7b31461023b57600080fd5b366101d757005b600080fd5b3480156101e857600080fd5b506101fc6101f7366004611ccc565b6105ea565b005b34801561020a57600080fd5b50604080518082018252600581526453482e414960d81b602082015290516102329190611dfe565b60405180910390f35b34801561024757600080fd5b5061025b610256366004611c1e565b610689565b6040519015158152602001610232565b34801561027757600080fd5b5061029f7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610232565b3480156102c357600080fd5b5067016345785d8a00005b604051908152602001610232565b3480156102e857600080fd5b5061025b6102f7366004611be2565b6106a0565b34801561030857600080fd5b506102ce60165481565b34801561031e57600080fd5b5060405160098152602001610232565b34801561033a57600080fd5b5061029f7f000000000000000000000000000000000000000000000000000000000000000081565b34801561036e57600080fd5b506101fc61037d366004611b94565b610709565b34801561038e57600080fd5b506101fc61039d366004611d98565b610754565b3480156103ae57600080fd5b506102ce6103bd366004611b94565b61079a565b3480156103ce57600080fd5b506101fc6107bc565b3480156103e357600080fd5b506101fc6103f2366004611db3565b610830565b34801561040357600080fd5b506102ce60145481565b34801561041957600080fd5b506000546001600160a01b031661029f565b34801561043757600080fd5b506101fc610446366004611d98565b61085f565b34801561045757600080fd5b506102ce60155481565b34801561046d57600080fd5b506101fc61047c366004611db3565b6108a0565b34801561048d57600080fd5b506101fc61049c366004611dcc565b6108cf565b3480156104ad57600080fd5b5061025b6104bc366004611c1e565b61090d565b3480156104cd57600080fd5b5061029f73a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4881565b3480156104f557600080fd5b5061025b610504366004611b94565b60116020526000908152604090205460ff1681565b34801561052557600080fd5b506101fc61091a565b34801561053a57600080fd5b506101fc610549366004611c48565b610971565b34801561055a57600080fd5b506102ce60085481565b34801561057057600080fd5b506102ce61057f366004611baf565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b3480156105b657600080fd5b506101fc6105c5366004611db3565b610a12565b3480156105d657600080fd5b506101fc6105e5366004611b94565b610a41565b6000546001600160a01b0316331461061d5760405162461bcd60e51b815260040161061490611e53565b60405180910390fd5b60005b81518110156106855760016011600084848151811061064157610641611f9a565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061067d81611f69565b915050610620565b5050565b6000610696338484610b2b565b5060015b92915050565b60006106ad848484610c4f565b6106ff84336106fa85604051806060016040528060288152602001611fc7602891396001600160a01b038a16600090815260046020908152604080832033845290915290205491906113c2565b610b2b565b5060019392505050565b6000546001600160a01b031633146107335760405162461bcd60e51b815260040161061490611e53565b6001600160a01b03166000908152601160205260409020805460ff19169055565b6000546001600160a01b0316331461077e5760405162461bcd60e51b815260040161061490611e53565b60138054911515620100000262ff000019909216919091179055565b6001600160a01b03811660009081526002602052604081205461069a906113fc565b6000546001600160a01b031633146107e65760405162461bcd60e51b815260040161061490611e53565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b0316331461085a5760405162461bcd60e51b815260040161061490611e53565b601455565b6000546001600160a01b031633146108895760405162461bcd60e51b815260040161061490611e53565b6013805460ff191691151591909117905543600855565b6000546001600160a01b031633146108ca5760405162461bcd60e51b815260040161061490611e53565b601655565b6000546001600160a01b031633146108f95760405162461bcd60e51b815260040161061490611e53565b600993909355600b91909155600a55600c55565b6000610696338484610c4f565b337343993a32190bf8bf8655ec85073a3619889904b3148061094f57503373eaaf49b88f7ff19bb685e4a71bc8c8eda7139a7d145b61095857600080fd5b60006109633061079a565b905061096e81611480565b50565b6000546001600160a01b0316331461099b5760405162461bcd60e51b815260040161061490611e53565b60005b82811015610a0c5781600560008686858181106109bd576109bd611f9a565b90506020020160208101906109d29190611b94565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580610a0481611f69565b91505061099e565b50505050565b6000546001600160a01b03163314610a3c5760405162461bcd60e51b815260040161061490611e53565b601555565b6000546001600160a01b03163314610a6b5760405162461bcd60e51b815260040161061490611e53565b6001600160a01b038116610ad05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610614565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610b8d5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610614565b6001600160a01b038216610bee5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610614565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610cb35760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610614565b6001600160a01b038216610d155760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610614565b60008111610d775760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610614565b601354610100900460ff1615610d9957610d9483838360006116b2565b505050565b6001600160a01b0383167343993a32190bf8bf8655ec85073a3619889904b314801590610de357506001600160a01b0382167343993a32190bf8bf8655ec85073a3619889904b314155b156111e35760135460ff16610e605760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c6564006064820152608401610614565b601454811115610eb25760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000006044820152606401610614565b6001600160a01b03831660009081526011602052604090205460ff16158015610ef457506001600160a01b03821660009081526011602052604090205460ff16155b610f4c5760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460448201526265642160e81b6064820152608401610614565b600854610f5a906000611ef9565b4311158015610f9a57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316145b8015610fd857507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b8015610fed57506001600160a01b0382163014155b801561102b57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b15611054576001600160a01b0382166000908152601160205260409020805460ff191660011790555b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316146110fd576015548161109a8461079a565b6110a49190611ef9565b106110fd5760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b6064820152608401610614565b60006111083061079a565b601654909150811080159081906111275750601354610100900460ff16155b801561116557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031614155b8015611179575060135462010000900460ff165b801561119e57506001600160a01b03851660009081526005602052604090205460ff16155b80156111c357506001600160a01b03841660009081526005602052604090205460ff16155b156111e05760145482106111d75760145491505b6111e082611480565b50505b6001600160a01b03831660009081526005602052604090205460019060ff168061122557506001600160a01b03831660009081526005602052604090205460ff165b8061129f57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b03161415801561129f57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614155b156112ac575060006113b6565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b031614801561131f57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614155b1561133157600954600d55600a54600e555b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b03161480156113a457507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b031614155b156113b657600b54600d55600c54600e555b610a0c848484846116b2565b600081848411156113e65760405162461bcd60e51b81526004016106149190611dfe565b5060006113f38486611f52565b95945050505050565b60006006548211156114635760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610614565b600061146d6116e0565b90506114798382611703565b9392505050565b6013805461ff00191661010017905560408051600280825260608201835260009260208301908036833701905050905030816000815181106114c4576114c4611f9a565b60200260200101906001600160a01b031690816001600160a01b03168152505073a0b86991c6218b36c1d19d4a2e9eb0ce3606eb488160018151811061150c5761150c611f9a565b60200260200101906001600160a01b031690816001600160a01b031681525050611557307f000000000000000000000000000000000000000000000000000000000000000084610b2b565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016635c11d795611591846002611703565b60008473eaaf49b88f7ff19bb685e4a71bc8c8eda7139a7d426040518663ffffffff1660e01b81526004016115ca959493929190611e88565b600060405180830381600087803b1580156115e457600080fd5b505af11580156115f8573d6000803e3d6000fd5b50506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169150635c11d7959050611638846002611703565b6000847343993a32190bf8bf8655ec85073a3619889904b3426040518663ffffffff1660e01b8152600401611671959493929190611e88565b600060405180830381600087803b15801561168b57600080fd5b505af115801561169f573d6000803e3d6000fd5b50506013805461ff001916905550505050565b806116bf576116bf611745565b6116ca848484611773565b80610a0c57610a0c600f54600d55601054600e55565b60008060006116ed61186a565b90925090506116fc8282611703565b9250505090565b600061147983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506118aa565b600d541580156117555750600e54155b1561175c57565b600d8054600f55600e805460105560009182905555565b600080600080600080611785876118d8565b6001600160a01b038f16600090815260026020526040902054959b509399509197509550935091506117b79087611935565b6001600160a01b03808b1660009081526002602052604080822093909355908a16815220546117e69086611977565b6001600160a01b038916600090815260026020526040902055611808816119d6565b6118128483611a20565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161185791815260200190565b60405180910390a3505050505050505050565b600654600090819067016345785d8a00006118858282611703565b8210156118a15750506006549267016345785d8a000092509050565b90939092509050565b600081836118cb5760405162461bcd60e51b81526004016106149190611dfe565b5060006113f38486611f11565b60008060008060008060008060006118f58a600d54600e54611a44565b92509250925060006119056116e0565b905060008060006119188e878787611a99565b919e509c509a509598509396509194505050505091939550919395565b600061147983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506113c2565b6000806119848385611ef9565b9050838110156114795760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610614565b60006119e06116e0565b905060006119ee8383611ae9565b30600090815260026020526040902054909150611a0b9082611977565b30600090815260026020526040902055505050565b600654611a2d9083611935565b600655600754611a3d9082611977565b6007555050565b6000808080611a5e6064611a588989611ae9565b90611703565b90506000611a716064611a588a89611ae9565b90506000611a8982611a838b86611935565b90611935565b9992985090965090945050505050565b6000808080611aa88886611ae9565b90506000611ab68887611ae9565b90506000611ac48888611ae9565b90506000611ad682611a838686611935565b939b939a50919850919650505050505050565b600082611af85750600061069a565b6000611b048385611f33565b905082611b118583611f11565b146114795760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610614565b80356001600160a01b0381168114611b7f57600080fd5b919050565b80358015158114611b7f57600080fd5b600060208284031215611ba657600080fd5b61147982611b68565b60008060408385031215611bc257600080fd5b611bcb83611b68565b9150611bd960208401611b68565b90509250929050565b600080600060608486031215611bf757600080fd5b611c0084611b68565b9250611c0e60208501611b68565b9150604084013590509250925092565b60008060408385031215611c3157600080fd5b611c3a83611b68565b946020939093013593505050565b600080600060408486031215611c5d57600080fd5b833567ffffffffffffffff80821115611c7557600080fd5b818601915086601f830112611c8957600080fd5b813581811115611c9857600080fd5b8760208260051b8501011115611cad57600080fd5b602092830195509350611cc39186019050611b84565b90509250925092565b60006020808385031215611cdf57600080fd5b823567ffffffffffffffff80821115611cf757600080fd5b818501915085601f830112611d0b57600080fd5b813581811115611d1d57611d1d611fb0565b8060051b604051601f19603f83011681018181108582111715611d4257611d42611fb0565b604052828152858101935084860182860187018a1015611d6157600080fd5b600095505b83861015611d8b57611d7781611b68565b855260019590950194938601938601611d66565b5098975050505050505050565b600060208284031215611daa57600080fd5b61147982611b84565b600060208284031215611dc557600080fd5b5035919050565b60008060008060808587031215611de257600080fd5b5050823594602084013594506040840135936060013592509050565b600060208083528351808285015260005b81811015611e2b57858101830151858201604001528201611e0f565b81811115611e3d576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611ed85784516001600160a01b031683529383019391830191600101611eb3565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115611f0c57611f0c611f84565b500190565b600082611f2e57634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615611f4d57611f4d611f84565b500290565b600082821015611f6457611f64611f84565b500390565b6000600019821415611f7d57611f7d611f84565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212206c982c4488d3ceaa53ab5b9d39557815938144309ed8426cccfd3ebfb479c46664736f6c63430008070033

Deployed Bytecode

0x6080604052600436106101d05760003560e01c80638da5cb5b116100f7578063bb09d9b711610095578063d00efb2f11610064578063d00efb2f1461054e578063dd62ed3e14610564578063ea1644d5146105aa578063f2fde38b146105ca57600080fd5b8063bb09d9b7146104c1578063bfd79284146104e9578063c3c8cd8014610519578063c492f0461461052e57600080fd5b806395d89b41116100d157806395d89b41146101fe57806398a5c31514610461578063a2a957bb14610481578063a9059cbb146104a157600080fd5b80638da5cb5b1461040d5780638f70ccf71461042b5780638f9a55c01461044b57600080fd5b8063313ce5671161016f57806370a082311161013e57806370a08231146103a2578063715018a6146103c257806374010ece146103d75780637d1db4a5146103f757600080fd5b8063313ce5671461031257806349bd5a5e1461032e5780636b999053146103625780636d8aa8f81461038257600080fd5b80631694505e116101ab5780631694505e1461026b57806318160ddd146102b757806323b872dd146102dc5780632fd689e3146102fc57600080fd5b8062b8cf2a146101dc57806306fdde03146101fe578063095ea7b31461023b57600080fd5b366101d757005b600080fd5b3480156101e857600080fd5b506101fc6101f7366004611ccc565b6105ea565b005b34801561020a57600080fd5b50604080518082018252600581526453482e414960d81b602082015290516102329190611dfe565b60405180910390f35b34801561024757600080fd5b5061025b610256366004611c1e565b610689565b6040519015158152602001610232565b34801561027757600080fd5b5061029f7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b039091168152602001610232565b3480156102c357600080fd5b5067016345785d8a00005b604051908152602001610232565b3480156102e857600080fd5b5061025b6102f7366004611be2565b6106a0565b34801561030857600080fd5b506102ce60165481565b34801561031e57600080fd5b5060405160098152602001610232565b34801561033a57600080fd5b5061029f7f000000000000000000000000f012e8d3fac2c34fdc12de880a65308dc0dc197281565b34801561036e57600080fd5b506101fc61037d366004611b94565b610709565b34801561038e57600080fd5b506101fc61039d366004611d98565b610754565b3480156103ae57600080fd5b506102ce6103bd366004611b94565b61079a565b3480156103ce57600080fd5b506101fc6107bc565b3480156103e357600080fd5b506101fc6103f2366004611db3565b610830565b34801561040357600080fd5b506102ce60145481565b34801561041957600080fd5b506000546001600160a01b031661029f565b34801561043757600080fd5b506101fc610446366004611d98565b61085f565b34801561045757600080fd5b506102ce60155481565b34801561046d57600080fd5b506101fc61047c366004611db3565b6108a0565b34801561048d57600080fd5b506101fc61049c366004611dcc565b6108cf565b3480156104ad57600080fd5b5061025b6104bc366004611c1e565b61090d565b3480156104cd57600080fd5b5061029f73a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4881565b3480156104f557600080fd5b5061025b610504366004611b94565b60116020526000908152604090205460ff1681565b34801561052557600080fd5b506101fc61091a565b34801561053a57600080fd5b506101fc610549366004611c48565b610971565b34801561055a57600080fd5b506102ce60085481565b34801561057057600080fd5b506102ce61057f366004611baf565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b3480156105b657600080fd5b506101fc6105c5366004611db3565b610a12565b3480156105d657600080fd5b506101fc6105e5366004611b94565b610a41565b6000546001600160a01b0316331461061d5760405162461bcd60e51b815260040161061490611e53565b60405180910390fd5b60005b81518110156106855760016011600084848151811061064157610641611f9a565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061067d81611f69565b915050610620565b5050565b6000610696338484610b2b565b5060015b92915050565b60006106ad848484610c4f565b6106ff84336106fa85604051806060016040528060288152602001611fc7602891396001600160a01b038a16600090815260046020908152604080832033845290915290205491906113c2565b610b2b565b5060019392505050565b6000546001600160a01b031633146107335760405162461bcd60e51b815260040161061490611e53565b6001600160a01b03166000908152601160205260409020805460ff19169055565b6000546001600160a01b0316331461077e5760405162461bcd60e51b815260040161061490611e53565b60138054911515620100000262ff000019909216919091179055565b6001600160a01b03811660009081526002602052604081205461069a906113fc565b6000546001600160a01b031633146107e65760405162461bcd60e51b815260040161061490611e53565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b0316331461085a5760405162461bcd60e51b815260040161061490611e53565b601455565b6000546001600160a01b031633146108895760405162461bcd60e51b815260040161061490611e53565b6013805460ff191691151591909117905543600855565b6000546001600160a01b031633146108ca5760405162461bcd60e51b815260040161061490611e53565b601655565b6000546001600160a01b031633146108f95760405162461bcd60e51b815260040161061490611e53565b600993909355600b91909155600a55600c55565b6000610696338484610c4f565b337343993a32190bf8bf8655ec85073a3619889904b3148061094f57503373eaaf49b88f7ff19bb685e4a71bc8c8eda7139a7d145b61095857600080fd5b60006109633061079a565b905061096e81611480565b50565b6000546001600160a01b0316331461099b5760405162461bcd60e51b815260040161061490611e53565b60005b82811015610a0c5781600560008686858181106109bd576109bd611f9a565b90506020020160208101906109d29190611b94565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580610a0481611f69565b91505061099e565b50505050565b6000546001600160a01b03163314610a3c5760405162461bcd60e51b815260040161061490611e53565b601555565b6000546001600160a01b03163314610a6b5760405162461bcd60e51b815260040161061490611e53565b6001600160a01b038116610ad05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610614565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610b8d5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610614565b6001600160a01b038216610bee5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610614565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610cb35760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610614565b6001600160a01b038216610d155760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610614565b60008111610d775760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610614565b601354610100900460ff1615610d9957610d9483838360006116b2565b505050565b6001600160a01b0383167343993a32190bf8bf8655ec85073a3619889904b314801590610de357506001600160a01b0382167343993a32190bf8bf8655ec85073a3619889904b314155b156111e35760135460ff16610e605760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c6564006064820152608401610614565b601454811115610eb25760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000006044820152606401610614565b6001600160a01b03831660009081526011602052604090205460ff16158015610ef457506001600160a01b03821660009081526011602052604090205460ff16155b610f4c5760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460448201526265642160e81b6064820152608401610614565b600854610f5a906000611ef9565b4311158015610f9a57507f000000000000000000000000f012e8d3fac2c34fdc12de880a65308dc0dc19726001600160a01b0316836001600160a01b0316145b8015610fd857507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0316826001600160a01b031614155b8015610fed57506001600160a01b0382163014155b801561102b57507f000000000000000000000000f012e8d3fac2c34fdc12de880a65308dc0dc19726001600160a01b0316826001600160a01b031614155b15611054576001600160a01b0382166000908152601160205260409020805460ff191660011790555b7f000000000000000000000000f012e8d3fac2c34fdc12de880a65308dc0dc19726001600160a01b0316826001600160a01b0316146110fd576015548161109a8461079a565b6110a49190611ef9565b106110fd5760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b6064820152608401610614565b60006111083061079a565b601654909150811080159081906111275750601354610100900460ff16155b801561116557507f000000000000000000000000f012e8d3fac2c34fdc12de880a65308dc0dc19726001600160a01b0316856001600160a01b031614155b8015611179575060135462010000900460ff165b801561119e57506001600160a01b03851660009081526005602052604090205460ff16155b80156111c357506001600160a01b03841660009081526005602052604090205460ff16155b156111e05760145482106111d75760145491505b6111e082611480565b50505b6001600160a01b03831660009081526005602052604090205460019060ff168061122557506001600160a01b03831660009081526005602052604090205460ff165b8061129f57507f000000000000000000000000f012e8d3fac2c34fdc12de880a65308dc0dc19726001600160a01b0316846001600160a01b03161415801561129f57507f000000000000000000000000f012e8d3fac2c34fdc12de880a65308dc0dc19726001600160a01b0316836001600160a01b031614155b156112ac575060006113b6565b7f000000000000000000000000f012e8d3fac2c34fdc12de880a65308dc0dc19726001600160a01b0316846001600160a01b031614801561131f57507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0316836001600160a01b031614155b1561133157600954600d55600a54600e555b7f000000000000000000000000f012e8d3fac2c34fdc12de880a65308dc0dc19726001600160a01b0316836001600160a01b03161480156113a457507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0316846001600160a01b031614155b156113b657600b54600d55600c54600e555b610a0c848484846116b2565b600081848411156113e65760405162461bcd60e51b81526004016106149190611dfe565b5060006113f38486611f52565b95945050505050565b60006006548211156114635760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610614565b600061146d6116e0565b90506114798382611703565b9392505050565b6013805461ff00191661010017905560408051600280825260608201835260009260208301908036833701905050905030816000815181106114c4576114c4611f9a565b60200260200101906001600160a01b031690816001600160a01b03168152505073a0b86991c6218b36c1d19d4a2e9eb0ce3606eb488160018151811061150c5761150c611f9a565b60200260200101906001600160a01b031690816001600160a01b031681525050611557307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84610b2b565b6001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d16635c11d795611591846002611703565b60008473eaaf49b88f7ff19bb685e4a71bc8c8eda7139a7d426040518663ffffffff1660e01b81526004016115ca959493929190611e88565b600060405180830381600087803b1580156115e457600080fd5b505af11580156115f8573d6000803e3d6000fd5b50506001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169150635c11d7959050611638846002611703565b6000847343993a32190bf8bf8655ec85073a3619889904b3426040518663ffffffff1660e01b8152600401611671959493929190611e88565b600060405180830381600087803b15801561168b57600080fd5b505af115801561169f573d6000803e3d6000fd5b50506013805461ff001916905550505050565b806116bf576116bf611745565b6116ca848484611773565b80610a0c57610a0c600f54600d55601054600e55565b60008060006116ed61186a565b90925090506116fc8282611703565b9250505090565b600061147983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506118aa565b600d541580156117555750600e54155b1561175c57565b600d8054600f55600e805460105560009182905555565b600080600080600080611785876118d8565b6001600160a01b038f16600090815260026020526040902054959b509399509197509550935091506117b79087611935565b6001600160a01b03808b1660009081526002602052604080822093909355908a16815220546117e69086611977565b6001600160a01b038916600090815260026020526040902055611808816119d6565b6118128483611a20565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161185791815260200190565b60405180910390a3505050505050505050565b600654600090819067016345785d8a00006118858282611703565b8210156118a15750506006549267016345785d8a000092509050565b90939092509050565b600081836118cb5760405162461bcd60e51b81526004016106149190611dfe565b5060006113f38486611f11565b60008060008060008060008060006118f58a600d54600e54611a44565b92509250925060006119056116e0565b905060008060006119188e878787611a99565b919e509c509a509598509396509194505050505091939550919395565b600061147983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506113c2565b6000806119848385611ef9565b9050838110156114795760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610614565b60006119e06116e0565b905060006119ee8383611ae9565b30600090815260026020526040902054909150611a0b9082611977565b30600090815260026020526040902055505050565b600654611a2d9083611935565b600655600754611a3d9082611977565b6007555050565b6000808080611a5e6064611a588989611ae9565b90611703565b90506000611a716064611a588a89611ae9565b90506000611a8982611a838b86611935565b90611935565b9992985090965090945050505050565b6000808080611aa88886611ae9565b90506000611ab68887611ae9565b90506000611ac48888611ae9565b90506000611ad682611a838686611935565b939b939a50919850919650505050505050565b600082611af85750600061069a565b6000611b048385611f33565b905082611b118583611f11565b146114795760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610614565b80356001600160a01b0381168114611b7f57600080fd5b919050565b80358015158114611b7f57600080fd5b600060208284031215611ba657600080fd5b61147982611b68565b60008060408385031215611bc257600080fd5b611bcb83611b68565b9150611bd960208401611b68565b90509250929050565b600080600060608486031215611bf757600080fd5b611c0084611b68565b9250611c0e60208501611b68565b9150604084013590509250925092565b60008060408385031215611c3157600080fd5b611c3a83611b68565b946020939093013593505050565b600080600060408486031215611c5d57600080fd5b833567ffffffffffffffff80821115611c7557600080fd5b818601915086601f830112611c8957600080fd5b813581811115611c9857600080fd5b8760208260051b8501011115611cad57600080fd5b602092830195509350611cc39186019050611b84565b90509250925092565b60006020808385031215611cdf57600080fd5b823567ffffffffffffffff80821115611cf757600080fd5b818501915085601f830112611d0b57600080fd5b813581811115611d1d57611d1d611fb0565b8060051b604051601f19603f83011681018181108582111715611d4257611d42611fb0565b604052828152858101935084860182860187018a1015611d6157600080fd5b600095505b83861015611d8b57611d7781611b68565b855260019590950194938601938601611d66565b5098975050505050505050565b600060208284031215611daa57600080fd5b61147982611b84565b600060208284031215611dc557600080fd5b5035919050565b60008060008060808587031215611de257600080fd5b5050823594602084013594506040840135936060013592509050565b600060208083528351808285015260005b81811015611e2b57858101830151858201604001528201611e0f565b81811115611e3d576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611ed85784516001600160a01b031683529383019391830191600101611eb3565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115611f0c57611f0c611f84565b500190565b600082611f2e57634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615611f4d57611f4d611f84565b500290565b600082821015611f6457611f64611f84565b500390565b6000600019821415611f7d57611f7d611f84565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212206c982c4488d3ceaa53ab5b9d39557815938144309ed8426cccfd3ebfb479c46664736f6c63430008070033

Deployed Bytecode Sourcemap

4030:13884:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13053:169;;;;;;;;;;-1:-1:-1;13053:169:0;;;;;:::i;:::-;;:::i;:::-;;6784:83;;;;;;;;;;-1:-1:-1;6854:5:0;;;;;;;;;;;-1:-1:-1;;;6854:5:0;;;;6784:83;;;;6854:5;6784:83;:::i;:::-;;;;;;;;7716:193;;;;;;;;;;-1:-1:-1;7716:193:0;;;;;:::i;:::-;;:::i;:::-;;;4369:14:1;;4362:22;4344:41;;4332:2;4317:18;7716:193:0;4204:187:1;5456:51:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4160:32:1;;;4142:51;;4130:2;4115:18;5456:51:0;3996:203:1;7064:95:0;;;;;;;;;;-1:-1:-1;4580:19:0;7064:95;;;10940:25:1;;;10928:2;10913:18;7064:95:0;10794:177:1;7918:446:0;;;;;;;;;;-1:-1:-1;7918:446:0;;;;;:::i;:::-;;:::i;5932:52::-;;;;;;;;;;;;;;;;6972:83;;;;;;;;;;-1:-1:-1;6972:83:0;;4253:1;12103:36:1;;12091:2;12076:18;6972:83:0;11961:184:1;5514:38:0;;;;;;;;;;;;;;;13231:92;;;;;;;;;;-1:-1:-1;13231:92:0;;;;;:::i;:::-;;:::i;17295:101::-;;;;;;;;;;-1:-1:-1;17295:101:0;;;;;:::i;:::-;;:::i;7168:138::-;;;;;;;;;;-1:-1:-1;7168:138:0;;;;;:::i;:::-;;:::i;1938:148::-;;;;;;;;;;;;;:::i;17436:108::-;;;;;;;;;;-1:-1:-1;17436:108:0;;;;;:::i;:::-;;:::i;5816:47::-;;;;;;;;;;;;;;;;1722:79;;;;;;;;;;-1:-1:-1;1760:7:0;1787:6;-1:-1:-1;;;;;1787:6:0;1722:79;;12651:138;;;;;;;;;;-1:-1:-1;12651:138:0;;;;;:::i;:::-;;:::i;5873:49::-;;;;;;;;;;;;;;;;17103:139;;;;;;;;;;-1:-1:-1;17103:139:0;;;;;:::i;:::-;;:::i;16756:294::-;;;;;;;;;;-1:-1:-1;16756:294:0;;;;;:::i;:::-;;:::i;7315:199::-;;;;;;;;;;-1:-1:-1;7315:199:0;;;;;:::i;:::-;;:::i;5559:81::-;;;;;;;;;;;;5598:42;5559:81;;5162:36;;;;;;;;;;-1:-1:-1;5162:36:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;12798:247;;;;;;;;;;;;;:::i;17677:234::-;;;;;;;;;;-1:-1:-1;17677:234:0;;;;;:::i;:::-;;:::i;4695:26::-;;;;;;;;;;;;;;;;7523:184;;;;;;;;;;-1:-1:-1;7523:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;7672:18:0;;;7640:7;7672:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7523:184;17553:115;;;;;;;;;;-1:-1:-1;17553:115:0;;;;;:::i;:::-;;:::i;2095:244::-;;;;;;;;;;-1:-1:-1;2095:244:0;;;;;:::i;:::-;;:::i;13053:169::-;1850:6;;-1:-1:-1;;;;;1850:6:0;551:10;1850:22;1842:67;;;;-1:-1:-1;;;1842:67:0;;;;;;;:::i;:::-;;;;;;;;;13129:9:::1;13124:91;13148:5;:12;13144:1;:16;13124:91;;;13199:4;13182;:14;13187:5;13193:1;13187:8;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;13182:14:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;13182:14:0;:21;;-1:-1:-1;;13182:21:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13162:3;::::1;::::0;::::1;:::i;:::-;;;;13124:91;;;;13053:169:::0;:::o;7716:193::-;7818:4;7840:39;551:10;7863:7;7872:6;7840:8;:39::i;:::-;-1:-1:-1;7897:4:0;7716:193;;;;;:::o;7918:446::-;8050:4;8067:36;8077:6;8085:9;8096:6;8067:9;:36::i;:::-;8114:220;8137:6;551:10;8185:138;8241:6;8185:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8185:19:0;;;;;;:11;:19;;;;;;;;551:10;8185:33;;;;;;;;;;:37;:138::i;:::-;8114:8;:220::i;:::-;-1:-1:-1;8352:4:0;7918:446;;;;;:::o;13231:92::-;1850:6;;-1:-1:-1;;;;;1850:6:0;551:10;1850:22;1842:67;;;;-1:-1:-1;;;1842:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13295:12:0::1;13310:5;13295:12:::0;;;:4:::1;:12;::::0;;;;:20;;-1:-1:-1;;13295:20:0::1;::::0;;13231:92::o;17295:101::-;1850:6;;-1:-1:-1;;;;;1850:6:0;551:10;1850:22;1842:67;;;;-1:-1:-1;;;1842:67:0;;;;;;;:::i;:::-;17362:11:::1;:26:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;17362:26:0;;::::1;::::0;;;::::1;::::0;;17295:101::o;7168:138::-;-1:-1:-1;;;;;7281:16:0;;7234:7;7281:16;;;:7;:16;;;;;;7261:37;;:19;:37::i;1938:148::-;1850:6;;-1:-1:-1;;;;;1850:6:0;551:10;1850:22;1842:67;;;;-1:-1:-1;;;1842:67:0;;;;;;;:::i;:::-;2045:1:::1;2029:6:::0;;2008:40:::1;::::0;-1:-1:-1;;;;;2029:6:0;;::::1;::::0;2008:40:::1;::::0;2045:1;;2008:40:::1;2076:1;2059:19:::0;;-1:-1:-1;;;;;;2059:19:0::1;::::0;;1938:148::o;17436:108::-;1850:6;;-1:-1:-1;;;;;1850:6:0;551:10;1850:22;1842:67;;;;-1:-1:-1;;;1842:67:0;;;;;;;:::i;:::-;17510:12:::1;:26:::0;17436:108::o;12651:138::-;1850:6;;-1:-1:-1;;;;;1850:6:0;551:10;1850:22;1842:67;;;;-1:-1:-1;;;1842:67:0;;;;;;;:::i;:::-;12718:11:::1;:26:::0;;-1:-1:-1;;12718:26:0::1;::::0;::::1;;::::0;;;::::1;::::0;;12769:12:::1;12755:11;:26:::0;12651:138::o;17103:139::-;1850:6;;-1:-1:-1;;;;;1850:6:0;551:10;1850:22;1842:67;;;;-1:-1:-1;;;1842:67:0;;;;;;;:::i;:::-;17194:19:::1;:40:::0;17103:139::o;16756:294::-;1850:6;;-1:-1:-1;;;;;1850:6:0;551:10;1850:22;1842:67;;;;-1:-1:-1;;;1842:67:0;;;;;;;:::i;:::-;16890:14:::1;:30:::0;;;;16931:15:::1;:32:::0;;;;16977:12:::1;:26:::0;17014:13:::1;:28:::0;16756:294::o;7315:199::-;7420:4;7442:42;551:10;7466:9;7477:6;7442:9;:42::i;12798:247::-;551:10;5306:42;12848:35;;:72;;-1:-1:-1;551:10:0;5402:42;12887:33;12848:72;12840:81;;;;;;12932:28;12963:24;12981:4;12963:9;:24::i;:::-;12932:55;;12998:39;13016:20;12998:17;:39::i;:::-;12829:216;12798:247::o;17677:234::-;1850:6;;-1:-1:-1;;;;;1850:6:0;551:10;1850:22;1842:67;;;;-1:-1:-1;;;1842:67:0;;;;;;;:::i;:::-;17794:9:::1;17790:114;17809:19:::0;;::::1;17790:114;;;17884:8;17850:18;:31;17869:8;;17878:1;17869:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;17850:31:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;17850:31:0;:42;;-1:-1:-1;;17850:42:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17830:3;::::1;::::0;::::1;:::i;:::-;;;;17790:114;;;;17677:234:::0;;;:::o;17553:115::-;1850:6;;-1:-1:-1;;;;;1850:6:0;551:10;1850:22;1842:67;;;;-1:-1:-1;;;1842:67:0;;;;;;;:::i;:::-;17630:14:::1;:30:::0;17553:115::o;2095:244::-;1850:6;;-1:-1:-1;;;;;1850:6:0;551:10;1850:22;1842:67;;;;-1:-1:-1;;;1842:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2184:22:0;::::1;2176:73;;;::::0;-1:-1:-1;;;2176:73:0;;7038:2:1;2176:73:0::1;::::0;::::1;7020:21:1::0;7077:2;7057:18;;;7050:30;7116:34;7096:18;;;7089:62;-1:-1:-1;;;7167:18:1;;;7160:36;7213:19;;2176:73:0::1;6836:402:1::0;2176:73:0::1;2286:6;::::0;;2265:38:::1;::::0;-1:-1:-1;;;;;2265:38:0;;::::1;::::0;2286:6;::::1;::::0;2265:38:::1;::::0;::::1;2314:6;:17:::0;;-1:-1:-1;;;;;;2314:17:0::1;-1:-1:-1::0;;;;;2314:17:0;;;::::1;::::0;;;::::1;::::0;;2095:244::o;9061:369::-;-1:-1:-1;;;;;9188:19:0;;9180:68;;;;-1:-1:-1;;;9180:68:0;;10591:2:1;9180:68:0;;;10573:21:1;10630:2;10610:18;;;10603:30;10669:34;10649:18;;;10642:62;-1:-1:-1;;;10720:18:1;;;10713:34;10764:19;;9180:68:0;10389:400:1;9180:68:0;-1:-1:-1;;;;;9267:21:0;;9259:68;;;;-1:-1:-1;;;9259:68:0;;7445:2:1;9259:68:0;;;7427:21:1;7484:2;7464:18;;;7457:30;7523:34;7503:18;;;7496:62;-1:-1:-1;;;7574:18:1;;;7567:32;7616:19;;9259:68:0;7243:398:1;9259:68:0;-1:-1:-1;;;;;9338:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9390:32;;10940:25:1;;;9390:32:0;;10913:18:1;9390:32:0;;;;;;;9061:369;;;:::o;9439:2469::-;-1:-1:-1;;;;;9561:18:0;;9553:68;;;;-1:-1:-1;;;9553:68:0;;9781:2:1;9553:68:0;;;9763:21:1;9820:2;9800:18;;;9793:30;9859:34;9839:18;;;9832:62;-1:-1:-1;;;9910:18:1;;;9903:35;9955:19;;9553:68:0;9579:401:1;9553:68:0;-1:-1:-1;;;;;9640:16:0;;9632:64;;;;-1:-1:-1;;;9632:64:0;;5434:2:1;9632:64:0;;;5416:21:1;5473:2;5453:18;;;5446:30;5512:34;5492:18;;;5485:62;-1:-1:-1;;;5563:18:1;;;5556:33;5606:19;;9632:64:0;5232:399:1;9632:64:0;9724:1;9715:6;:10;9707:64;;;;-1:-1:-1;;;9707:64:0;;9371:2:1;9707:64:0;;;9353:21:1;9410:2;9390:18;;;9383:30;9449:34;9429:18;;;9422:62;-1:-1:-1;;;9500:18:1;;;9493:39;9549:19;;9707:64:0;9169:405:1;9707:64:0;9787:6;;;;;;;9784:83;;;9816:39;9831:4;9837:2;9841:6;9849:5;9816:14;:39::i;:::-;9439:2469;;;:::o;9784:83::-;-1:-1:-1;;;;;9884:27:0;;5306:42;9884:27;;;;:56;;-1:-1:-1;;;;;;9915:25:0;;5306:42;9915:25;;9884:56;9880:1300;;;10001:11;;;;9993:87;;;;-1:-1:-1;;;9993:87:0;;5838:2:1;9993:87:0;;;5820:21:1;5877:2;5857:18;;;5850:30;5916:34;5896:18;;;5889:62;5987:33;5967:18;;;5960:61;6038:19;;9993:87:0;5636:427:1;9993:87:0;10127:12;;10117:6;:22;;10109:63;;;;-1:-1:-1;;;10109:63:0;;6681:2:1;10109:63:0;;;6663:21:1;6720:2;6700:18;;;6693:30;6759;6739:18;;;6732:58;6807:18;;10109:63:0;6479:352:1;10109:63:0;-1:-1:-1;;;;;10196:10:0;;;;;;:4;:10;;;;;;;;10195:11;:24;;;;-1:-1:-1;;;;;;10211:8:0;;;;;;:4;:8;;;;;;;;10210:9;10195:24;10187:72;;;;-1:-1:-1;;;10187:72:0;;7848:2:1;10187:72:0;;;7830:21:1;7887:2;7867:18;;;7860:30;7926:34;7906:18;;;7899:62;-1:-1:-1;;;7977:18:1;;;7970:33;8020:19;;10187:72:0;7646:399:1;10187:72:0;10296:11;;:15;;10310:1;10296:15;:::i;:::-;10280:12;:31;;:56;;;;;10323:13;-1:-1:-1;;;;;10315:21:0;:4;-1:-1:-1;;;;;10315:21:0;;10280:56;:104;;;;;10368:15;-1:-1:-1;;;;;10354:30:0;:2;-1:-1:-1;;;;;10354:30:0;;;10280:104;:127;;;;-1:-1:-1;;;;;;10388:19:0;;10402:4;10388:19;;10280:127;:150;;;;;10417:13;-1:-1:-1;;;;;10411:19:0;:2;-1:-1:-1;;;;;10411:19:0;;;10280:150;10277:207;;;-1:-1:-1;;;;;10453:8:0;;;;;;:4;:8;;;;;:15;;-1:-1:-1;;10453:15:0;10464:4;10453:15;;;10277:207;10511:13;-1:-1:-1;;;;;10505:19:0;:2;-1:-1:-1;;;;;10505:19:0;;10502:146;;10578:14;;10569:6;10553:13;10563:2;10553:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10545:87;;;;-1:-1:-1;;;10545:87:0;;10187:2:1;10545:87:0;;;10169:21:1;10226:2;10206:18;;;10199:30;10265:34;10245:18;;;10238:62;-1:-1:-1;;;10316:18:1;;;10309:33;10359:19;;10545:87:0;9985:399:1;10545:87:0;10665:28;10696:24;10714:4;10696:9;:24::i;:::-;10774:19;;10665:55;;-1:-1:-1;10750:43:0;;;;;;;10828:18;;-1:-1:-1;10840:6:0;;;;;;;10839:7;10828:18;:43;;;;;10858:13;-1:-1:-1;;;;;10850:21:0;:4;-1:-1:-1;;;;;10850:21:0;;;10828:43;:58;;;;-1:-1:-1;10875:11:0;;;;;;;10828:58;:101;;;;-1:-1:-1;;;;;;10905:24:0;;;;;;:18;:24;;;;;;;;10904:25;10828:101;:128;;;;-1:-1:-1;;;;;;10934:22:0;;;;;;:18;:22;;;;;;;;10933:23;10828:128;10824:345;;;11004:12;;10980:20;:36;10977:119;;11064:12;;11041:35;;10977:119;11114:39;11132:20;11114:17;:39::i;:::-;9942:1238;;9880:1300;-1:-1:-1;;;;;11258:24:0;;11193:12;11258:24;;;:18;:24;;;;;;11208:4;;11258:24;;;:50;;-1:-1:-1;;;;;;11286:22:0;;;;;;:18;:22;;;;;;;;11258:50;11257:102;;;;11322:13;-1:-1:-1;;;;;11314:21:0;:4;-1:-1:-1;;;;;11314:21:0;;;:44;;;;;11345:13;-1:-1:-1;;;;;11339:19:0;:2;-1:-1:-1;;;;;11339:19:0;;;11314:44;11253:594;;;-1:-1:-1;11386:5:0;11253:594;;;11470:13;-1:-1:-1;;;;;11462:21:0;:4;-1:-1:-1;;;;;11462:21:0;;:55;;;;;11501:15;-1:-1:-1;;;;;11487:30:0;:2;-1:-1:-1;;;;;11487:30:0;;;11462:55;11459:162;;;11550:14;;11538:9;:26;11593:12;;11583:7;:22;11459:162;11681:13;-1:-1:-1;;;;;11675:19:0;:2;-1:-1:-1;;;;;11675:19:0;;:55;;;;;11714:15;-1:-1:-1;;;;;11698:32:0;:4;-1:-1:-1;;;;;11698:32:0;;;11675:55;11671:165;;;11763:15;;11751:9;:27;11807:13;;11797:7;:23;11671:165;11859:41;11874:4;11880:2;11884:6;11892:7;11859:14;:41::i;2707:224::-;2827:7;2863:12;2855:6;;;;2847:29;;;;-1:-1:-1;;;2847:29:0;;;;;;;;:::i;:::-;-1:-1:-1;2887:9:0;2899:5;2903:1;2899;:5;:::i;:::-;2887:17;2707:224;-1:-1:-1;;;;;2707:224:0:o;8373:323::-;8468:7;8526;;8515;:18;;8493:110;;;;-1:-1:-1;;;8493:110:0;;6270:2:1;8493:110:0;;;6252:21:1;6309:2;6289:18;;;6282:30;6348:34;6328:18;;;6321:62;-1:-1:-1;;;6399:18:1;;;6392:40;6449:19;;8493:110:0;6068:406:1;8493:110:0;8614:19;8636:10;:8;:10::i;:::-;8614:32;-1:-1:-1;8664:24:0;:7;8614:32;8664:11;:24::i;:::-;8657:31;8373:323;-1:-1:-1;;;8373:323:0:o;11917:721::-;6082:6;:13;;-1:-1:-1;;6082:13:0;;;;;12020:16:::1;::::0;;12034:1:::1;12020:16:::0;;;;;::::1;::::0;;-1:-1:-1;;12020:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;12020:16:0::1;11996:40;;12065:4;12047;12052:1;12047:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;12047:23:0::1;;;-1:-1:-1::0;;;;;12047:23:0::1;;;::::0;::::1;5598:42;12081:4;12086:1;12081:7;;;;;;;;:::i;:::-;;;;;;:22;-1:-1:-1::0;;;;;12081:22:0::1;;;-1:-1:-1::0;;;;;12081:22:0::1;;;::::0;::::1;12116:62;12133:4;12148:15;12166:11;12116:8;:62::i;:::-;-1:-1:-1::0;;;;;12189:15:0::1;:69;;12274:18;:11:::0;12290:1:::1;12274:15;:18::i;:::-;12308:1;12324:4;5402:42;12375:15;12189:212;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;;;;;;12414:15:0::1;:69;::::0;-1:-1:-1;12414:69:0::1;::::0;-1:-1:-1;12499:18:0::1;:11:::0;12515:1:::1;12499:15;:18::i;:::-;12533:1;12549:4;5306:42;12602:15;12414:214;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;6118:6:0;:14;;-1:-1:-1;;6118:14:0;;;-1:-1:-1;;;;11917:721:0:o;13332:282::-;13488:7;13483:28;;13497:14;:12;:14::i;:::-;13522:44;13540:6;13548:9;13559:6;13522:17;:44::i;:::-;13582:7;13577:29;;13591:15;8991:17;;8979:9;:29;9029:15;;9019:7;:25;8935:117;16311:167;16353:7;16374:15;16391;16410:19;:17;:19::i;:::-;16373:56;;-1:-1:-1;16373:56:0;-1:-1:-1;16450:20:0;16373:56;;16450:11;:20::i;:::-;16443:27;;;;16311:167;:::o;3195:132::-;3253:7;3280:39;3284:1;3287;3280:39;;;;;;;;;;;;;;;;;:3;:39::i;8705:221::-;8752:9;;:14;:30;;;;-1:-1:-1;8770:7:0;;:12;8752:30;8748:43;;;8705:221::o;8748:43::-;8824:9;;;8804:17;:29;8862:7;;;8844:15;:25;-1:-1:-1;8883:13:0;;;;8907:11;8705:221::o;13623:610::-;13770:15;13800:23;13838:12;13865:23;13903:12;13930:13;13957:19;13968:7;13957:10;:19::i;:::-;-1:-1:-1;;;;;14005:15:0;;;;;;:7;:15;;;;;;13755:221;;-1:-1:-1;13755:221:0;;-1:-1:-1;13755:221:0;;-1:-1:-1;13755:221:0;-1:-1:-1;13755:221:0;-1:-1:-1;13755:221:0;-1:-1:-1;14005:28:0;;13755:221;14005:19;:28::i;:::-;-1:-1:-1;;;;;13987:15:0;;;;;;;:7;:15;;;;;;:46;;;;14065:18;;;;;;;:39;;14088:15;14065:22;:39::i;:::-;-1:-1:-1;;;;;14044:18:0;;;;;;:7;:18;;;;;:60;14115:16;14125:5;14115:9;:16::i;:::-;14142:23;14154:4;14160;14142:11;:23::i;:::-;14198:9;-1:-1:-1;;;;;14181:44:0;14190:6;-1:-1:-1;;;;;14181:44:0;;14209:15;14181:44;;;;10940:25:1;;10928:2;10913:18;;10794:177;14181:44:0;;;;;;;;13744:489;;;;;;13623:610;;;:::o;16487:260::-;16585:7;;16538;;;;4580:19;16653:20;16585:7;4580:19;16653:11;:20::i;:::-;16643:7;:30;16639:61;;;-1:-1:-1;;16683:7:0;;;4580:19;;-1:-1:-1;16487:260:0;-1:-1:-1;16487:260:0:o;16639:61::-;16722:7;;16731;;-1:-1:-1;16487:260:0;-1:-1:-1;16487:260:0:o;3336:223::-;3456:7;3491:12;3484:5;3476:28;;;;-1:-1:-1;;;3476:28:0;;;;;;;;:::i;:::-;-1:-1:-1;3515:9:0;3527:5;3531:1;3527;:5;:::i;14656:618::-;14756:7;14778;14800;14822;14844;14866;14902:23;14927:12;14941:13;14971:40;14983:7;14992:9;;15003:7;;14971:11;:40::i;:::-;14901:110;;;;;;15022:19;15044:10;:8;:10::i;:::-;15022:32;;15066:15;15083:23;15108:12;15137:46;15149:7;15158:4;15164:5;15171:11;15137;:46::i;:::-;15065:118;;-1:-1:-1;15065:118:0;-1:-1:-1;15065:118:0;-1:-1:-1;15237:15:0;;-1:-1:-1;15254:4:0;;-1:-1:-1;15260:5:0;;-1:-1:-1;;;;;14656:618:0;;;;;;;:::o;2562:136::-;2620:7;2647:43;2651:1;2654;2647:43;;;;;;;;;;;;;;;;;:3;:43::i;2374:179::-;2432:7;;2464:5;2468:1;2464;:5;:::i;:::-;2452:17;;2493:1;2488;:6;;2480:46;;;;-1:-1:-1;;;2480:46:0;;8252:2:1;2480:46:0;;;8234:21:1;8291:2;8271:18;;;8264:30;8330:29;8310:18;;;8303:57;8377:18;;2480:46:0;8050:351:1;14242:211:0;14295:19;14317:10;:8;:10::i;:::-;14295:32;-1:-1:-1;14338:13:0;14354:22;:5;14295:32;14354:9;:22::i;:::-;14428:4;14412:22;;;;:7;:22;;;;;;14338:38;;-1:-1:-1;14412:33:0;;14338:38;14412:26;:33::i;:::-;14403:4;14387:22;;;;:7;:22;;;;;:58;-1:-1:-1;;;14242:211:0:o;14462:147::-;14540:7;;:17;;14552:4;14540:11;:17::i;:::-;14530:7;:27;14581:10;;:20;;14596:4;14581:14;:20::i;:::-;14568:10;:33;-1:-1:-1;;14462:147:0:o;15283:472::-;15452:7;;;;15546:30;15572:3;15546:21;:7;15558:8;15546:11;:21::i;:::-;:25;;:30::i;:::-;15531:45;-1:-1:-1;15587:13:0;15603:28;15627:3;15603:19;:7;15615:6;15603:11;:19::i;:28::-;15587:44;-1:-1:-1;15642:23:0;15668:28;15587:44;15668:17;:7;15680:4;15668:11;:17::i;:::-;:21;;:28::i;:::-;15642:54;15735:4;;-1:-1:-1;15741:5:0;;-1:-1:-1;15283:472:0;;-1:-1:-1;;;;;15283:472:0:o;15764:538::-;15958:7;;;;16055:24;:7;16067:11;16055;:24::i;:::-;16037:42;-1:-1:-1;16090:12:0;16105:21;:4;16114:11;16105:8;:21::i;:::-;16090:36;-1:-1:-1;16137:13:0;16153:22;:5;16163:11;16153:9;:22::i;:::-;16137:38;-1:-1:-1;16186:23:0;16212:28;16137:38;16212:17;:7;16224:4;16212:11;:17::i;:28::-;16262:7;;;;-1:-1:-1;16288:4:0;;-1:-1:-1;15764:538:0;;-1:-1:-1;;;;;;;15764:538:0:o;2940:246::-;2998:7;3022:6;3018:47;;-1:-1:-1;3052:1:0;3045:8;;3018:47;3075:9;3087:5;3091:1;3087;:5;:::i;:::-;3075:17;-1:-1:-1;3120:1:0;3111:5;3115:1;3075:17;3111:5;:::i;:::-;:10;3103:56;;;;-1:-1:-1;;;3103:56:0;;8608:2:1;3103:56:0;;;8590:21:1;8647:2;8627:18;;;8620:30;8686:34;8666:18;;;8659:62;-1:-1:-1;;;8737:18:1;;;8730:31;8778:19;;3103:56:0;8406:397:1;14:173;82:20;;-1:-1:-1;;;;;131:31:1;;121:42;;111:70;;177:1;174;167:12;111:70;14:173;;;:::o;192:160::-;257:20;;313:13;;306:21;296:32;;286:60;;342:1;339;332:12;357:186;416:6;469:2;457:9;448:7;444:23;440:32;437:52;;;485:1;482;475:12;437:52;508:29;527:9;508:29;:::i;548:260::-;616:6;624;677:2;665:9;656:7;652:23;648:32;645:52;;;693:1;690;683:12;645:52;716:29;735:9;716:29;:::i;:::-;706:39;;764:38;798:2;787:9;783:18;764:38;:::i;:::-;754:48;;548:260;;;;;:::o;813:328::-;890:6;898;906;959:2;947:9;938:7;934:23;930:32;927:52;;;975:1;972;965:12;927:52;998:29;1017:9;998:29;:::i;:::-;988:39;;1046:38;1080:2;1069:9;1065:18;1046:38;:::i;:::-;1036:48;;1131:2;1120:9;1116:18;1103:32;1093:42;;813:328;;;;;:::o;1146:254::-;1214:6;1222;1275:2;1263:9;1254:7;1250:23;1246:32;1243:52;;;1291:1;1288;1281:12;1243:52;1314:29;1333:9;1314:29;:::i;:::-;1304:39;1390:2;1375:18;;;;1362:32;;-1:-1:-1;;;1146:254:1:o;1405:689::-;1497:6;1505;1513;1566:2;1554:9;1545:7;1541:23;1537:32;1534:52;;;1582:1;1579;1572:12;1534:52;1622:9;1609:23;1651:18;1692:2;1684:6;1681:14;1678:34;;;1708:1;1705;1698:12;1678:34;1746:6;1735:9;1731:22;1721:32;;1791:7;1784:4;1780:2;1776:13;1772:27;1762:55;;1813:1;1810;1803:12;1762:55;1853:2;1840:16;1879:2;1871:6;1868:14;1865:34;;;1895:1;1892;1885:12;1865:34;1950:7;1943:4;1933:6;1930:1;1926:14;1922:2;1918:23;1914:34;1911:47;1908:67;;;1971:1;1968;1961:12;1908:67;2002:4;1994:13;;;;-1:-1:-1;2026:6:1;-1:-1:-1;2051:37:1;;2067:20;;;-1:-1:-1;2051:37:1;:::i;:::-;2041:47;;1405:689;;;;;:::o;2099:1132::-;2183:6;2214:2;2257;2245:9;2236:7;2232:23;2228:32;2225:52;;;2273:1;2270;2263:12;2225:52;2313:9;2300:23;2342:18;2383:2;2375:6;2372:14;2369:34;;;2399:1;2396;2389:12;2369:34;2437:6;2426:9;2422:22;2412:32;;2482:7;2475:4;2471:2;2467:13;2463:27;2453:55;;2504:1;2501;2494:12;2453:55;2540:2;2527:16;2562:2;2558;2555:10;2552:36;;;2568:18;;:::i;:::-;2614:2;2611:1;2607:10;2646:2;2640:9;2709:2;2705:7;2700:2;2696;2692:11;2688:25;2680:6;2676:38;2764:6;2752:10;2749:22;2744:2;2732:10;2729:18;2726:46;2723:72;;;2775:18;;:::i;:::-;2811:2;2804:22;2861:18;;;2895:15;;;;-1:-1:-1;2930:11:1;;;2960;;;2956:20;;2953:33;-1:-1:-1;2950:53:1;;;2999:1;2996;2989:12;2950:53;3021:1;3012:10;;3031:169;3045:2;3042:1;3039:9;3031:169;;;3102:23;3121:3;3102:23;:::i;:::-;3090:36;;3063:1;3056:9;;;;;3146:12;;;;3178;;3031:169;;;-1:-1:-1;3219:6:1;2099:1132;-1:-1:-1;;;;;;;;2099:1132:1:o;3236:180::-;3292:6;3345:2;3333:9;3324:7;3320:23;3316:32;3313:52;;;3361:1;3358;3351:12;3313:52;3384:26;3400:9;3384:26;:::i;3421:180::-;3480:6;3533:2;3521:9;3512:7;3508:23;3504:32;3501:52;;;3549:1;3546;3539:12;3501:52;-1:-1:-1;3572:23:1;;3421:180;-1:-1:-1;3421:180:1:o;3606:385::-;3692:6;3700;3708;3716;3769:3;3757:9;3748:7;3744:23;3740:33;3737:53;;;3786:1;3783;3776:12;3737:53;-1:-1:-1;;3809:23:1;;;3879:2;3864:18;;3851:32;;-1:-1:-1;3930:2:1;3915:18;;3902:32;;3981:2;3966:18;3953:32;;-1:-1:-1;3606:385:1;-1:-1:-1;3606:385:1:o;4630:597::-;4742:4;4771:2;4800;4789:9;4782:21;4832:6;4826:13;4875:6;4870:2;4859:9;4855:18;4848:34;4900:1;4910:140;4924:6;4921:1;4918:13;4910:140;;;5019:14;;;5015:23;;5009:30;4985:17;;;5004:2;4981:26;4974:66;4939:10;;4910:140;;;5068:6;5065:1;5062:13;5059:91;;;5138:1;5133:2;5124:6;5113:9;5109:22;5105:31;5098:42;5059:91;-1:-1:-1;5211:2:1;5190:15;-1:-1:-1;;5186:29:1;5171:45;;;;5218:2;5167:54;;4630:597;-1:-1:-1;;;4630:597:1:o;8808:356::-;9010:2;8992:21;;;9029:18;;;9022:30;9088:34;9083:2;9068:18;;9061:62;9155:2;9140:18;;8808:356::o;10976:980::-;11238:4;11286:3;11275:9;11271:19;11317:6;11306:9;11299:25;11343:2;11381:6;11376:2;11365:9;11361:18;11354:34;11424:3;11419:2;11408:9;11404:18;11397:31;11448:6;11483;11477:13;11514:6;11506;11499:22;11552:3;11541:9;11537:19;11530:26;;11591:2;11583:6;11579:15;11565:29;;11612:1;11622:195;11636:6;11633:1;11630:13;11622:195;;;11701:13;;-1:-1:-1;;;;;11697:39:1;11685:52;;11792:15;;;;11757:12;;;;11733:1;11651:9;11622:195;;;-1:-1:-1;;;;;;;11873:32:1;;;;11868:2;11853:18;;11846:60;-1:-1:-1;;;11937:3:1;11922:19;11915:35;11834:3;10976:980;-1:-1:-1;;;10976:980:1:o;12150:128::-;12190:3;12221:1;12217:6;12214:1;12211:13;12208:39;;;12227:18;;:::i;:::-;-1:-1:-1;12263:9:1;;12150:128::o;12283:217::-;12323:1;12349;12339:132;;12393:10;12388:3;12384:20;12381:1;12374:31;12428:4;12425:1;12418:15;12456:4;12453:1;12446:15;12339:132;-1:-1:-1;12485:9:1;;12283:217::o;12505:168::-;12545:7;12611:1;12607;12603:6;12599:14;12596:1;12593:21;12588:1;12581:9;12574:17;12570:45;12567:71;;;12618:18;;:::i;:::-;-1:-1:-1;12658:9:1;;12505:168::o;12678:125::-;12718:4;12746:1;12743;12740:8;12737:34;;;12751:18;;:::i;:::-;-1:-1:-1;12788:9:1;;12678:125::o;12808:135::-;12847:3;-1:-1:-1;;12868:17:1;;12865:43;;;12888:18;;:::i;:::-;-1:-1:-1;12935:1:1;12924:13;;12808:135::o;12948:127::-;13009:10;13004:3;13000:20;12997:1;12990:31;13040:4;13037:1;13030:15;13064:4;13061:1;13054:15;13080:127;13141:10;13136:3;13132:20;13129:1;13122:31;13172:4;13169:1;13162:15;13196:4;13193:1;13186:15;13212:127;13273:10;13268:3;13264:20;13261:1;13254:31;13304:4;13301:1;13294:15;13328:4;13325:1;13318:15

Swarm Source

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