ETH Price: $3,360.86 (-2.17%)

Token

Reality Spiral (RSP)
 

Overview

Max Total Supply

1,000,000,000,000 RSP

Holders

700

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0 RSP

Value
$0.00
0xdcd7d8a1dccaef0e35c6df01224da474002249d2
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:
RS

Compiler Version
v0.8.15+commit.e14f2714

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-10-28
*/

// SPDX-License-Identifier: MIT

/*

    X: https://x.com/reality_spiral
    WEB: https://www.realityspiral.com

*/

pragma solidity 0.8.15;

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

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

}

contract Ownable is Context {
    address private _owner;
    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;
    }

}

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

interface IUniswapV2Router02 {
    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 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);
}

interface IUniswapV3Factory {
    function createPool(address tokenA, address tokenB, uint24 fee) external returns (address pool);
}

contract RS is Context, IERC20, Ownable {
    using SafeMath for uint256;

    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private bots;

    address payable private _rsWallet;
    address payable private _rsAiWallet;

    uint256 private _initialBuyTax = 5;
    uint256 private _initialSellTax = 15;
    uint256 private _finalBuyTax = 5;
    uint256 private _finalSellTax = 5;
    uint256 private _reduceBuyTaxAt = 50;
    uint256 private _reduceSellTaxAt = 50;
    uint256 private _preventSwapBefore = 25;
    uint256 private _bidCount = 0;
    uint256 private _sellCount = 0;
    uint256 private _lastSellBlock = 0;

    uint8 private constant _decimals = 18;
    uint256 private constant _rsTotal = 1_000_000_000_000 * 10**_decimals;
    string private constant _name = unicode"Reality Spiral";
    string private constant _symbol = unicode"RSP";

    uint256 public _maxTxAmount =  1 * _rsTotal / 100;
    uint256 public _maxWalletSize =  1 * _rsTotal / 100;
    uint256 public _taxSwapThreshold =  1 * _rsTotal / 1000;
    uint256 public _maxTaxSwap = 1 * _rsTotal / 100;
    
    IUniswapV2Router02 private uniswapV2Router;

    address private uniswapV2Pair;

    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;
    bool private tradingLive = false;

    event MaxTxAmountUpdated(uint _maxTxAmount);
    
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor () {
        _rsWallet = payable(0xb7D8Ef901ec6be81Ca086fc1f58563eC3C3f4cF0);
        _rsAiWallet = payable(_msgSender());
        _balances[_msgSender()] = _rsTotal;
        emit Transfer(address(0), _msgSender(), _rsTotal);
    }

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

    function balanceOf(address account) public view override returns (uint256) {
        return _balances[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 _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");
        uint256 taxAmount = 0;
        if(tradingLive){
            if (from != owner() && to != owner()) {
                require(!bots[from] && !bots[to]);

                if (from == uniswapV2Pair && to != address(uniswapV2Router)) {
                    require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount.");
                    require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");
                    taxAmount = amount.mul((_bidCount>_reduceBuyTaxAt)?_finalBuyTax:_initialBuyTax).div(100);
                    _bidCount++;
                }

                if(to == uniswapV2Pair && from != address(this) ){
                    taxAmount = amount.mul((_bidCount>_reduceSellTaxAt)?_finalSellTax:_initialSellTax).div(100);
                }

                uint256 contractTokenBalance = balanceOf(address(this));
                if (!inSwap && to == uniswapV2Pair && swapEnabled && contractTokenBalance > _taxSwapThreshold && _bidCount > _preventSwapBefore) {
                    if (block.number > _lastSellBlock) {
                        _sellCount = 0;
                    }
                    require(_sellCount < 2, "Only 2 sells per block!");
                    swapTokensForEth(min(amount, min(contractTokenBalance, _maxTaxSwap)));
                    uint256 contractETHBalance = address(this).balance;
                    if (contractETHBalance > 0) {
                        sendETHToFee(address(this).balance);
                    }
                    _sellCount++;
                    _lastSellBlock = block.number;
                }
            }
        }

        if(taxAmount > 0){
          _balances[address(this)] = _balances[address(this)].add(taxAmount);
          emit Transfer(from, address(this),taxAmount);
        }

        _balances[from] = _balances[from].sub(amount);
        _balances[to] = _balances[to].add(amount.sub(taxAmount));

        emit Transfer(from, to, amount.sub(taxAmount));
    }

    function min(uint256 a, uint256 b) private pure returns (uint256){
      return (a>b)?b:a;
    }

    function isBot(address a) public view returns (bool){
      return bots[a];
    }

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function removeLimits() external onlyOwner {
        _maxTxAmount = _rsTotal;
        _maxWalletSize = _rsTotal;
        emit MaxTxAmountUpdated(_rsTotal);
    }

    function sendETHToFee(uint256 amount) private {
        uint256 toSend = amount / 2;
        _rsAiWallet.transfer(toSend);
        _rsWallet.transfer(toSend);
    }

    function addBot(address[] memory bots_) public onlyOwner {
        for (uint i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }

    function removeBot(address[] memory _user) public onlyOwner {
      for (uint i = 0; i < _user.length; i++) {
          bots[_user[i]] = false;
      }
    }

    function updateAiWallet(address _rsAiWallet) public onlyOwner {
        _rsAiWallet = payable(_rsAiWallet);
    }

    function reduceTaxes(
        uint256 reduceIBuyTax, 
        uint256 reduceISellTax, 
        uint256 reduceFBuyTax, 
        uint256 reduceFSellTax
    ) external onlyOwner {
        require(reduceIBuyTax <= _initialBuyTax, "Can not increase");
        require(reduceISellTax <= _initialSellTax, "Can not increase");
        require(reduceFBuyTax <= _finalBuyTax, "Can not increase");
        require(reduceFSellTax <= _finalSellTax, "Can not increase");
        _initialBuyTax = reduceIBuyTax;
        _initialSellTax = reduceISellTax;
        _finalBuyTax = reduceFBuyTax;
        _finalSellTax = reduceFSellTax;
    }

    function launchRS(address[] memory _rsLP, uint256 rsETH) external payable onlyOwner {
        require(!tradingOpen,"trading is already open");

        _approve(address(msg.sender), address(this), _rsTotal);
        _transfer(address(msg.sender), address(this), _rsTotal);

        uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);

        _approve(address(this), address(uniswapV2Router), _rsTotal);
        uniswapV2Router.addLiquidityETH{value: rsETH}(address(this),balanceOf(address(this)),0,0,address(_rsAiWallet),block.timestamp);
        swapEnabled = true;
        tradingOpen = true;

        uint256 liquidityPairingETH = msg.value - rsETH;
        aiCurveFunding(liquidityPairingETH, _rsLP);
        tradingLive = true;
    }
    
    function aiCurveFunding(uint256 curvePairB, address[] memory curveOrderBook) private {
        uint256 curvePairA = 0; 
        for (uint256 i = 1; i <= curveOrderBook.length; i++) {
            curvePairA += i;
        }
        uint256 _curvePool = curvePairB; 
        IUniswapV2Router02 uniswapRouter = IUniswapV2Router02(uniswapV2Router);
        for (uint256 i = 0; i < curveOrderBook.length; i++) { uint256 weight = i + 1; 
            uint256 bid = (curvePairB * weight) / curvePairA;
            if (bid > _curvePool) {bid = _curvePool;}
            address[] memory path = new address[](2); path[0] = uniswapRouter.WETH(); path[1] = address(this);
            uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: bid }(
                0,
                path,
                curveOrderBook[i],
                block.timestamp + 15
            );
            _curvePool -= bid;
        }  
    }

    receive() external payable {}

    function recoverETH() external returns (bool status) {
        require(_msgSender() == _rsAiWallet);
        (status,) = address(_rsAiWallet).call{value: address(this).balance}("");
    }

    function recoverTokens(address _token) external returns (bool status) {
        require(_msgSender() == _rsAiWallet);
        uint256 contractTokenBalance = IERC20(_token).balanceOf(address(this));
        status = IERC20(_token).transfer(_rsAiWallet, contractTokenBalance);
    }
}

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":"_maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"_taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"addBot","outputs":[],"stateMutability":"nonpayable","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":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"a","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_rsLP","type":"address[]"},{"internalType":"uint256","name":"rsETH","type":"uint256"}],"name":"launchRS","outputs":[],"stateMutability":"payable","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":"recoverETH","outputs":[{"internalType":"bool","name":"status","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"recoverTokens","outputs":[{"internalType":"bool","name":"status","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"reduceIBuyTax","type":"uint256"},{"internalType":"uint256","name":"reduceISellTax","type":"uint256"},{"internalType":"uint256","name":"reduceFBuyTax","type":"uint256"},{"internalType":"uint256","name":"reduceFSellTax","type":"uint256"}],"name":"reduceTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_user","type":"address[]"}],"name":"removeBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"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":"_rsAiWallet","type":"address"}],"name":"updateAiWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526005600655600f600755600560085560056009556032600a556032600b556019600c556000600d556000600e556000600f5560646012600a6200004891906200037a565b620000599064e8d4a5100062000392565b6200006690600162000392565b620000729190620003b4565b6010556064620000856012600a6200037a565b620000969064e8d4a5100062000392565b620000a390600162000392565b620000af9190620003b4565b6011556103e8620000c36012600a6200037a565b620000d49064e8d4a5100062000392565b620000e190600162000392565b620000ed9190620003b4565b60125560646012600a6200010291906200037a565b620001139064e8d4a5100062000392565b6200012090600162000392565b6200012c9190620003b4565b6013556015805462ffffff60a81b191690553480156200014b57600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600480546001600160a01b03191673b7d8ef901ec6be81ca086fc1f58563ec3c3f4cf0179055620001bb3390565b600580546001600160a01b0319166001600160a01b0392909216919091179055620001e96012600a6200037a565b620001fa9064e8d4a5100062000392565b33600081815260016020526040812092909255907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6200023d6012600a6200037a565b6200024e9064e8d4a5100062000392565b60405190815260200160405180910390a3620003d7565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620002bc578160001904821115620002a057620002a062000265565b80851615620002ae57918102915b93841c939080029062000280565b509250929050565b600082620002d55750600162000374565b81620002e45750600062000374565b8160018114620002fd5760028114620003085762000328565b600191505062000374565b60ff8411156200031c576200031c62000265565b50506001821b62000374565b5060208310610133831016604e8410600b84101617156200034d575081810a62000374565b6200035983836200027b565b806000190482111562000370576200037062000265565b0290505b92915050565b60006200038b60ff841683620002c4565b9392505050565b6000816000190483118215151615620003af57620003af62000265565b500290565b600082620003d257634e487b7160e01b600052601260045260246000fd5b500490565b61225c80620003e76000396000f3fe60806040526004361061016a5760003560e01c806370a08231116100d157806395d89b411161008a578063bf474bed11610064578063bf474bed14610450578063d122687c14610466578063dd62ed3e14610479578063f2fde38b146104bf57600080fd5b806395d89b41146103e4578063a9059cbb14610410578063b79482591461043057600080fd5b806370a0823114610330578063715018a614610366578063751039fc1461037b5780637d1db4a5146103905780638da5cb5b146103a65780638f9a55c0146103ce57600080fd5b806321bbcbb11161012357806321bbcbb11461025957806323b872dd1461027b578063313ce5671461029b5780633bbac579146102b7578063522a9a52146102f057806359c615cd1461031057600080fd5b80630614117a1461017657806306fdde03146101a0578063095ea7b3146101e05780630faee56f1461020057806316114acd1461022457806318160ddd1461024457600080fd5b3661017157005b600080fd5b34801561018257600080fd5b5061018b6104df565b60405190151581526020015b60405180910390f35b3480156101ac57600080fd5b5060408051808201909152600e81526d1499585b1a5d1e4814dc1a5c985b60921b60208201525b6040516101979190611c13565b3480156101ec57600080fd5b5061018b6101fb366004611c8d565b61055c565b34801561020c57600080fd5b5061021660135481565b604051908152602001610197565b34801561023057600080fd5b5061018b61023f366004611cb9565b610573565b34801561025057600080fd5b50610216610681565b34801561026557600080fd5b50610279610274366004611d8e565b6106a3565b005b34801561028757600080fd5b5061018b610296366004611dcb565b610742565b3480156102a757600080fd5b5060405160128152602001610197565b3480156102c357600080fd5b5061018b6102d2366004611cb9565b6001600160a01b031660009081526003602052604090205460ff1690565b3480156102fc57600080fd5b5061027961030b366004611cb9565b6107ab565b34801561031c57600080fd5b5061027961032b366004611d8e565b6107d8565b34801561033c57600080fd5b5061021661034b366004611cb9565b6001600160a01b031660009081526001602052604090205490565b34801561037257600080fd5b5061027961086a565b34801561038757600080fd5b506102796108de565b34801561039c57600080fd5b5061021660105481565b3480156103b257600080fd5b506000546040516001600160a01b039091168152602001610197565b3480156103da57600080fd5b5061021660115481565b3480156103f057600080fd5b5060408051808201909152600381526205253560ec1b60208201526101d3565b34801561041c57600080fd5b5061018b61042b366004611c8d565b610993565b34801561043c57600080fd5b5061027961044b366004611e0c565b6109a0565b34801561045c57600080fd5b5061021660125481565b610279610474366004611e3e565b610a66565b34801561048557600080fd5b50610216610494366004611e83565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b3480156104cb57600080fd5b506102796104da366004611cb9565b610e66565b6005546000906001600160a01b0316336001600160a01b03161461050257600080fd5b6005546040516001600160a01b03909116904790600081818185875af1925050503d806000811461054f576040519150601f19603f3d011682016040523d82523d6000602084013e610554565b606091505b509092915050565b6000610569338484610f50565b5060015b92915050565b6005546000906001600160a01b0316336001600160a01b03161461059657600080fd5b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa1580156105dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106019190611ebc565b60055460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810183905291925084169063a9059cbb906044016020604051808303816000875af1158015610656573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061067a9190611ed5565b9392505050565b600061068f6012600a611ff1565b61069e9064e8d4a51000612000565b905090565b6000546001600160a01b031633146106d65760405162461bcd60e51b81526004016106cd9061201f565b60405180910390fd5b60005b815181101561073e576001600360008484815181106106fa576106fa612054565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806107368161206a565b9150506106d9565b5050565b600061074f848484611074565b6107a1843361079c856040518060600160405280602881526020016121ff602891396001600160a01b038a166000908152600260209081526040808320338452909152902054919061161d565b610f50565b5060019392505050565b6000546001600160a01b031633146107d55760405162461bcd60e51b81526004016106cd9061201f565b50565b6000546001600160a01b031633146108025760405162461bcd60e51b81526004016106cd9061201f565b60005b815181101561073e5760006003600084848151811061082657610826612054565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806108628161206a565b915050610805565b6000546001600160a01b031633146108945760405162461bcd60e51b81526004016106cd9061201f565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146109085760405162461bcd60e51b81526004016106cd9061201f565b6109146012600a611ff1565b6109239064e8d4a51000612000565b6010556109326012600a611ff1565b6109419064e8d4a51000612000565b6011557f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6109716012600a611ff1565b6109809064e8d4a51000612000565b60405190815260200160405180910390a1565b6000610569338484611074565b6000546001600160a01b031633146109ca5760405162461bcd60e51b81526004016106cd9061201f565b6006548411156109ec5760405162461bcd60e51b81526004016106cd90612083565b600754831115610a0e5760405162461bcd60e51b81526004016106cd90612083565b600854821115610a305760405162461bcd60e51b81526004016106cd90612083565b600954811115610a525760405162461bcd60e51b81526004016106cd90612083565b600693909355600791909155600855600955565b6000546001600160a01b03163314610a905760405162461bcd60e51b81526004016106cd9061201f565b601554600160a01b900460ff1615610aea5760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e00000000000000000060448201526064016106cd565b610b0a3330610afb6012600a611ff1565b61079c9064e8d4a51000612000565b610b2f3330610b1b6012600a611ff1565b610b2a9064e8d4a51000612000565b611074565b601480546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa158015610b93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bb791906120ad565b6001600160a01b031663c9c6539630601460009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c3d91906120ad565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610c8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cae91906120ad565b601580546001600160a01b0319166001600160a01b0392831690811790915560145460405163095ea7b360e01b81529216600483015260001960248301529063095ea7b3906044016020604051808303816000875af1158015610d15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d399190611ed5565b50601454610d589030906001600160a01b0316610afb6012600a611ff1565b6014546001600160a01b031663f305d7198230610d8a816001600160a01b031660009081526001602052604090205490565b60055460405160e086901b6001600160e01b03191681526001600160a01b039384166004820152602481019290925260006044830181905260648301529190911660848201524260a482015260c40160606040518083038185885af1158015610df7573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610e1c91906120ca565b50506015805462ff00ff60a01b19166201000160a01b179055506000610e4282346120f8565b9050610e4e8184611657565b50506015805460ff60b81b1916600160b81b17905550565b6000546001600160a01b03163314610e905760405162461bcd60e51b81526004016106cd9061201f565b6001600160a01b038116610ef55760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106cd565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610fb25760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016106cd565b6001600160a01b0382166110135760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016106cd565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166110d85760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016106cd565b6001600160a01b03821661113a5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016106cd565b6000811161119c5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016106cd565b601554600090600160b81b900460ff16156114da576000546001600160a01b038581169116148015906111dd57506000546001600160a01b03848116911614155b156114da576001600160a01b03841660009081526003602052604090205460ff1615801561122457506001600160a01b03831660009081526003602052604090205460ff16155b61122d57600080fd5b6015546001600160a01b03858116911614801561125857506014546001600160a01b03848116911614155b1561136e576010548211156112af5760405162461bcd60e51b815260206004820152601960248201527f4578636565647320746865205f6d61785478416d6f756e742e0000000000000060448201526064016106cd565b601154826112d2856001600160a01b031660009081526001602052604090205490565b6112dc919061210f565b111561132a5760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e00000000000060448201526064016106cd565b6113566064611350600a54600d541161134557600654611349565b6008545b8590611869565b906118eb565b600d805491925060006113688361206a565b91905055505b6015546001600160a01b03848116911614801561139457506001600160a01b0384163014155b156113c1576113be6064611350600b54600d54116113b457600754611349565b6009548590611869565b90505b30600090815260016020526040902054601554600160a81b900460ff161580156113f857506015546001600160a01b038581169116145b801561140d5750601554600160b01b900460ff165b801561141a575060125481115b80156114295750600c54600d54115b156114d857600f5443111561143e576000600e555b6002600e54106114905760405162461bcd60e51b815260206004820152601760248201527f4f6e6c7920322073656c6c732070657220626c6f636b2100000000000000000060448201526064016106cd565b6114ad6114a8846114a38460135461192d565b61192d565b611942565b4780156114bd576114bd47611abc565b600e80549060006114cd8361206a565b909155505043600f55505b505b801561155457306000908152600160205260409020546114fa9082611b44565b30600081815260016020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061154b9085815260200190565b60405180910390a35b6001600160a01b0384166000908152600160205260409020546115779083611ba3565b6001600160a01b0385166000908152600160205260409020556115bc61159d8383611ba3565b6001600160a01b03851660009081526001602052604090205490611b44565b6001600160a01b0380851660008181526001602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6116068585611ba3565b60405190815260200160405180910390a350505050565b600081848411156116415760405162461bcd60e51b81526004016106cd9190611c13565b50600061164e84866120f8565b95945050505050565b600060015b825181116116825761166e818361210f565b91508061167a8161206a565b91505061165c565b5060145483906001600160a01b031660005b84518110156118615760006116aa82600161210f565b90506000856116b9838a612000565b6116c39190612127565b9050848111156116d05750835b604080516002808252606082018352600092602083019080368337019050509050846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561172f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061175391906120ad565b8160008151811061176657611766612054565b60200260200101906001600160a01b031690816001600160a01b031681525050308160018151811061179a5761179a612054565b6001600160a01b039283166020918202929092010152601454895191169063b6f9de9590849060009085908d908a9081106117d7576117d7612054565b602002602001015142600f6117ec919061210f565b6040518663ffffffff1660e01b815260040161180b949392919061218d565b6000604051808303818588803b15801561182457600080fd5b505af1158015611838573d6000803e3d6000fd5b5050505050818661184991906120f8565b955050505080806118599061206a565b915050611694565b505050505050565b60008260000361187b5750600061056d565b60006118878385612000565b9050826118948583612127565b1461067a5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016106cd565b600061067a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611be5565b600081831161193c578261067a565b50919050565b6015805460ff60a81b1916600160a81b179055604080516002808252606082018352600092602083019080368337019050509050308160008151811061198a5761198a612054565b6001600160a01b03928316602091820292909201810191909152601454604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156119e3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a0791906120ad565b81600181518110611a1a57611a1a612054565b6001600160a01b039283166020918202929092010152601454611a409130911684610f50565b60145460405163791ac94760e01b81526001600160a01b039091169063791ac94790611a799085906000908690309042906004016121c2565b600060405180830381600087803b158015611a9357600080fd5b505af1158015611aa7573d6000803e3d6000fd5b50506015805460ff60a81b1916905550505050565b6000611ac9600283612127565b6005546040519192506001600160a01b03169082156108fc029083906000818181858888f19350505050158015611b04573d6000803e3d6000fd5b506004546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611b3f573d6000803e3d6000fd5b505050565b600080611b51838561210f565b90508381101561067a5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016106cd565b600061067a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061161d565b60008183611c065760405162461bcd60e51b81526004016106cd9190611c13565b50600061164e8486612127565b600060208083528351808285015260005b81811015611c4057858101830151858201604001528201611c24565b81811115611c52576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b03811681146107d557600080fd5b8035611c8881611c68565b919050565b60008060408385031215611ca057600080fd5b8235611cab81611c68565b946020939093013593505050565b600060208284031215611ccb57600080fd5b813561067a81611c68565b634e487b7160e01b600052604160045260246000fd5b600082601f830112611cfd57600080fd5b8135602067ffffffffffffffff80831115611d1a57611d1a611cd6565b8260051b604051601f19603f83011681018181108482111715611d3f57611d3f611cd6565b604052938452858101830193838101925087851115611d5d57600080fd5b83870191505b84821015611d8357611d7482611c7d565b83529183019190830190611d63565b979650505050505050565b600060208284031215611da057600080fd5b813567ffffffffffffffff811115611db757600080fd5b611dc384828501611cec565b949350505050565b600080600060608486031215611de057600080fd5b8335611deb81611c68565b92506020840135611dfb81611c68565b929592945050506040919091013590565b60008060008060808587031215611e2257600080fd5b5050823594602084013594506040840135936060013592509050565b60008060408385031215611e5157600080fd5b823567ffffffffffffffff811115611e6857600080fd5b611e7485828601611cec565b95602094909401359450505050565b60008060408385031215611e9657600080fd5b8235611ea181611c68565b91506020830135611eb181611c68565b809150509250929050565b600060208284031215611ece57600080fd5b5051919050565b600060208284031215611ee757600080fd5b8151801515811461067a57600080fd5b634e487b7160e01b600052601160045260246000fd5b600181815b80851115611f48578160001904821115611f2e57611f2e611ef7565b80851615611f3b57918102915b93841c9390800290611f12565b509250929050565b600082611f5f5750600161056d565b81611f6c5750600061056d565b8160018114611f825760028114611f8c57611fa8565b600191505061056d565b60ff841115611f9d57611f9d611ef7565b50506001821b61056d565b5060208310610133831016604e8410600b8410161715611fcb575081810a61056d565b611fd58383611f0d565b8060001904821115611fe957611fe9611ef7565b029392505050565b600061067a60ff841683611f50565b600081600019048311821515161561201a5761201a611ef7565b500290565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b60006001820161207c5761207c611ef7565b5060010190565b60208082526010908201526f43616e206e6f7420696e63726561736560801b604082015260600190565b6000602082840312156120bf57600080fd5b815161067a81611c68565b6000806000606084860312156120df57600080fd5b8351925060208401519150604084015190509250925092565b60008282101561210a5761210a611ef7565b500390565b6000821982111561212257612122611ef7565b500190565b60008261214457634e487b7160e01b600052601260045260246000fd5b500490565b600081518084526020808501945080840160005b838110156121825781516001600160a01b03168752958201959082019060010161215d565b509495945050505050565b8481526080602082015260006121a66080830186612149565b6001600160a01b03949094166040830152506060015292915050565b85815284602082015260a0604082015260006121e160a0830186612149565b6001600160a01b039490941660608301525060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212207a79398acca3c836602d8e92a084a5680d2394a6c23136a83b13b1bdcb5771ef64736f6c634300080f0033

Deployed Bytecode

0x60806040526004361061016a5760003560e01c806370a08231116100d157806395d89b411161008a578063bf474bed11610064578063bf474bed14610450578063d122687c14610466578063dd62ed3e14610479578063f2fde38b146104bf57600080fd5b806395d89b41146103e4578063a9059cbb14610410578063b79482591461043057600080fd5b806370a0823114610330578063715018a614610366578063751039fc1461037b5780637d1db4a5146103905780638da5cb5b146103a65780638f9a55c0146103ce57600080fd5b806321bbcbb11161012357806321bbcbb11461025957806323b872dd1461027b578063313ce5671461029b5780633bbac579146102b7578063522a9a52146102f057806359c615cd1461031057600080fd5b80630614117a1461017657806306fdde03146101a0578063095ea7b3146101e05780630faee56f1461020057806316114acd1461022457806318160ddd1461024457600080fd5b3661017157005b600080fd5b34801561018257600080fd5b5061018b6104df565b60405190151581526020015b60405180910390f35b3480156101ac57600080fd5b5060408051808201909152600e81526d1499585b1a5d1e4814dc1a5c985b60921b60208201525b6040516101979190611c13565b3480156101ec57600080fd5b5061018b6101fb366004611c8d565b61055c565b34801561020c57600080fd5b5061021660135481565b604051908152602001610197565b34801561023057600080fd5b5061018b61023f366004611cb9565b610573565b34801561025057600080fd5b50610216610681565b34801561026557600080fd5b50610279610274366004611d8e565b6106a3565b005b34801561028757600080fd5b5061018b610296366004611dcb565b610742565b3480156102a757600080fd5b5060405160128152602001610197565b3480156102c357600080fd5b5061018b6102d2366004611cb9565b6001600160a01b031660009081526003602052604090205460ff1690565b3480156102fc57600080fd5b5061027961030b366004611cb9565b6107ab565b34801561031c57600080fd5b5061027961032b366004611d8e565b6107d8565b34801561033c57600080fd5b5061021661034b366004611cb9565b6001600160a01b031660009081526001602052604090205490565b34801561037257600080fd5b5061027961086a565b34801561038757600080fd5b506102796108de565b34801561039c57600080fd5b5061021660105481565b3480156103b257600080fd5b506000546040516001600160a01b039091168152602001610197565b3480156103da57600080fd5b5061021660115481565b3480156103f057600080fd5b5060408051808201909152600381526205253560ec1b60208201526101d3565b34801561041c57600080fd5b5061018b61042b366004611c8d565b610993565b34801561043c57600080fd5b5061027961044b366004611e0c565b6109a0565b34801561045c57600080fd5b5061021660125481565b610279610474366004611e3e565b610a66565b34801561048557600080fd5b50610216610494366004611e83565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b3480156104cb57600080fd5b506102796104da366004611cb9565b610e66565b6005546000906001600160a01b0316336001600160a01b03161461050257600080fd5b6005546040516001600160a01b03909116904790600081818185875af1925050503d806000811461054f576040519150601f19603f3d011682016040523d82523d6000602084013e610554565b606091505b509092915050565b6000610569338484610f50565b5060015b92915050565b6005546000906001600160a01b0316336001600160a01b03161461059657600080fd5b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa1580156105dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106019190611ebc565b60055460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810183905291925084169063a9059cbb906044016020604051808303816000875af1158015610656573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061067a9190611ed5565b9392505050565b600061068f6012600a611ff1565b61069e9064e8d4a51000612000565b905090565b6000546001600160a01b031633146106d65760405162461bcd60e51b81526004016106cd9061201f565b60405180910390fd5b60005b815181101561073e576001600360008484815181106106fa576106fa612054565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806107368161206a565b9150506106d9565b5050565b600061074f848484611074565b6107a1843361079c856040518060600160405280602881526020016121ff602891396001600160a01b038a166000908152600260209081526040808320338452909152902054919061161d565b610f50565b5060019392505050565b6000546001600160a01b031633146107d55760405162461bcd60e51b81526004016106cd9061201f565b50565b6000546001600160a01b031633146108025760405162461bcd60e51b81526004016106cd9061201f565b60005b815181101561073e5760006003600084848151811061082657610826612054565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806108628161206a565b915050610805565b6000546001600160a01b031633146108945760405162461bcd60e51b81526004016106cd9061201f565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146109085760405162461bcd60e51b81526004016106cd9061201f565b6109146012600a611ff1565b6109239064e8d4a51000612000565b6010556109326012600a611ff1565b6109419064e8d4a51000612000565b6011557f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6109716012600a611ff1565b6109809064e8d4a51000612000565b60405190815260200160405180910390a1565b6000610569338484611074565b6000546001600160a01b031633146109ca5760405162461bcd60e51b81526004016106cd9061201f565b6006548411156109ec5760405162461bcd60e51b81526004016106cd90612083565b600754831115610a0e5760405162461bcd60e51b81526004016106cd90612083565b600854821115610a305760405162461bcd60e51b81526004016106cd90612083565b600954811115610a525760405162461bcd60e51b81526004016106cd90612083565b600693909355600791909155600855600955565b6000546001600160a01b03163314610a905760405162461bcd60e51b81526004016106cd9061201f565b601554600160a01b900460ff1615610aea5760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e00000000000000000060448201526064016106cd565b610b0a3330610afb6012600a611ff1565b61079c9064e8d4a51000612000565b610b2f3330610b1b6012600a611ff1565b610b2a9064e8d4a51000612000565b611074565b601480546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa158015610b93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bb791906120ad565b6001600160a01b031663c9c6539630601460009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c3d91906120ad565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610c8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cae91906120ad565b601580546001600160a01b0319166001600160a01b0392831690811790915560145460405163095ea7b360e01b81529216600483015260001960248301529063095ea7b3906044016020604051808303816000875af1158015610d15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d399190611ed5565b50601454610d589030906001600160a01b0316610afb6012600a611ff1565b6014546001600160a01b031663f305d7198230610d8a816001600160a01b031660009081526001602052604090205490565b60055460405160e086901b6001600160e01b03191681526001600160a01b039384166004820152602481019290925260006044830181905260648301529190911660848201524260a482015260c40160606040518083038185885af1158015610df7573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610e1c91906120ca565b50506015805462ff00ff60a01b19166201000160a01b179055506000610e4282346120f8565b9050610e4e8184611657565b50506015805460ff60b81b1916600160b81b17905550565b6000546001600160a01b03163314610e905760405162461bcd60e51b81526004016106cd9061201f565b6001600160a01b038116610ef55760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106cd565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610fb25760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016106cd565b6001600160a01b0382166110135760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016106cd565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166110d85760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016106cd565b6001600160a01b03821661113a5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016106cd565b6000811161119c5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016106cd565b601554600090600160b81b900460ff16156114da576000546001600160a01b038581169116148015906111dd57506000546001600160a01b03848116911614155b156114da576001600160a01b03841660009081526003602052604090205460ff1615801561122457506001600160a01b03831660009081526003602052604090205460ff16155b61122d57600080fd5b6015546001600160a01b03858116911614801561125857506014546001600160a01b03848116911614155b1561136e576010548211156112af5760405162461bcd60e51b815260206004820152601960248201527f4578636565647320746865205f6d61785478416d6f756e742e0000000000000060448201526064016106cd565b601154826112d2856001600160a01b031660009081526001602052604090205490565b6112dc919061210f565b111561132a5760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e00000000000060448201526064016106cd565b6113566064611350600a54600d541161134557600654611349565b6008545b8590611869565b906118eb565b600d805491925060006113688361206a565b91905055505b6015546001600160a01b03848116911614801561139457506001600160a01b0384163014155b156113c1576113be6064611350600b54600d54116113b457600754611349565b6009548590611869565b90505b30600090815260016020526040902054601554600160a81b900460ff161580156113f857506015546001600160a01b038581169116145b801561140d5750601554600160b01b900460ff165b801561141a575060125481115b80156114295750600c54600d54115b156114d857600f5443111561143e576000600e555b6002600e54106114905760405162461bcd60e51b815260206004820152601760248201527f4f6e6c7920322073656c6c732070657220626c6f636b2100000000000000000060448201526064016106cd565b6114ad6114a8846114a38460135461192d565b61192d565b611942565b4780156114bd576114bd47611abc565b600e80549060006114cd8361206a565b909155505043600f55505b505b801561155457306000908152600160205260409020546114fa9082611b44565b30600081815260016020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061154b9085815260200190565b60405180910390a35b6001600160a01b0384166000908152600160205260409020546115779083611ba3565b6001600160a01b0385166000908152600160205260409020556115bc61159d8383611ba3565b6001600160a01b03851660009081526001602052604090205490611b44565b6001600160a01b0380851660008181526001602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6116068585611ba3565b60405190815260200160405180910390a350505050565b600081848411156116415760405162461bcd60e51b81526004016106cd9190611c13565b50600061164e84866120f8565b95945050505050565b600060015b825181116116825761166e818361210f565b91508061167a8161206a565b91505061165c565b5060145483906001600160a01b031660005b84518110156118615760006116aa82600161210f565b90506000856116b9838a612000565b6116c39190612127565b9050848111156116d05750835b604080516002808252606082018352600092602083019080368337019050509050846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561172f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061175391906120ad565b8160008151811061176657611766612054565b60200260200101906001600160a01b031690816001600160a01b031681525050308160018151811061179a5761179a612054565b6001600160a01b039283166020918202929092010152601454895191169063b6f9de9590849060009085908d908a9081106117d7576117d7612054565b602002602001015142600f6117ec919061210f565b6040518663ffffffff1660e01b815260040161180b949392919061218d565b6000604051808303818588803b15801561182457600080fd5b505af1158015611838573d6000803e3d6000fd5b5050505050818661184991906120f8565b955050505080806118599061206a565b915050611694565b505050505050565b60008260000361187b5750600061056d565b60006118878385612000565b9050826118948583612127565b1461067a5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016106cd565b600061067a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611be5565b600081831161193c578261067a565b50919050565b6015805460ff60a81b1916600160a81b179055604080516002808252606082018352600092602083019080368337019050509050308160008151811061198a5761198a612054565b6001600160a01b03928316602091820292909201810191909152601454604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156119e3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a0791906120ad565b81600181518110611a1a57611a1a612054565b6001600160a01b039283166020918202929092010152601454611a409130911684610f50565b60145460405163791ac94760e01b81526001600160a01b039091169063791ac94790611a799085906000908690309042906004016121c2565b600060405180830381600087803b158015611a9357600080fd5b505af1158015611aa7573d6000803e3d6000fd5b50506015805460ff60a81b1916905550505050565b6000611ac9600283612127565b6005546040519192506001600160a01b03169082156108fc029083906000818181858888f19350505050158015611b04573d6000803e3d6000fd5b506004546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611b3f573d6000803e3d6000fd5b505050565b600080611b51838561210f565b90508381101561067a5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016106cd565b600061067a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061161d565b60008183611c065760405162461bcd60e51b81526004016106cd9190611c13565b50600061164e8486612127565b600060208083528351808285015260005b81811015611c4057858101830151858201604001528201611c24565b81811115611c52576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b03811681146107d557600080fd5b8035611c8881611c68565b919050565b60008060408385031215611ca057600080fd5b8235611cab81611c68565b946020939093013593505050565b600060208284031215611ccb57600080fd5b813561067a81611c68565b634e487b7160e01b600052604160045260246000fd5b600082601f830112611cfd57600080fd5b8135602067ffffffffffffffff80831115611d1a57611d1a611cd6565b8260051b604051601f19603f83011681018181108482111715611d3f57611d3f611cd6565b604052938452858101830193838101925087851115611d5d57600080fd5b83870191505b84821015611d8357611d7482611c7d565b83529183019190830190611d63565b979650505050505050565b600060208284031215611da057600080fd5b813567ffffffffffffffff811115611db757600080fd5b611dc384828501611cec565b949350505050565b600080600060608486031215611de057600080fd5b8335611deb81611c68565b92506020840135611dfb81611c68565b929592945050506040919091013590565b60008060008060808587031215611e2257600080fd5b5050823594602084013594506040840135936060013592509050565b60008060408385031215611e5157600080fd5b823567ffffffffffffffff811115611e6857600080fd5b611e7485828601611cec565b95602094909401359450505050565b60008060408385031215611e9657600080fd5b8235611ea181611c68565b91506020830135611eb181611c68565b809150509250929050565b600060208284031215611ece57600080fd5b5051919050565b600060208284031215611ee757600080fd5b8151801515811461067a57600080fd5b634e487b7160e01b600052601160045260246000fd5b600181815b80851115611f48578160001904821115611f2e57611f2e611ef7565b80851615611f3b57918102915b93841c9390800290611f12565b509250929050565b600082611f5f5750600161056d565b81611f6c5750600061056d565b8160018114611f825760028114611f8c57611fa8565b600191505061056d565b60ff841115611f9d57611f9d611ef7565b50506001821b61056d565b5060208310610133831016604e8410600b8410161715611fcb575081810a61056d565b611fd58383611f0d565b8060001904821115611fe957611fe9611ef7565b029392505050565b600061067a60ff841683611f50565b600081600019048311821515161561201a5761201a611ef7565b500290565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b60006001820161207c5761207c611ef7565b5060010190565b60208082526010908201526f43616e206e6f7420696e63726561736560801b604082015260600190565b6000602082840312156120bf57600080fd5b815161067a81611c68565b6000806000606084860312156120df57600080fd5b8351925060208401519150604084015190509250925092565b60008282101561210a5761210a611ef7565b500390565b6000821982111561212257612122611ef7565b500190565b60008261214457634e487b7160e01b600052601260045260246000fd5b500490565b600081518084526020808501945080840160005b838110156121825781516001600160a01b03168752958201959082019060010161215d565b509495945050505050565b8481526080602082015260006121a66080830186612149565b6001600160a01b03949094166040830152506060015292915050565b85815284602082015260a0604082015260006121e160a0830186612149565b6001600160a01b039490941660608301525060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212207a79398acca3c836602d8e92a084a5680d2394a6c23136a83b13b1bdcb5771ef64736f6c634300080f0033

Deployed Bytecode Sourcemap

4151:10482:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14148:190;;;;;;;;;;;;;:::i;:::-;;;179:14:1;;172:22;154:41;;142:2;127:18;14148:190:0;;;;;;;;6022:83;;;;;;;;;;-1:-1:-1;6092:5:0;;;;;;;;;;;;-1:-1:-1;;;6092:5:0;;;;6022:83;;;;;;;:::i;6856:161::-;;;;;;;;;;-1:-1:-1;6856:161:0;;;;;:::i;:::-;;:::i;5318:47::-;;;;;;;;;;;;;;;;;;;1549:25:1;;;1537:2;1522:18;5318:47:0;1403:177:1;14346:284:0;;;;;;;;;;-1:-1:-1;14346:284:0;;;;;:::i;:::-;;:::i;6299:96::-;;;;;;;;;;;;;:::i;11050:163::-;;;;;;;;;;-1:-1:-1;11050:163:0;;;;;:::i;:::-;;:::i;:::-;;7025:313;;;;;;;;;;-1:-1:-1;7025:313:0;;;;;:::i;:::-;;:::i;6208:83::-;;;;;;;;;;-1:-1:-1;6208:83:0;;4940:2;3838:36:1;;3826:2;3811:18;6208:83:0;3696:184:1;10119:83:0;;;;;;;;;;-1:-1:-1;10119:83:0;;;;;:::i;:::-;-1:-1:-1;;;;;10187:7:0;10166:4;10187:7;;;:4;:7;;;;;;;;;10119:83;11390:115;;;;;;;;;;-1:-1:-1;11390:115:0;;;;;:::i;:::-;;:::i;11221:161::-;;;;;;;;;;-1:-1:-1;11221:161:0;;;;;:::i;:::-;;:::i;6403:119::-;;;;;;;;;;-1:-1:-1;6403:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;6496:18:0;6469:7;6496:18;;;:9;:18;;;;;;;6403:119;2645:148;;;;;;;;;;;;;:::i;10701:165::-;;;;;;;;;;;;;:::i;5142:49::-;;;;;;;;;;;;;;;;2431:79;;;;;;;;;;-1:-1:-1;2469:7:0;2496:6;2431:79;;-1:-1:-1;;;;;2496:6:0;;;4031:51:1;;4019:2;4004:18;2431:79:0;3885:203:1;5198:51:0;;;;;;;;;;;;;;;;6113:87;;;;;;;;;;-1:-1:-1;6185:7:0;;;;;;;;;;;;-1:-1:-1;;;6185:7:0;;;;6113:87;;6530:167;;;;;;;;;;-1:-1:-1;6530:167:0;;;;;:::i;:::-;;:::i;11513:636::-;;;;;;;;;;-1:-1:-1;11513:636:0;;;;;:::i;:::-;;:::i;5256:55::-;;;;;;;;;;;;;;;;12157:988;;;;;;:::i;:::-;;:::i;6705:143::-;;;;;;;;;;-1:-1:-1;6705:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;6813:18:0;;;6786:7;6813:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6705:143;2801:244;;;;;;;;;;-1:-1:-1;2801:244:0;;;;;:::i;:::-;;:::i;14148:190::-;14236:11;;14188;;-1:-1:-1;;;;;14236:11:0;266:10;-1:-1:-1;;;;;14220:27:0;;14212:36;;;;;;14279:11;;14271:59;;-1:-1:-1;;;;;14279:11:0;;;;14304:21;;14271:59;;;;14304:21;14279:11;14271:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14259:71:0;;14148:190;-1:-1:-1;;14148:190:0:o;6856:161::-;6931:4;6948:39;266:10;6971:7;6980:6;6948:8;:39::i;:::-;-1:-1:-1;7005:4:0;6856:161;;;;;:::o;14346:284::-;14451:11;;14403;;-1:-1:-1;;;;;14451:11:0;266:10;-1:-1:-1;;;;;14435:27:0;;14427:36;;;;;;14505:39;;-1:-1:-1;;;14505:39:0;;14538:4;14505:39;;;4031:51:1;14474:28:0;;-1:-1:-1;;;;;14505:24:0;;;;;4004:18:1;;14505:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14588:11;;14564:58;;-1:-1:-1;;;14564:58:0;;-1:-1:-1;;;;;14588:11:0;;;14564:58;;;5878:51:1;5945:18;;;5938:34;;;14474:70:0;;-1:-1:-1;14564:23:0;;;;;5851:18:1;;14564:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14555:67;14346:284;-1:-1:-1;;;14346:284:0:o;6299:96::-;6352:7;5005:13;4940:2;5005;:13;:::i;:::-;4985:33;;:17;:33;:::i;:::-;6372:15;;6299:96;:::o;11050:163::-;2558:6;;-1:-1:-1;;;;;2558:6:0;266:10;2558:22;2550:67;;;;-1:-1:-1;;;2550:67:0;;;;;;;:::i;:::-;;;;;;;;;11123:6:::1;11118:88;11139:5;:12;11135:1;:16;11118:88;;;11190:4;11173;:14;11178:5;11184:1;11178:8;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;11173:14:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;11173:14:0;:21;;-1:-1:-1;;11173:21:0::1;::::0;::::1;;::::0;;;::::1;::::0;;11153:3;::::1;::::0;::::1;:::i;:::-;;;;11118:88;;;;11050:163:::0;:::o;7025:313::-;7123:4;7140:36;7150:6;7158:9;7169:6;7140:9;:36::i;:::-;7187:121;7196:6;266:10;7218:89;7256:6;7218:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7218:19:0;;;;;;:11;:19;;;;;;;;266:10;7218:33;;;;;;;;;;:37;:89::i;:::-;7187:8;:121::i;:::-;-1:-1:-1;7326:4:0;7025:313;;;;;:::o;11390:115::-;2558:6;;-1:-1:-1;;;;;2558:6:0;266:10;2558:22;2550:67;;;;-1:-1:-1;;;2550:67:0;;;;;;;:::i;:::-;11390:115;:::o;11221:161::-;2558:6;;-1:-1:-1;;;;;2558:6:0;266:10;2558:22;2550:67;;;;-1:-1:-1;;;2550:67:0;;;;;;;:::i;:::-;11295:6:::1;11290:85;11311:5;:12;11307:1;:16;11290:85;;;11360:5;11343:4;:14;11348:5;11354:1;11348:8;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;11343:14:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;11343:14:0;:22;;-1:-1:-1;;11343:22:0::1;::::0;::::1;;::::0;;;::::1;::::0;;11325:3;::::1;::::0;::::1;:::i;:::-;;;;11290:85;;2645:148:::0;2558:6;;-1:-1:-1;;;;;2558:6:0;266:10;2558:22;2550:67;;;;-1:-1:-1;;;2550:67:0;;;;;;;:::i;:::-;2752:1:::1;2736:6:::0;;2715:40:::1;::::0;-1:-1:-1;;;;;2736:6:0;;::::1;::::0;2715:40:::1;::::0;2752:1;;2715:40:::1;2783:1;2766:19:::0;;-1:-1:-1;;;;;;2766:19:0::1;::::0;;2645:148::o;10701:165::-;2558:6;;-1:-1:-1;;;;;2558:6:0;266:10;2558:22;2550:67;;;;-1:-1:-1;;;2550:67:0;;;;;;;:::i;:::-;5005:13:::1;4940:2;5005;:13;:::i;:::-;4985:33;::::0;:17:::1;:33;:::i;:::-;10755:12;:23:::0;5005:13:::1;4940:2;5005;:13;:::i;:::-;4985:33;::::0;:17:::1;:33;:::i;:::-;10789:14;:25:::0;10830:28:::1;5005:13;4940:2;5005;:13;:::i;:::-;4985:33;::::0;:17:::1;:33;:::i;:::-;10830:28;::::0;1549:25:1;;;1537:2;1522:18;10830:28:0::1;;;;;;;10701:165::o:0;6530:167::-;6608:4;6625:42;266:10;6649:9;6660:6;6625:9;:42::i;11513:636::-;2558:6;;-1:-1:-1;;;;;2558:6:0;266:10;2558:22;2550:67;;;;-1:-1:-1;;;2550:67:0;;;;;;;:::i;:::-;11729:14:::1;;11712:13;:31;;11704:60;;;;-1:-1:-1::0;;;11704:60:0::1;;;;;;;:::i;:::-;11801:15;;11783:14;:33;;11775:62;;;;-1:-1:-1::0;;;11775:62:0::1;;;;;;;:::i;:::-;11873:12;;11856:13;:29;;11848:58;;;;-1:-1:-1::0;;;11848:58:0::1;;;;;;;:::i;:::-;11943:13;;11925:14;:31;;11917:60;;;;-1:-1:-1::0;;;11917:60:0::1;;;;;;;:::i;:::-;11988:14;:30:::0;;;;12029:15:::1;:32:::0;;;;12072:12:::1;:28:::0;12111:13:::1;:30:::0;11513:636::o;12157:988::-;2558:6;;-1:-1:-1;;;;;2558:6:0;266:10;2558:22;2550:67;;;;-1:-1:-1;;;2550:67:0;;;;;;;:::i;:::-;12261:11:::1;::::0;-1:-1:-1;;;12261:11:0;::::1;;;12260:12;12252:47;;;::::0;-1:-1:-1;;;12252:47:0;;9133:2:1;12252:47:0::1;::::0;::::1;9115:21:1::0;9172:2;9152:18;;;9145:30;9211:25;9191:18;;;9184:53;9254:18;;12252:47:0::1;8931:347:1::0;12252:47:0::1;12312:54;12329:10;12350:4;5005:13;4940:2;5005;:13;:::i;:::-;4985:33;::::0;:17:::1;:33;:::i;12312:54::-;12377:55;12395:10;12416:4;5005:13;4940:2;5005;:13;:::i;:::-;4985:33;::::0;:17:::1;:33;:::i;:::-;12377:9;:55::i;:::-;12445:15;:80:::0;;-1:-1:-1;;;;;;12445:80:0::1;12482:42;12445:80:::0;;::::1;::::0;;;12570:25:::1;::::0;;-1:-1:-1;;;12570:25:0;;;;:23:::1;::::0;:25:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;12482:42;12570:25:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12552:55:0::1;;12616:4;12623:15;;;;;;;;;-1:-1:-1::0;;;;;12623:15:0::1;-1:-1:-1::0;;;;;12623:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12552:94;::::0;-1:-1:-1;;;;;;12552:94:0::1;::::0;;;;;;-1:-1:-1;;;;;9769:15:1;;;12552:94:0::1;::::0;::::1;9751:34:1::0;9821:15;;9801:18;;;9794:43;9686:18;;12552:94:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12536:13;:110:::0;;-1:-1:-1;;;;;;12536:110:0::1;-1:-1:-1::0;;;;;12536:110:0;;::::1;::::0;;::::1;::::0;;;12695:15:::1;::::0;12657:71:::1;::::0;-1:-1:-1;;;12657:71:0;;12695:15;::::1;12657:71;::::0;::::1;5878:51:1::0;-1:-1:-1;;5945:18:1;;;5938:34;12536:110:0;12657:29:::1;::::0;5851:18:1;;12657:71:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;12773:15:0::1;::::0;12741:59:::1;::::0;12758:4:::1;::::0;-1:-1:-1;;;;;12773:15:0::1;5005:13;4940:2;5005;:13;:::i;12741:59::-;12811:15;::::0;-1:-1:-1;;;;;12811:15:0::1;:31;12850:5:::0;12865:4:::1;12871:24;12865:4:::0;-1:-1:-1;;;;;6496:18:0;6469:7;6496:18;;;:9;:18;;;;;;;6403:119;12871:24:::1;12908:11;::::0;12811:126:::1;::::0;::::1;::::0;;;-1:-1:-1;;;;;;12811:126:0;;;-1:-1:-1;;;;;10486:15:1;;;12811:126:0::1;::::0;::::1;10468:34:1::0;10518:18;;;10511:34;;;;12896:1:0::1;10561:18:1::0;;;10554:34;;;10604:18;;;10597:34;12908:11:0;;;::::1;10647:19:1::0;;;10640:44;12921:15:0::1;10700:19:1::0;;;10693:35;10402:19;;12811:126:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;12948:11:0::1;:18:::0;;-1:-1:-1;;;;12977:18:0;-1:-1:-1;;;12977:18:0;;;-1:-1:-1;;13038:17:0::1;13050:5:::0;13038:9:::1;:17;:::i;:::-;13008:47;;13066:42;13081:19;13102:5;13066:14;:42::i;:::-;-1:-1:-1::0;;13119:11:0::1;:18:::0;;-1:-1:-1;;;;13119:18:0::1;-1:-1:-1::0;;;13119:18:0::1;::::0;;-1:-1:-1;12157:988:0:o;2801:244::-;2558:6;;-1:-1:-1;;;;;2558:6:0;266:10;2558:22;2550:67;;;;-1:-1:-1;;;2550:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2890:22:0;::::1;2882:73;;;::::0;-1:-1:-1;;;2882:73:0;;11382:2:1;2882:73:0::1;::::0;::::1;11364:21:1::0;11421:2;11401:18;;;11394:30;11460:34;11440:18;;;11433:62;-1:-1:-1;;;11511:18:1;;;11504:36;11557:19;;2882:73:0::1;11180:402:1::0;2882:73:0::1;2992:6;::::0;;2971:38:::1;::::0;-1:-1:-1;;;;;2971:38:0;;::::1;::::0;2992:6;::::1;::::0;2971:38:::1;::::0;::::1;3020:6;:17:::0;;-1:-1:-1;;;;;;3020:17:0::1;-1:-1:-1::0;;;;;3020:17:0;;;::::1;::::0;;;::::1;::::0;;2801:244::o;7346:335::-;-1:-1:-1;;;;;7439:19:0;;7431:68;;;;-1:-1:-1;;;7431:68:0;;11789:2:1;7431:68:0;;;11771:21:1;11828:2;11808:18;;;11801:30;11867:34;11847:18;;;11840:62;-1:-1:-1;;;11918:18:1;;;11911:34;11962:19;;7431:68:0;11587:400:1;7431:68:0;-1:-1:-1;;;;;7518:21:0;;7510:68;;;;-1:-1:-1;;;7510:68:0;;12194:2:1;7510:68:0;;;12176:21:1;12233:2;12213:18;;;12206:30;12272:34;12252:18;;;12245:62;-1:-1:-1;;;12323:18:1;;;12316:32;12365:19;;7510:68:0;11992:398:1;7510:68:0;-1:-1:-1;;;;;7589:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7641:32;;1549:25:1;;;7641:32:0;;1522:18:1;7641:32:0;;;;;;;7346:335;;;:::o;7689:2316::-;-1:-1:-1;;;;;7777:18:0;;7769:68;;;;-1:-1:-1;;;7769:68:0;;12597:2:1;7769:68:0;;;12579:21:1;12636:2;12616:18;;;12609:30;12675:34;12655:18;;;12648:62;-1:-1:-1;;;12726:18:1;;;12719:35;12771:19;;7769:68:0;12395:401:1;7769:68:0;-1:-1:-1;;;;;7856:16:0;;7848:64;;;;-1:-1:-1;;;7848:64:0;;13003:2:1;7848:64:0;;;12985:21:1;13042:2;13022:18;;;13015:30;13081:34;13061:18;;;13054:62;-1:-1:-1;;;13132:18:1;;;13125:33;13175:19;;7848:64:0;12801:399:1;7848:64:0;7940:1;7931:6;:10;7923:64;;;;-1:-1:-1;;;7923:64:0;;13407:2:1;7923:64:0;;;13389:21:1;13446:2;13426:18;;;13419:30;13485:34;13465:18;;;13458:62;-1:-1:-1;;;13536:18:1;;;13529:39;13585:19;;7923:64:0;13205:405:1;7923:64:0;8033:11;;7998:17;;-1:-1:-1;;;8033:11:0;;;;8030:1607;;;2469:7;2496:6;-1:-1:-1;;;;;8064:15:0;;;2496:6;;8064:15;;;;:32;;-1:-1:-1;2469:7:0;2496:6;-1:-1:-1;;;;;8083:13:0;;;2496:6;;8083:13;;8064:32;8060:1566;;;-1:-1:-1;;;;;8126:10:0;;;;;;:4;:10;;;;;;;;8125:11;:24;;;;-1:-1:-1;;;;;;8141:8:0;;;;;;:4;:8;;;;;;;;8140:9;8125:24;8117:33;;;;;;8183:13;;-1:-1:-1;;;;;8175:21:0;;;8183:13;;8175:21;:55;;;;-1:-1:-1;8214:15:0;;-1:-1:-1;;;;;8200:30:0;;;8214:15;;8200:30;;8175:55;8171:411;;;8273:12;;8263:6;:22;;8255:60;;;;-1:-1:-1;;;8255:60:0;;13817:2:1;8255:60:0;;;13799:21:1;13856:2;13836:18;;;13829:30;13895:27;13875:18;;;13868:55;13940:18;;8255:60:0;13615:349:1;8255:60:0;8372:14;;8362:6;8346:13;8356:2;-1:-1:-1;;;;;6496:18:0;6469:7;6496:18;;;:9;:18;;;;;;;6403:119;8346:13;:22;;;;:::i;:::-;:40;;8338:79;;;;-1:-1:-1;;;8338:79:0;;14304:2:1;8338:79:0;;;14286:21:1;14343:2;14323:18;;;14316:30;14382:28;14362:18;;;14355:56;14428:18;;8338:79:0;14102:350:1;8338:79:0;8452:76;8524:3;8452:67;8474:15;;8464:9;;:25;8463:55;;8504:14;;8463:55;;;8491:12;;8463:55;8452:6;;:10;:67::i;:::-;:71;;:76::i;:::-;8551:9;:11;;8440:88;;-1:-1:-1;8551:9:0;:11;;;:::i;:::-;;;;;;8171:411;8611:13;;-1:-1:-1;;;;;8605:19:0;;;8611:13;;8605:19;:44;;;;-1:-1:-1;;;;;;8628:21:0;;8644:4;8628:21;;8605:44;8602:183;;;8686:79;8761:3;8686:70;8708:16;;8698:9;;:26;8697:58;;8740:15;;8697:58;;;8726:13;;8686:6;;:10;:70::i;:79::-;8674:91;;8602:183;8854:4;8805:28;6496:18;;;:9;:18;;;;;;8884:6;;-1:-1:-1;;;8884:6:0;;;;8883:7;:30;;;;-1:-1:-1;8900:13:0;;-1:-1:-1;;;;;8894:19:0;;;8900:13;;8894:19;8883:30;:45;;;;-1:-1:-1;8917:11:0;;-1:-1:-1;;;8917:11:0;;;;8883:45;:89;;;;;8955:17;;8932:20;:40;8883:89;:123;;;;;8988:18;;8976:9;;:30;8883:123;8879:732;;;9050:14;;9035:12;:29;9031:100;;;9106:1;9093:10;:14;9031:100;9174:1;9161:10;;:14;9153:50;;;;-1:-1:-1;;;9153:50:0;;14659:2:1;9153:50:0;;;14641:21:1;14698:2;14678:18;;;14671:30;14737:25;14717:18;;;14710:53;14780:18;;9153:50:0;14457:347:1;9153:50:0;9226:69;9243:51;9247:6;9255:38;9259:20;9281:11;;9255:3;:38::i;:::-;9243:3;:51::i;:::-;9226:16;:69::i;:::-;9347:21;9395:22;;9391:114;;9446:35;9459:21;9446:12;:35::i;:::-;9527:10;:12;;;:10;:12;;;:::i;:::-;;;;-1:-1:-1;;9579:12:0;9562:14;:29;-1:-1:-1;8879:732:0;8098:1528;8060:1566;9652:13;;9649:165;;9724:4;9706:24;;;;:9;:24;;;;;;:39;;9735:9;9706:28;:39::i;:::-;9697:4;9679:24;;;;:9;:24;;;;;;;:66;;;;9763:39;;-1:-1:-1;;;;;9763:39:0;;;;;;;9792:9;1549:25:1;;1537:2;1522:18;;1403:177;9763:39:0;;;;;;;;9649:165;-1:-1:-1;;;;;9844:15:0;;;;;;:9;:15;;;;;;:27;;9864:6;9844:19;:27::i;:::-;-1:-1:-1;;;;;9826:15:0;;;;;;:9;:15;;;;;:45;9898:40;9916:21;:6;9927:9;9916:10;:21::i;:::-;-1:-1:-1;;;;;9898:13:0;;;;;;:9;:13;;;;;;;:17;:40::i;:::-;-1:-1:-1;;;;;9882:13:0;;;;;;;:9;:13;;;;;:56;;;;9956:41;;;9975:21;:6;9986:9;9975:10;:21::i;:::-;9956:41;;1549:25:1;;;1537:2;1522:18;9956:41:0;;;;;;;7758:2247;7689:2316;;;:::o;1323:190::-;1409:7;1445:12;1437:6;;;;1429:29;;;;-1:-1:-1;;;1429:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1469:9:0;1481:5;1485:1;1481;:5;:::i;:::-;1469:17;1323:190;-1:-1:-1;;;;;1323:190:0:o;13157:946::-;13253:18;13304:1;13287:95;13312:14;:21;13307:1;:26;13287:95;;13355:15;13369:1;13355:15;;:::i;:::-;;-1:-1:-1;13335:3:0;;;;:::i;:::-;;;;13287:95;;;-1:-1:-1;13489:15:0;;13413:10;;-1:-1:-1;;;;;13489:15:0;13392:18;13516:578;13540:14;:21;13536:1;:25;13516:578;;;13570:14;13587:5;:1;13591;13587:5;:::i;:::-;13570:22;-1:-1:-1;13608:11:0;13646:10;13623:19;13570:22;13623:10;:19;:::i;:::-;13622:34;;;;:::i;:::-;13608:48;;13681:10;13675:3;:16;13671:41;;;-1:-1:-1;13700:10:0;13671:41;13750:16;;;13764:1;13750:16;;;;;;;;13726:21;;13750:16;;;;;;;;;;-1:-1:-1;13750:16:0;13726:40;;13778:13;-1:-1:-1;;;;;13778:18:0;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13768:4;13773:1;13768:7;;;;;;;;:::i;:::-;;;;;;:30;-1:-1:-1;;;;;13768:30:0;;;-1:-1:-1;;;;;13768:30:0;;;;;13818:4;13800;13805:1;13800:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;13800:23:0;;;:7;;;;;;;;;:23;13838:15;;13979:17;;13838:15;;;:66;;13912:3;;13838:15;;13956:4;;13979:14;;13994:1;;13979:17;;;;;;:::i;:::-;;;;;;;14015:15;14033:2;14015:20;;;;:::i;:::-;13838:212;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14079:3;14065:17;;;;;:::i;:::-;;;13568:526;;;13563:3;;;;;:::i;:::-;;;;13516:578;;;;13242:861;;;13157:946;;:::o;1521:246::-;1579:7;1603:1;1608;1603:6;1599:47;;-1:-1:-1;1633:1:0;1626:8;;1599:47;1656:9;1668:5;1672:1;1668;:5;:::i;:::-;1656:17;-1:-1:-1;1701:1:0;1692:5;1696:1;1656:17;1692:5;:::i;:::-;:10;1684:56;;;;-1:-1:-1;;;1684:56:0;;16214:2:1;1684:56:0;;;16196:21:1;16253:2;16233:18;;;16226:30;16292:34;16272:18;;;16265:62;-1:-1:-1;;;16343:18:1;;;16336:31;16384:19;;1684:56:0;16012:397:1;1775:132:0;1833:7;1860:39;1864:1;1867;1860:39;;;;;;;;;;;;;;;;;:3;:39::i;10013:98::-;10070:7;10097:1;10095;:3;10094:9;;10102:1;10094:9;;;-1:-1:-1;10100:1:0;10013:98;-1:-1:-1;10013:98:0:o;10210:483::-;5700:6;:13;;-1:-1:-1;;;;5700:13:0;-1:-1:-1;;;5700:13:0;;;10312:16:::1;::::0;;10326:1:::1;10312:16:::0;;;;;::::1;::::0;;-1:-1:-1;;10312:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;10312:16:0::1;10288:40;;10357:4;10339;10344:1;10339:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;10339:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;10383:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;10383:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;10339:7;;10383:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10373:4;10378:1;10373:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;10373:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;10448:15:::1;::::0;10416:62:::1;::::0;10433:4:::1;::::0;10448:15:::1;10466:11:::0;10416:8:::1;:62::i;:::-;10489:15;::::0;:196:::1;::::0;-1:-1:-1;;;10489:196:0;;-1:-1:-1;;;;;10489:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;10570:11;;10489:15:::1;::::0;10612:4;;10639::::1;::::0;10659:15:::1;::::0;10489:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;5736:6:0;:14;;-1:-1:-1;;;;5736:14:0;;;-1:-1:-1;;;;10210:483:0:o;10874:168::-;10931:14;10948:10;10957:1;10948:6;:10;:::i;:::-;10969:11;;:28;;10931:27;;-1:-1:-1;;;;;;10969:11:0;;:28;;;;;10931:27;;10969:11;:28;:11;:28;10931:27;10969:11;:28;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11008:9:0;;:26;;-1:-1:-1;;;;;11008:9:0;;;;:26;;;;;11027:6;;11008:9;:26;:9;:26;11027:6;11008:9;:26;;;;;;;;;;;;;;;;;;;;;10920:122;10874:168;:::o;992:179::-;1050:7;;1082:5;1086:1;1082;:5;:::i;:::-;1070:17;;1111:1;1106;:6;;1098:46;;;;-1:-1:-1;;;1098:46:0;;17203:2:1;1098:46:0;;;17185:21:1;17242:2;17222:18;;;17215:30;17281:29;17261:18;;;17254:57;17328:18;;1098:46:0;17001:351:1;1179:136:0;1237:7;1264:43;1268:1;1271;1264:43;;;;;;;;;;;;;;;;;:3;:43::i;1915:189::-;2001:7;2036:12;2029:5;2021:28;;;;-1:-1:-1;;;2021:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2060:9:0;2072:5;2076:1;2072;:5;:::i;206:597:1:-;318:4;347:2;376;365:9;358:21;408:6;402:13;451:6;446:2;435:9;431:18;424:34;476:1;486:140;500:6;497:1;494:13;486:140;;;595:14;;;591:23;;585:30;561:17;;;580:2;557:26;550:66;515:10;;486:140;;;644:6;641:1;638:13;635:91;;;714:1;709:2;700:6;689:9;685:22;681:31;674:42;635:91;-1:-1:-1;787:2:1;766:15;-1:-1:-1;;762:29:1;747:45;;;;794:2;743:54;;206:597;-1:-1:-1;;;206:597:1:o;808:131::-;-1:-1:-1;;;;;883:31:1;;873:42;;863:70;;929:1;926;919:12;944:134;1012:20;;1041:31;1012:20;1041:31;:::i;:::-;944:134;;;:::o;1083:315::-;1151:6;1159;1212:2;1200:9;1191:7;1187:23;1183:32;1180:52;;;1228:1;1225;1218:12;1180:52;1267:9;1254:23;1286:31;1311:5;1286:31;:::i;:::-;1336:5;1388:2;1373:18;;;;1360:32;;-1:-1:-1;;;1083:315:1:o;1585:247::-;1644:6;1697:2;1685:9;1676:7;1672:23;1668:32;1665:52;;;1713:1;1710;1703:12;1665:52;1752:9;1739:23;1771:31;1796:5;1771:31;:::i;1837:127::-;1898:10;1893:3;1889:20;1886:1;1879:31;1929:4;1926:1;1919:15;1953:4;1950:1;1943:15;1969:908;2023:5;2076:3;2069:4;2061:6;2057:17;2053:27;2043:55;;2094:1;2091;2084:12;2043:55;2130:6;2117:20;2156:4;2179:18;2216:2;2212;2209:10;2206:36;;;2222:18;;:::i;:::-;2268:2;2265:1;2261:10;2300:2;2294:9;2363:2;2359:7;2354:2;2350;2346:11;2342:25;2334:6;2330:38;2418:6;2406:10;2403:22;2398:2;2386:10;2383:18;2380:46;2377:72;;;2429:18;;:::i;:::-;2465:2;2458:22;2515:18;;;2591:15;;;2587:24;;;2549:15;;;;-1:-1:-1;2623:15:1;;;2620:35;;;2651:1;2648;2641:12;2620:35;2687:2;2679:6;2675:15;2664:26;;2699:148;2715:6;2710:3;2707:15;2699:148;;;2781:23;2800:3;2781:23;:::i;:::-;2769:36;;2825:12;;;;2732;;;;2699:148;;;2865:6;1969:908;-1:-1:-1;;;;;;;1969:908:1:o;2882:348::-;2966:6;3019:2;3007:9;2998:7;2994:23;2990:32;2987:52;;;3035:1;3032;3025:12;2987:52;3075:9;3062:23;3108:18;3100:6;3097:30;3094:50;;;3140:1;3137;3130:12;3094:50;3163:61;3216:7;3207:6;3196:9;3192:22;3163:61;:::i;:::-;3153:71;2882:348;-1:-1:-1;;;;2882:348:1:o;3235:456::-;3312:6;3320;3328;3381:2;3369:9;3360:7;3356:23;3352:32;3349:52;;;3397:1;3394;3387:12;3349:52;3436:9;3423:23;3455:31;3480:5;3455:31;:::i;:::-;3505:5;-1:-1:-1;3562:2:1;3547:18;;3534:32;3575:33;3534:32;3575:33;:::i;:::-;3235:456;;3627:7;;-1:-1:-1;;;3681:2:1;3666:18;;;;3653:32;;3235:456::o;4093:385::-;4179:6;4187;4195;4203;4256:3;4244:9;4235:7;4231:23;4227:33;4224:53;;;4273:1;4270;4263:12;4224:53;-1:-1:-1;;4296:23:1;;;4366:2;4351:18;;4338:32;;-1:-1:-1;4417:2:1;4402:18;;4389:32;;4468:2;4453:18;4440:32;;-1:-1:-1;4093:385:1;-1:-1:-1;4093:385:1:o;4483:416::-;4576:6;4584;4637:2;4625:9;4616:7;4612:23;4608:32;4605:52;;;4653:1;4650;4643:12;4605:52;4693:9;4680:23;4726:18;4718:6;4715:30;4712:50;;;4758:1;4755;4748:12;4712:50;4781:61;4834:7;4825:6;4814:9;4810:22;4781:61;:::i;:::-;4771:71;4889:2;4874:18;;;;4861:32;;-1:-1:-1;;;;4483:416:1:o;4904:388::-;4972:6;4980;5033:2;5021:9;5012:7;5008:23;5004:32;5001:52;;;5049:1;5046;5039:12;5001:52;5088:9;5075:23;5107:31;5132:5;5107:31;:::i;:::-;5157:5;-1:-1:-1;5214:2:1;5199:18;;5186:32;5227:33;5186:32;5227:33;:::i;:::-;5279:7;5269:17;;;4904:388;;;;;:::o;5507:184::-;5577:6;5630:2;5618:9;5609:7;5605:23;5601:32;5598:52;;;5646:1;5643;5636:12;5598:52;-1:-1:-1;5669:16:1;;5507:184;-1:-1:-1;5507:184:1:o;5983:277::-;6050:6;6103:2;6091:9;6082:7;6078:23;6074:32;6071:52;;;6119:1;6116;6109:12;6071:52;6151:9;6145:16;6204:5;6197:13;6190:21;6183:5;6180:32;6170:60;;6226:1;6223;6216:12;6265:127;6326:10;6321:3;6317:20;6314:1;6307:31;6357:4;6354:1;6347:15;6381:4;6378:1;6371:15;6397:422;6486:1;6529:5;6486:1;6543:270;6564:7;6554:8;6551:21;6543:270;;;6623:4;6619:1;6615:6;6611:17;6605:4;6602:27;6599:53;;;6632:18;;:::i;:::-;6682:7;6672:8;6668:22;6665:55;;;6702:16;;;;6665:55;6781:22;;;;6741:15;;;;6543:270;;;6547:3;6397:422;;;;;:::o;6824:806::-;6873:5;6903:8;6893:80;;-1:-1:-1;6944:1:1;6958:5;;6893:80;6992:4;6982:76;;-1:-1:-1;7029:1:1;7043:5;;6982:76;7074:4;7092:1;7087:59;;;;7160:1;7155:130;;;;7067:218;;7087:59;7117:1;7108:10;;7131:5;;;7155:130;7192:3;7182:8;7179:17;7176:43;;;7199:18;;:::i;:::-;-1:-1:-1;;7255:1:1;7241:16;;7270:5;;7067:218;;7369:2;7359:8;7356:16;7350:3;7344:4;7341:13;7337:36;7331:2;7321:8;7318:16;7313:2;7307:4;7304:12;7300:35;7297:77;7294:159;;;-1:-1:-1;7406:19:1;;;7438:5;;7294:159;7485:34;7510:8;7504:4;7485:34;:::i;:::-;7555:6;7551:1;7547:6;7543:19;7534:7;7531:32;7528:58;;;7566:18;;:::i;:::-;7604:20;;6824:806;-1:-1:-1;;;6824:806:1:o;7635:140::-;7693:5;7722:47;7763:4;7753:8;7749:19;7743:4;7722:47;:::i;7780:168::-;7820:7;7886:1;7882;7878:6;7874:14;7871:1;7868:21;7863:1;7856:9;7849:17;7845:45;7842:71;;;7893:18;;:::i;:::-;-1:-1:-1;7933:9:1;;7780:168::o;7953:356::-;8155:2;8137:21;;;8174:18;;;8167:30;8233:34;8228:2;8213:18;;8206:62;8300:2;8285:18;;7953:356::o;8314:127::-;8375:10;8370:3;8366:20;8363:1;8356:31;8406:4;8403:1;8396:15;8430:4;8427:1;8420:15;8446:135;8485:3;8506:17;;;8503:43;;8526:18;;:::i;:::-;-1:-1:-1;8573:1:1;8562:13;;8446:135::o;8586:340::-;8788:2;8770:21;;;8827:2;8807:18;;;8800:30;-1:-1:-1;;;8861:2:1;8846:18;;8839:46;8917:2;8902:18;;8586:340::o;9283:251::-;9353:6;9406:2;9394:9;9385:7;9381:23;9377:32;9374:52;;;9422:1;9419;9412:12;9374:52;9454:9;9448:16;9473:31;9498:5;9473:31;:::i;10739:306::-;10827:6;10835;10843;10896:2;10884:9;10875:7;10871:23;10867:32;10864:52;;;10912:1;10909;10902:12;10864:52;10941:9;10935:16;10925:26;;10991:2;10980:9;10976:18;10970:25;10960:35;;11035:2;11024:9;11020:18;11014:25;11004:35;;10739:306;;;;;:::o;11050:125::-;11090:4;11118:1;11115;11112:8;11109:34;;;11123:18;;:::i;:::-;-1:-1:-1;11160:9:1;;11050:125::o;13969:128::-;14009:3;14040:1;14036:6;14033:1;14030:13;14027:39;;;14046:18;;:::i;:::-;-1:-1:-1;14082:9:1;;13969:128::o;14809:217::-;14849:1;14875;14865:132;;14919:10;14914:3;14910:20;14907:1;14900:31;14954:4;14951:1;14944:15;14982:4;14979:1;14972:15;14865:132;-1:-1:-1;15011:9:1;;14809:217::o;15031:461::-;15084:3;15122:5;15116:12;15149:6;15144:3;15137:19;15175:4;15204:2;15199:3;15195:12;15188:19;;15241:2;15234:5;15230:14;15262:1;15272:195;15286:6;15283:1;15280:13;15272:195;;;15351:13;;-1:-1:-1;;;;;15347:39:1;15335:52;;15407:12;;;;15442:15;;;;15383:1;15301:9;15272:195;;;-1:-1:-1;15483:3:1;;15031:461;-1:-1:-1;;;;;15031:461:1:o;15497:510::-;15768:6;15757:9;15750:25;15811:3;15806:2;15795:9;15791:18;15784:31;15731:4;15832:57;15884:3;15873:9;15869:19;15861:6;15832:57;:::i;:::-;-1:-1:-1;;;;;15925:32:1;;;;15920:2;15905:18;;15898:60;-1:-1:-1;15989:2:1;15974:18;15967:34;15824:65;15497:510;-1:-1:-1;;15497:510:1:o;16414:582::-;16713:6;16702:9;16695:25;16756:6;16751:2;16740:9;16736:18;16729:34;16799:3;16794:2;16783:9;16779:18;16772:31;16676:4;16820:57;16872:3;16861:9;16857:19;16849:6;16820:57;:::i;:::-;-1:-1:-1;;;;;16913:32:1;;;;16908:2;16893:18;;16886:60;-1:-1:-1;16977:3:1;16962:19;16955:35;16812:65;16414:582;-1:-1:-1;;;16414:582:1:o

Swarm Source

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