ETH Price: $2,522.01 (-0.12%)

Token

BANK of BANKS (BOB)
 

Overview

Max Total Supply

100,000,000 BOB

Holders

128

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
874,607.059570473 BOB

Value
$0.00
0xefc7901ce0f1c079d062709c5920c2114d9576f1
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:
BOB

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-04-06
*/

//SPDX-License-Identifier: MIT

/**

    Website: https://bobdefi.finance/
    Telegram: https://t.me/BOB_DeFI
    Twitter: https://twitter.com/BOB_DeFi

 */

pragma solidity 0.8.19;

abstract contract ReentrancyGuard {
    uint256 private constant _NOT_ENTERED = 1;
    uint256 private constant _ENTERED = 2;
    uint256 private _status;

    constructor() {
        _status = _NOT_ENTERED;
    }

    modifier nonReentrant() {
        require(_status != _ENTERED, "ReentrancyGuard: reentrant call");
        _status = _ENTERED;
        _;
        _status = _NOT_ENTERED;
    }
}

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

    function decimals() external view returns (uint8);
}

interface ISRG {
    function calculatePrice() external view returns (uint256);

    function getBNBPrice() external view returns (uint256);
}

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

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

contract BOB is IERC20, Context, Ownable, ReentrancyGuard {
    event Bought(
        address indexed from,
        address indexed to,
        uint256 tokens,
        uint256 beans,
        uint256 dollarBuy
    );
    event Sold(
        address indexed from,
        address indexed to,
        uint256 tokens,
        uint256 beans,
        uint256 dollarSell
    );
    event FeesMulChanged(uint256 newBuyMul, uint256 newSellMul);
    event StablePairChanged(address newStablePair, address newStableToken);
    event MaxBagChanged(uint256 newMaxBag);

    // token data
    string private constant _name = "BANK of BANKS";
    string private constant _symbol = "BOB";
    uint8 private constant _decimals = 9;
    uint256 private constant _DECMULTIPLIER = 10**_decimals;

    //SRG pair data
    address private constant SRG = 0xcD682EF09d07668d49A8103ddD65Ff54AebFbfDe; //change this according to chain
    ISRG private constant SRGI = ISRG(SRG); //interface to interact with SRG
    IERC20 private constant SRGIE = IERC20(SRG); //interace to interact with SRG

    uint256 private _srgDecimals = SRGIE.decimals();

    // Total Supply
    uint256 public constant _totalSupply = 10**8 * _DECMULTIPLIER;

    // balances
    mapping(address => uint256) public _balances;
    mapping(address => mapping(address => uint256)) internal _allowances;

    //Fees
    mapping(address => bool) public isFeeExempt;
    uint256 public sellMul = 950;
    uint256 public buyMul = 950;
    uint256 public constant DIVISOR = 1000;

    //Max bag requirements
    mapping(address => bool) public isTxLimitExempt;
    uint256 public maxBag = _totalSupply / 100;

    //Tax collection
    uint256 public taxBalance = 0;

    //Tax wallets
    address public teamWallet = 0xE84486aB11e8EcAd92b2ce5cE0Fc1eD3422EEB4D;
    address public treasuryWallet = 0x063D923c6eFC911f1aE0138196fe82d0615F3838;

    // Tax Split
    uint256 public teamShare = 400;
    uint256 public treasuryShare = 600;
    uint256 public constant SHAREDIVISOR = 1000;

    //Known Wallets
    address private constant DEAD = 0x000000000000000000000000000000000000dEaD;

    //trading parameters
    uint256 public liquidity = 10**6 * 10**_srgDecimals;
    uint256 public liqConst = liquidity * _totalSupply;
    bool public tradeOpen = false;


    //volume trackers
    mapping(uint256 => uint256) public tVol;
    uint256 public totalVolume = 0;

    //candlestick data
    uint256 public constant PADDING = 10**18;
    uint256 public totalTx;
    mapping(uint256 => uint256) public txTimeStamp;

    struct candleStick {
        uint256 time;
        uint256 open;
        uint256 close;
        uint256 high;
        uint256 low;
    }

    mapping(uint256 => candleStick) public candleStickData;


    // initialize supply
    constructor() {
        _balances[address(this)] = _totalSupply;

        isFeeExempt[msg.sender] = true;

        isTxLimitExempt[msg.sender] = true;
        isTxLimitExempt[address(this)] = true;
        isTxLimitExempt[DEAD] = true;
        isTxLimitExempt[address(0)] = true;

        emit Transfer(address(0), address(this), _totalSupply);
    }

    function totalSupply() external pure override returns (uint256) {
        return _totalSupply;
    }

    function balanceOf(address account) public view override returns (uint256) {
        return _balances[account];
    }

    function allowance(address holder, address spender)
        external
        view
        override
        returns (uint256)
    {
        return _allowances[holder][spender];
    }

    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 approve(address spender, uint256 amount)
        public
        override
        returns (bool)
    {
        require(spender != address(0), "SRG20: approve to the zero address");
        require(
            msg.sender != address(0),
            "SRG20: approve from the zero address"
        );

        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function approveMax(address spender) external returns (bool) {
        return approve(spender, type(uint256).max);
    }

    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply - _balances[DEAD];
    }

    function changeWalletLimit(uint256 newLimit) external onlyOwner {
        require(
            newLimit >= _totalSupply / 100,
            "New wallet limit should be at least 1% of total supply"
        );
        maxBag = newLimit;
        emit MaxBagChanged(newLimit);
    }

    function changeIsFeeExempt(address holder, bool exempt) external onlyOwner {
        isFeeExempt[holder] = exempt;
    }

    function changeIsTxLimitExempt(address holder, bool exempt)
        external
        onlyOwner
    {
        isTxLimitExempt[holder] = exempt;
    }

    /** Transfer Function */
    function transfer(address recipient, uint256 amount)
        external
        override
        returns (bool)
    {
        return _transferFrom(msg.sender, recipient, amount);
    }

    /** TransferFrom Function */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external override returns (bool) {
        address spender = msg.sender;
        //check allowance requirement
        _spendAllowance(sender, spender, amount);
        return _transferFrom(sender, recipient, amount);
    }

    /** Internal Transfer */
    function _transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (bool) {
        // make standard checks
        require(
             recipient != address(this),
            "Ca Transfer"
        );
        require(amount > 0, "Zero amount");
        require(
            isTxLimitExempt[recipient] ||
                _balances[recipient] + amount <= maxBag,
            "Max wallet!"
        );
unchecked{
        // subtract from sender
        _balances[sender] -=  amount;

        // give amount to receiver
        _balances[recipient] += amount;

        // Transfer Event
        emit Transfer(sender, recipient, amount);
        return true;
}
    }

    function _spendAllowance(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        uint256 currentAllowance = _allowances[owner][spender];
        if (currentAllowance != type(uint256).max) {
            require(
                currentAllowance >= amount,
                "SRG20: insufficient allowance"
            );

            unchecked {
                // decrease allowance
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

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

    /** Purchases SURGE Tokens and Deposits Them in Sender's Address*/
    function _buy(
        uint256 buyAmount,
        uint256 minTokenOut,
        uint256 deadline
    ) public nonReentrant returns (bool) {
        // deadline requirement
        require(deadline >= block.timestamp && (tradeOpen||
                isTxLimitExempt[msg.sender]), "Deadline EXPIRED or trade is not open!");

        //remove the buy tax
        uint256 srgAmount = isFeeExempt[msg.sender]
            ? buyAmount
            : (buyAmount * buyMul) / DIVISOR;

        // how much they should purchase?
        uint256 tokensToSend = _balances[address(this)] -
            (liqConst / (srgAmount + liquidity));

        //revert for max bag
        require(
            _balances[msg.sender] + tokensToSend <= maxBag ||
                isTxLimitExempt[msg.sender],
            "Max wallet exceeded"
        );

        // revert if under 1
        require(tokensToSend > 1 && tokensToSend >= minTokenOut, "INSUFFICIENT OUTPUT AMOUNT");


        // transfer the SRG from the msg.sender to the CA
        bool s = SRGIE.transferFrom(msg.sender, address(this), buyAmount);

        require(s, "transfer of SRG failed!");

        // transfer the tokens from CA to the buyer
        buy(msg.sender, tokensToSend);


        //update available tax to extract and Liquidity
        uint256 taxAmount = buyAmount - srgAmount;
        taxBalance += taxAmount;
        liquidity += srgAmount;

        //update volume
        uint256 cTime = block.timestamp;
        uint256 dollarBuy = buyAmount * getSRGPrice();
        totalVolume += dollarBuy;
        tVol[cTime] += dollarBuy;

        //update candleStickData
        totalTx += 1;
        txTimeStamp[totalTx] = cTime;
        uint256 cPrice = calculatePrice() * getSRGPrice();
        candleStickData[cTime].time = cTime;
        if (candleStickData[cTime].open == 0) {
            if (totalTx == 1) {
                candleStickData[cTime].open =
                    ((liquidity - srgAmount) / (_totalSupply)) *
                    getSRGPrice();
            } else {
                candleStickData[cTime].open = candleStickData[
                    txTimeStamp[totalTx - 1]
                ].close;
            }
        }
        candleStickData[cTime].close = cPrice;

        if (
            candleStickData[cTime].high < cPrice ||
            candleStickData[cTime].high == 0
        ) {
            candleStickData[cTime].high = cPrice;
        }

        if (
            candleStickData[cTime].low > cPrice ||
            candleStickData[cTime].low == 0
        ) {
            candleStickData[cTime].low = cPrice;
        }

        //emit transfer and buy events
        emit Transfer(address(this), msg.sender, tokensToSend);
        emit Bought(
            msg.sender,
            address(this),
            tokensToSend,
            buyAmount,
            srgAmount * getSRGPrice()
        );
        return true;
    }

    /** Sends Tokens to the buyer Address */
    function buy(address receiver, uint256 amount) internal {
        _balances[receiver] = _balances[receiver] + amount;
        _balances[address(this)] = _balances[address(this)] - amount;
    }

    /** Sells SURGE Tokens And Deposits the BNB into Seller's Address */
    function _sell(
        uint256 tokenAmount,
        uint256 deadline,
        uint256 minBNBOut
    ) public nonReentrant returns (bool) {
        // deadline requirement
        require(deadline >= block.timestamp, "Deadline EXPIRED");

        address seller = msg.sender;

        // make sure seller has this balance
        require(
            _balances[seller] >= tokenAmount,
            "cannot sell above token amount"
        );

        // get how much beans are the tokens worth
        uint256 amountSRG = liquidity -
            (liqConst / (_balances[address(this)] + tokenAmount));
        uint256 amountTax = (amountSRG * (DIVISOR - sellMul)) / DIVISOR;
        uint256 SRGtoSend = amountSRG - amountTax;

        //slippage revert
        require(amountSRG >= minBNBOut, "INSUFFICIENT OUTPUT AMOUNT");

        // send SRG to Seller

        bool successful = isFeeExempt[msg.sender]
            ? SRGIE.transfer(msg.sender, amountSRG)
            : SRGIE.transfer(msg.sender, SRGtoSend);
        require(successful, "SRG transfer failed");

        // subtract full amount from sender
        _balances[seller] = _balances[seller] - tokenAmount;

        //add tax allowance to be withdrawn and remove from liq the amount of beans taken by the seller
        taxBalance = isFeeExempt[msg.sender]
            ? taxBalance
            : taxBalance + amountTax;
        liquidity = liquidity - amountSRG;

        // add tokens back into the contract
        _balances[address(this)] = _balances[address(this)] + tokenAmount;

        //update volume
        uint256 cTime = block.timestamp;
        uint256 dollarSell = amountSRG * getSRGPrice();
        totalVolume += dollarSell;
        tVol[cTime] += dollarSell;

        //update candleStickData
        totalTx += 1;
        txTimeStamp[totalTx] = cTime;
        uint256 cPrice = calculatePrice() * getSRGPrice();
        candleStickData[cTime].time = cTime;
        if (candleStickData[cTime].open == 0) {
            candleStickData[cTime].open = candleStickData[
                txTimeStamp[totalTx - 1]
            ].close;
        }
        candleStickData[cTime].close = cPrice;

        if (
            candleStickData[cTime].high < cPrice ||
            candleStickData[cTime].high == 0
        ) {
            candleStickData[cTime].high = cPrice;
        }

        if (
            candleStickData[cTime].low > cPrice ||
            candleStickData[cTime].low == 0
        ) {
            candleStickData[cTime].low = cPrice;
        }

        // emit transfer and sell events
        emit Transfer(seller, address(this), tokenAmount);
        if (isFeeExempt[msg.sender]) {
            emit Sold(
                address(this),
                msg.sender,
                tokenAmount,
                amountSRG,
                dollarSell
            );
        } else {
            emit Sold(
                address(this),
                msg.sender,
                tokenAmount,
                SRGtoSend,
                SRGtoSend * getSRGPrice()
            );
        }
        
        return true;
    }

    /** Amount of liquidity in Contract */
    function getLiquidity() public view returns (uint256) {
        return liquidity;
    }

    /** Returns the value of your holdings before the sell fee */
    function getValueOfHoldings(address holder) public view returns (uint256) {
        return
            ((_balances[holder] * liquidity) / _balances[address(this)]) *
            getSRGPrice();
    }

    function changeFees(uint256 newBuyMul, uint256 newSellMul)
        external
        onlyOwner
    {
        require(
            newBuyMul >= 900 &&
                newSellMul >= 900 &&
                newBuyMul <= 1000 &&
                newSellMul <= 1000,
            "Fees are too high"
        );

        buyMul = newBuyMul;
        sellMul = newSellMul;

        emit FeesMulChanged(newBuyMul, newSellMul);
    }

    function changeTaxDistribution(
        uint256 newteamShare,
        uint256 newtreasuryShare
    ) external onlyOwner {
        require(
            newteamShare + newtreasuryShare == SHAREDIVISOR,
            "Sum of shares must be SHAREDIVISOR"
        );

        teamShare = newteamShare;
        treasuryShare = newtreasuryShare;
    }

    function changeFeeReceivers(
        address newTeamWallet,
        address newTreasuryWallet
    ) external onlyOwner {
        require(
            newTeamWallet != address(0) && newTreasuryWallet != address(0),
            "New wallets must not be the ZERO address"
        );

        teamWallet = newTeamWallet;
        treasuryWallet = newTreasuryWallet;
    }

    function withdrawTaxBalance() external nonReentrant onlyOwner {
        
        if(teamShare>0){
        bool temp1 = SRGIE.transfer(
            teamWallet,
            (taxBalance * teamShare) / SHAREDIVISOR
        );
            require(temp1);
        }

        if(treasuryShare>0){
        bool temp2 = SRGIE.transfer(
            treasuryWallet,
            (taxBalance * treasuryShare) / SHAREDIVISOR
        );
        require(temp2);
        
        }
        taxBalance = 0;
    }

    function getTokenAmountOut(uint256 amountSRGIn)
        external
        view
        returns (uint256)
    {
        uint256 amountAfter = liqConst / (liquidity - amountSRGIn);
        uint256 amountBefore = liqConst / liquidity;
        return amountAfter - amountBefore;
    }

    function getsrgAmountOut(uint256 amountIn) public view returns (uint256) {
        uint256 srgBefore = liqConst / _balances[address(this)];
        uint256 srgAfter = liqConst / (_balances[address(this)] + amountIn);
        return srgBefore - srgAfter;
    }

    function addLiquidity(uint256 amountSRGLiq) external onlyOwner {
        uint256 tokensToAdd = (_balances[address(this)] * amountSRGLiq) /
            liquidity;
        require(_balances[msg.sender] >= tokensToAdd, "Not enough tokens!");

        bool sLiq = SRGIE.transfer(address(this), amountSRGLiq);
        require(sLiq, "SRG transfer was unsuccesful!");

        uint256 oldLiq = liquidity;
        liquidity = liquidity + amountSRGLiq;
        _balances[address(this)] += tokensToAdd;
        _balances[msg.sender] -= tokensToAdd;
        liqConst = (liqConst * liquidity) / oldLiq;

        emit Transfer(msg.sender, address(this), tokensToAdd);
    }

    function getMarketCap() external view returns (uint256) {
        return (getCirculatingSupply() * calculatePrice() * getSRGPrice());
    }

    // calculate price based on pair SRG price
    function getSRGPrice() public view returns (uint256) {
        return (SRGI.calculatePrice() * SRGI.getBNBPrice()); // return amount of token0 needed to buy token1
    }

    // Returns the Current Price of the Token in SRG
    function calculatePrice() public view returns (uint256) {
        require(liquidity > 0, "No Liquidity");
        return liquidity * PADDING / _balances[address(this)];
    }

    function openTrading() external nonReentrant onlyOwner {
        require(!tradeOpen, "You cannot disable trading after enabling!");
        tradeOpen = true;
    }
}

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":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokens","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"beans","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"dollarBuy","type":"uint256"}],"name":"Bought","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newBuyMul","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newSellMul","type":"uint256"}],"name":"FeesMulChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newMaxBag","type":"uint256"}],"name":"MaxBagChanged","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":"tokens","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"beans","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"dollarSell","type":"uint256"}],"name":"Sold","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newStablePair","type":"address"},{"indexed":false,"internalType":"address","name":"newStableToken","type":"address"}],"name":"StablePairChanged","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":"DIVISOR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PADDING","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SHAREDIVISOR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_balances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"buyAmount","type":"uint256"},{"internalType":"uint256","name":"minTokenOut","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"_buy","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenAmount","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint256","name":"minBNBOut","type":"uint256"}],"name":"_sell","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountSRGLiq","type":"uint256"}],"name":"addLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","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":"buyMul","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"calculatePrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"candleStickData","outputs":[{"internalType":"uint256","name":"time","type":"uint256"},{"internalType":"uint256","name":"open","type":"uint256"},{"internalType":"uint256","name":"close","type":"uint256"},{"internalType":"uint256","name":"high","type":"uint256"},{"internalType":"uint256","name":"low","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newTeamWallet","type":"address"},{"internalType":"address","name":"newTreasuryWallet","type":"address"}],"name":"changeFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBuyMul","type":"uint256"},{"internalType":"uint256","name":"newSellMul","type":"uint256"}],"name":"changeFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"changeIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"changeIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newteamShare","type":"uint256"},{"internalType":"uint256","name":"newtreasuryShare","type":"uint256"}],"name":"changeTaxDistribution","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"changeWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMarketCap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSRGPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountSRGIn","type":"uint256"}],"name":"getTokenAmountOut","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"}],"name":"getValueOfHoldings","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"}],"name":"getsrgAmountOut","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liqConst","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBag","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellMul","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tVol","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"teamShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"teamWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalVolume","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradeOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"treasuryShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"treasuryWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"txTimeStamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawTaxBalance","outputs":[],"stateMutability":"nonpayable","type":"function"}]

6080604081905263313ce56760e01b815273cd682ef09d07668d49a8103ddd65ff54aebfbfde9063313ce56790608490602090600481865afa1580156200004a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000709190620002d7565b60ff166002556103b660068190556007556064620000916009600a62000418565b620000a1906305f5e10062000429565b620000ad919062000443565b6009556000600a908155600b80546001600160a01b031990811673e84486ab11e8ecad92b2ce5ce0fc1ed3422eeb4d17909155600c805490911673063d923c6efc911f1ae0138196fe82d0615f3838179055610190600d55610258600e55600254620001199162000466565b6200012890620f424062000429565b600f55620001396009600a62000418565b62000149906305f5e10062000429565b600f5462000158919062000429565b6010556011805460ff1916905560006013553480156200017757600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060018055620001cb6009600a62000418565b620001db906305f5e10062000429565b30600081815260036020908152604080832094909455338252600581528382208054600160ff1991821681179092556008909252848320805483168217905583835293822080548216851790557f046fee3d77c34a6c5e10c3be6dc4b132c30449dbf4f0bc07684896dd0933429980548216851790558180527f5eff886ea0ce6ca488a3d6e336d6c0f75f46d19b42c06ce5ee98e42c96d256c78054909116909317909255907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620002b06009600a62000418565b620002c0906305f5e10062000429565b60405190815260200160405180910390a362000474565b600060208284031215620002ea57600080fd5b815160ff81168114620002fc57600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200035a5781600019048211156200033e576200033e62000303565b808516156200034c57918102915b93841c93908002906200031e565b509250929050565b600082620003735750600162000412565b81620003825750600062000412565b81600181146200039b5760028114620003a657620003c6565b600191505062000412565b60ff841115620003ba57620003ba62000303565b50506001821b62000412565b5060208310610133831016604e8410600b8410161715620003eb575081810a62000412565b620003f7838362000319565b80600019048211156200040e576200040e62000303565b0290505b92915050565b6000620002fc60ff84168362000362565b808202811582820484141762000412576200041262000303565b6000826200046157634e487b7160e01b600052601260045260246000fd5b500490565b6000620002fc838362000362565b6129db80620004846000396000f3fe608060405234801561001057600080fd5b506004361061035d5760003560e01c80637220cf39116101d3578063b1b6524611610104578063e8f620b1116100a2578063f4034e4b1161007c578063f4034e4b1461075c578063f7a62fe91461076f578063fabe62831461078f578063fea2de43146107a257600080fd5b8063e8f620b114610737578063ea6ef2fe14610740578063f2fde38b1461074957600080fd5b8063d348b409116100de578063d348b409146106de578063d937e60d146106e6578063dd62ed3e146106f5578063e0cfcc951461072e57600080fd5b8063b1b65246146106bb578063b37659a4146106c3578063c9567bf9146106d657600080fd5b80639d75502611610171578063a3a2e89e1161014b578063a3a2e89e14610627578063a8fb66b41461063a578063a9059cbb1461069f578063aa98e163146106b257600080fd5b80639d75502614610602578063a0e571a21461060b578063a13cef3a1461061457600080fd5b80638b42507f116101ad5780638b42507f146105a75780638da5cb5b146105ca57806390825c28146105db57806395d89b41146105e357600080fd5b80637220cf39146105825780637796ff371461058b5780637db1342c1461059457600080fd5b80633410fe6e116102ad578063599270441161024b5780636ebcf607116102255780636ebcf6071461051e57806370a082311461053e57806371073b3814610567578063715018a61461057a57600080fd5b806359927044146105025780635f81a57c1461051557806362ff2e9a1461045d57600080fd5b80634626402b116102875780634626402b1461049157806349ce234c146104bc57806351c6590a146104dc578063571ac8b0146104ef57600080fd5b80633410fe6e1461045d5780633eaaf86b146104665780633f4218e01461046e57600080fd5b80631f02a29c1161031a57806323b872dd116102f457806323b872dd1461042657806325fa0b98146104395780632b112e4914610446578063313ce5671461044e57600080fd5b80631f02a29c146103ed5780631f2c80f11461040057806321ecff5b1461041357600080fd5b806306fdde03146103625780630910a5101461039d578063095ea7b3146103af57806318160ddd146103d25780631a686502146103da5780631d6bdb5b146103e3575b600080fd5b60408051808201909152600d81526c42414e4b206f662042414e4b5360981b60208201525b60405161039491906125ae565b60405180910390f35b600f545b604051908152602001610394565b6103c26103bd366004612618565b6107b5565b6040519015158152602001610394565b6103a16108db565b6103a1600f5481565b6103eb6108fc565b005b6103a16103fb366004612642565b610af8565b6103eb61040e36600461265d565b610b45565b6103eb610421366004612690565b610c1a565b6103c26104343660046126b2565b610cfb565b6011546103c29060ff1681565b6103a1610d1d565b60405160098152602001610394565b6103a16103e881565b6103a1610d70565b6103c261047c366004612642565b60056020526000908152604090205460ff1681565b600c546104a4906001600160a01b031681565b6040516001600160a01b039091168152602001610394565b6103a16104ca3660046126ee565b60126020526000908152604090205481565b6103eb6104ea3660046126ee565b610d8d565b6103c26104fd366004612642565b610fa8565b600b546104a4906001600160a01b031681565b6103a160135481565b6103a161052c366004612642565b60036020526000908152604090205481565b6103a161054c366004612642565b6001600160a01b031660009081526003602052604090205490565b6103a16105753660046126ee565b610fb6565b6103eb610ffc565b6103a160145481565b6103a1600e5481565b6103eb6105a23660046126ee565b611070565b6103c26105b5366004612642565b60086020526000908152604090205460ff1681565b6000546001600160a01b03166104a4565b6103a1611169565b6040805180820190915260038152622127a160e91b6020820152610387565b6103a160065481565b6103a160075481565b6103a16106223660046126ee565b611197565b6103eb610635366004612718565b6111e1565b6106776106483660046126ee565b601660205260009081526040902080546001820154600283015460038401546004909401549293919290919085565b604080519586526020860194909452928401919091526060830152608082015260a001610394565b6103c26106ad366004612618565b611236565b6103a1600a5481565b6103a161124a565b6103c26106d136600461274f565b611338565b6103eb611962565b6103a1611a2d565b6103a1670de0b6b3a764000081565b6103a161070336600461265d565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b6103a160095481565b6103a160105481565b6103a1600d5481565b6103eb610757366004612642565b611a9f565b6103eb61076a366004612690565b611b89565b6103a161077d3660046126ee565b60156020526000908152604090205481565b6103eb61079d366004612718565b611c23565b6103c26107b036600461274f565b611c78565b60006001600160a01b03831661081d5760405162461bcd60e51b815260206004820152602260248201527f53524732303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084015b60405180910390fd5b336108765760405162461bcd60e51b8152602060048201526024808201527f53524732303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610814565b3360008181526004602090815260408083206001600160a01b03881680855290835292819020869055518581529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35060015b92915050565b60006108e96009600a612875565b6108f7906305f5e100612884565b905090565b60026001540361091e5760405162461bcd60e51b81526004016108149061289b565b60026001556000546001600160a01b0316331461094d5760405162461bcd60e51b8152600401610814906128d2565b600d5415610a1d57600b54600d54600a5460009273cd682ef09d07668d49a8103ddd65ff54aebfbfde9263a9059cbb926001600160a01b03909216916103e89161099691612884565b6109a09190612907565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af11580156109eb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a0f9190612929565b905080610a1b57600080fd5b505b600e5415610aed57600c54600e54600a5460009273cd682ef09d07668d49a8103ddd65ff54aebfbfde9263a9059cbb926001600160a01b03909216916103e891610a6691612884565b610a709190612907565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015610abb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610adf9190612929565b905080610aeb57600080fd5b505b6000600a5560018055565b6000610b0261124a565b3060009081526003602052604080822054600f546001600160a01b03871684529190922054610b319190612884565b610b3b9190612907565b6108d59190612884565b6000546001600160a01b03163314610b6f5760405162461bcd60e51b8152600401610814906128d2565b6001600160a01b03821615801590610b8f57506001600160a01b03811615155b610bec5760405162461bcd60e51b815260206004820152602860248201527f4e65772077616c6c657473206d757374206e6f7420626520746865205a45524f604482015267206164647265737360c01b6064820152608401610814565b600b80546001600160a01b039384166001600160a01b031991821617909155600c8054929093169116179055565b6000546001600160a01b03163314610c445760405162461bcd60e51b8152600401610814906128d2565b6103848210158015610c5857506103848110155b8015610c6657506103e88211155b8015610c7457506103e88111155b610cb45760405162461bcd60e51b815260206004820152601160248201527008ccacae640c2e4ca40e8dede40d0d2ced607b1b6044820152606401610814565b6007829055600681905560408051838152602081018390527fc19ebd395193e8ddaaeda048fb5cb09d4e2dbebcce719174166029a409387856910160405180910390a15050565b600033610d09858285612225565b610d148585856122b7565b95945050505050565b61dead600090815260036020527f262bb27bbdd95c1cdc8e16957e36e38579ea44f7f6413dd7a9c75939def06b2c54610d586009600a612875565b610d66906305f5e100612884565b6108f79190612946565b610d7c6009600a612875565b610d8a906305f5e100612884565b81565b6000546001600160a01b03163314610db75760405162461bcd60e51b8152600401610814906128d2565b600f5430600090815260036020526040812054909190610dd8908490612884565b610de29190612907565b33600090815260036020526040902054909150811115610e395760405162461bcd60e51b81526020600482015260126024820152714e6f7420656e6f75676820746f6b656e732160701b6044820152606401610814565b60405163a9059cbb60e01b81523060048201526024810183905260009073cd682ef09d07668d49a8103ddd65ff54aebfbfde9063a9059cbb906044016020604051808303816000875af1158015610e94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eb89190612929565b905080610f075760405162461bcd60e51b815260206004820152601d60248201527f535247207472616e736665722077617320756e73756363657366756c210000006044820152606401610814565b600f54610f148482612959565b600f553060009081526003602052604081208054859290610f36908490612959565b90915550503360009081526003602052604081208054859290610f5a908490612946565b9091555050600f546010548291610f7091612884565b610f7a9190612907565b601055604051838152309033906000805160206129868339815191529060200160405180910390a350505050565b60006108d5826000196107b5565b60008082600f54610fc79190612946565b601054610fd49190612907565b90506000600f54601054610fe89190612907565b9050610ff48183612946565b949350505050565b6000546001600160a01b031633146110265760405162461bcd60e51b8152600401610814906128d2565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b0316331461109a5760405162461bcd60e51b8152600401610814906128d2565b60646110a86009600a612875565b6110b6906305f5e100612884565b6110c09190612907565b81101561112e5760405162461bcd60e51b815260206004820152603660248201527f4e65772077616c6c6574206c696d69742073686f756c64206265206174206c65604482015275617374203125206f6620746f74616c20737570706c7960501b6064820152608401610814565b60098190556040518181527fb579b5ff4decd3791f679ec8d72f16128df08aa3f346b425480a0135d2e8bf759060200160405180910390a150565b600061117361124a565b61117b611a2d565b611183610d1d565b61118d9190612884565b6108f79190612884565b3060009081526003602052604081205460105482916111b591612907565b30600090815260036020526040812054919250906111d4908590612959565b601054610fe89190612907565b6000546001600160a01b0316331461120b5760405162461bcd60e51b8152600401610814906128d2565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b60006112433384846122b7565b9392505050565b600073cd682ef09d07668d49a8103ddd65ff54aebfbfde6001600160a01b031663f2220c9e6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561129e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112c2919061296c565b73cd682ef09d07668d49a8103ddd65ff54aebfbfde6001600160a01b031663d348b4096040518163ffffffff1660e01b8152600401602060405180830381865afa158015611314573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061118d919061296c565b600060026001540361135c5760405162461bcd60e51b81526004016108149061289b565b6002600155428310156113a45760405162461bcd60e51b815260206004820152601060248201526f111958591b1a5b99481156141254915160821b6044820152606401610814565b336000818152600360205260409020548511156114035760405162461bcd60e51b815260206004820152601e60248201527f63616e6e6f742073656c6c2061626f766520746f6b656e20616d6f756e7400006044820152606401610814565b3060009081526003602052604081205461141e908790612959565b60105461142b9190612907565b600f546114389190612946565b905060006103e86006546103e861144f9190612946565b6114599084612884565b6114639190612907565b905060006114718284612946565b9050858310156114c35760405162461bcd60e51b815260206004820152601a60248201527f494e53554646494349454e54204f555450555420414d4f554e540000000000006044820152606401610814565b3360009081526005602052604081205460ff1661155b5760405163a9059cbb60e01b81523360048201526024810183905273cd682ef09d07668d49a8103ddd65ff54aebfbfde9063a9059cbb906044016020604051808303816000875af1158015611532573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115569190612929565b6115d7565b60405163a9059cbb60e01b81523360048201526024810185905273cd682ef09d07668d49a8103ddd65ff54aebfbfde9063a9059cbb906044016020604051808303816000875af11580156115b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115d79190612929565b90508061161c5760405162461bcd60e51b815260206004820152601360248201527214d491c81d1c985b9cd9995c8819985a5b1959606a1b6044820152606401610814565b6001600160a01b038516600090815260036020526040902054611640908a90612946565b6001600160a01b03861660009081526003602090815260408083209390935533825260059052205460ff166116825782600a5461167d9190612959565b611686565b600a545b600a55600f54611697908590612946565b600f55306000908152600360205260409020546116b5908a90612959565b3060009081526003602052604081209190915542906116d261124a565b6116dc9087612884565b905080601360008282546116f09190612959565b909155505060008281526012602052604081208054839290611713908490612959565b9250508190555060016014600082825461172d9190612959565b9091555050601454600090815260156020526040812083905561174e61124a565b611756611a2d565b6117609190612884565b600084815260166020526040812085815560010154919250036117d057601660006015600060016014546117949190612946565b81526020019081526020016000205481526020019081526020016000206002015460166000858152602001908152602001600020600101819055505b600083815260166020526040902060028101829055600301548111806118055750600083815260166020526040902060030154155b1561181f5760008381526016602052604090206003018190555b60008381526016602052604090206004015481108061184d5750600083815260166020526040902060040154155b156118675760008381526016602052604090206004018190555b6040518c815230906001600160a01b038a16906000805160206129868339815191529060200160405180910390a33360009081526005602052604090205460ff16156118f757604080518d815260208101899052908101839052339030907f9be8a5ca22b7e6e81f04b5879f0248227bb770114291bd47dfaee4c3a82ad60e9060600160405180910390a361194d565b33307f9be8a5ca22b7e6e81f04b5879f0248227bb770114291bd47dfaee4c3a82ad60e8e8861192461124a565b61192e908b612884565b6040805193845260208401929092529082015260600160405180910390a35b505060018080559a9950505050505050505050565b6002600154036119845760405162461bcd60e51b81526004016108149061289b565b60026001556000546001600160a01b031633146119b35760405162461bcd60e51b8152600401610814906128d2565b60115460ff1615611a195760405162461bcd60e51b815260206004820152602a60248201527f596f752063616e6e6f742064697361626c652074726164696e6720616674657260448201526920656e61626c696e672160b01b6064820152608401610814565b6011805460ff191660019081179091558055565b600080600f5411611a6f5760405162461bcd60e51b815260206004820152600c60248201526b4e6f204c697175696469747960a01b6044820152606401610814565b30600090815260036020526040902054600f54611a9590670de0b6b3a764000090612884565b6108f79190612907565b6000546001600160a01b03163314611ac95760405162461bcd60e51b8152600401610814906128d2565b6001600160a01b038116611b2e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610814565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314611bb35760405162461bcd60e51b8152600401610814906128d2565b6103e8611bc08284612959565b14611c185760405162461bcd60e51b815260206004820152602260248201527f53756d206f6620736861726573206d757374206265205348415245444956495360448201526127a960f11b6064820152608401610814565b600d91909155600e55565b6000546001600160a01b03163314611c4d5760405162461bcd60e51b8152600401610814906128d2565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6000600260015403611c9c5760405162461bcd60e51b81526004016108149061289b565b6002600155428210801590611ccc575060115460ff1680611ccc57503360009081526008602052604090205460ff165b611d275760405162461bcd60e51b815260206004820152602660248201527f446561646c696e652045585049524544206f72207472616465206973206e6f74604482015265206f70656e2160d01b6064820152608401610814565b3360009081526005602052604081205460ff16611d5e576103e860075486611d4f9190612884565b611d599190612907565b611d60565b845b90506000600f5482611d729190612959565b601054611d7f9190612907565b30600090815260036020526040902054611d999190612946565b6009543360009081526003602052604090205491925090611dbb908390612959565b111580611dd757503360009081526008602052604090205460ff165b611e195760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610814565b600181118015611e295750848110155b611e755760405162461bcd60e51b815260206004820152601a60248201527f494e53554646494349454e54204f555450555420414d4f554e540000000000006044820152606401610814565b6040516323b872dd60e01b81523360048201523060248201526044810187905260009073cd682ef09d07668d49a8103ddd65ff54aebfbfde906323b872dd906064016020604051808303816000875af1158015611ed6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611efa9190612929565b905080611f495760405162461bcd60e51b815260206004820152601760248201527f7472616e73666572206f6620535247206661696c6564210000000000000000006044820152606401610814565b611f533383612425565b6000611f5f8489612946565b905080600a6000828254611f739190612959565b9250508190555083600f6000828254611f8c9190612959565b909155504290506000611f9d61124a565b611fa7908b612884565b90508060136000828254611fbb9190612959565b909155505060008281526012602052604081208054839290611fde908490612959565b92505081905550600160146000828254611ff89190612959565b9091555050601454600090815260156020526040812083905561201961124a565b612021611a2d565b61202b9190612884565b60008481526016602052604081208581556001015491925003612100576014546001036120ad5761205a61124a565b6120666009600a612875565b612074906305f5e100612884565b88600f546120829190612946565b61208c9190612907565b6120969190612884565b600084815260166020526040902060010155612100565b601660006015600060016014546120c49190612946565b81526020019081526020016000205481526020019081526020016000206002015460166000858152602001908152602001600020600101819055505b600083815260166020526040902060028101829055600301548111806121355750600083815260166020526040902060030154155b1561214f5760008381526016602052604090206003018190555b60008381526016602052604090206004015481108061217d5750600083815260166020526040902060040154155b156121975760008381526016602052604090206004018190555b604051868152339030906000805160206129868339815191529060200160405180910390a330337f7ce543d1780f3bdc3dac42da06c95da802653cd1b212b8d74ec3e3c33ad7095c888e6121e961124a565b6121f3908d612884565b6040805193845260208401929092529082015260600160405180910390a3505060018080559998505050505050505050565b6001600160a01b0380841660009081526004602090815260408083209386168352929052205460001981146122b157818110156122a45760405162461bcd60e51b815260206004820152601d60248201527f53524732303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610814565b6122b1848484840361248a565b50505050565b6000306001600160a01b038416036122ff5760405162461bcd60e51b815260206004820152600b60248201526a21b0902a3930b739b332b960a91b6044820152606401610814565b6000821161233d5760405162461bcd60e51b815260206004820152600b60248201526a16995c9bc8185b5bdd5b9d60aa1b6044820152606401610814565b6001600160a01b03831660009081526008602052604090205460ff168061238957506009546001600160a01b038416600090815260036020526040902054612386908490612959565b11155b6123c35760405162461bcd60e51b815260206004820152600b60248201526a4d61782077616c6c65742160a81b6044820152606401610814565b6001600160a01b0380851660008181526003602052604080822080548790039055928616808252908390208054860190559151600080516020612986833981519152906124139086815260200190565b60405180910390a35060019392505050565b6001600160a01b038216600090815260036020526040902054612449908290612959565b6001600160a01b038316600090815260036020526040808220929092553081522054612476908290612946565b306000908152600360205260409020555050565b6001600160a01b0383166124ec5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610814565b6001600160a01b03821661254d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610814565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600060208083528351808285015260005b818110156125db578581018301518582016040015282016125bf565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461261357600080fd5b919050565b6000806040838503121561262b57600080fd5b612634836125fc565b946020939093013593505050565b60006020828403121561265457600080fd5b611243826125fc565b6000806040838503121561267057600080fd5b612679836125fc565b9150612687602084016125fc565b90509250929050565b600080604083850312156126a357600080fd5b50508035926020909101359150565b6000806000606084860312156126c757600080fd5b6126d0846125fc565b92506126de602085016125fc565b9150604084013590509250925092565b60006020828403121561270057600080fd5b5035919050565b801515811461271557600080fd5b50565b6000806040838503121561272b57600080fd5b612734836125fc565b9150602083013561274481612707565b809150509250929050565b60008060006060848603121561276457600080fd5b505081359360208301359350604090920135919050565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156127cc5781600019048211156127b2576127b261277b565b808516156127bf57918102915b93841c9390800290612796565b509250929050565b6000826127e3575060016108d5565b816127f0575060006108d5565b816001811461280657600281146128105761282c565b60019150506108d5565b60ff8411156128215761282161277b565b50506001821b6108d5565b5060208310610133831016604e8410600b841016171561284f575081810a6108d5565b6128598383612791565b806000190482111561286d5761286d61277b565b029392505050565b600061124360ff8416836127d4565b80820281158282048414176108d5576108d561277b565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60008261292457634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561293b57600080fd5b815161124381612707565b818103818111156108d5576108d561277b565b808201808211156108d5576108d561277b565b60006020828403121561297e57600080fd5b505191905056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212203f5d0476db4798340925b0c667365ae5ef92e2c97b66cdefb4e2521c2cd2686d64736f6c63430008130033

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061035d5760003560e01c80637220cf39116101d3578063b1b6524611610104578063e8f620b1116100a2578063f4034e4b1161007c578063f4034e4b1461075c578063f7a62fe91461076f578063fabe62831461078f578063fea2de43146107a257600080fd5b8063e8f620b114610737578063ea6ef2fe14610740578063f2fde38b1461074957600080fd5b8063d348b409116100de578063d348b409146106de578063d937e60d146106e6578063dd62ed3e146106f5578063e0cfcc951461072e57600080fd5b8063b1b65246146106bb578063b37659a4146106c3578063c9567bf9146106d657600080fd5b80639d75502611610171578063a3a2e89e1161014b578063a3a2e89e14610627578063a8fb66b41461063a578063a9059cbb1461069f578063aa98e163146106b257600080fd5b80639d75502614610602578063a0e571a21461060b578063a13cef3a1461061457600080fd5b80638b42507f116101ad5780638b42507f146105a75780638da5cb5b146105ca57806390825c28146105db57806395d89b41146105e357600080fd5b80637220cf39146105825780637796ff371461058b5780637db1342c1461059457600080fd5b80633410fe6e116102ad578063599270441161024b5780636ebcf607116102255780636ebcf6071461051e57806370a082311461053e57806371073b3814610567578063715018a61461057a57600080fd5b806359927044146105025780635f81a57c1461051557806362ff2e9a1461045d57600080fd5b80634626402b116102875780634626402b1461049157806349ce234c146104bc57806351c6590a146104dc578063571ac8b0146104ef57600080fd5b80633410fe6e1461045d5780633eaaf86b146104665780633f4218e01461046e57600080fd5b80631f02a29c1161031a57806323b872dd116102f457806323b872dd1461042657806325fa0b98146104395780632b112e4914610446578063313ce5671461044e57600080fd5b80631f02a29c146103ed5780631f2c80f11461040057806321ecff5b1461041357600080fd5b806306fdde03146103625780630910a5101461039d578063095ea7b3146103af57806318160ddd146103d25780631a686502146103da5780631d6bdb5b146103e3575b600080fd5b60408051808201909152600d81526c42414e4b206f662042414e4b5360981b60208201525b60405161039491906125ae565b60405180910390f35b600f545b604051908152602001610394565b6103c26103bd366004612618565b6107b5565b6040519015158152602001610394565b6103a16108db565b6103a1600f5481565b6103eb6108fc565b005b6103a16103fb366004612642565b610af8565b6103eb61040e36600461265d565b610b45565b6103eb610421366004612690565b610c1a565b6103c26104343660046126b2565b610cfb565b6011546103c29060ff1681565b6103a1610d1d565b60405160098152602001610394565b6103a16103e881565b6103a1610d70565b6103c261047c366004612642565b60056020526000908152604090205460ff1681565b600c546104a4906001600160a01b031681565b6040516001600160a01b039091168152602001610394565b6103a16104ca3660046126ee565b60126020526000908152604090205481565b6103eb6104ea3660046126ee565b610d8d565b6103c26104fd366004612642565b610fa8565b600b546104a4906001600160a01b031681565b6103a160135481565b6103a161052c366004612642565b60036020526000908152604090205481565b6103a161054c366004612642565b6001600160a01b031660009081526003602052604090205490565b6103a16105753660046126ee565b610fb6565b6103eb610ffc565b6103a160145481565b6103a1600e5481565b6103eb6105a23660046126ee565b611070565b6103c26105b5366004612642565b60086020526000908152604090205460ff1681565b6000546001600160a01b03166104a4565b6103a1611169565b6040805180820190915260038152622127a160e91b6020820152610387565b6103a160065481565b6103a160075481565b6103a16106223660046126ee565b611197565b6103eb610635366004612718565b6111e1565b6106776106483660046126ee565b601660205260009081526040902080546001820154600283015460038401546004909401549293919290919085565b604080519586526020860194909452928401919091526060830152608082015260a001610394565b6103c26106ad366004612618565b611236565b6103a1600a5481565b6103a161124a565b6103c26106d136600461274f565b611338565b6103eb611962565b6103a1611a2d565b6103a1670de0b6b3a764000081565b6103a161070336600461265d565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b6103a160095481565b6103a160105481565b6103a1600d5481565b6103eb610757366004612642565b611a9f565b6103eb61076a366004612690565b611b89565b6103a161077d3660046126ee565b60156020526000908152604090205481565b6103eb61079d366004612718565b611c23565b6103c26107b036600461274f565b611c78565b60006001600160a01b03831661081d5760405162461bcd60e51b815260206004820152602260248201527f53524732303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084015b60405180910390fd5b336108765760405162461bcd60e51b8152602060048201526024808201527f53524732303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610814565b3360008181526004602090815260408083206001600160a01b03881680855290835292819020869055518581529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35060015b92915050565b60006108e96009600a612875565b6108f7906305f5e100612884565b905090565b60026001540361091e5760405162461bcd60e51b81526004016108149061289b565b60026001556000546001600160a01b0316331461094d5760405162461bcd60e51b8152600401610814906128d2565b600d5415610a1d57600b54600d54600a5460009273cd682ef09d07668d49a8103ddd65ff54aebfbfde9263a9059cbb926001600160a01b03909216916103e89161099691612884565b6109a09190612907565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af11580156109eb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a0f9190612929565b905080610a1b57600080fd5b505b600e5415610aed57600c54600e54600a5460009273cd682ef09d07668d49a8103ddd65ff54aebfbfde9263a9059cbb926001600160a01b03909216916103e891610a6691612884565b610a709190612907565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015610abb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610adf9190612929565b905080610aeb57600080fd5b505b6000600a5560018055565b6000610b0261124a565b3060009081526003602052604080822054600f546001600160a01b03871684529190922054610b319190612884565b610b3b9190612907565b6108d59190612884565b6000546001600160a01b03163314610b6f5760405162461bcd60e51b8152600401610814906128d2565b6001600160a01b03821615801590610b8f57506001600160a01b03811615155b610bec5760405162461bcd60e51b815260206004820152602860248201527f4e65772077616c6c657473206d757374206e6f7420626520746865205a45524f604482015267206164647265737360c01b6064820152608401610814565b600b80546001600160a01b039384166001600160a01b031991821617909155600c8054929093169116179055565b6000546001600160a01b03163314610c445760405162461bcd60e51b8152600401610814906128d2565b6103848210158015610c5857506103848110155b8015610c6657506103e88211155b8015610c7457506103e88111155b610cb45760405162461bcd60e51b815260206004820152601160248201527008ccacae640c2e4ca40e8dede40d0d2ced607b1b6044820152606401610814565b6007829055600681905560408051838152602081018390527fc19ebd395193e8ddaaeda048fb5cb09d4e2dbebcce719174166029a409387856910160405180910390a15050565b600033610d09858285612225565b610d148585856122b7565b95945050505050565b61dead600090815260036020527f262bb27bbdd95c1cdc8e16957e36e38579ea44f7f6413dd7a9c75939def06b2c54610d586009600a612875565b610d66906305f5e100612884565b6108f79190612946565b610d7c6009600a612875565b610d8a906305f5e100612884565b81565b6000546001600160a01b03163314610db75760405162461bcd60e51b8152600401610814906128d2565b600f5430600090815260036020526040812054909190610dd8908490612884565b610de29190612907565b33600090815260036020526040902054909150811115610e395760405162461bcd60e51b81526020600482015260126024820152714e6f7420656e6f75676820746f6b656e732160701b6044820152606401610814565b60405163a9059cbb60e01b81523060048201526024810183905260009073cd682ef09d07668d49a8103ddd65ff54aebfbfde9063a9059cbb906044016020604051808303816000875af1158015610e94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eb89190612929565b905080610f075760405162461bcd60e51b815260206004820152601d60248201527f535247207472616e736665722077617320756e73756363657366756c210000006044820152606401610814565b600f54610f148482612959565b600f553060009081526003602052604081208054859290610f36908490612959565b90915550503360009081526003602052604081208054859290610f5a908490612946565b9091555050600f546010548291610f7091612884565b610f7a9190612907565b601055604051838152309033906000805160206129868339815191529060200160405180910390a350505050565b60006108d5826000196107b5565b60008082600f54610fc79190612946565b601054610fd49190612907565b90506000600f54601054610fe89190612907565b9050610ff48183612946565b949350505050565b6000546001600160a01b031633146110265760405162461bcd60e51b8152600401610814906128d2565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b0316331461109a5760405162461bcd60e51b8152600401610814906128d2565b60646110a86009600a612875565b6110b6906305f5e100612884565b6110c09190612907565b81101561112e5760405162461bcd60e51b815260206004820152603660248201527f4e65772077616c6c6574206c696d69742073686f756c64206265206174206c65604482015275617374203125206f6620746f74616c20737570706c7960501b6064820152608401610814565b60098190556040518181527fb579b5ff4decd3791f679ec8d72f16128df08aa3f346b425480a0135d2e8bf759060200160405180910390a150565b600061117361124a565b61117b611a2d565b611183610d1d565b61118d9190612884565b6108f79190612884565b3060009081526003602052604081205460105482916111b591612907565b30600090815260036020526040812054919250906111d4908590612959565b601054610fe89190612907565b6000546001600160a01b0316331461120b5760405162461bcd60e51b8152600401610814906128d2565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b60006112433384846122b7565b9392505050565b600073cd682ef09d07668d49a8103ddd65ff54aebfbfde6001600160a01b031663f2220c9e6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561129e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112c2919061296c565b73cd682ef09d07668d49a8103ddd65ff54aebfbfde6001600160a01b031663d348b4096040518163ffffffff1660e01b8152600401602060405180830381865afa158015611314573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061118d919061296c565b600060026001540361135c5760405162461bcd60e51b81526004016108149061289b565b6002600155428310156113a45760405162461bcd60e51b815260206004820152601060248201526f111958591b1a5b99481156141254915160821b6044820152606401610814565b336000818152600360205260409020548511156114035760405162461bcd60e51b815260206004820152601e60248201527f63616e6e6f742073656c6c2061626f766520746f6b656e20616d6f756e7400006044820152606401610814565b3060009081526003602052604081205461141e908790612959565b60105461142b9190612907565b600f546114389190612946565b905060006103e86006546103e861144f9190612946565b6114599084612884565b6114639190612907565b905060006114718284612946565b9050858310156114c35760405162461bcd60e51b815260206004820152601a60248201527f494e53554646494349454e54204f555450555420414d4f554e540000000000006044820152606401610814565b3360009081526005602052604081205460ff1661155b5760405163a9059cbb60e01b81523360048201526024810183905273cd682ef09d07668d49a8103ddd65ff54aebfbfde9063a9059cbb906044016020604051808303816000875af1158015611532573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115569190612929565b6115d7565b60405163a9059cbb60e01b81523360048201526024810185905273cd682ef09d07668d49a8103ddd65ff54aebfbfde9063a9059cbb906044016020604051808303816000875af11580156115b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115d79190612929565b90508061161c5760405162461bcd60e51b815260206004820152601360248201527214d491c81d1c985b9cd9995c8819985a5b1959606a1b6044820152606401610814565b6001600160a01b038516600090815260036020526040902054611640908a90612946565b6001600160a01b03861660009081526003602090815260408083209390935533825260059052205460ff166116825782600a5461167d9190612959565b611686565b600a545b600a55600f54611697908590612946565b600f55306000908152600360205260409020546116b5908a90612959565b3060009081526003602052604081209190915542906116d261124a565b6116dc9087612884565b905080601360008282546116f09190612959565b909155505060008281526012602052604081208054839290611713908490612959565b9250508190555060016014600082825461172d9190612959565b9091555050601454600090815260156020526040812083905561174e61124a565b611756611a2d565b6117609190612884565b600084815260166020526040812085815560010154919250036117d057601660006015600060016014546117949190612946565b81526020019081526020016000205481526020019081526020016000206002015460166000858152602001908152602001600020600101819055505b600083815260166020526040902060028101829055600301548111806118055750600083815260166020526040902060030154155b1561181f5760008381526016602052604090206003018190555b60008381526016602052604090206004015481108061184d5750600083815260166020526040902060040154155b156118675760008381526016602052604090206004018190555b6040518c815230906001600160a01b038a16906000805160206129868339815191529060200160405180910390a33360009081526005602052604090205460ff16156118f757604080518d815260208101899052908101839052339030907f9be8a5ca22b7e6e81f04b5879f0248227bb770114291bd47dfaee4c3a82ad60e9060600160405180910390a361194d565b33307f9be8a5ca22b7e6e81f04b5879f0248227bb770114291bd47dfaee4c3a82ad60e8e8861192461124a565b61192e908b612884565b6040805193845260208401929092529082015260600160405180910390a35b505060018080559a9950505050505050505050565b6002600154036119845760405162461bcd60e51b81526004016108149061289b565b60026001556000546001600160a01b031633146119b35760405162461bcd60e51b8152600401610814906128d2565b60115460ff1615611a195760405162461bcd60e51b815260206004820152602a60248201527f596f752063616e6e6f742064697361626c652074726164696e6720616674657260448201526920656e61626c696e672160b01b6064820152608401610814565b6011805460ff191660019081179091558055565b600080600f5411611a6f5760405162461bcd60e51b815260206004820152600c60248201526b4e6f204c697175696469747960a01b6044820152606401610814565b30600090815260036020526040902054600f54611a9590670de0b6b3a764000090612884565b6108f79190612907565b6000546001600160a01b03163314611ac95760405162461bcd60e51b8152600401610814906128d2565b6001600160a01b038116611b2e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610814565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314611bb35760405162461bcd60e51b8152600401610814906128d2565b6103e8611bc08284612959565b14611c185760405162461bcd60e51b815260206004820152602260248201527f53756d206f6620736861726573206d757374206265205348415245444956495360448201526127a960f11b6064820152608401610814565b600d91909155600e55565b6000546001600160a01b03163314611c4d5760405162461bcd60e51b8152600401610814906128d2565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6000600260015403611c9c5760405162461bcd60e51b81526004016108149061289b565b6002600155428210801590611ccc575060115460ff1680611ccc57503360009081526008602052604090205460ff165b611d275760405162461bcd60e51b815260206004820152602660248201527f446561646c696e652045585049524544206f72207472616465206973206e6f74604482015265206f70656e2160d01b6064820152608401610814565b3360009081526005602052604081205460ff16611d5e576103e860075486611d4f9190612884565b611d599190612907565b611d60565b845b90506000600f5482611d729190612959565b601054611d7f9190612907565b30600090815260036020526040902054611d999190612946565b6009543360009081526003602052604090205491925090611dbb908390612959565b111580611dd757503360009081526008602052604090205460ff165b611e195760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610814565b600181118015611e295750848110155b611e755760405162461bcd60e51b815260206004820152601a60248201527f494e53554646494349454e54204f555450555420414d4f554e540000000000006044820152606401610814565b6040516323b872dd60e01b81523360048201523060248201526044810187905260009073cd682ef09d07668d49a8103ddd65ff54aebfbfde906323b872dd906064016020604051808303816000875af1158015611ed6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611efa9190612929565b905080611f495760405162461bcd60e51b815260206004820152601760248201527f7472616e73666572206f6620535247206661696c6564210000000000000000006044820152606401610814565b611f533383612425565b6000611f5f8489612946565b905080600a6000828254611f739190612959565b9250508190555083600f6000828254611f8c9190612959565b909155504290506000611f9d61124a565b611fa7908b612884565b90508060136000828254611fbb9190612959565b909155505060008281526012602052604081208054839290611fde908490612959565b92505081905550600160146000828254611ff89190612959565b9091555050601454600090815260156020526040812083905561201961124a565b612021611a2d565b61202b9190612884565b60008481526016602052604081208581556001015491925003612100576014546001036120ad5761205a61124a565b6120666009600a612875565b612074906305f5e100612884565b88600f546120829190612946565b61208c9190612907565b6120969190612884565b600084815260166020526040902060010155612100565b601660006015600060016014546120c49190612946565b81526020019081526020016000205481526020019081526020016000206002015460166000858152602001908152602001600020600101819055505b600083815260166020526040902060028101829055600301548111806121355750600083815260166020526040902060030154155b1561214f5760008381526016602052604090206003018190555b60008381526016602052604090206004015481108061217d5750600083815260166020526040902060040154155b156121975760008381526016602052604090206004018190555b604051868152339030906000805160206129868339815191529060200160405180910390a330337f7ce543d1780f3bdc3dac42da06c95da802653cd1b212b8d74ec3e3c33ad7095c888e6121e961124a565b6121f3908d612884565b6040805193845260208401929092529082015260600160405180910390a3505060018080559998505050505050505050565b6001600160a01b0380841660009081526004602090815260408083209386168352929052205460001981146122b157818110156122a45760405162461bcd60e51b815260206004820152601d60248201527f53524732303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610814565b6122b1848484840361248a565b50505050565b6000306001600160a01b038416036122ff5760405162461bcd60e51b815260206004820152600b60248201526a21b0902a3930b739b332b960a91b6044820152606401610814565b6000821161233d5760405162461bcd60e51b815260206004820152600b60248201526a16995c9bc8185b5bdd5b9d60aa1b6044820152606401610814565b6001600160a01b03831660009081526008602052604090205460ff168061238957506009546001600160a01b038416600090815260036020526040902054612386908490612959565b11155b6123c35760405162461bcd60e51b815260206004820152600b60248201526a4d61782077616c6c65742160a81b6044820152606401610814565b6001600160a01b0380851660008181526003602052604080822080548790039055928616808252908390208054860190559151600080516020612986833981519152906124139086815260200190565b60405180910390a35060019392505050565b6001600160a01b038216600090815260036020526040902054612449908290612959565b6001600160a01b038316600090815260036020526040808220929092553081522054612476908290612946565b306000908152600360205260409020555050565b6001600160a01b0383166124ec5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610814565b6001600160a01b03821661254d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610814565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600060208083528351808285015260005b818110156125db578581018301518582016040015282016125bf565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461261357600080fd5b919050565b6000806040838503121561262b57600080fd5b612634836125fc565b946020939093013593505050565b60006020828403121561265457600080fd5b611243826125fc565b6000806040838503121561267057600080fd5b612679836125fc565b9150612687602084016125fc565b90509250929050565b600080604083850312156126a357600080fd5b50508035926020909101359150565b6000806000606084860312156126c757600080fd5b6126d0846125fc565b92506126de602085016125fc565b9150604084013590509250925092565b60006020828403121561270057600080fd5b5035919050565b801515811461271557600080fd5b50565b6000806040838503121561272b57600080fd5b612734836125fc565b9150602083013561274481612707565b809150509250929050565b60008060006060848603121561276457600080fd5b505081359360208301359350604090920135919050565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156127cc5781600019048211156127b2576127b261277b565b808516156127bf57918102915b93841c9390800290612796565b509250929050565b6000826127e3575060016108d5565b816127f0575060006108d5565b816001811461280657600281146128105761282c565b60019150506108d5565b60ff8411156128215761282161277b565b50506001821b6108d5565b5060208310610133831016604e8410600b841016171561284f575081810a6108d5565b6128598383612791565b806000190482111561286d5761286d61277b565b029392505050565b600061124360ff8416836127d4565b80820281158282048414176108d5576108d561277b565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60008261292457634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561293b57600080fd5b815161124381612707565b818103818111156108d5576108d561277b565b808201808211156108d5576108d561277b565b60006020828403121561297e57600080fd5b505191905056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212203f5d0476db4798340925b0c667365ae5ef92e2c97b66cdefb4e2521c2cd2686d64736f6c63430008130033

Deployed Bytecode Sourcemap

2778:18341:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6461:83;6531:5;;;;;;;;;;;;-1:-1:-1;;;6531:5:0;;;;6461:83;;;;;;;:::i;:::-;;;;;;;;17002:89;17074:9;;17002:89;;;713:25:1;;;701:2;686:18;17002:89:0;567:177:1;6738:450:0;;;;;;:::i;:::-;;:::i;:::-;;;1351:14:1;;1344:22;1326:41;;1314:2;1299:18;6738:450:0;1186:187:1;6028:102:0;;;:::i;5000:51::-;;;;;;18565:513;;;:::i;:::-;;17166:202;;;;;;:::i;:::-;;:::i;18180:377::-;;;;;;:::i;:::-;;:::i;17376:435::-;;;;;;:::i;:::-;;:::i;8295:335::-;;;;;;:::i;:::-;;:::i;5115:29::-;;;;;;;;;7326:118;;;:::i;6647:83::-;;;3512:1;2562:36:1;;2550:2;2535:18;6647:83:0;2420:184:1;4303:38:0;;4337:4;4303:38;;3957:61;;;:::i;4184:43::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;4639:74;;;;;-1:-1:-1;;;;;4639:74:0;;;;;;-1:-1:-1;;;;;2773:32:1;;;2755:51;;2743:2;2728:18;4639:74:0;2609:203:1;5178:39:0;;;;;;:::i;:::-;;;;;;;;;;;;;;19652:675;;;;;;:::i;:::-;;:::i;7196:122::-;;;;;;:::i;:::-;;:::i;4562:70::-;;;;;-1:-1:-1;;;;;4562:70:0;;;5224:30;;;;;;4044:44;;;;;;:::i;:::-;;;;;;;;;;;;;;6138:119;;;;;;:::i;:::-;-1:-1:-1;;;;;6231:18:0;6204:7;6231:18;;;:9;:18;;;;;;;6138:119;19086:287;;;;;;:::i;:::-;;:::i;2334:148::-;;;:::i;5334:22::-;;;;;;4777:34;;;;;;7452:284;;;;;;:::i;:::-;;:::i;4378:47::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;2120:79;2158:7;2185:6;-1:-1:-1;;;;;2185:6:0;2120:79;;20335:141;;;:::i;6552:87::-;6624:7;;;;;;;;;;;;-1:-1:-1;;;6624:7:0;;;;6552:87;;4234:28;;;;;;4269:27;;;;;;19381:263;;;;;;:::i;:::-;;:::i;7744:122::-;;;;;;:::i;:::-;;:::i;5568:54::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3704:25:1;;;3760:2;3745:18;;3738:34;;;;3788:18;;;3781:34;;;;3846:2;3831:18;;3824:34;3889:3;3874:19;;3867:35;3691:3;3676:19;5568:54:0;3445:463:1;8065:188:0;;;;;;:::i;:::-;;:::i;4505:29::-;;;;;;20532:171;;;:::i;13753:3197::-;;;;;;:::i;:::-;;:::i;20950:166::-;;;:::i;20765:177::-;;;:::i;5287:40::-;;5321:6;5287:40;;6265:188;;;;;;:::i;:::-;-1:-1:-1;;;;;6417:19:0;;;6385:7;6417:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;6265:188;4432:42;;;;;;5058:50;;;;;;4740:30;;;;;;2490:281;;;;;;:::i;:::-;;:::i;17819:353::-;;;;;;:::i;:::-;;:::i;5363:46::-;;;;;;:::i;:::-;;;;;;;;;;;;;;7874:153;;;;;;:::i;:::-;;:::i;10432:2989::-;;;;;;:::i;:::-;;:::i;6738:450::-;6840:4;-1:-1:-1;;;;;6870:21:0;;6862:68;;;;-1:-1:-1;;;6862:68:0;;4436:2:1;6862:68:0;;;4418:21:1;4475:2;4455:18;;;4448:30;4514:34;4494:18;;;4487:62;-1:-1:-1;;;4565:18:1;;;4558:32;4607:19;;6862:68:0;;;;;;;;;6963:10;6941:110;;;;-1:-1:-1;;;6941:110:0;;4839:2:1;6941:110:0;;;4821:21:1;4878:2;4858:18;;;4851:30;4917:34;4897:18;;;4890:62;-1:-1:-1;;;4968:18:1;;;4961:34;5012:19;;6941:110:0;4637:400:1;6941:110:0;7076:10;7064:23;;;;:11;:23;;;;;;;;-1:-1:-1;;;;;7064:32:0;;;;;;;;;;;;:41;;;7121:37;713:25:1;;;7064:32:0;;7076:10;7121:37;;686:18:1;7121:37:0;;;;;;;-1:-1:-1;7176:4:0;6738:450;;;;;:::o;6028:102::-;6083:7;3562:13;3512:1;3562:2;:13;:::i;:::-;3996:22;;:5;:22;:::i;:::-;6103:19;;6028:102;:::o;18565:513::-;321:1;467:7;;:19;459:63;;;;-1:-1:-1;;;459:63:0;;;;;;;:::i;:::-;321:1;533:7;:18;2247:6:::1;::::0;-1:-1:-1;;;;;2247:6:0::1;1750:10:::0;2247:22:::1;2239:67;;;;-1:-1:-1::0;;;2239:67:0::1;;;;;;;:::i;:::-;18651:9:::2;::::0;:11;18648:184:::2;;18716:10;::::0;18755:9:::2;::::0;18742:10:::2;::::0;18674::::2;::::0;3636:42:::2;::::0;18687:14:::2;::::0;-1:-1:-1;;;;;18716:10:0;;::::2;::::0;4857:4:::2;::::0;18742:22:::2;::::0;::::2;:::i;:::-;18741:39;;;;:::i;:::-;18687:104;::::0;-1:-1:-1;;;;;;18687:104:0::2;::::0;;;;;;-1:-1:-1;;;;;7865:32:1;;;18687:104:0::2;::::0;::::2;7847:51:1::0;7914:18;;;7907:34;7820:18;;18687:104:0::2;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18674:117;;18814:5;18806:14;;;::::0;::::2;;18663:169;18648:184;18847:13;::::0;:15;18844:202:::2;;18916:14;::::0;18959:13:::2;::::0;18946:10:::2;::::0;18874::::2;::::0;3636:42:::2;::::0;18887:14:::2;::::0;-1:-1:-1;;;;;18916:14:0;;::::2;::::0;4857:4:::2;::::0;18946:26:::2;::::0;::::2;:::i;:::-;18945:43;;;;:::i;:::-;18887:112;::::0;-1:-1:-1;;;;;;18887:112:0::2;::::0;;;;;;-1:-1:-1;;;;;7865:32:1;;;18887:112:0::2;::::0;::::2;7847:51:1::0;7914:18;;;7907:34;7820:18;;18887:112:0::2;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18874:125;;19018:5;19010:14;;;::::0;::::2;;18863:183;18844:202;19069:1;19056:10;:14:::0;277:1;574:22;;18565:513::o;17166:202::-;17231:7;17347:13;:11;:13::i;:::-;17324:4;17306:24;;;;:9;:24;;;;;;;17293:9;;-1:-1:-1;;;;;17273:17:0;;;;;;;;;:29;;17293:9;17273:29;:::i;:::-;17272:58;;;;:::i;:::-;17271:89;;;;:::i;18180:377::-;2247:6;;-1:-1:-1;;;;;2247:6:0;1750:10;2247:22;2239:67;;;;-1:-1:-1;;;2239:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18335:27:0;::::1;::::0;;::::1;::::0;:62:::1;;-1:-1:-1::0;;;;;;18366:31:0;::::1;::::0;::::1;18335:62;18313:152;;;::::0;-1:-1:-1;;;18313:152:0;;8404:2:1;18313:152:0::1;::::0;::::1;8386:21:1::0;8443:2;8423:18;;;8416:30;8482:34;8462:18;;;8455:62;-1:-1:-1;;;8533:18:1;;;8526:38;8581:19;;18313:152:0::1;8202:404:1::0;18313:152:0::1;18478:10;:26:::0;;-1:-1:-1;;;;;18478:26:0;;::::1;-1:-1:-1::0;;;;;;18478:26:0;;::::1;;::::0;;;18515:14:::1;:34:::0;;;;;::::1;::::0;::::1;;::::0;;18180:377::o;17376:435::-;2247:6;;-1:-1:-1;;;;;2247:6:0;1750:10;2247:22;2239:67;;;;-1:-1:-1;;;2239:67:0;;;;;;;:::i;:::-;17523:3:::1;17510:9;:16;;:54;;;;;17561:3;17547:10;:17;;17510:54;:92;;;;;17598:4;17585:9;:17;;17510:92;:131;;;;;17637:4;17623:10;:18;;17510:131;17488:198;;;::::0;-1:-1:-1;;;17488:198:0;;8813:2:1;17488:198:0::1;::::0;::::1;8795:21:1::0;8852:2;8832:18;;;8825:30;-1:-1:-1;;;8871:18:1;;;8864:47;8928:18;;17488:198:0::1;8611:341:1::0;17488:198:0::1;17699:6;:18:::0;;;17728:7:::1;:20:::0;;;17766:37:::1;::::0;;9131:25:1;;;9187:2;9172:18;;9165:34;;;17766:37:0::1;::::0;9104:18:1;17766:37:0::1;;;;;;;17376:435:::0;;:::o;8295:335::-;8429:4;8464:10;8524:40;8540:6;8464:10;8557:6;8524:15;:40::i;:::-;8582;8596:6;8604:9;8615:6;8582:13;:40::i;:::-;8575:47;8295:335;-1:-1:-1;;;;;8295:335:0:o;7326:118::-;4923:42;7379:7;7421:15;;;:9;:15;;;;3562:13;3512:1;3562:2;:13;:::i;:::-;3996:22;;:5;:22;:::i;:::-;7406:30;;;;:::i;3957:61::-;3562:13;3512:1;3562:2;:13;:::i;:::-;3996:22;;:5;:22;:::i;:::-;3957:61;:::o;19652:675::-;2247:6;;-1:-1:-1;;;;;2247:6:0;1750:10;2247:22;2239:67;;;;-1:-1:-1;;;2239:67:0;;;;;;;:::i;:::-;19805:9:::1;::::0;19767:4:::1;19726:19;19749:24:::0;;;:9:::1;:24;::::0;;;;;19726:19;;19805:9;19749:39:::1;::::0;19776:12;;19749:39:::1;:::i;:::-;19748:66;;;;:::i;:::-;19843:10;19833:21;::::0;;;:9:::1;:21;::::0;;;;;19726:88;;-1:-1:-1;19833:36:0;-1:-1:-1;19833:36:0::1;19825:67;;;::::0;-1:-1:-1;;;19825:67:0;;9545:2:1;19825:67:0::1;::::0;::::1;9527:21:1::0;9584:2;9564:18;;;9557:30;-1:-1:-1;;;9603:18:1;;;9596:48;9661:18;;19825:67:0::1;9343:342:1::0;19825:67:0::1;19917:43;::::0;-1:-1:-1;;;19917:43:0;;19940:4:::1;19917:43;::::0;::::1;7847:51:1::0;7914:18;;;7907:34;;;19905:9:0::1;::::0;3636:42:::1;::::0;19917:14:::1;::::0;7820:18:1;;19917:43:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19905:55;;19979:4;19971:46;;;::::0;-1:-1:-1;;;19971:46:0;;9892:2:1;19971:46:0::1;::::0;::::1;9874:21:1::0;9931:2;9911:18;;;9904:30;9970:31;9950:18;;;9943:59;10019:18;;19971:46:0::1;9690:353:1::0;19971:46:0::1;20047:9;::::0;20079:24:::1;20091:12:::0;20047:9;20079:24:::1;:::i;:::-;20067:9;:36:::0;20132:4:::1;20114:24;::::0;;;:9:::1;:24;::::0;;;;:39;;20142:11;;20114:24;:39:::1;::::0;20142:11;;20114:39:::1;:::i;:::-;::::0;;;-1:-1:-1;;20174:10:0::1;20164:21;::::0;;;:9:::1;:21;::::0;;;;:36;;20189:11;;20164:21;:36:::1;::::0;20189:11;;20164:36:::1;:::i;:::-;::::0;;;-1:-1:-1;;20234:9:0::1;::::0;20223:8:::1;::::0;20247:6;;20223:20:::1;::::0;::::1;:::i;:::-;20222:31;;;;:::i;:::-;20211:8;:42:::0;20271:48:::1;::::0;713:25:1;;;20300:4:0::1;::::0;20280:10:::1;::::0;-1:-1:-1;;;;;;;;;;;20271:48:0;701:2:1;686:18;20271:48:0::1;;;;;;;19715:612;;;19652:675:::0;:::o;7196:122::-;7251:4;7275:35;7283:7;-1:-1:-1;;7275:7:0;:35::i;19086:287::-;19184:7;19209:19;19255:11;19243:9;;:23;;;;:::i;:::-;19231:8;;:36;;;;:::i;:::-;19209:58;;19278:20;19312:9;;19301:8;;:20;;;;:::i;:::-;19278:43;-1:-1:-1;19339:26:0;19278:43;19339:11;:26;:::i;:::-;19332:33;19086:287;-1:-1:-1;;;;19086:287:0:o;2334:148::-;2247:6;;-1:-1:-1;;;;;2247:6:0;1750:10;2247:22;2239:67;;;;-1:-1:-1;;;2239:67:0;;;;;;;:::i;:::-;2441:1:::1;2425:6:::0;;2404:40:::1;::::0;-1:-1:-1;;;;;2425:6:0;;::::1;::::0;2404:40:::1;::::0;2441:1;;2404:40:::1;2472:1;2455:19:::0;;-1:-1:-1;;;;;;2455:19:0::1;::::0;;2334:148::o;7452:284::-;2247:6;;-1:-1:-1;;;;;2247:6:0;1750:10;2247:22;2239:67;;;;-1:-1:-1;;;2239:67:0;;;;;;;:::i;:::-;7576:3:::1;3562:13;3512:1;3562:2;:13;:::i;:::-;3996:22;::::0;:5:::1;:22;:::i;:::-;7561:18;;;;:::i;:::-;7549:8;:30;;7527:134;;;::::0;-1:-1:-1;;;7527:134:0;;10380:2:1;7527:134:0::1;::::0;::::1;10362:21:1::0;10419:2;10399:18;;;10392:30;10458:34;10438:18;;;10431:62;-1:-1:-1;;;10509:18:1;;;10502:52;10571:19;;7527:134:0::1;10178:418:1::0;7527:134:0::1;7672:6;:17:::0;;;7705:23:::1;::::0;713:25:1;;;7705:23:0::1;::::0;701:2:1;686:18;7705:23:0::1;;;;;;;7452:284:::0;:::o;20335:141::-;20382:7;20454:13;:11;:13::i;:::-;20435:16;:14;:16::i;:::-;20410:22;:20;:22::i;:::-;:41;;;;:::i;:::-;:57;;;;:::i;19381:263::-;19514:4;19445:7;19496:24;;;:9;:24;;;;;;19485:8;;19445:7;;19485:35;;;:::i;:::-;19580:4;19531:16;19562:24;;;:9;:24;;;;;;19465:55;;-1:-1:-1;19531:16:0;19562:35;;19589:8;;19562:35;:::i;:::-;19550:8;;:48;;;;:::i;7744:122::-;2247:6;;-1:-1:-1;;;;;2247:6:0;1750:10;2247:22;2239:67;;;;-1:-1:-1;;;2239:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7830:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;7830:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;7744:122::o;8065:188::-;8172:4;8201:44;8215:10;8227:9;8238:6;8201:13;:44::i;:::-;8194:51;8065:188;-1:-1:-1;;;8065:188:0:o;20532:171::-;20576:7;3636:42;-1:-1:-1;;;;;20628:16:0;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3636:42;-1:-1:-1;;;;;20604:19:0;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;13753:3197::-;13889:4;321:1;467:7;;:19;459:63;;;;-1:-1:-1;;;459:63:0;;;;;;;:::i;:::-;321:1;533:7;:18;13959:15:::1;13947:27:::0;::::1;;13939:56;;;::::0;-1:-1:-1;;;13939:56:0;;10992:2:1;13939:56:0::1;::::0;::::1;10974:21:1::0;11031:2;11011:18;;;11004:30;-1:-1:-1;;;11050:18:1;;;11043:46;11106:18;;13939:56:0::1;10790:340:1::0;13939:56:0::1;14025:10;14008:14;14116:17:::0;;;:9:::1;:17;::::0;;;;;:32;-1:-1:-1;14116:32:0::1;14094:112;;;::::0;-1:-1:-1;;;14094:112:0;;11337:2:1;14094:112:0::1;::::0;::::1;11319:21:1::0;11376:2;11356:18;;;11349:30;11415:32;11395:18;;;11388:60;11465:18;;14094:112:0::1;11135:354:1::0;14094:112:0::1;14347:4;14271:17;14329:24:::0;;;:9:::1;:24;::::0;;;;;:38:::1;::::0;14356:11;;14329:38:::1;:::i;:::-;14317:8;;:51;;;;:::i;:::-;14291:9;;:78;;;;:::i;:::-;14271:98;;14380:17;4337:4;14424:7;;4337:4;14414:17;;;;:::i;:::-;14401:31;::::0;:9;:31:::1;:::i;:::-;14400:43;;;;:::i;:::-;14380:63:::0;-1:-1:-1;14454:17:0::1;14474:21;14380:63:::0;14474:9;:21:::1;:::i;:::-;14454:41;;14556:9;14543;:22;;14535:61;;;::::0;-1:-1:-1;;;14535:61:0;;11696:2:1;14535:61:0::1;::::0;::::1;11678:21:1::0;11735:2;11715:18;;;11708:30;11774:28;11754:18;;;11747:56;11820:18;;14535:61:0::1;11494:350:1::0;14535:61:0::1;14672:10;14642:15;14660:23:::0;;;:11:::1;:23;::::0;;;;;::::1;;:129;;14752:37;::::0;-1:-1:-1;;;14752:37:0;;14767:10:::1;14752:37;::::0;::::1;7847:51:1::0;7914:18;;;7907:34;;;3636:42:0::1;::::0;14752:14:::1;::::0;7820:18:1;;14752:37:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14660:129;;;14699:37;::::0;-1:-1:-1;;;14699:37:0;;14714:10:::1;14699:37;::::0;::::1;7847:51:1::0;7914:18;;;7907:34;;;3636:42:0::1;::::0;14699:14:::1;::::0;7820:18:1;;14699:37:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14642:147;;14808:10;14800:42;;;::::0;-1:-1:-1;;;14800:42:0;;12051:2:1;14800:42:0::1;::::0;::::1;12033:21:1::0;12090:2;12070:18;;;12063:30;-1:-1:-1;;;12109:18:1;;;12102:49;12168:18;;14800:42:0::1;11849:343:1::0;14800:42:0::1;-1:-1:-1::0;;;;;14920:17:0;::::1;;::::0;;;:9:::1;:17;::::0;;;;;:31:::1;::::0;14940:11;;14920:31:::1;:::i;:::-;-1:-1:-1::0;;;;;14900:17:0;::::1;;::::0;;;:9:::1;:17;::::0;;;;;;;:51;;;;15094:10:::1;15082:23:::0;;:11:::1;:23:::0;;;;::::1;;:87;;15160:9;15147:10;;:22;;;;:::i;:::-;15082:87;;;15121:10;;15082:87;15069:10;:100:::0;15192:9:::1;::::0;:21:::1;::::0;15204:9;;15192:21:::1;:::i;:::-;15180:9;:33:::0;15317:4:::1;15299:24;::::0;;;:9:::1;:24;::::0;;;;;:38:::1;::::0;15326:11;;15299:38:::1;:::i;:::-;15290:4;15272:24;::::0;;;:9:::1;:24;::::0;;;;:65;;;;15391:15:::1;::::0;15450:13:::1;:11;:13::i;:::-;15438:25;::::0;:9;:25:::1;:::i;:::-;15417:46;;15489:10;15474:11;;:25;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;15510:11:0::1;::::0;;;:4:::1;:11;::::0;;;;:25;;15525:10;;15510:11;:25:::1;::::0;15525:10;;15510:25:::1;:::i;:::-;;;;;;;;15593:1;15582:7;;:12;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;15617:7:0::1;::::0;15605:20:::1;::::0;;;:11:::1;:20;::::0;;;;:28;;;15680:13:::1;:11;:13::i;:::-;15661:16;:14;:16::i;:::-;:32;;;;:::i;:::-;15704:22;::::0;;;:15:::1;:22;::::0;;;;:35;;;15754:27:::1;;::::0;15644:49;;-1:-1:-1;15754:32:0;15750:174:::1;;15833:15;:73;15867:11;:24;15889:1;15879:7;;:11;;;;:::i;:::-;15867:24;;;;;;;;;;;;15833:73;;;;;;;;;;;:79;;;15803:15;:22;15819:5;15803:22;;;;;;;;;;;:27;;:109;;;;15750:174;15934:22;::::0;;;:15:::1;:22;::::0;;;;:28:::1;::::0;::::1;:37:::0;;;16002:27:::1;;::::0;:36;-1:-1:-1;16002:36:0;:85:::1;;-1:-1:-1::0;16055:22:0::1;::::0;;;:15:::1;:22;::::0;;;;:27:::1;;::::0;:32;16002:85:::1;15984:178;;;16114:22;::::0;;;:15:::1;:22;::::0;;;;:27:::1;;:36:::0;;;15984:178:::1;16192:22;::::0;;;:15:::1;:22;::::0;;;;:26:::1;;::::0;:35;-1:-1:-1;16192:35:0;:83:::1;;-1:-1:-1::0;16244:22:0::1;::::0;;;:15:::1;:22;::::0;;;;:26:::1;;::::0;:31;16192:83:::1;16174:175;;;16302:22;::::0;;;:15:::1;:22;::::0;;;;:26:::1;;:35:::0;;;16174:175:::1;16408:44;::::0;713:25:1;;;16433:4:0::1;::::0;-1:-1:-1;;;;;16408:44:0;::::1;::::0;-1:-1:-1;;;;;;;;;;;16408:44:0;701:2:1;686:18;16408:44:0::1;;;;;;;16479:10;16467:23;::::0;;;:11:::1;:23;::::0;;;;;::::1;;16463:448;;;16512:167;::::0;;12399:25:1;;;12455:2;12440:18;;12433:34;;;12483:18;;;12476:34;;;16567:10:0::1;::::0;16543:4:::1;::::0;16512:167:::1;::::0;12387:2:1;12372:18;16512:167:0::1;;;;;;;16463:448;;;16772:10;16748:4;16717:182;16801:11:::0;16831:9;16871:13:::1;:11;:13::i;:::-;16859:25;::::0;:9;:25:::1;:::i;:::-;16717:182;::::0;;12399:25:1;;;12455:2;12440:18;;12433:34;;;;12483:18;;;12476:34;12387:2;12372:18;16717:182:0::1;;;;;;;16463:448;-1:-1:-1::0;;16938:4:0::1;574:22:::0;;;16938:4;13753:3197;-1:-1:-1;;;;;;;;;;13753:3197:0:o;20950:166::-;321:1;467:7;;:19;459:63;;;;-1:-1:-1;;;459:63:0;;;;;;;:::i;:::-;321:1;533:7;:18;2247:6:::1;::::0;-1:-1:-1;;;;;2247:6:0::1;1750:10:::0;2247:22:::1;2239:67;;;;-1:-1:-1::0;;;2239:67:0::1;;;;;;;:::i;:::-;21025:9:::2;::::0;::::2;;21024:10;21016:65;;;::::0;-1:-1:-1;;;21016:65:0;;12723:2:1;21016:65:0::2;::::0;::::2;12705:21:1::0;12762:2;12742:18;;;12735:30;12801:34;12781:18;;;12774:62;-1:-1:-1;;;12852:18:1;;;12845:40;12902:19;;21016:65:0::2;12521:406:1::0;21016:65:0::2;21092:9;:16:::0;;-1:-1:-1;;21092:16:0::2;21104:4;21092:16:::0;;::::2;::::0;;;574:22;;20950:166::o;20765:177::-;20812:7;20852:1;20840:9;;:13;20832:38;;;;-1:-1:-1;;;20832:38:0;;13134:2:1;20832:38:0;;;13116:21:1;13173:2;13153:18;;;13146:30;-1:-1:-1;;;13192:18:1;;;13185:42;13244:18;;20832:38:0;12932:336:1;20832:38:0;20928:4;20910:24;;;;:9;:24;;;;;;20888:9;;:19;;5321:6;;20888:19;:::i;:::-;:46;;;;:::i;2490:281::-;2247:6;;-1:-1:-1;;;;;2247:6:0;1750:10;2247:22;2239:67;;;;-1:-1:-1;;;2239:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2593:22:0;::::1;2571:110;;;::::0;-1:-1:-1;;;2571:110:0;;13475:2:1;2571:110:0::1;::::0;::::1;13457:21:1::0;13514:2;13494:18;;;13487:30;13553:34;13533:18;;;13526:62;-1:-1:-1;;;13604:18:1;;;13597:36;13650:19;;2571:110:0::1;13273:402:1::0;2571:110:0::1;2718:6;::::0;;2697:38:::1;::::0;-1:-1:-1;;;;;2697:38:0;;::::1;::::0;2718:6;::::1;::::0;2697:38:::1;::::0;::::1;2746:6;:17:::0;;-1:-1:-1;;;;;;2746:17:0::1;-1:-1:-1::0;;;;;2746:17:0;;;::::1;::::0;;;::::1;::::0;;2490:281::o;17819:353::-;2247:6;;-1:-1:-1;;;;;2247:6:0;1750:10;2247:22;2239:67;;;;-1:-1:-1;;;2239:67:0;;;;;;;:::i;:::-;4857:4:::1;17975:31;17990:16:::0;17975:12;:31:::1;:::i;:::-;:47;17953:131;;;::::0;-1:-1:-1;;;17953:131:0;;13882:2:1;17953:131:0::1;::::0;::::1;13864:21:1::0;13921:2;13901:18;;;13894:30;13960:34;13940:18;;;13933:62;-1:-1:-1;;;14011:18:1;;;14004:32;14053:19;;17953:131:0::1;13680:398:1::0;17953:131:0::1;18097:9;:24:::0;;;;18132:13:::1;:32:::0;17819:353::o;7874:153::-;2247:6;;-1:-1:-1;;;;;2247:6:0;1750:10;2247:22;2239:67;;;;-1:-1:-1;;;2239:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7987:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;7987:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;7874:153::o;10432:2989::-;10567:4;321:1;467:7;;:19;459:63;;;;-1:-1:-1;;;459:63:0;;;;;;;:::i;:::-;321:1;533:7;:18;10637:15:::1;10625:27:::0;::::1;::::0;::::1;::::0;:89:::1;;-1:-1:-1::0;10657:9:0::1;::::0;::::1;;::::0;:56:::1;;-1:-1:-1::0;10702:10:0::1;10686:27;::::0;;;:15:::1;:27;::::0;;;;;::::1;;10657:56;10617:140;;;::::0;-1:-1:-1;;;10617:140:0;;14285:2:1;10617:140:0::1;::::0;::::1;14267:21:1::0;14324:2;14304:18;;;14297:30;14363:34;14343:18;;;14336:62;-1:-1:-1;;;14414:18:1;;;14407:36;14460:19;;10617:140:0::1;14083:402:1::0;10617:140:0::1;10832:10;10800:17;10820:23:::0;;;:11:::1;:23;::::0;;;;;::::1;;:94;;4337:4;10897:6;;10885:9;:18;;;;:::i;:::-;10884:30;;;;:::i;:::-;10820:94;;;10859:9;10820:94;10800:114;;10970:20;11058:9;;11046;:21;;;;:::i;:::-;11034:8;;:34;;;;:::i;:::-;11011:4;10993:24;::::0;;;:9:::1;:24;::::0;;;;;:76:::1;::::0;;::::1;:::i;:::-;11174:6;::::0;11144:10:::1;11134:21;::::0;;;:9:::1;:21;::::0;;;;;10970:99;;-1:-1:-1;11174:6:0;11134:36:::1;::::0;10970:99;;11134:36:::1;:::i;:::-;:46;;:94;;;-1:-1:-1::0;11217:10:0::1;11201:27;::::0;;;:15:::1;:27;::::0;;;;;::::1;;11134:94;11112:163;;;::::0;-1:-1:-1;;;11112:163:0;;14692:2:1;11112:163:0::1;::::0;::::1;14674:21:1::0;14731:2;14711:18;;;14704:30;-1:-1:-1;;;14750:18:1;;;14743:49;14809:18;;11112:163:0::1;14490:343:1::0;11112:163:0::1;11341:1;11326:12;:16;:47;;;;;11362:11;11346:12;:27;;11326:47;11318:86;;;::::0;-1:-1:-1;;;11318:86:0;;11696:2:1;11318:86:0::1;::::0;::::1;11678:21:1::0;11735:2;11715:18;;;11708:30;11774:28;11754:18;;;11747:56;11820:18;;11318:86:0::1;11494:350:1::0;11318:86:0::1;11487:56;::::0;-1:-1:-1;;;11487:56:0;;11506:10:::1;11487:56;::::0;::::1;15078:34:1::0;11526:4:0::1;15128:18:1::0;;;15121:43;15180:18;;;15173:34;;;11478:6:0::1;::::0;3636:42:::1;::::0;11487:18:::1;::::0;15013::1;;11487:56:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11478:65;;11564:1;11556:37;;;::::0;-1:-1:-1;;;11556:37:0;;15420:2:1;11556:37:0::1;::::0;::::1;15402:21:1::0;15459:2;15439:18;;;15432:30;15498:25;15478:18;;;15471:53;15541:18;;11556:37:0::1;15218:347:1::0;11556:37:0::1;11659:29;11663:10;11675:12;11659:3;:29::i;:::-;11760:17;11780:21;11792:9:::0;11780;:21:::1;:::i;:::-;11760:41;;11826:9;11812:10;;:23;;;;;;;:::i;:::-;;;;;;;;11859:9;11846;;:22;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;11922:15:0::1;::::0;-1:-1:-1;11906:13:0::1;11980;:11;:13::i;:::-;11968:25;::::0;:9;:25:::1;:::i;:::-;11948:45;;12019:9;12004:11;;:24;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;12039:11:0::1;::::0;;;:4:::1;:11;::::0;;;;:24;;12054:9;;12039:11;:24:::1;::::0;12054:9;;12039:24:::1;:::i;:::-;;;;;;;;12121:1;12110:7;;:12;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;12145:7:0::1;::::0;12133:20:::1;::::0;;;:11:::1;:20;::::0;;;;:28;;;12208:13:::1;:11;:13::i;:::-;12189:16;:14;:16::i;:::-;:32;;;;:::i;:::-;12232:22;::::0;;;:15:::1;:22;::::0;;;;:35;;;12282:27:::1;;::::0;12172:49;;-1:-1:-1;12282:32:0;12278:405:::1;;12335:7;;12346:1;12335:12:::0;12331:341:::1;;12485:13;:11;:13::i;:::-;3562;3512:1;3562:2;:13;:::i;:::-;3996:22;::::0;:5:::1;:22;:::i;:::-;12433:9;12421;;:21;;;;:::i;:::-;12420:40;;;;:::i;:::-;12419:79;;;;:::i;:::-;12368:22;::::0;;;:15:::1;:22;::::0;;;;:27:::1;;:130:::0;12331:341:::1;;;12569:15;:81;12607:11;:24;12629:1;12619:7;;:11;;;;:::i;:::-;12607:24;;;;;;;;;;;;12569:81;;;;;;;;;;;:87;;;12539:15;:22;12555:5;12539:22;;;;;;;;;;;:27;;:117;;;;12331:341;12693:22;::::0;;;:15:::1;:22;::::0;;;;:28:::1;::::0;::::1;:37:::0;;;12761:27:::1;;::::0;:36;-1:-1:-1;12761:36:0;:85:::1;;-1:-1:-1::0;12814:22:0::1;::::0;;;:15:::1;:22;::::0;;;;:27:::1;;::::0;:32;12761:85:::1;12743:178;;;12873:22;::::0;;;:15:::1;:22;::::0;;;;:27:::1;;:36:::0;;;12743:178:::1;12951:22;::::0;;;:15:::1;:22;::::0;;;;:26:::1;;::::0;:35;-1:-1:-1;12951:35:0;:83:::1;;-1:-1:-1::0;13003:22:0::1;::::0;;;:15:::1;:22;::::0;;;;:26:::1;;::::0;:31;12951:83:::1;12933:175;;;13061:22;::::0;;;:15:::1;:22;::::0;;;;:26:::1;;:35:::0;;;12933:175:::1;13165:49;::::0;713:25:1;;;13189:10:0::1;::::0;13182:4:::1;::::0;-1:-1:-1;;;;;;;;;;;13165:49:0;701:2:1;686:18;13165:49:0::1;;;;;;;13284:4;13251:10;13230:161;13304:12:::0;13331:9;13367:13:::1;:11;:13::i;:::-;13355:25;::::0;:9;:25:::1;:::i;:::-;13230:161;::::0;;12399:25:1;;;12455:2;12440:18;;12433:34;;;;12483:18;;;12476:34;12387:2;12372:18;13230:161:0::1;;;;;;;-1:-1:-1::0;;13409:4:0::1;574:22:::0;;;13409:4;10432:2989;-1:-1:-1;;;;;;;;;10432:2989:0:o;9419:545::-;-1:-1:-1;;;;;9581:18:0;;;9554:24;9581:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;-1:-1:-1;;9623:37:0;;9619:338;;9723:6;9703:16;:26;;9677:117;;;;-1:-1:-1;;;9677:117:0;;15772:2:1;9677:117:0;;;15754:21:1;15811:2;15791:18;;;15784:30;15850:31;15830:18;;;15823:59;15899:18;;9677:117:0;15570:353:1;9677:117:0;9879:51;9888:5;9895:7;9923:6;9904:16;:25;9879:8;:51::i;:::-;9543:421;9419:545;;;:::o;8668:743::-;8794:4;8888;-1:-1:-1;;;;;8867:26:0;;;8844:88;;;;-1:-1:-1;;;8844:88:0;;16130:2:1;8844:88:0;;;16112:21:1;16169:2;16149:18;;;16142:30;-1:-1:-1;;;16188:18:1;;;16181:41;16239:18;;8844:88:0;15928:335:1;8844:88:0;8960:1;8951:6;:10;8943:34;;;;-1:-1:-1;;;8943:34:0;;16470:2:1;8943:34:0;;;16452:21:1;16509:2;16489:18;;;16482:30;-1:-1:-1;;;16528:18:1;;;16521:41;16579:18;;8943:34:0;16268:335:1;8943:34:0;-1:-1:-1;;;;;9010:26:0;;;;;;:15;:26;;;;;;;;;:86;;-1:-1:-1;9090:6:0;;-1:-1:-1;;;;;9057:20:0;;;;;;:9;:20;;;;;;:29;;9080:6;;9057:29;:::i;:::-;:39;;9010:86;8988:147;;;;-1:-1:-1;;;8988:147:0;;16810:2:1;8988:147:0;;;16792:21:1;16849:2;16829:18;;;16822:30;-1:-1:-1;;;16868:18:1;;;16861:41;16919:18;;8988:147:0;16608:335:1;8988:147:0;-1:-1:-1;;;;;9191:17:0;;;;;;;:9;:17;;;;;;:28;;;;;;;9268:20;;;;;;;;;;:30;;;;;;9343:35;;-1:-1:-1;;;;;;;;;;;9343:35:0;;;9213:6;713:25:1;;701:2;686:18;;567:177;9343:35:0;;;;;;;;-1:-1:-1;9396:4:0;8668:743;;;;;:::o;13475:196::-;-1:-1:-1;;;;;13564:19:0;;;;;;:9;:19;;;;;;:28;;13586:6;;13564:28;:::i;:::-;-1:-1:-1;;;;;13542:19:0;;;;;;:9;:19;;;;;;:50;;;;13648:4;13630:24;;;;:33;;13657:6;;13630:33;:::i;:::-;13621:4;13603:24;;;;:9;:24;;;;;:60;-1:-1:-1;;13475:196:0:o;9972:380::-;-1:-1:-1;;;;;10108:19:0;;10100:68;;;;-1:-1:-1;;;10100:68:0;;17150:2:1;10100:68:0;;;17132:21:1;17189:2;17169:18;;;17162:30;17228:34;17208:18;;;17201:62;-1:-1:-1;;;17279:18:1;;;17272:34;17323:19;;10100:68:0;16948:400:1;10100:68:0;-1:-1:-1;;;;;10187:21:0;;10179:68;;;;-1:-1:-1;;;10179:68:0;;17555:2:1;10179:68:0;;;17537:21:1;17594:2;17574:18;;;17567:30;17633:34;17613:18;;;17606:62;-1:-1:-1;;;17684:18:1;;;17677:32;17726:19;;10179:68:0;17353:398:1;10179:68:0;-1:-1:-1;;;;;10260:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10312:32;;713:25:1;;;10312:32:0;;686:18:1;10312:32:0;;;;;;;9972:380;;;:::o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;749:173::-;817:20;;-1:-1:-1;;;;;866:31:1;;856:42;;846:70;;912:1;909;902:12;846:70;749:173;;;:::o;927:254::-;995:6;1003;1056:2;1044:9;1035:7;1031:23;1027:32;1024:52;;;1072:1;1069;1062:12;1024:52;1095:29;1114:9;1095:29;:::i;:::-;1085:39;1171:2;1156:18;;;;1143:32;;-1:-1:-1;;;927:254:1:o;1378:186::-;1437:6;1490:2;1478:9;1469:7;1465:23;1461:32;1458:52;;;1506:1;1503;1496:12;1458:52;1529:29;1548:9;1529:29;:::i;1569:260::-;1637:6;1645;1698:2;1686:9;1677:7;1673:23;1669:32;1666:52;;;1714:1;1711;1704:12;1666:52;1737:29;1756:9;1737:29;:::i;:::-;1727:39;;1785:38;1819:2;1808:9;1804:18;1785:38;:::i;:::-;1775:48;;1569:260;;;;;:::o;1834:248::-;1902:6;1910;1963:2;1951:9;1942:7;1938:23;1934:32;1931:52;;;1979:1;1976;1969:12;1931:52;-1:-1:-1;;2002:23:1;;;2072:2;2057:18;;;2044:32;;-1:-1:-1;1834:248:1:o;2087:328::-;2164:6;2172;2180;2233:2;2221:9;2212:7;2208:23;2204:32;2201:52;;;2249:1;2246;2239:12;2201:52;2272:29;2291:9;2272:29;:::i;:::-;2262:39;;2320:38;2354:2;2343:9;2339:18;2320:38;:::i;:::-;2310:48;;2405:2;2394:9;2390:18;2377:32;2367:42;;2087:328;;;;;:::o;2817:180::-;2876:6;2929:2;2917:9;2908:7;2904:23;2900:32;2897:52;;;2945:1;2942;2935:12;2897:52;-1:-1:-1;2968:23:1;;2817:180;-1:-1:-1;2817:180:1:o;3002:118::-;3088:5;3081:13;3074:21;3067:5;3064:32;3054:60;;3110:1;3107;3100:12;3054:60;3002:118;:::o;3125:315::-;3190:6;3198;3251:2;3239:9;3230:7;3226:23;3222:32;3219:52;;;3267:1;3264;3257:12;3219:52;3290:29;3309:9;3290:29;:::i;:::-;3280:39;;3369:2;3358:9;3354:18;3341:32;3382:28;3404:5;3382:28;:::i;:::-;3429:5;3419:15;;;3125:315;;;;;:::o;3913:316::-;3990:6;3998;4006;4059:2;4047:9;4038:7;4034:23;4030:32;4027:52;;;4075:1;4072;4065:12;4027:52;-1:-1:-1;;4098:23:1;;;4168:2;4153:18;;4140:32;;-1:-1:-1;4219:2:1;4204:18;;;4191:32;;3913:316;-1:-1:-1;3913:316:1:o;5042:127::-;5103:10;5098:3;5094:20;5091:1;5084:31;5134:4;5131:1;5124:15;5158:4;5155:1;5148:15;5174:422;5263:1;5306:5;5263:1;5320:270;5341:7;5331:8;5328:21;5320:270;;;5400:4;5396:1;5392:6;5388:17;5382:4;5379:27;5376:53;;;5409:18;;:::i;:::-;5459:7;5449:8;5445:22;5442:55;;;5479:16;;;;5442:55;5558:22;;;;5518:15;;;;5320:270;;;5324:3;5174:422;;;;;:::o;5601:806::-;5650:5;5680:8;5670:80;;-1:-1:-1;5721:1:1;5735:5;;5670:80;5769:4;5759:76;;-1:-1:-1;5806:1:1;5820:5;;5759:76;5851:4;5869:1;5864:59;;;;5937:1;5932:130;;;;5844:218;;5864:59;5894:1;5885:10;;5908:5;;;5932:130;5969:3;5959:8;5956:17;5953:43;;;5976:18;;:::i;:::-;-1:-1:-1;;6032:1:1;6018:16;;6047:5;;5844:218;;6146:2;6136:8;6133:16;6127:3;6121:4;6118:13;6114:36;6108:2;6098:8;6095:16;6090:2;6084:4;6081:12;6077:35;6074:77;6071:159;;;-1:-1:-1;6183:19:1;;;6215:5;;6071:159;6262:34;6287:8;6281:4;6262:34;:::i;:::-;6332:6;6328:1;6324:6;6320:19;6311:7;6308:32;6305:58;;;6343:18;;:::i;:::-;6381:20;;5601:806;-1:-1:-1;;;5601:806:1:o;6412:140::-;6470:5;6499:47;6540:4;6530:8;6526:19;6520:4;6499:47;:::i;6557:168::-;6630:9;;;6661;;6678:15;;;6672:22;;6658:37;6648:71;;6699:18;;:::i;6730:355::-;6932:2;6914:21;;;6971:2;6951:18;;;6944:30;7010:33;7005:2;6990:18;;6983:61;7076:2;7061:18;;6730:355::o;7090:356::-;7292:2;7274:21;;;7311:18;;;7304:30;7370:34;7365:2;7350:18;;7343:62;7437:2;7422:18;;7090:356::o;7451:217::-;7491:1;7517;7507:132;;7561:10;7556:3;7552:20;7549:1;7542:31;7596:4;7593:1;7586:15;7624:4;7621:1;7614:15;7507:132;-1:-1:-1;7653:9:1;;7451:217::o;7952:245::-;8019:6;8072:2;8060:9;8051:7;8047:23;8043:32;8040:52;;;8088:1;8085;8078:12;8040:52;8120:9;8114:16;8139:28;8161:5;8139:28;:::i;9210:128::-;9277:9;;;9298:11;;;9295:37;;;9312:18;;:::i;10048:125::-;10113:9;;;10134:10;;;10131:36;;;10147:18;;:::i;10601:184::-;10671:6;10724:2;10712:9;10703:7;10699:23;10695:32;10692:52;;;10740:1;10737;10730:12;10692:52;-1:-1:-1;10763:16:1;;10601:184;-1:-1:-1;10601:184:1:o

Swarm Source

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