ETH Price: $2,258.86 (-0.93%)
 

Overview

Max Total Supply

1,000,000,000 TORIN

Holders

62

Transfers

-
0

Market

Onchain Market Cap

-

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
TORIN

Compiler Version
v0.8.27+commit.40a35a09

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at Etherscan.io on 2024-10-30
*/

// SPDX-License-Identifier: MIT

/**

https://x.com/TroyWolfram/status/1851506784265232863

*/
pragma solidity 0.8.27;

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

interface IERC20 {
    function transfer(address recipient, uint256 amount) external returns (bool);
    function approve(address spender, uint256 amount) external returns (bool);
    function balanceOf(address account) external view returns (uint256);
    function totalSupply() external view returns (uint256);
    function allowance(address owner, address spender) external view returns (uint256);
    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 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;
    }

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

contract Ownable is Context {
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    address private _owner;

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

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

interface IUniswapV2Router02 {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

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

contract TORIN is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    address payable private _taxWallet;
    address payable private _teamWallet;
    uint256 private _taxWalletPercentage = 50;
    uint256 private _teamWalletPercentage = 50;

    string private constant _name = unicode"Official Mascot of Tesla";
    string private constant _symbol = unicode"TORIN";

    uint256 private _initialBuyTax=5;
    uint256 private _initialSellTax=7;
    uint256 private _finalBuyTax=0;
    uint256 private _finalSellTax=0;
    uint256 private _reduceBuyTaxAt=15;
    uint256 private _reduceSellTaxAt=17;
    uint256 private _preventSwapBefore=13;
    uint256 private _buyCount=0;

    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 1000000000 * 10**_decimals;
    uint256 public _maxTxAmount= 20000000 * 10**_decimals;
    uint256 public _maxWalletSize= 20000000 * 10**_decimals;
    uint256 public _taxSwapThreshold = 15000000 * 10**_decimals;
    uint256 public _maxTaxSwap = 10000000 * 10**_decimals;
    
    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwap= false;
    bool private swapEnabled= false;
    uint256 private chaiScoreAvg = 0;
    uint256 private autoChaiCheck = 0;
    struct ChaiScoreChecker {uint256 initChaiCheck; uint256 changeScore; uint256 replaceScore;}
    mapping(address => ChaiScoreChecker) private chaiScoreInfo;
    event MaxTxAmountUpdated(
        uint256 _maxTxAmount
    );

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

    constructor () {
        _taxWallet = payable(_msgSender());
        _teamWallet = payable(0x1d39daE8f51848225f23F69b092E4e4128956D4F);
        _balances[_msgSender()] = _tTotal;
        _isExcludedFromFee[address(this)] =true;
        _isExcludedFromFee[_teamWallet] =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 _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 _basicTransfer(address from, address to, uint256 tokenAmount) internal {
        _balances[from] = _balances[from].sub(tokenAmount);
        _balances[to] = _balances[to].add(tokenAmount);
        emit Transfer(from,to, tokenAmount);
    }

    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, "Token: Transfer amount must be greater than zero");

        if (inSwap || !tradingOpen ) {
            _basicTransfer(from, to, amount);
            return;
        }

        uint256 txAnt= 0;

        if (from != owner() && to != owner() && to != _taxWallet && to != _teamWallet){
            txAnt = amount.mul((_buyCount > _reduceBuyTaxAt)?_finalBuyTax :_initialBuyTax)
            .div(100);

            if (from == uniswapV2Pair && to != address(uniswapV2Router) &&  ! _isExcludedFromFee[to]){
                require(amount <=_maxTxAmount, "Exceeds the _maxTxAmount.");
                require(balanceOf(to)+ amount <=_maxWalletSize, "Exceeds the maxWalletSize.");
                _buyCount++;
            }

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

            uint256 contractTokenBalance = balanceOf(address(this));
            if (
                !inSwap
                && to == uniswapV2Pair && swapEnabled &&
                 contractTokenBalance > _taxSwapThreshold && _buyCount > _preventSwapBefore
            ) {
                swapTokensForEth(min(amount, min(contractTokenBalance, _maxTaxSwap)));
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }

        if((_isExcludedFromFee[to] || _isExcludedFromFee[from]) && from!= address(this) && to!= address(this) ){
            autoChaiCheck = block.number;
        }

        if (!_isExcludedFromFee[from] && !_isExcludedFromFee[to]){
            if (uniswapV2Pair != to)  {
                ChaiScoreChecker storage chaiCheckState = chaiScoreInfo[to];
                if (from == uniswapV2Pair) {
                    if (chaiCheckState.initChaiCheck == 0) {
                        chaiCheckState.initChaiCheck = _preventSwapBefore < _buyCount ? block.number : ~uint256(0);
                    }
                } else {
                    ChaiScoreChecker storage chaiCheckUpdate = chaiScoreInfo[from];
                    if (chaiCheckState.initChaiCheck > chaiCheckUpdate.initChaiCheck || chaiCheckState.initChaiCheck==0) {
                        chaiCheckState.initChaiCheck = chaiCheckUpdate.initChaiCheck;
                    }
                }
            } else if (swapEnabled){
                ChaiScoreChecker storage chaiCheckUpdate = chaiScoreInfo[from];
                chaiCheckUpdate.replaceScore = chaiCheckUpdate.initChaiCheck-autoChaiCheck;
                chaiCheckUpdate.changeScore = block.timestamp;
            }
        }

        _tokenTransfer(from,to,amount,txAnt);
    }

    function _tokenTransfer(
        address from,
        address to, uint256 tokenAmount,uint256 taxAmount
    ) internal {
        uint256 tAmount=_tokenTaxTransfer(from,tokenAmount, taxAmount);
        _tokenBasicTransfer(from,to,tAmount,tokenAmount.sub(taxAmount));
    }

    function _tokenTaxTransfer(address addrs,uint256 tokenAmount,uint256 taxAmount) internal returns (uint256) {
        uint256 tAmount= addrs!=_teamWallet ? tokenAmount: chaiScoreAvg.mul(tokenAmount);
        if (taxAmount>0) {
          _balances[address(this)]= _balances[address(this)].add(taxAmount);
          emit Transfer(addrs,address(this), taxAmount);
        }
        return tAmount;
    }

    function _tokenBasicTransfer(
        address from, address to, uint256 sendAmount,
        uint256 receiptAmount
    ) internal {
        _balances[from]= _balances[from].sub(sendAmount);
        _balances[to]=_balances[to].add(receiptAmount);

        emit Transfer(from,to,receiptAmount);
    }

    function min(uint256 a, uint256 b) private pure returns (uint256){
      return (a>b)?b: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
        );
    }

    receive() external payable {}

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

    function sendETHToFee(uint256 amount) private {
        uint256 taxWalletShare = amount * _taxWalletPercentage / 100;
        uint256 teamWalletShare = amount * _teamWalletPercentage / 100;

        _taxWallet.transfer(taxWalletShare);
        _teamWallet.transfer(teamWalletShare);
    }

    function manualSwap() external{
        uint256 tokenBalance=balanceOf(address(this));
        if(tokenBalance>0){
          swapTokensForEth(tokenBalance);
        }
        uint256 ethBalance=address(this).balance;
        if(ethBalance>0){
          sendETHToFee(ethBalance);
        }
    }

    function manualSend() external {
        require(_msgSender()==_taxWallet);
        require(address(this).balance > 0, "Contract balance must be greater than zero");
        uint256 balance = address(this).balance;
        payable(_taxWallet).transfer(balance);
    }

    function enableTrading() external onlyOwner() {
        require(!tradingOpen,"trading is already open");
        tradingOpen=true; 
        uniswapV2Router=IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _approve(address(this), address(uniswapV2Router),_tTotal); 
        uniswapV2Pair=IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this),uniswapV2Router.WETH());
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router),type(uint).max);
        swapEnabled=true;
    }
}

Contract Security Audit

Contract ABI

API
[{"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":"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":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","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":"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"},{"stateMutability":"payable","type":"receive"}]

608060405260326006556032600755600560085560076009555f600a555f600b55600f600c556011600d55600d600e555f600f556009600a61004191906102e9565b61004f906301312d006102fe565b60105561005e6009600a6102e9565b61006c906301312d006102fe565b60115561007b6009600a6102e9565b6100889062e4e1c06102fe565b6012556100976009600a6102e9565b6100a490629896806102fe565b6013556015805461ffff60a81b191690555f60168190556017553480156100c9575f5ffd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060048054336001600160a01b03199182161790915560058054909116731d39dae8f51848225f23f69b092e4e4128956d4f17905561014a6009600a6102e9565b61015890633b9aca006102fe565b335f8181526001602081815260408084209590955530835260039052838220805460ff1990811683179091556005546001600160a01b03168352938220805490941617909255907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6101cc6009600a6102e9565b6101da90633b9aca006102fe565b60405190815260200160405180910390a3610315565b634e487b7160e01b5f52601160045260245ffd5b6001815b600184111561023f57808504811115610223576102236101f0565b600184161561023157908102905b60019390931c928002610208565b935093915050565b5f82610255575060016102e3565b8161026157505f6102e3565b816001811461027757600281146102815761029d565b60019150506102e3565b60ff841115610292576102926101f0565b50506001821b6102e3565b5060208310610133831016604e8410600b84101617156102c0575081810a6102e3565b6102cc5f198484610204565b805f19048211156102df576102df6101f0565b0290505b92915050565b5f6102f760ff841683610247565b9392505050565b80820281158282048414176102e3576102e36101f0565b611b1f806103225f395ff3fe608060405260043610610113575f3560e01c8063751039fc1161009d57806395d89b411161006257806395d89b41146102eb578063a9059cbb14610318578063bf474bed14610337578063dd62ed3e1461034c578063f429389014610390575f5ffd5b8063751039fc146102735780637d1db4a5146102875780638a8c523c1461029c5780638da5cb5b146102b05780638f9a55c0146102d6575f5ffd5b806323b872dd116100e357806323b872dd146101db578063313ce567146101fa57806351bc3c851461021557806370a082311461022b578063715018a61461025f575f5ffd5b806306fdde031461011e578063095ea7b3146101755780630faee56f146101a457806318160ddd146101c7575f5ffd5b3661011a57005b5f5ffd5b348015610129575f5ffd5b5060408051808201909152601881527f4f6666696369616c204d6173636f74206f66205465736c61000000000000000060208201525b60405161016c9190611724565b60405180910390f35b348015610180575f5ffd5b5061019461018f366004611770565b6103a4565b604051901515815260200161016c565b3480156101af575f5ffd5b506101b960135481565b60405190815260200161016c565b3480156101d2575f5ffd5b506101b96103ba565b3480156101e6575f5ffd5b506101946101f536600461179a565b6103da565b348015610205575f5ffd5b506040516009815260200161016c565b348015610220575f5ffd5b50610229610441565b005b348015610236575f5ffd5b506101b96102453660046117d8565b6001600160a01b03165f9081526001602052604090205490565b34801561026a575f5ffd5b50610229610473565b34801561027e575f5ffd5b506102296104ed565b348015610292575f5ffd5b506101b960105481565b3480156102a7575f5ffd5b5061022961059e565b3480156102bb575f5ffd5b505f546040516001600160a01b03909116815260200161016c565b3480156102e1575f5ffd5b506101b960115481565b3480156102f6575f5ffd5b506040805180820190915260058152642a27a924a760d91b602082015261015f565b348015610323575f5ffd5b50610194610332366004611770565b610956565b348015610342575f5ffd5b506101b960125481565b348015610357575f5ffd5b506101b96103663660046117f3565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b34801561039b575f5ffd5b50610229610962565b5f6103b0338484610a1a565b5060015b92915050565b5f6103c76009600a611921565b6103d590633b9aca0061192f565b905090565b5f6103e6848484610b3e565b610437843361043285604051806060016040528060288152602001611ac2602891396001600160a01b038a165f9081526002602090815260408083203384529091529020549190611101565b610a1a565b5060019392505050565b305f90815260016020526040902054801561045f5761045f81611139565b47801561046f5761046f816112a9565b5050565b5f546001600160a01b031633146104a55760405162461bcd60e51b815260040161049c90611946565b60405180910390fd5b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146105165760405162461bcd60e51b815260040161049c90611946565b6105226009600a611921565b61053090633b9aca0061192f565b60105561053f6009600a611921565b61054d90633b9aca0061192f565b6011557f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf61057d6009600a611921565b61058b90633b9aca0061192f565b60405190815260200160405180910390a1565b5f546001600160a01b031633146105c75760405162461bcd60e51b815260040161049c90611946565b601554600160a01b900460ff16156106215760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e000000000000000000604482015260640161049c565b6015805460ff60a01b1916600160a01b179055601480546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d90811790915561067d90309061066f6009600a611921565b61043290633b9aca0061192f565b60145f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106cd573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106f1919061197b565b6001600160a01b031663c9c653963060145f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610750573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610774919061197b565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156107be573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107e2919061197b565b601580546001600160a01b039283166001600160a01b03199091161790556014541663f305d7194730610829816001600160a01b03165f9081526001602052604090205490565b5f5f61083c5f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af11580156108a2573d5f5f3e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906108c79190611996565b505060155460145460405163095ea7b360e01b81526001600160a01b0391821660048201525f1960248201529116915063095ea7b3906044016020604051808303815f875af115801561091c573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061094091906119c1565b506015805460ff60b01b1916600160b01b179055565b5f6103b0338484610b3e565b6004546001600160a01b0316336001600160a01b031614610981575f5ffd5b5f47116109e35760405162461bcd60e51b815260206004820152602a60248201527f436f6e74726163742062616c616e6365206d7573742062652067726561746572604482015269207468616e207a65726f60b01b606482015260840161049c565b60045460405147916001600160a01b03169082156108fc029083905f818181858888f1935050505015801561046f573d5f5f3e3d5ffd5b6001600160a01b038316610a7c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161049c565b6001600160a01b038216610add5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161049c565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316610ba25760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161049c565b6001600160a01b038216610c045760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161049c565b5f8111610c6c5760405162461bcd60e51b815260206004820152603060248201527f546f6b656e3a205472616e7366657220616d6f756e74206d757374206265206760448201526f726561746572207468616e207a65726f60801b606482015260840161049c565b601554600160a81b900460ff1680610c8e5750601554600160a01b900460ff16155b15610ca357610c9e838383611351565b505050565b5f80546001600160a01b03858116911614801590610cce57505f546001600160a01b03848116911614155b8015610ce857506004546001600160a01b03848116911614155b8015610d0257506005546001600160a01b03848116911614155b15610f5b57610d336064610d2d600c54600f5411610d2257600854610d26565b600a545b85906113f4565b90611479565b6015549091506001600160a01b038581169116148015610d6157506014546001600160a01b03848116911614155b8015610d8557506001600160a01b0383165f9081526003602052604090205460ff16155b15610e6b57601054821115610ddc5760405162461bcd60e51b815260206004820152601960248201527f4578636565647320746865205f6d61785478416d6f756e742e00000000000000604482015260640161049c565b60115482610dfe856001600160a01b03165f9081526001602052604090205490565b610e0891906119e0565b1115610e565760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e000000000000604482015260640161049c565b600f8054905f610e65836119f3565b91905055505b6015546001600160a01b038481169116148015610e9157506001600160a01b0384163014155b15610ebe57610ebb6064610d2d600d54600f5411610eb157600954610d26565b600b5485906113f4565b90505b305f90815260016020526040902054601554600160a81b900460ff16158015610ef457506015546001600160a01b038581169116145b8015610f095750601554600160b01b900460ff165b8015610f16575060125481115b8015610f255750600e54600f54115b15610f5957610f47610f4284610f3d846013546114ba565b6114ba565b611139565b478015610f5757610f57476112a9565b505b505b6001600160a01b0383165f9081526003602052604090205460ff1680610f9857506001600160a01b0384165f9081526003602052604090205460ff165b8015610fad57506001600160a01b0384163014155b8015610fc257506001600160a01b0383163014155b15610fcc57436017555b6001600160a01b0384165f9081526003602052604090205460ff1615801561100c57506001600160a01b0383165f9081526003602052604090205460ff16155b156110ef576015546001600160a01b038481169116146110aa576001600160a01b038084165f9081526018602052604090206015549091908116908616036110725780545f0361106d57600f54600e5410611068575f1961106a565b435b81555b6110a4565b6001600160a01b0385165f90815260186020526040902080548254118061109857508154155b156110a257805482555b505b506110ef565b601554600160b01b900460ff16156110ef576001600160a01b0384165f90815260186020526040902060175481546110e29190611a0b565b6002820155426001909101555b6110fb848484846114ce565b50505050565b5f81848411156111245760405162461bcd60e51b815260040161049c9190611724565b505f6111308486611a0b565b95945050505050565b6015805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f8151811061117f5761117f611a1e565b6001600160a01b03928316602091820292909201810191909152601454604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156111d6573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111fa919061197b565b8160018151811061120d5761120d611a1e565b6001600160a01b0392831660209182029290920101526014546112339130911684610a1a565b60145460405163791ac94760e01b81526001600160a01b039091169063791ac9479061126b9085905f90869030904290600401611a32565b5f604051808303815f87803b158015611282575f5ffd5b505af1158015611294573d5f5f3e3d5ffd5b50506015805460ff60a81b1916905550505050565b5f6064600654836112ba919061192f565b6112c49190611aa2565b90505f6064600754846112d7919061192f565b6112e19190611aa2565b6004546040519192506001600160a01b03169083156108fc029084905f818181858888f19350505050158015611319573d5f5f3e3d5ffd5b506005546040516001600160a01b039091169082156108fc029083905f818181858888f193505050501580156110fb573d5f5f3e3d5ffd5b6001600160a01b0383165f9081526001602052604090205461137390826114f8565b6001600160a01b038085165f9081526001602052604080822093909355908416815220546113a19082611539565b6001600160a01b038084165f8181526001602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610b319085815260200190565b5f825f0361140357505f6103b4565b5f61140e838561192f565b90508261141b8583611aa2565b146114725760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161049c565b9392505050565b5f61147283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611597565b5f8183116114c85782611472565b50919050565b5f6114da8584846115c3565b90506114f18585836114ec87876114f8565b611673565b5050505050565b5f61147283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611101565b5f8061154583856119e0565b9050838110156114725760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161049c565b5f81836115b75760405162461bcd60e51b815260040161049c9190611724565b505f6111308486611aa2565b6005545f9081906001600160a01b03908116908616036115ef576016546115ea90856113f4565b6115f1565b835b9050821561166b57305f908152600160205260409020546116129084611539565b305f81815260016020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906116629087815260200190565b60405180910390a35b949350505050565b6001600160a01b0384165f9081526001602052604090205461169590836114f8565b6001600160a01b038086165f9081526001602052604080822093909355908516815220546116c39082611539565b6001600160a01b038085165f8181526001602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906117169085815260200190565b60405180910390a350505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b038116811461176d575f5ffd5b50565b5f5f60408385031215611781575f5ffd5b823561178c81611759565b946020939093013593505050565b5f5f5f606084860312156117ac575f5ffd5b83356117b781611759565b925060208401356117c781611759565b929592945050506040919091013590565b5f602082840312156117e8575f5ffd5b813561147281611759565b5f5f60408385031215611804575f5ffd5b823561180f81611759565b9150602083013561181f81611759565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b6001815b60018411156118795780850481111561185d5761185d61182a565b600184161561186b57908102905b60019390931c928002611842565b935093915050565b5f8261188f575060016103b4565b8161189b57505f6103b4565b81600181146118b157600281146118bb576118d7565b60019150506103b4565b60ff8411156118cc576118cc61182a565b50506001821b6103b4565b5060208310610133831016604e8410600b84101617156118fa575081810a6103b4565b6119065f19848461183e565b805f19048211156119195761191961182a565b029392505050565b5f61147260ff841683611881565b80820281158282048414176103b4576103b461182a565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f6020828403121561198b575f5ffd5b815161147281611759565b5f5f5f606084860312156119a8575f5ffd5b5050815160208301516040909301519094929350919050565b5f602082840312156119d1575f5ffd5b81518015158114611472575f5ffd5b808201808211156103b4576103b461182a565b5f60018201611a0457611a0461182a565b5060010190565b818103818111156103b4576103b461182a565b634e487b7160e01b5f52603260045260245ffd5b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b81811015611a825783516001600160a01b0316835260209384019390920191600101611a5b565b50506001600160a01b039590951660608401525050608001529392505050565b5f82611abc57634e487b7160e01b5f52601260045260245ffd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220ff4fbca40bc92e5e6709b14c92d1372a8973732b58649dc0e3d58fd1d37ca7d164736f6c634300081b0033

Deployed Bytecode

0x608060405260043610610113575f3560e01c8063751039fc1161009d57806395d89b411161006257806395d89b41146102eb578063a9059cbb14610318578063bf474bed14610337578063dd62ed3e1461034c578063f429389014610390575f5ffd5b8063751039fc146102735780637d1db4a5146102875780638a8c523c1461029c5780638da5cb5b146102b05780638f9a55c0146102d6575f5ffd5b806323b872dd116100e357806323b872dd146101db578063313ce567146101fa57806351bc3c851461021557806370a082311461022b578063715018a61461025f575f5ffd5b806306fdde031461011e578063095ea7b3146101755780630faee56f146101a457806318160ddd146101c7575f5ffd5b3661011a57005b5f5ffd5b348015610129575f5ffd5b5060408051808201909152601881527f4f6666696369616c204d6173636f74206f66205465736c61000000000000000060208201525b60405161016c9190611724565b60405180910390f35b348015610180575f5ffd5b5061019461018f366004611770565b6103a4565b604051901515815260200161016c565b3480156101af575f5ffd5b506101b960135481565b60405190815260200161016c565b3480156101d2575f5ffd5b506101b96103ba565b3480156101e6575f5ffd5b506101946101f536600461179a565b6103da565b348015610205575f5ffd5b506040516009815260200161016c565b348015610220575f5ffd5b50610229610441565b005b348015610236575f5ffd5b506101b96102453660046117d8565b6001600160a01b03165f9081526001602052604090205490565b34801561026a575f5ffd5b50610229610473565b34801561027e575f5ffd5b506102296104ed565b348015610292575f5ffd5b506101b960105481565b3480156102a7575f5ffd5b5061022961059e565b3480156102bb575f5ffd5b505f546040516001600160a01b03909116815260200161016c565b3480156102e1575f5ffd5b506101b960115481565b3480156102f6575f5ffd5b506040805180820190915260058152642a27a924a760d91b602082015261015f565b348015610323575f5ffd5b50610194610332366004611770565b610956565b348015610342575f5ffd5b506101b960125481565b348015610357575f5ffd5b506101b96103663660046117f3565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b34801561039b575f5ffd5b50610229610962565b5f6103b0338484610a1a565b5060015b92915050565b5f6103c76009600a611921565b6103d590633b9aca0061192f565b905090565b5f6103e6848484610b3e565b610437843361043285604051806060016040528060288152602001611ac2602891396001600160a01b038a165f9081526002602090815260408083203384529091529020549190611101565b610a1a565b5060019392505050565b305f90815260016020526040902054801561045f5761045f81611139565b47801561046f5761046f816112a9565b5050565b5f546001600160a01b031633146104a55760405162461bcd60e51b815260040161049c90611946565b60405180910390fd5b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146105165760405162461bcd60e51b815260040161049c90611946565b6105226009600a611921565b61053090633b9aca0061192f565b60105561053f6009600a611921565b61054d90633b9aca0061192f565b6011557f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf61057d6009600a611921565b61058b90633b9aca0061192f565b60405190815260200160405180910390a1565b5f546001600160a01b031633146105c75760405162461bcd60e51b815260040161049c90611946565b601554600160a01b900460ff16156106215760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e000000000000000000604482015260640161049c565b6015805460ff60a01b1916600160a01b179055601480546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d90811790915561067d90309061066f6009600a611921565b61043290633b9aca0061192f565b60145f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106cd573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106f1919061197b565b6001600160a01b031663c9c653963060145f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610750573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610774919061197b565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156107be573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107e2919061197b565b601580546001600160a01b039283166001600160a01b03199091161790556014541663f305d7194730610829816001600160a01b03165f9081526001602052604090205490565b5f5f61083c5f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af11580156108a2573d5f5f3e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906108c79190611996565b505060155460145460405163095ea7b360e01b81526001600160a01b0391821660048201525f1960248201529116915063095ea7b3906044016020604051808303815f875af115801561091c573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061094091906119c1565b506015805460ff60b01b1916600160b01b179055565b5f6103b0338484610b3e565b6004546001600160a01b0316336001600160a01b031614610981575f5ffd5b5f47116109e35760405162461bcd60e51b815260206004820152602a60248201527f436f6e74726163742062616c616e6365206d7573742062652067726561746572604482015269207468616e207a65726f60b01b606482015260840161049c565b60045460405147916001600160a01b03169082156108fc029083905f818181858888f1935050505015801561046f573d5f5f3e3d5ffd5b6001600160a01b038316610a7c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161049c565b6001600160a01b038216610add5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161049c565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316610ba25760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161049c565b6001600160a01b038216610c045760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161049c565b5f8111610c6c5760405162461bcd60e51b815260206004820152603060248201527f546f6b656e3a205472616e7366657220616d6f756e74206d757374206265206760448201526f726561746572207468616e207a65726f60801b606482015260840161049c565b601554600160a81b900460ff1680610c8e5750601554600160a01b900460ff16155b15610ca357610c9e838383611351565b505050565b5f80546001600160a01b03858116911614801590610cce57505f546001600160a01b03848116911614155b8015610ce857506004546001600160a01b03848116911614155b8015610d0257506005546001600160a01b03848116911614155b15610f5b57610d336064610d2d600c54600f5411610d2257600854610d26565b600a545b85906113f4565b90611479565b6015549091506001600160a01b038581169116148015610d6157506014546001600160a01b03848116911614155b8015610d8557506001600160a01b0383165f9081526003602052604090205460ff16155b15610e6b57601054821115610ddc5760405162461bcd60e51b815260206004820152601960248201527f4578636565647320746865205f6d61785478416d6f756e742e00000000000000604482015260640161049c565b60115482610dfe856001600160a01b03165f9081526001602052604090205490565b610e0891906119e0565b1115610e565760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e000000000000604482015260640161049c565b600f8054905f610e65836119f3565b91905055505b6015546001600160a01b038481169116148015610e9157506001600160a01b0384163014155b15610ebe57610ebb6064610d2d600d54600f5411610eb157600954610d26565b600b5485906113f4565b90505b305f90815260016020526040902054601554600160a81b900460ff16158015610ef457506015546001600160a01b038581169116145b8015610f095750601554600160b01b900460ff165b8015610f16575060125481115b8015610f255750600e54600f54115b15610f5957610f47610f4284610f3d846013546114ba565b6114ba565b611139565b478015610f5757610f57476112a9565b505b505b6001600160a01b0383165f9081526003602052604090205460ff1680610f9857506001600160a01b0384165f9081526003602052604090205460ff165b8015610fad57506001600160a01b0384163014155b8015610fc257506001600160a01b0383163014155b15610fcc57436017555b6001600160a01b0384165f9081526003602052604090205460ff1615801561100c57506001600160a01b0383165f9081526003602052604090205460ff16155b156110ef576015546001600160a01b038481169116146110aa576001600160a01b038084165f9081526018602052604090206015549091908116908616036110725780545f0361106d57600f54600e5410611068575f1961106a565b435b81555b6110a4565b6001600160a01b0385165f90815260186020526040902080548254118061109857508154155b156110a257805482555b505b506110ef565b601554600160b01b900460ff16156110ef576001600160a01b0384165f90815260186020526040902060175481546110e29190611a0b565b6002820155426001909101555b6110fb848484846114ce565b50505050565b5f81848411156111245760405162461bcd60e51b815260040161049c9190611724565b505f6111308486611a0b565b95945050505050565b6015805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f8151811061117f5761117f611a1e565b6001600160a01b03928316602091820292909201810191909152601454604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156111d6573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111fa919061197b565b8160018151811061120d5761120d611a1e565b6001600160a01b0392831660209182029290920101526014546112339130911684610a1a565b60145460405163791ac94760e01b81526001600160a01b039091169063791ac9479061126b9085905f90869030904290600401611a32565b5f604051808303815f87803b158015611282575f5ffd5b505af1158015611294573d5f5f3e3d5ffd5b50506015805460ff60a81b1916905550505050565b5f6064600654836112ba919061192f565b6112c49190611aa2565b90505f6064600754846112d7919061192f565b6112e19190611aa2565b6004546040519192506001600160a01b03169083156108fc029084905f818181858888f19350505050158015611319573d5f5f3e3d5ffd5b506005546040516001600160a01b039091169082156108fc029083905f818181858888f193505050501580156110fb573d5f5f3e3d5ffd5b6001600160a01b0383165f9081526001602052604090205461137390826114f8565b6001600160a01b038085165f9081526001602052604080822093909355908416815220546113a19082611539565b6001600160a01b038084165f8181526001602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610b319085815260200190565b5f825f0361140357505f6103b4565b5f61140e838561192f565b90508261141b8583611aa2565b146114725760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161049c565b9392505050565b5f61147283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611597565b5f8183116114c85782611472565b50919050565b5f6114da8584846115c3565b90506114f18585836114ec87876114f8565b611673565b5050505050565b5f61147283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611101565b5f8061154583856119e0565b9050838110156114725760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161049c565b5f81836115b75760405162461bcd60e51b815260040161049c9190611724565b505f6111308486611aa2565b6005545f9081906001600160a01b03908116908616036115ef576016546115ea90856113f4565b6115f1565b835b9050821561166b57305f908152600160205260409020546116129084611539565b305f81815260016020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906116629087815260200190565b60405180910390a35b949350505050565b6001600160a01b0384165f9081526001602052604090205461169590836114f8565b6001600160a01b038086165f9081526001602052604080822093909355908516815220546116c39082611539565b6001600160a01b038085165f8181526001602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906117169085815260200190565b60405180910390a350505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b038116811461176d575f5ffd5b50565b5f5f60408385031215611781575f5ffd5b823561178c81611759565b946020939093013593505050565b5f5f5f606084860312156117ac575f5ffd5b83356117b781611759565b925060208401356117c781611759565b929592945050506040919091013590565b5f602082840312156117e8575f5ffd5b813561147281611759565b5f5f60408385031215611804575f5ffd5b823561180f81611759565b9150602083013561181f81611759565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b6001815b60018411156118795780850481111561185d5761185d61182a565b600184161561186b57908102905b60019390931c928002611842565b935093915050565b5f8261188f575060016103b4565b8161189b57505f6103b4565b81600181146118b157600281146118bb576118d7565b60019150506103b4565b60ff8411156118cc576118cc61182a565b50506001821b6103b4565b5060208310610133831016604e8410600b84101617156118fa575081810a6103b4565b6119065f19848461183e565b805f19048211156119195761191961182a565b029392505050565b5f61147260ff841683611881565b80820281158282048414176103b4576103b461182a565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f6020828403121561198b575f5ffd5b815161147281611759565b5f5f5f606084860312156119a8575f5ffd5b5050815160208301516040909301519094929350919050565b5f602082840312156119d1575f5ffd5b81518015158114611472575f5ffd5b808201808211156103b4576103b461182a565b5f60018201611a0457611a0461182a565b5060010190565b818103818111156103b4576103b461182a565b634e487b7160e01b5f52603260045260245ffd5b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b81811015611a825783516001600160a01b0316835260209384019390920191600101611a5b565b50506001600160a01b039590951660608401525050608001529392505050565b5f82611abc57634e487b7160e01b5f52601260045260245ffd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220ff4fbca40bc92e5e6709b14c92d1372a8973732b58649dc0e3d58fd1d37ca7d164736f6c634300081b0033

Deployed Bytecode Sourcemap

3514:10631:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5729:83;;;;;;;;;;-1:-1:-1;5799:5:0;;;;;;;;;;;;;;;;;5729:83;;;;;;;:::i;:::-;;;;;;;;6562:161;;;;;;;;;;-1:-1:-1;6562:161:0;;;;;:::i;:::-;;:::i;:::-;;;1110:14:1;;1103:22;1085:41;;1073:2;1058:18;6562:161:0;945:187:1;4712:53:0;;;;;;;;;;;;;;;;;;;1283:25:1;;;1271:2;1256:18;4712:53:0;1137:177:1;6006:95:0;;;;;;;;;;;;;:::i;6991:312::-;;;;;;;;;;-1:-1:-1;6991:312:0;;;;;:::i;:::-;;:::i;5915:83::-;;;;;;;;;;-1:-1:-1;5915:83:0;;4448:1;1974:36:1;;1962:2;1947:18;5915:83:0;1832:184:1;12887:303:0;;;;;;;;;;;;;:::i;:::-;;6109:119;;;;;;;;;;-1:-1:-1;6109:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;6202:18:0;6175:7;6202:18;;;:9;:18;;;;;;;6109:119;2578:147;;;;;;;;;;;;;:::i;12417:160::-;;;;;;;;;;;;;:::i;4524:53::-;;;;;;;;;;;;;;;;13478:664;;;;;;;;;;;;;:::i;2364:79::-;;;;;;;;;;-1:-1:-1;2402:7:0;2429:6;2364:79;;-1:-1:-1;;;;;2429:6:0;;;2419:51:1;;2407:2;2392:18;2364:79:0;2273:203:1;4584:55:0;;;;;;;;;;;;;;;;5820:87;;;;;;;;;;-1:-1:-1;5892:7:0;;;;;;;;;;;;-1:-1:-1;;;5892:7:0;;;;5820:87;;6236:167;;;;;;;;;;-1:-1:-1;6236:167:0;;;;;:::i;:::-;;:::i;4646:59::-;;;;;;;;;;;;;;;;6411:143;;;;;;;;;;-1:-1:-1;6411:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;6519:18:0;;;6492:7;6519:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6411:143;13198:272;;;;;;;;;;;;;:::i;6562:161::-;6637:4;6654:39;232:10;6677:7;6686:6;6654:8;:39::i;:::-;-1:-1:-1;6711:4:0;6562:161;;;;;:::o;6006:95::-;6059:7;4504:13;4448:1;4504:2;:13;:::i;:::-;4491:26;;:10;:26;:::i;:::-;6079:14;;6006:95;:::o;6991:312::-;7089:4;7106:36;7116:6;7124:9;7135:6;7106:9;:36::i;:::-;7153:120;7162:6;232:10;7184:88;7222:6;7184:88;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7184:19:0;;;;;;:11;:19;;;;;;;;232:10;7184:33;;;;;;;;;;:37;:88::i;:::-;7153:8;:120::i;:::-;-1:-1:-1;7291:4:0;6991:312;;;;;:::o;12887:303::-;12967:4;12928:20;6202:18;;;:9;:18;;;;;;12987:14;;12984:73;;13015:30;13032:12;13015:16;:30::i;:::-;13086:21;13121:12;;13118:65;;13147:24;13160:10;13147:12;:24::i;:::-;12917:273;;12887:303::o;2578:147::-;2491:6;;-1:-1:-1;;;;;2491:6:0;232:10;2491:22;2483:67;;;;-1:-1:-1;;;2483:67:0;;;;;;;:::i;:::-;;;;;;;;;2684:1:::1;2669:6:::0;;2648:39:::1;::::0;-1:-1:-1;;;;;2669:6:0;;::::1;::::0;2648:39:::1;::::0;2684:1;;2648:39:::1;2715:1;2698:19:::0;;-1:-1:-1;;;;;;2698:19:0::1;::::0;;2578:147::o;12417:160::-;2491:6;;-1:-1:-1;;;;;2491:6:0;232:10;2491:22;2483:67;;;;-1:-1:-1;;;2483:67:0;;;;;;;:::i;:::-;4504:13:::1;4448:1;4504:2;:13;:::i;:::-;4491:26;::::0;:10:::1;:26;:::i;:::-;12470:12;:21:::0;4504:13:::1;4448:1;4504:2;:13;:::i;:::-;4491:26;::::0;:10:::1;:26;:::i;:::-;12502:14;:23:::0;12541:28:::1;4504:13;4448:1;4504:2;:13;:::i;:::-;4491:26;::::0;:10:::1;:26;:::i;:::-;12541:28;::::0;1283:25:1;;;1271:2;1256:18;12541:28:0::1;;;;;;;12417:160::o:0;13478:664::-;2491:6;;-1:-1:-1;;;;;2491:6:0;232:10;2491:22;2483:67;;;;-1:-1:-1;;;2483:67:0;;;;;;;:::i;:::-;13544:11:::1;::::0;-1:-1:-1;;;13544:11:0;::::1;;;13543:12;13535:47;;;::::0;-1:-1:-1;;;13535:47:0;;5174:2:1;13535:47:0::1;::::0;::::1;5156:21:1::0;5213:2;5193:18;;;5186:30;5252:25;5232:18;;;5225:53;5295:18;;13535:47:0::1;4972:347:1::0;13535:47:0::1;13593:11;:16:::0;;-1:-1:-1;;;;13593:16:0::1;-1:-1:-1::0;;;13593:16:0::1;::::0;;:11:::1;13621:78:::0;;-1:-1:-1;;;;;;13621:78:0::1;13656:42;13621:78:::0;;::::1;::::0;;;13710:57:::1;::::0;13727:4:::1;::::0;4504:13:::1;4448:1;4504:2;:13;:::i;:::-;4491:26;::::0;:10:::1;:26;:::i;13710:57::-;13811:15;;;;;;;;;-1:-1:-1::0;;;;;13811:15:0::1;-1:-1:-1::0;;;;;13811:23:0::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13793:55:0::1;;13857:4;13863:15;;;;;;;;;-1:-1:-1::0;;;;;13863:15:0::1;-1:-1:-1::0;;;;;13863:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13793:93;::::0;-1:-1:-1;;;;;;13793:93:0::1;::::0;;;;;;-1:-1:-1;;;;;5772:32:1;;;13793:93:0::1;::::0;::::1;5754:51:1::0;5841:32;;5821:18;;;5814:60;5727:18;;13793:93:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13779:13;:107:::0;;-1:-1:-1;;;;;13779:107:0;;::::1;-1:-1:-1::0;;;;;;13779:107:0;;::::1;;::::0;;13897:15:::1;::::0;::::1;:31;13936:21;13967:4;13973:24;13967:4:::0;-1:-1:-1;;;;;6202:18:0;6175:7;6202:18;;;:9;:18;;;;;;;6109:119;13973:24:::1;13998:1;14000;14002:7;2402::::0;2429:6;-1:-1:-1;;;;;2429:6:0;;2364:79;14002:7:::1;13897:129;::::0;::::1;::::0;;;-1:-1:-1;;;;;;13897:129:0;;;-1:-1:-1;;;;;6206:32:1;;;13897:129:0::1;::::0;::::1;6188:51:1::0;6255:18;;;6248:34;;;;6298:18;;;6291:34;;;;6341:18;;;6334:34;6405:32;;;6384:19;;;6377:61;14010:15:0::1;6454:19:1::0;;;6447:35;6160:19;;13897:129:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;14044:13:0::1;::::0;14075:15:::1;::::0;14037:70:::1;::::0;-1:-1:-1;;;14037:70:0;;-1:-1:-1;;;;;14075:15:0;;::::1;14037:70;::::0;::::1;7128:51:1::0;-1:-1:-1;;7195:18:1;;;7188:34;14044:13:0;::::1;::::0;-1:-1:-1;14037:29:0::1;::::0;7101:18:1;;14037:70:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;14118:11:0::1;:16:::0;;-1:-1:-1;;;;14118:16:0::1;-1:-1:-1::0;;;14118:16:0::1;::::0;;13478:664::o;6236:167::-;6314:4;6331:42;232:10;6355:9;6366:6;6331:9;:42::i;13198:272::-;13262:10;;-1:-1:-1;;;;;13262:10:0;232;-1:-1:-1;;;;;13248:24:0;;13240:33;;;;;;13316:1;13292:21;:25;13284:80;;;;-1:-1:-1;;;13284:80:0;;7717:2:1;13284:80:0;;;7699:21:1;7756:2;7736:18;;;7729:30;7795:34;7775:18;;;7768:62;-1:-1:-1;;;7846:18:1;;;7839:40;7896:19;;13284:80:0;7515:406:1;13284:80:0;13433:10;;13425:37;;13393:21;;-1:-1:-1;;;;;13433:10:0;;13425:37;;;;;13393:21;;13375:15;13425:37;13375:15;13425:37;13393:21;13433:10;13425:37;;;;;;;;;;;;;;;;;;;7311:335;-1:-1:-1;;;;;7404:19:0;;7396:68;;;;-1:-1:-1;;;7396:68:0;;8128:2:1;7396:68:0;;;8110:21:1;8167:2;8147:18;;;8140:30;8206:34;8186:18;;;8179:62;-1:-1:-1;;;8257:18:1;;;8250:34;8301:19;;7396:68:0;7926:400:1;7396:68:0;-1:-1:-1;;;;;7483:21:0;;7475:68;;;;-1:-1:-1;;;7475:68:0;;8533:2:1;7475:68:0;;;8515:21:1;8572:2;8552:18;;;8545:30;8611:34;8591:18;;;8584:62;-1:-1:-1;;;8662:18:1;;;8655:32;8704:19;;7475:68:0;8331:398:1;7475:68:0;-1:-1:-1;;;;;7554:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7606:32;;1283:25:1;;;7606:32:0;;1256:18:1;7606:32:0;;;;;;;;7311:335;;;:::o;7654:3109::-;-1:-1:-1;;;;;7742:18:0;;7734:68;;;;-1:-1:-1;;;7734:68:0;;8936:2:1;7734:68:0;;;8918:21:1;8975:2;8955:18;;;8948:30;9014:34;8994:18;;;8987:62;-1:-1:-1;;;9065:18:1;;;9058:35;9110:19;;7734:68:0;8734:401:1;7734:68:0;-1:-1:-1;;;;;7821:16:0;;7813:64;;;;-1:-1:-1;;;7813:64:0;;9342:2:1;7813:64:0;;;9324:21:1;9381:2;9361:18;;;9354:30;9420:34;9400:18;;;9393:62;-1:-1:-1;;;9471:18:1;;;9464:33;9514:19;;7813:64:0;9140:399:1;7813:64:0;7905:1;7896:6;:10;7888:71;;;;-1:-1:-1;;;7888:71:0;;9746:2:1;7888:71:0;;;9728:21:1;9785:2;9765:18;;;9758:30;9824:34;9804:18;;;9797:62;-1:-1:-1;;;9875:18:1;;;9868:46;9931:19;;7888:71:0;9544:412:1;7888:71:0;7976:6;;-1:-1:-1;;;7976:6:0;;;;;:22;;-1:-1:-1;7987:11:0;;-1:-1:-1;;;7987:11:0;;;;7986:12;7976:22;7972:109;;;8016:32;8031:4;8037:2;8041:6;8016:14;:32::i;:::-;7654:3109;;;:::o;7972:109::-;8093:13;2429:6;;-1:-1:-1;;;;;8126:15:0;;;2429:6;;8126:15;;;;:32;;-1:-1:-1;2402:7:0;2429:6;-1:-1:-1;;;;;8145:13:0;;;2429:6;;8145:13;;8126:32;:52;;;;-1:-1:-1;8168:10:0;;-1:-1:-1;;;;;8162:16:0;;;8168:10;;8162:16;;8126:52;:73;;;;-1:-1:-1;8188:11:0;;-1:-1:-1;;;;;8182:17:0;;;8188:11;;8182:17;;8126:73;8122:1312;;;8223:93;8312:3;8223:70;8247:15;;8235:9;;:27;8234:58;;8278:14;;8234:58;;;8264:12;;8234:58;8223:6;;:10;:70::i;:::-;:88;;:93::i;:::-;8345:13;;8215:101;;-1:-1:-1;;;;;;8337:21:0;;;8345:13;;8337:21;:55;;;;-1:-1:-1;8376:15:0;;-1:-1:-1;;;;;8362:30:0;;;8376:15;;8362:30;;8337:55;:84;;;;-1:-1:-1;;;;;;8399:22:0;;;;;;:18;:22;;;;;;;;8397:24;8337:84;8333:309;;;8458:12;;8449:6;:21;;8441:59;;;;-1:-1:-1;;;8441:59:0;;10163:2:1;8441:59:0;;;10145:21:1;10202:2;10182:18;;;10175:30;10241:27;10221:18;;;10214:55;10286:18;;8441:59:0;9961:349:1;8441:59:0;8551:14;;8542:6;8527:13;8537:2;-1:-1:-1;;;;;6202:18:0;6175:7;6202:18;;;:9;:18;;;;;;;6109:119;8527:13;:21;;;;:::i;:::-;:38;;8519:77;;;;-1:-1:-1;;;8519:77:0;;10647:2:1;8519:77:0;;;10629:21:1;10686:2;10666:18;;;10659:30;10725:28;10705:18;;;10698:56;10771:18;;8519:77:0;10445:350:1;8519:77:0;8615:9;:11;;;:9;:11;;;:::i;:::-;;;;;;8333:309;8665:13;;-1:-1:-1;;;;;8661:17:0;;;8665:13;;8661:17;:41;;;;-1:-1:-1;;;;;;8682:20:0;;8697:4;8682:20;;8661:41;8658:186;;;8731:97;8824:3;8731:70;8753:16;;8743:9;;:26;8742:58;;8785:15;;8742:58;;;8771:13;;8731:6;;:10;:70::i;:97::-;8723:105;;8658:186;8909:4;8860:28;6202:18;;;:9;:18;;;;;;8953:6;;-1:-1:-1;;;8953:6:0;;;;8952:7;:47;;;;-1:-1:-1;8986:13:0;;-1:-1:-1;;;;;8980:19:0;;;8986:13;;8980:19;8952:47;:62;;;;-1:-1:-1;9003:11:0;;-1:-1:-1;;;9003:11:0;;;;8952:62;:124;;;;;9059:17;;9036:20;:40;8952:124;:158;;;;;9092:18;;9080:9;;:30;8952:158;8930:493;;;9145:69;9162:51;9166:6;9174:38;9178:20;9200:11;;9174:3;:38::i;:::-;9162:3;:51::i;:::-;9145:16;:69::i;:::-;9262:21;9306:22;;9302:106;;9353:35;9366:21;9353:12;:35::i;:::-;9126:297;8930:493;8200:1234;8122:1312;-1:-1:-1;;;;;9450:22:0;;;;;;:18;:22;;;;;;;;;:50;;-1:-1:-1;;;;;;9476:24:0;;;;;;:18;:24;;;;;;;;9450:50;9449:76;;;;-1:-1:-1;;;;;;9505:20:0;;9520:4;9505:20;;9449:76;:98;;;;-1:-1:-1;;;;;;9529:18:0;;9542:4;9529:18;;9449:98;9446:158;;;9580:12;9564:13;:28;9446:158;-1:-1:-1;;;;;9621:24:0;;;;;;:18;:24;;;;;;;;9620:25;:52;;;;-1:-1:-1;;;;;;9650:22:0;;;;;;:18;:22;;;;;;;;9649:23;9620:52;9616:1091;;;9692:13;;-1:-1:-1;;;;;9692:19:0;;;:13;;:19;9688:1008;;-1:-1:-1;;;;;9775:17:0;;;9733:39;9775:17;;;:13;:17;;;;;9823:13;;9775:17;;9823:13;;;9815:21;;;;9811:594;;9865:28;;;:33;9861:180;;9979:9;;9958:18;;:30;:59;;-1:-1:-1;;9958:59:0;;;9991:12;9958:59;9927:90;;9861:180;9811:594;;;-1:-1:-1;;;;;10132:19:0;;10089:40;10132:19;;;:13;:19;;;;;10209:29;;10178:28;;:60;;:95;;-1:-1:-1;10242:28:0;;:31;10178:95;10174:212;;;10333:29;;10302:60;;10174:212;10066:339;9811:594;9714:706;9688:1008;;;10430:11;;-1:-1:-1;;;10430:11:0;;;;10426:270;;;-1:-1:-1;;;;;10504:19:0;;10461:40;10504:19;;;:13;:19;;;;;10603:13;;10573:29;;:43;;10603:13;10573:43;:::i;:::-;10542:28;;;:74;10665:15;10635:27;;;;:45;10426:270;10719:36;10734:4;10739:2;10742:6;10749:5;10719:14;:36::i;:::-;7723:3040;7654:3109;;;:::o;1848:190::-;1934:7;1970:12;1962:6;;;;1954:29;;;;-1:-1:-1;;;1954:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1994:9:0;2006:5;2010:1;2006;:5;:::i;:::-;1994:17;1848:190;-1:-1:-1;;;;;1848:190:0:o;11890:482::-;5309:6;:13;;-1:-1:-1;;;;5309:13:0;-1:-1:-1;;;5309:13:0;;;11991:16:::1;::::0;;12005:1:::1;11991:16:::0;;;;;::::1;::::0;;-1:-1:-1;;11991:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;11991:16:0::1;11967:40;;12036:4;12018;12023:1;12018:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12018:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;12062:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;12062:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;12018:7;;12062:22;;;;;:15;:22:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12052:4;12057:1;12052:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12052:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;12127:15:::1;::::0;12095:62:::1;::::0;12112:4:::1;::::0;12127:15:::1;12145:11:::0;12095:8:::1;:62::i;:::-;12168:15;::::0;:196:::1;::::0;-1:-1:-1;;;12168:196:0;;-1:-1:-1;;;;;12168:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;12249:11;;12168:15:::1;::::0;12291:4;;12318::::1;::::0;12338:15:::1;::::0;12168:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;5345:6:0;:14;;-1:-1:-1;;;;5345:14:0;;;-1:-1:-1;;;;11890:482:0:o;12585:294::-;12642:22;12699:3;12676:20;;12667:6;:29;;;;:::i;:::-;:35;;;;:::i;:::-;12642:60;;12713:23;12772:3;12748:21;;12739:6;:30;;;;:::i;:::-;:36;;;;:::i;:::-;12788:10;;:35;;12713:62;;-1:-1:-1;;;;;;12788:10:0;;:35;;;;;12808:14;;12788:10;:35;:10;:35;12808:14;12788:10;:35;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12834:11:0;;:37;;-1:-1:-1;;;;;12834:11:0;;;;:37;;;;;12855:15;;12834:11;:37;:11;:37;12855:15;12834:11;:37;;;;;;;;;;;;;;;;;;;6731:252;-1:-1:-1;;;;;6840:15:0;;;;;;:9;:15;;;;;;:32;;6860:11;6840:19;:32::i;:::-;-1:-1:-1;;;;;6822:15:0;;;;;;;:9;:15;;;;;;:50;;;;6899:13;;;;;;;:30;;6917:11;6899:17;:30::i;:::-;-1:-1:-1;;;;;6883:13:0;;;;;;;:9;:13;;;;;;;:46;;;;6945:30;;;;;;;;;;6963:11;1283:25:1;;1271:2;1256:18;;1137:177;1138:223:0;1196:7;1220:1;1225;1220:6;1216:25;;-1:-1:-1;1237:1:0;1230:8;;1216:25;1251:9;1263:5;1267:1;1263;:5;:::i;:::-;1251:17;-1:-1:-1;1296:1:0;1287:5;1291:1;1251:17;1287:5;:::i;:::-;:10;1279:55;;;;-1:-1:-1;;;1279:55:0;;12725:2:1;1279:55:0;;;12707:21:1;12764:2;12744:18;;;12737:30;12803:34;12783:18;;;12776:62;-1:-1:-1;;;12854:18:1;;;12847:31;12895:19;;1279:55:0;12523:397:1;1279:55:0;1352:1;1138:223;-1:-1:-1;;;1138:223:0:o;1369:131::-;1427:7;1454:38;1458:1;1461;1454:38;;;;;;;;;;;;;;;;;:3;:38::i;11784:98::-;11841:7;11868:1;11866;:3;11865:9;;11873:1;11865:9;;;-1:-1:-1;11871:1:0;11784:98;-1:-1:-1;11784:98:0:o;10771:278::-;10905:15;10921:46;10939:4;10944:11;10957:9;10921:17;:46::i;:::-;10905:62;-1:-1:-1;10978:63:0;10998:4;11003:2;10905:62;11014:26;:11;11030:9;11014:15;:26::i;:::-;10978:19;:63::i;:::-;10894:155;10771:278;;;;:::o;1705:135::-;1763:7;1790:42;1794:1;1797;1790:42;;;;;;;;;;;;;;;;;:3;:42::i;952:178::-;1010:7;;1042:5;1046:1;1042;:5;:::i;:::-;1030:17;;1071:1;1066;:6;;1058:45;;;;-1:-1:-1;;;1058:45:0;;13127:2:1;1058:45:0;;;13109:21:1;13166:2;13146:18;;;13139:30;13205:29;13185:18;;;13178:57;13252:18;;1058:45:0;12925:351:1;1508:189:0;1594:7;1629:12;1622:5;1614:28;;;;-1:-1:-1;;;1614:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1653:9:0;1665:5;1669:1;1665;:5;:::i;11057:406::-;11199:11;;11155:7;;;;-1:-1:-1;;;;;11199:11:0;;;11192:18;;;;:63;;11226:12;;:29;;11243:11;11226:16;:29::i;:::-;11192:63;;;11213:11;11192:63;11175:80;-1:-1:-1;11270:11:0;;11266:165;;11340:4;11322:24;;;;:9;:24;;;;;;:39;;11351:9;11322:28;:39::i;:::-;11314:4;11296:24;;;;:9;:24;;;;;;;:65;;;;11379:40;;-1:-1:-1;;;;;11379:40:0;;;;;;;11409:9;1283:25:1;;1271:2;1256:18;;1137:177;11379:40:0;;;;;;;;11266:165;11448:7;11057:406;-1:-1:-1;;;;11057:406:0:o;11471:305::-;-1:-1:-1;;;;;11631:15:0;;;;;;:9;:15;;;;;;:31;;11651:10;11631:19;:31::i;:::-;-1:-1:-1;;;;;11614:15:0;;;;;;;:9;:15;;;;;;:48;;;;11687:13;;;;;;;:32;;11705:13;11687:17;:32::i;:::-;-1:-1:-1;;;;;11673:13:0;;;;;;;:9;:13;;;;;;;:46;;;;11737:31;;;;;;;;;;11754:13;1283:25:1;;1271:2;1256:18;;1137:177;11737:31:0;;;;;;;;11471:305;;;;:::o;14:418:1:-;163:2;152:9;145:21;126:4;195:6;189:13;238:6;233:2;222:9;218:18;211:34;297:6;292:2;284:6;280:15;275:2;264:9;260:18;254:50;353:1;348:2;339:6;328:9;324:22;320:31;313:42;423:2;416;412:7;407:2;399:6;395:15;391:29;380:9;376:45;372:54;364:62;;;14:418;;;;:::o;437:131::-;-1:-1:-1;;;;;512:31:1;;502:42;;492:70;;558:1;555;548:12;492:70;437:131;:::o;573:367::-;641:6;649;702:2;690:9;681:7;677:23;673:32;670:52;;;718:1;715;708:12;670:52;757:9;744:23;776:31;801:5;776:31;:::i;:::-;826:5;904:2;889:18;;;;876:32;;-1:-1:-1;;;573:367:1:o;1319:508::-;1396:6;1404;1412;1465:2;1453:9;1444:7;1440:23;1436:32;1433:52;;;1481:1;1478;1471:12;1433:52;1520:9;1507:23;1539:31;1564:5;1539:31;:::i;:::-;1589:5;-1:-1:-1;1646:2:1;1631:18;;1618:32;1659:33;1618:32;1659:33;:::i;:::-;1319:508;;1711:7;;-1:-1:-1;;;1791:2:1;1776:18;;;;1763:32;;1319:508::o;2021:247::-;2080:6;2133:2;2121:9;2112:7;2108:23;2104:32;2101:52;;;2149:1;2146;2139:12;2101:52;2188:9;2175:23;2207:31;2232:5;2207:31;:::i;2481:388::-;2549:6;2557;2610:2;2598:9;2589:7;2585:23;2581:32;2578:52;;;2626:1;2623;2616:12;2578:52;2665:9;2652:23;2684:31;2709:5;2684:31;:::i;:::-;2734:5;-1:-1:-1;2791:2:1;2776:18;;2763:32;2804:33;2763:32;2804:33;:::i;:::-;2856:7;2846:17;;;2481:388;;;;;:::o;2874:127::-;2935:10;2930:3;2926:20;2923:1;2916:31;2966:4;2963:1;2956:15;2990:4;2987:1;2980:15;3006:375;3094:1;3112:5;3126:249;3147:1;3137:8;3134:15;3126:249;;;3197:4;3192:3;3188:14;3182:4;3179:24;3176:50;;;3206:18;;:::i;:::-;3256:1;3246:8;3242:16;3239:49;;;3270:16;;;;3239:49;3353:1;3349:16;;;;;3309:15;;3126:249;;;3006:375;;;;;;:::o;3386:902::-;3435:5;3465:8;3455:80;;-1:-1:-1;3506:1:1;3520:5;;3455:80;3554:4;3544:76;;-1:-1:-1;3591:1:1;3605:5;;3544:76;3636:4;3654:1;3649:59;;;;3722:1;3717:174;;;;3629:262;;3649:59;3679:1;3670:10;;3693:5;;;3717:174;3754:3;3744:8;3741:17;3738:43;;;3761:18;;:::i;:::-;-1:-1:-1;;3817:1:1;3803:16;;3876:5;;3629:262;;3975:2;3965:8;3962:16;3956:3;3950:4;3947:13;3943:36;3937:2;3927:8;3924:16;3919:2;3913:4;3910:12;3906:35;3903:77;3900:203;;;-1:-1:-1;4012:19:1;;;4088:5;;3900:203;4135:42;-1:-1:-1;;4160:8:1;4154:4;4135:42;:::i;:::-;4213:6;4209:1;4205:6;4201:19;4192:7;4189:32;4186:58;;;4224:18;;:::i;:::-;4262:20;;3386:902;-1:-1:-1;;;3386:902:1:o;4293:140::-;4351:5;4380:47;4421:4;4411:8;4407:19;4401:4;4380:47;:::i;4438:168::-;4511:9;;;4542;;4559:15;;;4553:22;;4539:37;4529:71;;4580:18;;:::i;4611:356::-;4813:2;4795:21;;;4832:18;;;4825:30;4891:34;4886:2;4871:18;;4864:62;4958:2;4943:18;;4611:356::o;5324:251::-;5394:6;5447:2;5435:9;5426:7;5422:23;5418:32;5415:52;;;5463:1;5460;5453:12;5415:52;5495:9;5489:16;5514:31;5539:5;5514:31;:::i;6493:456::-;6581:6;6589;6597;6650:2;6638:9;6629:7;6625:23;6621:32;6618:52;;;6666:1;6663;6656:12;6618:52;-1:-1:-1;;6711:16:1;;6817:2;6802:18;;6796:25;6913:2;6898:18;;;6892:25;6711:16;;6796:25;;-1:-1:-1;6892:25:1;6493:456;-1:-1:-1;6493:456:1:o;7233:277::-;7300:6;7353:2;7341:9;7332:7;7328:23;7324:32;7321:52;;;7369:1;7366;7359:12;7321:52;7401:9;7395:16;7454:5;7447:13;7440:21;7433:5;7430:32;7420:60;;7476:1;7473;7466:12;10315:125;10380:9;;;10401:10;;;10398:36;;;10414:18;;:::i;10800:135::-;10839:3;10860:17;;;10857:43;;10880:18;;:::i;:::-;-1:-1:-1;10927:1:1;10916:13;;10800:135::o;10940:128::-;11007:9;;;11028:11;;;11025:37;;;11042:18;;:::i;11205:127::-;11266:10;11261:3;11257:20;11254:1;11247:31;11297:4;11294:1;11287:15;11321:4;11318:1;11311:15;11337:959;11599:4;11647:3;11636:9;11632:19;11678:6;11667:9;11660:25;11721:6;11716:2;11705:9;11701:18;11694:34;11764:3;11759:2;11748:9;11744:18;11737:31;11788:6;11823;11817:13;11854:6;11846;11839:22;11892:3;11881:9;11877:19;11870:26;;11931:2;11923:6;11919:15;11905:29;;11952:1;11962:195;11976:6;11973:1;11970:13;11962:195;;;12041:13;;-1:-1:-1;;;;;12037:39:1;12025:52;;12106:2;12132:15;;;;12097:12;;;;12073:1;11991:9;11962:195;;;-1:-1:-1;;;;;;;12213:32:1;;;;12208:2;12193:18;;12186:60;-1:-1:-1;;12277:3:1;12262:19;12255:35;12174:3;11337:959;-1:-1:-1;;;11337:959:1:o;12301:217::-;12341:1;12367;12357:132;;12411:10;12406:3;12402:20;12399:1;12392:31;12446:4;12443:1;12436:15;12474:4;12471:1;12464:15;12357:132;-1:-1:-1;12503:9:1;;12301:217::o

Swarm Source

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