ETH Price: $2,589.83 (-2.55%)

Contract

0x2225c9764fE39001C7cb1CBdE25a3443D5cAED7B
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Transaction Hash
Method
Block
From
To
Approve190558572024-01-21 14:32:59212 days ago1705847579IN
0x2225c976...3D5cAED7B
0 ETH0.0003554414.63528324
Transfer189257682024-01-03 8:52:59231 days ago1704271979IN
0x2225c976...3D5cAED7B
0 ETH0.0003546916.12268115
Transfer182089002023-09-24 23:21:47331 days ago1695597707IN
0x2225c976...3D5cAED7B
0 ETH0.00039887.07146139
Transfer182088732023-09-24 23:16:23331 days ago1695597383IN
0x2225c976...3D5cAED7B
0 ETH0.000384466.81706184
Transfer182071162023-09-24 17:22:47331 days ago1695576167IN
0x2225c976...3D5cAED7B
0 ETH0.000440127.8039848
Transfer182071022023-09-24 17:19:59331 days ago1695575999IN
0x2225c976...3D5cAED7B
0 ETH0.000259667.52988512
Transfer182071002023-09-24 17:19:35331 days ago1695575975IN
0x2225c976...3D5cAED7B
0 ETH0.000164217.58840723
Transfer182070942023-09-24 17:18:23331 days ago1695575903IN
0x2225c976...3D5cAED7B
0 ETH0.00023876.9220901
Transfer182070362023-09-24 17:06:47331 days ago1695575207IN
0x2225c976...3D5cAED7B
0 ETH0.000307438.91514002
Transfer182070322023-09-24 17:05:59331 days ago1695575159IN
0x2225c976...3D5cAED7B
0 ETH0.000482278.55320961
Transfer182070272023-09-24 17:04:59331 days ago1695575099IN
0x2225c976...3D5cAED7B
0 ETH0.000517719.17991107
Transfer182070232023-09-24 17:04:11331 days ago1695575051IN
0x2225c976...3D5cAED7B
0 ETH0.000520419.22772769
Transfer182070032023-09-24 17:00:11331 days ago1695574811IN
0x2225c976...3D5cAED7B
0 ETH0.000343588.74597135
Transfer182069932023-09-24 16:58:11331 days ago1695574691IN
0x2225c976...3D5cAED7B
0 ETH0.000455548.07917941
Transfer182069892023-09-24 16:57:23331 days ago1695574643IN
0x2225c976...3D5cAED7B
0 ETH0.000409447.26000881
Transfer182069852023-09-24 16:56:35331 days ago1695574595IN
0x2225c976...3D5cAED7B
0 ETH0.000418547.42132936
Transfer182066732023-09-24 15:53:35331 days ago1695570815IN
0x2225c976...3D5cAED7B
0 ETH0.000273336.95776247
Transfer182066592023-09-24 15:50:47331 days ago1695570647IN
0x2225c976...3D5cAED7B
0 ETH0.000396577.03179979
Transfer182066552023-09-24 15:49:59331 days ago1695570599IN
0x2225c976...3D5cAED7B
0 ETH0.000413177.32614274
Transfer182066522023-09-24 15:49:23331 days ago1695570563IN
0x2225c976...3D5cAED7B
0 ETH0.00043357.68826623
Transfer182066402023-09-24 15:46:59331 days ago1695570419IN
0x2225c976...3D5cAED7B
0 ETH0.000288958.37917186
Transfer182066382023-09-24 15:46:35331 days ago1695570395IN
0x2225c976...3D5cAED7B
0 ETH0.000494778.77305212
Transfer182066342023-09-24 15:45:47331 days ago1695570347IN
0x2225c976...3D5cAED7B
0 ETH0.000476448.44803737
Transfer182066302023-09-24 15:44:59331 days ago1695570299IN
0x2225c976...3D5cAED7B
0 ETH0.000503568.92885611
Transfer182040232023-09-24 6:58:47332 days ago1695538727IN
0x2225c976...3D5cAED7B
0 ETH0.000140566.49821557
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

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-15
*/

//SPDX-License-Identifier: MIT

/**
 * Contract: $BOB DeFi
 * Developed by: @Heisenman
 */

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 = 95;
    uint256 public buyMul = 95;
    uint256 public constant DIVISOR = 100;

    //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 = 40;
    uint256 public treasuryShare = 60;
    uint256 public constant SHAREDIVISOR = 100;

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

    //Frontrun Guard
    mapping(address => uint256) private _lastBuyBlock;

    // 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(0) && recipient != address(this),
            "transfer to the zero address or CA"
        );
        require(amount > 0, "Transfer amount must be greater than zero");
        require(
            isTxLimitExempt[recipient] ||
                _balances[recipient] + amount <= maxBag,
            "Max wallet exceeded!"
        );

        // subtract from sender
        _balances[sender] = _balances[sender] - amount;

        // give amount to receiver
        _balances[recipient] = _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"
            );


                // 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, "Deadline EXPIRED");
        address buyer = msg.sender;
        // Frontrun Guard
        _lastBuyBlock[buyer] = block.number;

        // liquidity is set
        require(liquidity > 0, "The token has no liquidity");

        // check if trading is open
        require(
            tradeOpen || isTxLimitExempt[buyer],
            "Trading is not Open"
        );

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

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

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

        // revert if under 1
        require(tokensToSend > 1, "SRG20: Must Buy more than 1 decimal");

        // revert for slippage
        require(tokensToSend >= minTokenOut, "INSUFFICIENT OUTPUT AMOUNT");
        
        // transfer the SRG from the msg.sender to the CA
        bool s = SRGIE.transferFrom(buyer, 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 = taxBalance + taxAmount;
        liquidity = 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");

        //Frontrun Guard
        require(
            _lastBuyBlock[msg.sender] != block.number,
            "Buying and selling in the same block is not allowed!"
        );

        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 >= 90 &&
                newSellMul >= 90 &&
                newBuyMul <= 100 &&
                newSellMul <= 100,
            "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 100"
        );

        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 {
        bool temp1 = SRGIE.transfer(
            teamWallet,
            (taxBalance * teamShare) / SHAREDIVISOR
        );
        bool temp2 = SRGIE.transfer(
            treasuryWallet,
            (taxBalance * treasuryShare) / SHAREDIVISOR
        );
        assert(temp1 && 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"}]

6080604081905263313ce56760e01b815273cd682ef09d07668d49a8103ddd65ff54aebfbfde9063313ce56790608490602090600481865afa1580156200004a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000709190620002d4565b60ff16600255605f60068190556007556064620000906009600a62000415565b620000a0906305f5e10062000426565b620000ac919062000440565b6009556000600a908155600b80546001600160a01b031990811673e84486ab11e8ecad92b2ce5ce0fc1ed3422eeb4d17909155600c805490911673063d923c6efc911f1ae0138196fe82d0615f38381790556028600d55603c600e55600254620001169162000463565b6200012590620f424062000426565b600f55620001366009600a62000415565b62000146906305f5e10062000426565b600f5462000155919062000426565b6010556011805460ff1916905560006013553480156200017457600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060018055620001c86009600a62000415565b620001d8906305f5e10062000426565b30600081815260036020908152604080832094909455338252600581528382208054600160ff1991821681179092556008909252848320805483168217905583835293822080548216851790557f046fee3d77c34a6c5e10c3be6dc4b132c30449dbf4f0bc07684896dd0933429980548216851790558180527f5eff886ea0ce6ca488a3d6e336d6c0f75f46d19b42c06ce5ee98e42c96d256c78054909116909317909255907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620002ad6009600a62000415565b620002bd906305f5e10062000426565b60405190815260200160405180910390a362000471565b600060208284031215620002e757600080fd5b815160ff81168114620002f957600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620003575781600019048211156200033b576200033b62000300565b808516156200034957918102915b93841c93908002906200031b565b509250929050565b60008262000370575060016200040f565b816200037f575060006200040f565b8160018114620003985760028114620003a357620003c3565b60019150506200040f565b60ff841115620003b757620003b762000300565b50506001821b6200040f565b5060208310610133831016604e8410600b8410161715620003e8575081810a6200040f565b620003f4838362000316565b80600019048211156200040b576200040b62000300565b0290505b92915050565b6000620002f960ff8416836200035f565b80820281158282048414176200040f576200040f62000300565b6000826200045e57634e487b7160e01b600052601260045260246000fd5b500490565b6000620002f983836200035f565b612bb080620004816000396000f3fe608060405234801561001057600080fd5b506004361061035d5760003560e01c80637220cf39116101d3578063b1b6524611610104578063e8f620b1116100a2578063f4034e4b1161007c578063f4034e4b1461075b578063f7a62fe91461076e578063fabe62831461078e578063fea2de43146107a157600080fd5b8063e8f620b114610736578063ea6ef2fe1461073f578063f2fde38b1461074857600080fd5b8063d348b409116100de578063d348b409146106dd578063d937e60d146106e5578063dd62ed3e146106f4578063e0cfcc951461072d57600080fd5b8063b1b65246146106ba578063b37659a4146106c2578063c9567bf9146106d557600080fd5b80639d75502611610171578063a3a2e89e1161014b578063a3a2e89e14610626578063a8fb66b414610639578063a9059cbb1461069e578063aa98e163146106b157600080fd5b80639d75502614610601578063a0e571a21461060a578063a13cef3a1461061357600080fd5b80638b42507f116101ad5780638b42507f146105a65780638da5cb5b146105c957806390825c28146105da57806395d89b41146105e257600080fd5b80637220cf39146105815780637796ff371461058a5780637db1342c1461059357600080fd5b80633410fe6e116102ad578063599270441161024b5780636ebcf607116102255780636ebcf6071461051d57806370a082311461053d57806371073b3814610566578063715018a61461057957600080fd5b806359927044146105015780635f81a57c1461051457806362ff2e9a1461045d57600080fd5b80634626402b116102875780634626402b1461049057806349ce234c146104bb57806351c6590a146104db578063571ac8b0146104ee57600080fd5b80633410fe6e1461045d5780633eaaf86b146104655780633f4218e01461046d57600080fd5b80631f02a29c1161031a57806323b872dd116102f457806323b872dd1461042657806325fa0b98146104395780632b112e4914610446578063313ce5671461044e57600080fd5b80631f02a29c146103ed5780631f2c80f11461040057806321ecff5b1461041357600080fd5b806306fdde03146103625780630910a5101461039d578063095ea7b3146103af57806318160ddd146103d25780631a686502146103da5780631d6bdb5b146103e3575b600080fd5b60408051808201909152600d81526c42414e4b204f462042414e4b5360981b60208201525b604051610394919061276d565b60405180910390f35b600f545b604051908152602001610394565b6103c26103bd3660046127d7565b6107b4565b6040519015158152602001610394565b6103a16108da565b6103a1600f5481565b6103eb6108fb565b005b6103a16103fb366004612801565b610ae6565b6103eb61040e36600461281c565b610b33565b6103eb61042136600461284f565b610c08565b6103c2610434366004612871565b610ce5565b6011546103c29060ff1681565b6103a1610d07565b60405160098152602001610394565b6103a1606481565b6103a1610d5a565b6103c261047b366004612801565b60056020526000908152604090205460ff1681565b600c546104a3906001600160a01b031681565b6040516001600160a01b039091168152602001610394565b6103a16104c93660046128ad565b60126020526000908152604090205481565b6103eb6104e93660046128ad565b610d77565b6103c26104fc366004612801565b610f92565b600b546104a3906001600160a01b031681565b6103a160135481565b6103a161052b366004612801565b60036020526000908152604090205481565b6103a161054b366004612801565b6001600160a01b031660009081526003602052604090205490565b6103a16105743660046128ad565b610fa0565b6103eb610fe6565b6103a160145481565b6103a1600e5481565b6103eb6105a13660046128ad565b61105a565b6103c26105b4366004612801565b60086020526000908152604090205460ff1681565b6000546001600160a01b03166104a3565b6103a1611153565b6040805180820190915260038152622127a160e91b6020820152610387565b6103a160065481565b6103a160075481565b6103a16106213660046128ad565b611181565b6103eb6106343660046128d7565b6111cb565b6106766106473660046128ad565b601660205260009081526040902080546001820154600283015460038401546004909401549293919290919085565b604080519586526020860194909452928401919091526060830152608082015260a001610394565b6103c26106ac3660046127d7565b611220565b6103a1600a5481565b6103a1611234565b6103c26106d036600461290e565b611322565b6103eb6119c6565b6103a1611a91565b6103a1670de0b6b3a764000081565b6103a161070236600461281c565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b6103a160095481565b6103a160105481565b6103a1600d5481565b6103eb610756366004612801565b611b03565b6103eb61076936600461284f565b611bed565b6103a161077c3660046128ad565b60156020526000908152604090205481565b6103eb61079c3660046128d7565b611c7b565b6103c26107af36600461290e565b611cd0565b60006001600160a01b03831661081c5760405162461bcd60e51b815260206004820152602260248201527f53524732303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084015b60405180910390fd5b336108755760405162461bcd60e51b8152602060048201526024808201527f53524732303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610813565b3360008181526004602090815260408083206001600160a01b03881680855290835292819020869055518581529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35060015b92915050565b60006108e86009600a612a34565b6108f6906305f5e100612a43565b905090565b60026001540361091d5760405162461bcd60e51b815260040161081390612a5a565b60026001556000546001600160a01b0316331461094c5760405162461bcd60e51b815260040161081390612a91565b600b54600d54600a5460009273cd682ef09d07668d49a8103ddd65ff54aebfbfde9263a9059cbb926001600160a01b039092169160649161098c91612a43565b6109969190612ac6565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af11580156109e1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a059190612ae8565b600c54600e54600a5492935060009273cd682ef09d07668d49a8103ddd65ff54aebfbfde9263a9059cbb926001600160a01b0390911691606491610a4891612a43565b610a529190612ac6565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015610a9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac19190612ae8565b9050818015610acd5750805b610ad957610ad9612b05565b50506000600a5560018055565b6000610af0611234565b3060009081526003602052604080822054600f546001600160a01b03871684529190922054610b1f9190612a43565b610b299190612ac6565b6108d49190612a43565b6000546001600160a01b03163314610b5d5760405162461bcd60e51b815260040161081390612a91565b6001600160a01b03821615801590610b7d57506001600160a01b03811615155b610bda5760405162461bcd60e51b815260206004820152602860248201527f4e65772077616c6c657473206d757374206e6f7420626520746865205a45524f604482015267206164647265737360c01b6064820152608401610813565b600b80546001600160a01b039384166001600160a01b031991821617909155600c8054929093169116179055565b6000546001600160a01b03163314610c325760405162461bcd60e51b815260040161081390612a91565b605a8210158015610c445750605a8110155b8015610c51575060648211155b8015610c5e575060648111155b610c9e5760405162461bcd60e51b815260206004820152601160248201527008ccacae640c2e4ca40e8dede40d0d2ced607b1b6044820152606401610813565b6007829055600681905560408051838152602081018390527fc19ebd395193e8ddaaeda048fb5cb09d4e2dbebcce719174166029a409387856910160405180910390a15050565b600033610cf3858285612338565b610cfe8585856123d1565b95945050505050565b61dead600090815260036020527f262bb27bbdd95c1cdc8e16957e36e38579ea44f7f6413dd7a9c75939def06b2c54610d426009600a612a34565b610d50906305f5e100612a43565b6108f69190612b1b565b610d666009600a612a34565b610d74906305f5e100612a43565b81565b6000546001600160a01b03163314610da15760405162461bcd60e51b815260040161081390612a91565b600f5430600090815260036020526040812054909190610dc2908490612a43565b610dcc9190612ac6565b33600090815260036020526040902054909150811115610e235760405162461bcd60e51b81526020600482015260126024820152714e6f7420656e6f75676820746f6b656e732160701b6044820152606401610813565b60405163a9059cbb60e01b81523060048201526024810183905260009073cd682ef09d07668d49a8103ddd65ff54aebfbfde9063a9059cbb906044016020604051808303816000875af1158015610e7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea29190612ae8565b905080610ef15760405162461bcd60e51b815260206004820152601d60248201527f535247207472616e736665722077617320756e73756363657366756c210000006044820152606401610813565b600f54610efe8482612b2e565b600f553060009081526003602052604081208054859290610f20908490612b2e565b90915550503360009081526003602052604081208054859290610f44908490612b1b565b9091555050600f546010548291610f5a91612a43565b610f649190612ac6565b60105560405183815230903390600080516020612b5b8339815191529060200160405180910390a350505050565b60006108d4826000196107b4565b60008082600f54610fb19190612b1b565b601054610fbe9190612ac6565b90506000600f54601054610fd29190612ac6565b9050610fde8183612b1b565b949350505050565b6000546001600160a01b031633146110105760405162461bcd60e51b815260040161081390612a91565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146110845760405162461bcd60e51b815260040161081390612a91565b60646110926009600a612a34565b6110a0906305f5e100612a43565b6110aa9190612ac6565b8110156111185760405162461bcd60e51b815260206004820152603660248201527f4e65772077616c6c6574206c696d69742073686f756c64206265206174206c65604482015275617374203125206f6620746f74616c20737570706c7960501b6064820152608401610813565b60098190556040518181527fb579b5ff4decd3791f679ec8d72f16128df08aa3f346b425480a0135d2e8bf759060200160405180910390a150565b600061115d611234565b611165611a91565b61116d610d07565b6111779190612a43565b6108f69190612a43565b30600090815260036020526040812054601054829161119f91612ac6565b30600090815260036020526040812054919250906111be908590612b2e565b601054610fd29190612ac6565b6000546001600160a01b031633146111f55760405162461bcd60e51b815260040161081390612a91565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b600061122d3384846123d1565b9392505050565b600073cd682ef09d07668d49a8103ddd65ff54aebfbfde6001600160a01b031663f2220c9e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611288573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ac9190612b41565b73cd682ef09d07668d49a8103ddd65ff54aebfbfde6001600160a01b031663d348b4096040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111779190612b41565b60006002600154036113465760405162461bcd60e51b815260040161081390612a5a565b60026001554283101561138e5760405162461bcd60e51b815260206004820152601060248201526f111958591b1a5b99481156141254915160821b6044820152606401610813565b3360009081526017602052604090205443900361140a5760405162461bcd60e51b815260206004820152603460248201527f427579696e6720616e642073656c6c696e6720696e207468652073616d6520626044820152736c6f636b206973206e6f7420616c6c6f7765642160601b6064820152608401610813565b336000818152600360205260409020548511156114695760405162461bcd60e51b815260206004820152601e60248201527f63616e6e6f742073656c6c2061626f766520746f6b656e20616d6f756e7400006044820152606401610813565b30600090815260036020526040812054611484908790612b2e565b6010546114919190612ac6565b600f5461149e9190612b1b565b90506000606460065460646114b39190612b1b565b6114bd9084612a43565b6114c79190612ac6565b905060006114d58284612b1b565b9050858310156115275760405162461bcd60e51b815260206004820152601a60248201527f494e53554646494349454e54204f555450555420414d4f554e540000000000006044820152606401610813565b3360009081526005602052604081205460ff166115bf5760405163a9059cbb60e01b81523360048201526024810183905273cd682ef09d07668d49a8103ddd65ff54aebfbfde9063a9059cbb906044016020604051808303816000875af1158015611596573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115ba9190612ae8565b61163b565b60405163a9059cbb60e01b81523360048201526024810185905273cd682ef09d07668d49a8103ddd65ff54aebfbfde9063a9059cbb906044016020604051808303816000875af1158015611617573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061163b9190612ae8565b9050806116805760405162461bcd60e51b815260206004820152601360248201527214d491c81d1c985b9cd9995c8819985a5b1959606a1b6044820152606401610813565b6001600160a01b0385166000908152600360205260409020546116a4908a90612b1b565b6001600160a01b03861660009081526003602090815260408083209390935533825260059052205460ff166116e65782600a546116e19190612b2e565b6116ea565b600a545b600a55600f546116fb908590612b1b565b600f5530600090815260036020526040902054611719908a90612b2e565b306000908152600360205260408120919091554290611736611234565b6117409087612a43565b905080601360008282546117549190612b2e565b909155505060008281526012602052604081208054839290611777908490612b2e565b925050819055506001601460008282546117919190612b2e565b909155505060145460009081526015602052604081208390556117b2611234565b6117ba611a91565b6117c49190612a43565b6000848152601660205260408120858155600101549192500361183457601660006015600060016014546117f89190612b1b565b81526020019081526020016000205481526020019081526020016000206002015460166000858152602001908152602001600020600101819055505b600083815260166020526040902060028101829055600301548111806118695750600083815260166020526040902060030154155b156118835760008381526016602052604090206003018190555b6000838152601660205260409020600401548110806118b15750600083815260166020526040902060040154155b156118cb5760008381526016602052604090206004018190555b6040518c815230906001600160a01b038a1690600080516020612b5b8339815191529060200160405180910390a33360009081526005602052604090205460ff161561195b57604080518d815260208101899052908101839052339030907f9be8a5ca22b7e6e81f04b5879f0248227bb770114291bd47dfaee4c3a82ad60e9060600160405180910390a36119b1565b33307f9be8a5ca22b7e6e81f04b5879f0248227bb770114291bd47dfaee4c3a82ad60e8e88611988611234565b611992908b612a43565b6040805193845260208401929092529082015260600160405180910390a35b505060018080559a9950505050505050505050565b6002600154036119e85760405162461bcd60e51b815260040161081390612a5a565b60026001556000546001600160a01b03163314611a175760405162461bcd60e51b815260040161081390612a91565b60115460ff1615611a7d5760405162461bcd60e51b815260206004820152602a60248201527f596f752063616e6e6f742064697361626c652074726164696e6720616674657260448201526920656e61626c696e672160b01b6064820152608401610813565b6011805460ff191660019081179091558055565b600080600f5411611ad35760405162461bcd60e51b815260206004820152600c60248201526b4e6f204c697175696469747960a01b6044820152606401610813565b30600090815260036020526040902054600f54611af990670de0b6b3a764000090612a43565b6108f69190612ac6565b6000546001600160a01b03163314611b2d5760405162461bcd60e51b815260040161081390612a91565b6001600160a01b038116611b925760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610813565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314611c175760405162461bcd60e51b815260040161081390612a91565b6064611c238284612b2e565b14611c705760405162461bcd60e51b815260206004820152601960248201527f53756d206f6620736861726573206d75737420626520313030000000000000006044820152606401610813565b600d91909155600e55565b6000546001600160a01b03163314611ca55760405162461bcd60e51b815260040161081390612a91565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6000600260015403611cf45760405162461bcd60e51b815260040161081390612a5a565b600260015542821015611d3c5760405162461bcd60e51b815260206004820152601060248201526f111958591b1a5b99481156141254915160821b6044820152606401610813565b336000818152601760205260409020439055600f54611d9d5760405162461bcd60e51b815260206004820152601a60248201527f54686520746f6b656e20686173206e6f206c69717569646974790000000000006044820152606401610813565b60115460ff1680611dc657506001600160a01b03811660009081526008602052604090205460ff165b611e085760405162461bcd60e51b81526020600482015260136024820152722a3930b234b7339034b9903737ba1027b832b760691b6044820152606401610813565b6001600160a01b03811660009081526005602052604081205460ff16611e4757606460075487611e389190612a43565b611e429190612ac6565b611e49565b855b90506000600f5482611e5b9190612b2e565b601054611e689190612ac6565b30600090815260036020526040902054611e829190612b1b565b6009546001600160a01b03851660009081526003602052604090205491925090611ead908390612b2e565b111580611ed257506001600160a01b03831660009081526008602052604090205460ff165b611f145760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610813565b60018111611f705760405162461bcd60e51b815260206004820152602360248201527f53524732303a204d75737420427579206d6f7265207468616e203120646563696044820152621b585b60ea1b6064820152608401610813565b85811015611fc05760405162461bcd60e51b815260206004820152601a60248201527f494e53554646494349454e54204f555450555420414d4f554e540000000000006044820152606401610813565b6040516323b872dd60e01b81526001600160a01b03841660048201523060248201526044810188905260009073cd682ef09d07668d49a8103ddd65ff54aebfbfde906323b872dd906064016020604051808303816000875af115801561202a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061204e9190612ae8565b90508061209d5760405162461bcd60e51b815260206004820152601760248201527f7472616e73666572206f6620535247206661696c6564210000000000000000006044820152606401610813565b6120a733836125e4565b60006120b3848a612b1b565b905080600a546120c39190612b2e565b600a55600f546120d4908590612b2e565b600f554260006120e2611234565b6120ec908c612a43565b905080601360008282546121009190612b2e565b909155505060008281526012602052604081208054839290612123908490612b2e565b9250508190555060016014600082825461213d9190612b2e565b9091555050601454600090815260156020526040812083905561215e611234565b612166611a91565b6121709190612a43565b60008481526016602052604081208581556001015491925003612245576014546001036121f25761219f611234565b6121ab6009600a612a34565b6121b9906305f5e100612a43565b88600f546121c79190612b1b565b6121d19190612ac6565b6121db9190612a43565b600084815260166020526040902060010155612245565b601660006015600060016014546122099190612b1b565b81526020019081526020016000205481526020019081526020016000206002015460166000858152602001908152602001600020600101819055505b6000838152601660205260409020600281018290556003015481118061227a5750600083815260166020526040902060030154155b156122945760008381526016602052604090206003018190555b6000838152601660205260409020600401548110806122c25750600083815260166020526040902060040154155b156122dc5760008381526016602052604090206004018190555b60405186815233903090600080516020612b5b8339815191529060200160405180910390a330337f7ce543d1780f3bdc3dac42da06c95da802653cd1b212b8d74ec3e3c33ad7095c888f61232e611234565b611992908d612a43565b6001600160a01b0380841660009081526004602090815260408083209386168352929052205460001981146123cb57818110156123b75760405162461bcd60e51b815260206004820152601d60248201527f53524732303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610813565b6123cb84846123c68585612b1b565b612649565b50505050565b60006001600160a01b038316158015906123f457506001600160a01b0383163014155b61244b5760405162461bcd60e51b815260206004820152602260248201527f7472616e7366657220746f20746865207a65726f2061646472657373206f7220604482015261434160f01b6064820152608401610813565b600082116124ad5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610813565b6001600160a01b03831660009081526008602052604090205460ff16806124f957506009546001600160a01b0384166000908152600360205260409020546124f6908490612b2e565b11155b61253c5760405162461bcd60e51b81526020600482015260146024820152734d61782077616c6c65742065786365656465642160601b6044820152606401610813565b6001600160a01b038416600090815260036020526040902054612560908390612b1b565b6001600160a01b038086166000908152600360205260408082209390935590851681522054612590908390612b2e565b6001600160a01b038085166000818152600360205260409081902093909355915190861690600080516020612b5b833981519152906125d29086815260200190565b60405180910390a35060019392505050565b6001600160a01b038216600090815260036020526040902054612608908290612b2e565b6001600160a01b038316600090815260036020526040808220929092553081522054612635908290612b1b565b306000908152600360205260409020555050565b6001600160a01b0383166126ab5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610813565b6001600160a01b03821661270c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610813565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600060208083528351808285015260005b8181101561279a5785810183015185820160400152820161277e565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146127d257600080fd5b919050565b600080604083850312156127ea57600080fd5b6127f3836127bb565b946020939093013593505050565b60006020828403121561281357600080fd5b61122d826127bb565b6000806040838503121561282f57600080fd5b612838836127bb565b9150612846602084016127bb565b90509250929050565b6000806040838503121561286257600080fd5b50508035926020909101359150565b60008060006060848603121561288657600080fd5b61288f846127bb565b925061289d602085016127bb565b9150604084013590509250925092565b6000602082840312156128bf57600080fd5b5035919050565b80151581146128d457600080fd5b50565b600080604083850312156128ea57600080fd5b6128f3836127bb565b91506020830135612903816128c6565b809150509250929050565b60008060006060848603121561292357600080fd5b505081359360208301359350604090920135919050565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561298b5781600019048211156129715761297161293a565b8085161561297e57918102915b93841c9390800290612955565b509250929050565b6000826129a2575060016108d4565b816129af575060006108d4565b81600181146129c557600281146129cf576129eb565b60019150506108d4565b60ff8411156129e0576129e061293a565b50506001821b6108d4565b5060208310610133831016604e8410600b8410161715612a0e575081810a6108d4565b612a188383612950565b8060001904821115612a2c57612a2c61293a565b029392505050565b600061122d60ff841683612993565b80820281158282048414176108d4576108d461293a565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600082612ae357634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215612afa57600080fd5b815161122d816128c6565b634e487b7160e01b600052600160045260246000fd5b818103818111156108d4576108d461293a565b808201808211156108d4576108d461293a565b600060208284031215612b5357600080fd5b505191905056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220e336f1712ee2f35f0da9dd9d35900aacab3ffe5878e2b3907467d9f69164e06264736f6c63430008130033

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061035d5760003560e01c80637220cf39116101d3578063b1b6524611610104578063e8f620b1116100a2578063f4034e4b1161007c578063f4034e4b1461075b578063f7a62fe91461076e578063fabe62831461078e578063fea2de43146107a157600080fd5b8063e8f620b114610736578063ea6ef2fe1461073f578063f2fde38b1461074857600080fd5b8063d348b409116100de578063d348b409146106dd578063d937e60d146106e5578063dd62ed3e146106f4578063e0cfcc951461072d57600080fd5b8063b1b65246146106ba578063b37659a4146106c2578063c9567bf9146106d557600080fd5b80639d75502611610171578063a3a2e89e1161014b578063a3a2e89e14610626578063a8fb66b414610639578063a9059cbb1461069e578063aa98e163146106b157600080fd5b80639d75502614610601578063a0e571a21461060a578063a13cef3a1461061357600080fd5b80638b42507f116101ad5780638b42507f146105a65780638da5cb5b146105c957806390825c28146105da57806395d89b41146105e257600080fd5b80637220cf39146105815780637796ff371461058a5780637db1342c1461059357600080fd5b80633410fe6e116102ad578063599270441161024b5780636ebcf607116102255780636ebcf6071461051d57806370a082311461053d57806371073b3814610566578063715018a61461057957600080fd5b806359927044146105015780635f81a57c1461051457806362ff2e9a1461045d57600080fd5b80634626402b116102875780634626402b1461049057806349ce234c146104bb57806351c6590a146104db578063571ac8b0146104ee57600080fd5b80633410fe6e1461045d5780633eaaf86b146104655780633f4218e01461046d57600080fd5b80631f02a29c1161031a57806323b872dd116102f457806323b872dd1461042657806325fa0b98146104395780632b112e4914610446578063313ce5671461044e57600080fd5b80631f02a29c146103ed5780631f2c80f11461040057806321ecff5b1461041357600080fd5b806306fdde03146103625780630910a5101461039d578063095ea7b3146103af57806318160ddd146103d25780631a686502146103da5780631d6bdb5b146103e3575b600080fd5b60408051808201909152600d81526c42414e4b204f462042414e4b5360981b60208201525b604051610394919061276d565b60405180910390f35b600f545b604051908152602001610394565b6103c26103bd3660046127d7565b6107b4565b6040519015158152602001610394565b6103a16108da565b6103a1600f5481565b6103eb6108fb565b005b6103a16103fb366004612801565b610ae6565b6103eb61040e36600461281c565b610b33565b6103eb61042136600461284f565b610c08565b6103c2610434366004612871565b610ce5565b6011546103c29060ff1681565b6103a1610d07565b60405160098152602001610394565b6103a1606481565b6103a1610d5a565b6103c261047b366004612801565b60056020526000908152604090205460ff1681565b600c546104a3906001600160a01b031681565b6040516001600160a01b039091168152602001610394565b6103a16104c93660046128ad565b60126020526000908152604090205481565b6103eb6104e93660046128ad565b610d77565b6103c26104fc366004612801565b610f92565b600b546104a3906001600160a01b031681565b6103a160135481565b6103a161052b366004612801565b60036020526000908152604090205481565b6103a161054b366004612801565b6001600160a01b031660009081526003602052604090205490565b6103a16105743660046128ad565b610fa0565b6103eb610fe6565b6103a160145481565b6103a1600e5481565b6103eb6105a13660046128ad565b61105a565b6103c26105b4366004612801565b60086020526000908152604090205460ff1681565b6000546001600160a01b03166104a3565b6103a1611153565b6040805180820190915260038152622127a160e91b6020820152610387565b6103a160065481565b6103a160075481565b6103a16106213660046128ad565b611181565b6103eb6106343660046128d7565b6111cb565b6106766106473660046128ad565b601660205260009081526040902080546001820154600283015460038401546004909401549293919290919085565b604080519586526020860194909452928401919091526060830152608082015260a001610394565b6103c26106ac3660046127d7565b611220565b6103a1600a5481565b6103a1611234565b6103c26106d036600461290e565b611322565b6103eb6119c6565b6103a1611a91565b6103a1670de0b6b3a764000081565b6103a161070236600461281c565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b6103a160095481565b6103a160105481565b6103a1600d5481565b6103eb610756366004612801565b611b03565b6103eb61076936600461284f565b611bed565b6103a161077c3660046128ad565b60156020526000908152604090205481565b6103eb61079c3660046128d7565b611c7b565b6103c26107af36600461290e565b611cd0565b60006001600160a01b03831661081c5760405162461bcd60e51b815260206004820152602260248201527f53524732303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084015b60405180910390fd5b336108755760405162461bcd60e51b8152602060048201526024808201527f53524732303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610813565b3360008181526004602090815260408083206001600160a01b03881680855290835292819020869055518581529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35060015b92915050565b60006108e86009600a612a34565b6108f6906305f5e100612a43565b905090565b60026001540361091d5760405162461bcd60e51b815260040161081390612a5a565b60026001556000546001600160a01b0316331461094c5760405162461bcd60e51b815260040161081390612a91565b600b54600d54600a5460009273cd682ef09d07668d49a8103ddd65ff54aebfbfde9263a9059cbb926001600160a01b039092169160649161098c91612a43565b6109969190612ac6565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af11580156109e1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a059190612ae8565b600c54600e54600a5492935060009273cd682ef09d07668d49a8103ddd65ff54aebfbfde9263a9059cbb926001600160a01b0390911691606491610a4891612a43565b610a529190612ac6565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015610a9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac19190612ae8565b9050818015610acd5750805b610ad957610ad9612b05565b50506000600a5560018055565b6000610af0611234565b3060009081526003602052604080822054600f546001600160a01b03871684529190922054610b1f9190612a43565b610b299190612ac6565b6108d49190612a43565b6000546001600160a01b03163314610b5d5760405162461bcd60e51b815260040161081390612a91565b6001600160a01b03821615801590610b7d57506001600160a01b03811615155b610bda5760405162461bcd60e51b815260206004820152602860248201527f4e65772077616c6c657473206d757374206e6f7420626520746865205a45524f604482015267206164647265737360c01b6064820152608401610813565b600b80546001600160a01b039384166001600160a01b031991821617909155600c8054929093169116179055565b6000546001600160a01b03163314610c325760405162461bcd60e51b815260040161081390612a91565b605a8210158015610c445750605a8110155b8015610c51575060648211155b8015610c5e575060648111155b610c9e5760405162461bcd60e51b815260206004820152601160248201527008ccacae640c2e4ca40e8dede40d0d2ced607b1b6044820152606401610813565b6007829055600681905560408051838152602081018390527fc19ebd395193e8ddaaeda048fb5cb09d4e2dbebcce719174166029a409387856910160405180910390a15050565b600033610cf3858285612338565b610cfe8585856123d1565b95945050505050565b61dead600090815260036020527f262bb27bbdd95c1cdc8e16957e36e38579ea44f7f6413dd7a9c75939def06b2c54610d426009600a612a34565b610d50906305f5e100612a43565b6108f69190612b1b565b610d666009600a612a34565b610d74906305f5e100612a43565b81565b6000546001600160a01b03163314610da15760405162461bcd60e51b815260040161081390612a91565b600f5430600090815260036020526040812054909190610dc2908490612a43565b610dcc9190612ac6565b33600090815260036020526040902054909150811115610e235760405162461bcd60e51b81526020600482015260126024820152714e6f7420656e6f75676820746f6b656e732160701b6044820152606401610813565b60405163a9059cbb60e01b81523060048201526024810183905260009073cd682ef09d07668d49a8103ddd65ff54aebfbfde9063a9059cbb906044016020604051808303816000875af1158015610e7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea29190612ae8565b905080610ef15760405162461bcd60e51b815260206004820152601d60248201527f535247207472616e736665722077617320756e73756363657366756c210000006044820152606401610813565b600f54610efe8482612b2e565b600f553060009081526003602052604081208054859290610f20908490612b2e565b90915550503360009081526003602052604081208054859290610f44908490612b1b565b9091555050600f546010548291610f5a91612a43565b610f649190612ac6565b60105560405183815230903390600080516020612b5b8339815191529060200160405180910390a350505050565b60006108d4826000196107b4565b60008082600f54610fb19190612b1b565b601054610fbe9190612ac6565b90506000600f54601054610fd29190612ac6565b9050610fde8183612b1b565b949350505050565b6000546001600160a01b031633146110105760405162461bcd60e51b815260040161081390612a91565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146110845760405162461bcd60e51b815260040161081390612a91565b60646110926009600a612a34565b6110a0906305f5e100612a43565b6110aa9190612ac6565b8110156111185760405162461bcd60e51b815260206004820152603660248201527f4e65772077616c6c6574206c696d69742073686f756c64206265206174206c65604482015275617374203125206f6620746f74616c20737570706c7960501b6064820152608401610813565b60098190556040518181527fb579b5ff4decd3791f679ec8d72f16128df08aa3f346b425480a0135d2e8bf759060200160405180910390a150565b600061115d611234565b611165611a91565b61116d610d07565b6111779190612a43565b6108f69190612a43565b30600090815260036020526040812054601054829161119f91612ac6565b30600090815260036020526040812054919250906111be908590612b2e565b601054610fd29190612ac6565b6000546001600160a01b031633146111f55760405162461bcd60e51b815260040161081390612a91565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b600061122d3384846123d1565b9392505050565b600073cd682ef09d07668d49a8103ddd65ff54aebfbfde6001600160a01b031663f2220c9e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611288573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ac9190612b41565b73cd682ef09d07668d49a8103ddd65ff54aebfbfde6001600160a01b031663d348b4096040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111779190612b41565b60006002600154036113465760405162461bcd60e51b815260040161081390612a5a565b60026001554283101561138e5760405162461bcd60e51b815260206004820152601060248201526f111958591b1a5b99481156141254915160821b6044820152606401610813565b3360009081526017602052604090205443900361140a5760405162461bcd60e51b815260206004820152603460248201527f427579696e6720616e642073656c6c696e6720696e207468652073616d6520626044820152736c6f636b206973206e6f7420616c6c6f7765642160601b6064820152608401610813565b336000818152600360205260409020548511156114695760405162461bcd60e51b815260206004820152601e60248201527f63616e6e6f742073656c6c2061626f766520746f6b656e20616d6f756e7400006044820152606401610813565b30600090815260036020526040812054611484908790612b2e565b6010546114919190612ac6565b600f5461149e9190612b1b565b90506000606460065460646114b39190612b1b565b6114bd9084612a43565b6114c79190612ac6565b905060006114d58284612b1b565b9050858310156115275760405162461bcd60e51b815260206004820152601a60248201527f494e53554646494349454e54204f555450555420414d4f554e540000000000006044820152606401610813565b3360009081526005602052604081205460ff166115bf5760405163a9059cbb60e01b81523360048201526024810183905273cd682ef09d07668d49a8103ddd65ff54aebfbfde9063a9059cbb906044016020604051808303816000875af1158015611596573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115ba9190612ae8565b61163b565b60405163a9059cbb60e01b81523360048201526024810185905273cd682ef09d07668d49a8103ddd65ff54aebfbfde9063a9059cbb906044016020604051808303816000875af1158015611617573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061163b9190612ae8565b9050806116805760405162461bcd60e51b815260206004820152601360248201527214d491c81d1c985b9cd9995c8819985a5b1959606a1b6044820152606401610813565b6001600160a01b0385166000908152600360205260409020546116a4908a90612b1b565b6001600160a01b03861660009081526003602090815260408083209390935533825260059052205460ff166116e65782600a546116e19190612b2e565b6116ea565b600a545b600a55600f546116fb908590612b1b565b600f5530600090815260036020526040902054611719908a90612b2e565b306000908152600360205260408120919091554290611736611234565b6117409087612a43565b905080601360008282546117549190612b2e565b909155505060008281526012602052604081208054839290611777908490612b2e565b925050819055506001601460008282546117919190612b2e565b909155505060145460009081526015602052604081208390556117b2611234565b6117ba611a91565b6117c49190612a43565b6000848152601660205260408120858155600101549192500361183457601660006015600060016014546117f89190612b1b565b81526020019081526020016000205481526020019081526020016000206002015460166000858152602001908152602001600020600101819055505b600083815260166020526040902060028101829055600301548111806118695750600083815260166020526040902060030154155b156118835760008381526016602052604090206003018190555b6000838152601660205260409020600401548110806118b15750600083815260166020526040902060040154155b156118cb5760008381526016602052604090206004018190555b6040518c815230906001600160a01b038a1690600080516020612b5b8339815191529060200160405180910390a33360009081526005602052604090205460ff161561195b57604080518d815260208101899052908101839052339030907f9be8a5ca22b7e6e81f04b5879f0248227bb770114291bd47dfaee4c3a82ad60e9060600160405180910390a36119b1565b33307f9be8a5ca22b7e6e81f04b5879f0248227bb770114291bd47dfaee4c3a82ad60e8e88611988611234565b611992908b612a43565b6040805193845260208401929092529082015260600160405180910390a35b505060018080559a9950505050505050505050565b6002600154036119e85760405162461bcd60e51b815260040161081390612a5a565b60026001556000546001600160a01b03163314611a175760405162461bcd60e51b815260040161081390612a91565b60115460ff1615611a7d5760405162461bcd60e51b815260206004820152602a60248201527f596f752063616e6e6f742064697361626c652074726164696e6720616674657260448201526920656e61626c696e672160b01b6064820152608401610813565b6011805460ff191660019081179091558055565b600080600f5411611ad35760405162461bcd60e51b815260206004820152600c60248201526b4e6f204c697175696469747960a01b6044820152606401610813565b30600090815260036020526040902054600f54611af990670de0b6b3a764000090612a43565b6108f69190612ac6565b6000546001600160a01b03163314611b2d5760405162461bcd60e51b815260040161081390612a91565b6001600160a01b038116611b925760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610813565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314611c175760405162461bcd60e51b815260040161081390612a91565b6064611c238284612b2e565b14611c705760405162461bcd60e51b815260206004820152601960248201527f53756d206f6620736861726573206d75737420626520313030000000000000006044820152606401610813565b600d91909155600e55565b6000546001600160a01b03163314611ca55760405162461bcd60e51b815260040161081390612a91565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6000600260015403611cf45760405162461bcd60e51b815260040161081390612a5a565b600260015542821015611d3c5760405162461bcd60e51b815260206004820152601060248201526f111958591b1a5b99481156141254915160821b6044820152606401610813565b336000818152601760205260409020439055600f54611d9d5760405162461bcd60e51b815260206004820152601a60248201527f54686520746f6b656e20686173206e6f206c69717569646974790000000000006044820152606401610813565b60115460ff1680611dc657506001600160a01b03811660009081526008602052604090205460ff165b611e085760405162461bcd60e51b81526020600482015260136024820152722a3930b234b7339034b9903737ba1027b832b760691b6044820152606401610813565b6001600160a01b03811660009081526005602052604081205460ff16611e4757606460075487611e389190612a43565b611e429190612ac6565b611e49565b855b90506000600f5482611e5b9190612b2e565b601054611e689190612ac6565b30600090815260036020526040902054611e829190612b1b565b6009546001600160a01b03851660009081526003602052604090205491925090611ead908390612b2e565b111580611ed257506001600160a01b03831660009081526008602052604090205460ff165b611f145760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610813565b60018111611f705760405162461bcd60e51b815260206004820152602360248201527f53524732303a204d75737420427579206d6f7265207468616e203120646563696044820152621b585b60ea1b6064820152608401610813565b85811015611fc05760405162461bcd60e51b815260206004820152601a60248201527f494e53554646494349454e54204f555450555420414d4f554e540000000000006044820152606401610813565b6040516323b872dd60e01b81526001600160a01b03841660048201523060248201526044810188905260009073cd682ef09d07668d49a8103ddd65ff54aebfbfde906323b872dd906064016020604051808303816000875af115801561202a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061204e9190612ae8565b90508061209d5760405162461bcd60e51b815260206004820152601760248201527f7472616e73666572206f6620535247206661696c6564210000000000000000006044820152606401610813565b6120a733836125e4565b60006120b3848a612b1b565b905080600a546120c39190612b2e565b600a55600f546120d4908590612b2e565b600f554260006120e2611234565b6120ec908c612a43565b905080601360008282546121009190612b2e565b909155505060008281526012602052604081208054839290612123908490612b2e565b9250508190555060016014600082825461213d9190612b2e565b9091555050601454600090815260156020526040812083905561215e611234565b612166611a91565b6121709190612a43565b60008481526016602052604081208581556001015491925003612245576014546001036121f25761219f611234565b6121ab6009600a612a34565b6121b9906305f5e100612a43565b88600f546121c79190612b1b565b6121d19190612ac6565b6121db9190612a43565b600084815260166020526040902060010155612245565b601660006015600060016014546122099190612b1b565b81526020019081526020016000205481526020019081526020016000206002015460166000858152602001908152602001600020600101819055505b6000838152601660205260409020600281018290556003015481118061227a5750600083815260166020526040902060030154155b156122945760008381526016602052604090206003018190555b6000838152601660205260409020600401548110806122c25750600083815260166020526040902060040154155b156122dc5760008381526016602052604090206004018190555b60405186815233903090600080516020612b5b8339815191529060200160405180910390a330337f7ce543d1780f3bdc3dac42da06c95da802653cd1b212b8d74ec3e3c33ad7095c888f61232e611234565b611992908d612a43565b6001600160a01b0380841660009081526004602090815260408083209386168352929052205460001981146123cb57818110156123b75760405162461bcd60e51b815260206004820152601d60248201527f53524732303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610813565b6123cb84846123c68585612b1b565b612649565b50505050565b60006001600160a01b038316158015906123f457506001600160a01b0383163014155b61244b5760405162461bcd60e51b815260206004820152602260248201527f7472616e7366657220746f20746865207a65726f2061646472657373206f7220604482015261434160f01b6064820152608401610813565b600082116124ad5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610813565b6001600160a01b03831660009081526008602052604090205460ff16806124f957506009546001600160a01b0384166000908152600360205260409020546124f6908490612b2e565b11155b61253c5760405162461bcd60e51b81526020600482015260146024820152734d61782077616c6c65742065786365656465642160601b6044820152606401610813565b6001600160a01b038416600090815260036020526040902054612560908390612b1b565b6001600160a01b038086166000908152600360205260408082209390935590851681522054612590908390612b2e565b6001600160a01b038085166000818152600360205260409081902093909355915190861690600080516020612b5b833981519152906125d29086815260200190565b60405180910390a35060019392505050565b6001600160a01b038216600090815260036020526040902054612608908290612b2e565b6001600160a01b038316600090815260036020526040808220929092553081522054612635908290612b1b565b306000908152600360205260409020555050565b6001600160a01b0383166126ab5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610813565b6001600160a01b03821661270c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610813565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600060208083528351808285015260005b8181101561279a5785810183015185820160400152820161277e565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146127d257600080fd5b919050565b600080604083850312156127ea57600080fd5b6127f3836127bb565b946020939093013593505050565b60006020828403121561281357600080fd5b61122d826127bb565b6000806040838503121561282f57600080fd5b612838836127bb565b9150612846602084016127bb565b90509250929050565b6000806040838503121561286257600080fd5b50508035926020909101359150565b60008060006060848603121561288657600080fd5b61288f846127bb565b925061289d602085016127bb565b9150604084013590509250925092565b6000602082840312156128bf57600080fd5b5035919050565b80151581146128d457600080fd5b50565b600080604083850312156128ea57600080fd5b6128f3836127bb565b91506020830135612903816128c6565b809150509250929050565b60008060006060848603121561292357600080fd5b505081359360208301359350604090920135919050565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561298b5781600019048211156129715761297161293a565b8085161561297e57918102915b93841c9390800290612955565b509250929050565b6000826129a2575060016108d4565b816129af575060006108d4565b81600181146129c557600281146129cf576129eb565b60019150506108d4565b60ff8411156129e0576129e061293a565b50506001821b6108d4565b5060208310610133831016604e8410600b8410161715612a0e575081810a6108d4565b612a188383612950565b8060001904821115612a2c57612a2c61293a565b029392505050565b600061122d60ff841683612993565b80820281158282048414176108d4576108d461293a565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600082612ae357634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215612afa57600080fd5b815161122d816128c6565b634e487b7160e01b600052600160045260246000fd5b818103818111156108d4576108d461293a565b808201808211156108d4576108d461293a565b600060208284031215612b5357600080fd5b505191905056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220e336f1712ee2f35f0da9dd9d35900aacab3ffe5878e2b3907467d9f69164e06264736f6c63430008130033

Deployed Bytecode Sourcemap

2708:18914:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6463:83;6533:5;;;;;;;;;;;;-1:-1:-1;;;6533:5:0;;;;6463:83;;;;;;;:::i;:::-;;;;;;;;17639:89;17711:9;;17639:89;;;713:25:1;;;701:2;686:18;17639:89:0;567:177:1;6740:450:0;;;;;;:::i;:::-;;:::i;:::-;;;1351:14:1;;1344:22;1326:41;;1314:2;1299:18;6740:450:0;1186:187:1;6030:102:0;;;:::i;4924:51::-;;;;;;19189:392;;;:::i;:::-;;17803:202;;;;;;:::i;:::-;;:::i;18804:377::-;;;;;;:::i;:::-;;:::i;18013:431::-;;;;;;:::i;:::-;;:::i;8297:335::-;;;;;;:::i;:::-;;:::i;5039:29::-;;;;;;;;;7328:118;;;:::i;6649:83::-;;;3442:1;2562:36:1;;2550:2;2535:18;6649:83:0;2420:184:1;4231:37:0;;4265:3;4231:37;;3887:61;;;:::i;4114:43::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;4566:74;;;;;-1:-1:-1;;;;;4566:74:0;;;;;;-1:-1:-1;;;;;2773:32:1;;;2755:51;;2743:2;2728:18;4566:74:0;2609:203:1;5102:39:0;;;;;;:::i;:::-;;;;;;;;;;;;;;20155:675;;;;;;:::i;:::-;;:::i;7198:122::-;;;;;;:::i;:::-;;:::i;4489:70::-;;;;;-1:-1:-1;;;;;4489:70:0;;;5148:30;;;;;;3974:44;;;;;;:::i;:::-;;;;;;;;;;;;;;6140:119;;;;;;:::i;:::-;-1:-1:-1;;;;;6233:18:0;6206:7;6233:18;;;:9;:18;;;;;;;6140:119;19589:287;;;;;;:::i;:::-;;:::i;2264:148::-;;;:::i;5258:22::-;;;;;;4703:33;;;;;;7454:284;;;;;;:::i;:::-;;:::i;4305:47::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;2050:79;2088:7;2115:6;-1:-1:-1;;;;;2115:6:0;2050:79;;20838:141;;;:::i;6554:87::-;6626:7;;;;;;;;;;;;-1:-1:-1;;;6626:7:0;;;;6554:87;;4164:27;;;;;;4198:26;;;;;;19884:263;;;;;;:::i;:::-;;:::i;7746:122::-;;;;;;:::i;:::-;;:::i;5492: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;5492:54:0;3445:463:1;8067:188:0;;;;;;:::i;:::-;;:::i;4432:29::-;;;;;;21035:171;;;:::i;14218:3369::-;;;;;;:::i;:::-;;:::i;21453:166::-;;;:::i;21268:177::-;;;:::i;5211:40::-;;5245:6;5211:40;;6267:188;;;;;;:::i;:::-;-1:-1:-1;;;;;6419:19:0;;;6387:7;6419:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;6267:188;4359:42;;;;;;4982:50;;;;;;4667:29;;;;;;2420:281;;;;;;:::i;:::-;;:::i;18452:344::-;;;;;;:::i;:::-;;:::i;5287:46::-;;;;;;:::i;:::-;;;;;;;;;;;;;;7876:153;;;;;;:::i;:::-;;:::i;10525:3361::-;;;;;;:::i;:::-;;:::i;6740:450::-;6842:4;-1:-1:-1;;;;;6872:21:0;;6864:68;;;;-1:-1:-1;;;6864:68:0;;4436:2:1;6864: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;;6864:68:0;;;;;;;;;6965:10;6943:110;;;;-1:-1:-1;;;6943:110:0;;4839:2:1;6943: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;;6943:110:0;4637:400:1;6943:110:0;7078:10;7066:23;;;;:11;:23;;;;;;;;-1:-1:-1;;;;;7066:32:0;;;;;;;;;;;;:41;;;7123:37;713:25:1;;;7066:32:0;;7078:10;7123:37;;686:18:1;7123:37:0;;;;;;;-1:-1:-1;7178:4:0;6740:450;;;;;:::o;6030:102::-;6085:7;3492:13;3442:1;3492:2;:13;:::i;:::-;3926:22;;:5;:22;:::i;:::-;6105:19;;6030:102;:::o;19189:392::-;251:1;397:7;;:19;389:63;;;;-1:-1:-1;;;389:63:0;;;;;;;:::i;:::-;251:1;463:7;:18;2177:6:::1;::::0;-1:-1:-1;;;;;2177:6:0::1;1680:10:::0;2177:22:::1;2169:67;;;;-1:-1:-1::0;;;2169:67:0::1;;;;;;;:::i;:::-;19304:10:::2;::::0;19343:9:::2;::::0;19330:10:::2;::::0;19262::::2;::::0;3566:42:::2;::::0;19275:14:::2;::::0;-1:-1:-1;;;;;19304:10:0;;::::2;::::0;4782:3:::2;::::0;19330:22:::2;::::0;::::2;:::i;:::-;19329:39;;;;:::i;:::-;19275:104;::::0;-1:-1:-1;;;;;;19275:104:0::2;::::0;;;;;;-1:-1:-1;;;;;7865:32:1;;;19275:104:0::2;::::0;::::2;7847:51:1::0;7914:18;;;7907:34;7820:18;;19275:104:0::2;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19432:14;::::0;19475:13:::2;::::0;19462:10:::2;::::0;19262:117;;-1:-1:-1;19390:10:0::2;::::0;3566:42:::2;::::0;19403:14:::2;::::0;-1:-1:-1;;;;;19432:14:0;;::::2;::::0;4782:3:::2;::::0;19462:26:::2;::::0;::::2;:::i;:::-;19461:43;;;;:::i;:::-;19403:112;::::0;-1:-1:-1;;;;;;19403:112:0::2;::::0;;;;;;-1:-1:-1;;;;;7865:32:1;;;19403:112:0::2;::::0;::::2;7847:51:1::0;7914:18;;;7907:34;7820:18;;19403:112:0::2;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19390:125;;19533:5;:14;;;;;19542:5;19533:14;19526:22;;;;:::i;:::-;-1:-1:-1::0;;19572:1:0::2;19559:10;:14:::0;207:1;504:22;;19189:392::o;17803:202::-;17868:7;17984:13;:11;:13::i;:::-;17961:4;17943:24;;;;:9;:24;;;;;;;17930:9;;-1:-1:-1;;;;;17910:17:0;;;;;;;;;:29;;17930:9;17910:29;:::i;:::-;17909:58;;;;:::i;:::-;17908:89;;;;:::i;18804:377::-;2177:6;;-1:-1:-1;;;;;2177:6:0;1680:10;2177:22;2169:67;;;;-1:-1:-1;;;2169:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18959:27:0;::::1;::::0;;::::1;::::0;:62:::1;;-1:-1:-1::0;;;;;;18990:31:0;::::1;::::0;::::1;18959:62;18937:152;;;::::0;-1:-1:-1;;;18937:152:0;;8536:2:1;18937:152:0::1;::::0;::::1;8518:21:1::0;8575:2;8555:18;;;8548:30;8614:34;8594:18;;;8587:62;-1:-1:-1;;;8665:18:1;;;8658:38;8713:19;;18937:152:0::1;8334:404:1::0;18937:152:0::1;19102:10;:26:::0;;-1:-1:-1;;;;;19102:26:0;;::::1;-1:-1:-1::0;;;;;;19102:26:0;;::::1;;::::0;;;19139:14:::1;:34:::0;;;;;::::1;::::0;::::1;;::::0;;18804:377::o;18013:431::-;2177:6;;-1:-1:-1;;;;;2177:6:0;1680:10;2177:22;2169:67;;;;-1:-1:-1;;;2169:67:0;;;;;;;:::i;:::-;18160:2:::1;18147:9;:15;;:52;;;;;18197:2;18183:10;:16;;18147:52;:89;;;;;18233:3;18220:9;:16;;18147:89;:127;;;;;18271:3;18257:10;:17;;18147:127;18125:194;;;::::0;-1:-1:-1;;;18125:194:0;;8945:2:1;18125:194:0::1;::::0;::::1;8927:21:1::0;8984:2;8964:18;;;8957:30;-1:-1:-1;;;9003:18:1;;;8996:47;9060:18;;18125:194:0::1;8743:341:1::0;18125:194:0::1;18332:6;:18:::0;;;18361:7:::1;:20:::0;;;18399:37:::1;::::0;;9263:25:1;;;9319:2;9304:18;;9297:34;;;18399:37:0::1;::::0;9236:18:1;18399:37:0::1;;;;;;;18013:431:::0;;:::o;8297:335::-;8431:4;8466:10;8526:40;8542:6;8466:10;8559:6;8526:15;:40::i;:::-;8584;8598:6;8606:9;8617:6;8584:13;:40::i;:::-;8577:47;8297:335;-1:-1:-1;;;;;8297:335:0:o;7328:118::-;4847:42;7381:7;7423:15;;;:9;:15;;;;3492:13;3442:1;3492:2;:13;:::i;:::-;3926:22;;:5;:22;:::i;:::-;7408:30;;;;:::i;3887:61::-;3492:13;3442:1;3492:2;:13;:::i;:::-;3926:22;;:5;:22;:::i;:::-;3887:61;:::o;20155:675::-;2177:6;;-1:-1:-1;;;;;2177:6:0;1680:10;2177:22;2169:67;;;;-1:-1:-1;;;2169:67:0;;;;;;;:::i;:::-;20308:9:::1;::::0;20270:4:::1;20229:19;20252:24:::0;;;:9:::1;:24;::::0;;;;;20229:19;;20308:9;20252:39:::1;::::0;20279:12;;20252:39:::1;:::i;:::-;20251:66;;;;:::i;:::-;20346:10;20336:21;::::0;;;:9:::1;:21;::::0;;;;;20229:88;;-1:-1:-1;20336:36:0;-1:-1:-1;20336:36:0::1;20328:67;;;::::0;-1:-1:-1;;;20328:67:0;;9677:2:1;20328:67:0::1;::::0;::::1;9659:21:1::0;9716:2;9696:18;;;9689:30;-1:-1:-1;;;9735:18:1;;;9728:48;9793:18;;20328:67:0::1;9475:342:1::0;20328:67:0::1;20420:43;::::0;-1:-1:-1;;;20420:43:0;;20443:4:::1;20420:43;::::0;::::1;7847:51:1::0;7914:18;;;7907:34;;;20408:9:0::1;::::0;3566:42:::1;::::0;20420:14:::1;::::0;7820:18:1;;20420:43:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20408:55;;20482:4;20474:46;;;::::0;-1:-1:-1;;;20474:46:0;;10024:2:1;20474:46:0::1;::::0;::::1;10006:21:1::0;10063:2;10043:18;;;10036:30;10102:31;10082:18;;;10075:59;10151:18;;20474:46:0::1;9822:353:1::0;20474:46:0::1;20550:9;::::0;20582:24:::1;20594:12:::0;20550:9;20582:24:::1;:::i;:::-;20570:9;:36:::0;20635:4:::1;20617:24;::::0;;;:9:::1;:24;::::0;;;;:39;;20645:11;;20617:24;:39:::1;::::0;20645:11;;20617:39:::1;:::i;:::-;::::0;;;-1:-1:-1;;20677:10:0::1;20667:21;::::0;;;:9:::1;:21;::::0;;;;:36;;20692:11;;20667:21;:36:::1;::::0;20692:11;;20667:36:::1;:::i;:::-;::::0;;;-1:-1:-1;;20737:9:0::1;::::0;20726:8:::1;::::0;20750:6;;20726:20:::1;::::0;::::1;:::i;:::-;20725:31;;;;:::i;:::-;20714:8;:42:::0;20774:48:::1;::::0;713:25:1;;;20803:4:0::1;::::0;20783:10:::1;::::0;-1:-1:-1;;;;;;;;;;;20774:48:0;701:2:1;686:18;20774:48:0::1;;;;;;;20218:612;;;20155:675:::0;:::o;7198:122::-;7253:4;7277:35;7285:7;-1:-1:-1;;7277:7:0;:35::i;19589:287::-;19687:7;19712:19;19758:11;19746:9;;:23;;;;:::i;:::-;19734:8;;:36;;;;:::i;:::-;19712:58;;19781:20;19815:9;;19804:8;;:20;;;;:::i;:::-;19781:43;-1:-1:-1;19842:26:0;19781:43;19842:11;:26;:::i;:::-;19835:33;19589:287;-1:-1:-1;;;;19589:287:0:o;2264:148::-;2177:6;;-1:-1:-1;;;;;2177:6:0;1680:10;2177:22;2169:67;;;;-1:-1:-1;;;2169:67:0;;;;;;;:::i;:::-;2371:1:::1;2355:6:::0;;2334:40:::1;::::0;-1:-1:-1;;;;;2355:6:0;;::::1;::::0;2334:40:::1;::::0;2371:1;;2334:40:::1;2402:1;2385:19:::0;;-1:-1:-1;;;;;;2385:19:0::1;::::0;;2264:148::o;7454:284::-;2177:6;;-1:-1:-1;;;;;2177:6:0;1680:10;2177:22;2169:67;;;;-1:-1:-1;;;2169:67:0;;;;;;;:::i;:::-;7578:3:::1;3492:13;3442:1;3492:2;:13;:::i;:::-;3926:22;::::0;:5:::1;:22;:::i;:::-;7563:18;;;;:::i;:::-;7551:8;:30;;7529:134;;;::::0;-1:-1:-1;;;7529:134:0;;10512:2:1;7529:134:0::1;::::0;::::1;10494:21:1::0;10551:2;10531:18;;;10524:30;10590:34;10570:18;;;10563:62;-1:-1:-1;;;10641:18:1;;;10634:52;10703:19;;7529:134:0::1;10310:418:1::0;7529:134:0::1;7674:6;:17:::0;;;7707:23:::1;::::0;713:25:1;;;7707:23:0::1;::::0;701:2:1;686:18;7707:23:0::1;;;;;;;7454:284:::0;:::o;20838:141::-;20885:7;20957:13;:11;:13::i;:::-;20938:16;:14;:16::i;:::-;20913:22;:20;:22::i;:::-;:41;;;;:::i;:::-;:57;;;;:::i;19884:263::-;20017:4;19948:7;19999:24;;;:9;:24;;;;;;19988:8;;19948:7;;19988:35;;;:::i;:::-;20083:4;20034:16;20065:24;;;:9;:24;;;;;;19968:55;;-1:-1:-1;20034:16:0;20065:35;;20092:8;;20065:35;:::i;:::-;20053:8;;:48;;;;:::i;7746:122::-;2177:6;;-1:-1:-1;;;;;2177:6:0;1680:10;2177:22;2169:67;;;;-1:-1:-1;;;2169:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7832:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;7832:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;7746:122::o;8067:188::-;8174:4;8203:44;8217:10;8229:9;8240:6;8203:13;:44::i;:::-;8196:51;8067:188;-1:-1:-1;;;8067:188:0:o;21035:171::-;21079:7;3566:42;-1:-1:-1;;;;;21131:16:0;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3566:42;-1:-1:-1;;;;;21107:19:0;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;14218:3369::-;14354:4;251:1;397:7;;:19;389:63;;;;-1:-1:-1;;;389:63:0;;;;;;;:::i;:::-;251:1;463:7;:18;14424:15:::1;14412:27:::0;::::1;;14404:56;;;::::0;-1:-1:-1;;;14404:56:0;;11124:2:1;14404:56:0::1;::::0;::::1;11106:21:1::0;11163:2;11143:18;;;11136:30;-1:-1:-1;;;11182:18:1;;;11175:46;11238:18;;14404:56:0::1;10922:340:1::0;14404:56:0::1;14535:10;14521:25;::::0;;;:13:::1;:25;::::0;;;;;14550:12:::1;14521:41:::0;;14499:143:::1;;;::::0;-1:-1:-1;;;14499:143:0;;11469:2:1;14499:143:0::1;::::0;::::1;11451:21:1::0;11508:2;11488:18;;;11481:30;11547:34;11527:18;;;11520:62;-1:-1:-1;;;11598:18:1;;;11591:50;11658:19;;14499:143:0::1;11267:416:1::0;14499:143:0::1;14672:10;14655:14;14763:17:::0;;;:9:::1;:17;::::0;;;;;:32;-1:-1:-1;14763:32:0::1;14741:112;;;::::0;-1:-1:-1;;;14741:112:0;;11890:2:1;14741:112:0::1;::::0;::::1;11872:21:1::0;11929:2;11909:18;;;11902:30;11968:32;11948:18;;;11941:60;12018:18;;14741:112:0::1;11688:354:1::0;14741:112:0::1;14994:4;14918:17;14976:24:::0;;;:9:::1;:24;::::0;;;;;:38:::1;::::0;15003:11;;14976:38:::1;:::i;:::-;14964:8;;:51;;;;:::i;:::-;14938:9;;:78;;;;:::i;:::-;14918:98;;15027:17;4265:3;15071:7;;4265:3;15061:17;;;;:::i;:::-;15048:31;::::0;:9;:31:::1;:::i;:::-;15047:43;;;;:::i;:::-;15027:63:::0;-1:-1:-1;15101:17:0::1;15121:21;15027:63:::0;15121:9;:21:::1;:::i;:::-;15101:41;;15203:9;15190;:22;;15182:61;;;::::0;-1:-1:-1;;;15182:61:0;;12249:2:1;15182:61:0::1;::::0;::::1;12231:21:1::0;12288:2;12268:18;;;12261:30;12327:28;12307:18;;;12300:56;12373:18;;15182:61:0::1;12047:350:1::0;15182:61:0::1;15319:10;15289:15;15307:23:::0;;;:11:::1;:23;::::0;;;;;::::1;;:129;;15399:37;::::0;-1:-1:-1;;;15399:37:0;;15414:10:::1;15399:37;::::0;::::1;7847:51:1::0;7914:18;;;7907:34;;;3566:42:0::1;::::0;15399:14:::1;::::0;7820:18:1;;15399:37:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15307:129;;;15346:37;::::0;-1:-1:-1;;;15346:37:0;;15361:10:::1;15346:37;::::0;::::1;7847:51:1::0;7914:18;;;7907:34;;;3566:42:0::1;::::0;15346:14:::1;::::0;7820:18:1;;15346:37:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15289:147;;15455:10;15447:42;;;::::0;-1:-1:-1;;;15447:42:0;;12604:2:1;15447:42:0::1;::::0;::::1;12586:21:1::0;12643:2;12623:18;;;12616:30;-1:-1:-1;;;12662:18:1;;;12655:49;12721:18;;15447:42:0::1;12402:343:1::0;15447:42:0::1;-1:-1:-1::0;;;;;15567:17:0;::::1;;::::0;;;:9:::1;:17;::::0;;;;;:31:::1;::::0;15587:11;;15567:31:::1;:::i;:::-;-1:-1:-1::0;;;;;15547:17:0;::::1;;::::0;;;:9:::1;:17;::::0;;;;;;;:51;;;;15741:10:::1;15729:23:::0;;:11:::1;:23:::0;;;;::::1;;:87;;15807:9;15794:10;;:22;;;;:::i;:::-;15729:87;;;15768:10;;15729:87;15716:10;:100:::0;15839:9:::1;::::0;:21:::1;::::0;15851:9;;15839:21:::1;:::i;:::-;15827:9;:33:::0;15964:4:::1;15946:24;::::0;;;:9:::1;:24;::::0;;;;;:38:::1;::::0;15973:11;;15946:38:::1;:::i;:::-;15937:4;15919:24;::::0;;;:9:::1;:24;::::0;;;;:65;;;;16038:15:::1;::::0;16097:13:::1;:11;:13::i;:::-;16085:25;::::0;:9;:25:::1;:::i;:::-;16064:46;;16136:10;16121:11;;:25;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;16157:11:0::1;::::0;;;:4:::1;:11;::::0;;;;:25;;16172:10;;16157:11;:25:::1;::::0;16172:10;;16157:25:::1;:::i;:::-;;;;;;;;16240:1;16229:7;;:12;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;16264:7:0::1;::::0;16252:20:::1;::::0;;;:11:::1;:20;::::0;;;;:28;;;16327:13:::1;:11;:13::i;:::-;16308:16;:14;:16::i;:::-;:32;;;;:::i;:::-;16351:22;::::0;;;:15:::1;:22;::::0;;;;:35;;;16401:27:::1;;::::0;16291:49;;-1:-1:-1;16401:32:0;16397:174:::1;;16480:15;:73;16514:11;:24;16536:1;16526:7;;:11;;;;:::i;:::-;16514:24;;;;;;;;;;;;16480:73;;;;;;;;;;;:79;;;16450:15;:22;16466:5;16450:22;;;;;;;;;;;:27;;:109;;;;16397:174;16581:22;::::0;;;:15:::1;:22;::::0;;;;:28:::1;::::0;::::1;:37:::0;;;16649:27:::1;;::::0;:36;-1:-1:-1;16649:36:0;:85:::1;;-1:-1:-1::0;16702:22:0::1;::::0;;;:15:::1;:22;::::0;;;;:27:::1;;::::0;:32;16649:85:::1;16631:178;;;16761:22;::::0;;;:15:::1;:22;::::0;;;;:27:::1;;:36:::0;;;16631:178:::1;16839:22;::::0;;;:15:::1;:22;::::0;;;;:26:::1;;::::0;:35;-1:-1:-1;16839:35:0;:83:::1;;-1:-1:-1::0;16891:22:0::1;::::0;;;:15:::1;:22;::::0;;;;:26:::1;;::::0;:31;16839:83:::1;16821:175;;;16949:22;::::0;;;:15:::1;:22;::::0;;;;:26:::1;;:35:::0;;;16821:175:::1;17055:44;::::0;713:25:1;;;17080:4:0::1;::::0;-1:-1:-1;;;;;17055:44:0;::::1;::::0;-1:-1:-1;;;;;;;;;;;17055:44:0;701:2:1;686:18;17055:44:0::1;;;;;;;17126:10;17114:23;::::0;;;:11:::1;:23;::::0;;;;;::::1;;17110:448;;;17159:167;::::0;;12952:25:1;;;13008:2;12993:18;;12986:34;;;13036:18;;;13029:34;;;17214:10:0::1;::::0;17190:4:::1;::::0;17159:167:::1;::::0;12940:2:1;12925:18;17159:167:0::1;;;;;;;17110:448;;;17419:10;17395:4;17364:182;17448:11:::0;17478:9;17518:13:::1;:11;:13::i;:::-;17506:25;::::0;:9;:25:::1;:::i;:::-;17364:182;::::0;;12952:25:1;;;13008:2;12993:18;;12986:34;;;;13036:18;;;13029:34;12940:2;12925:18;17364:182:0::1;;;;;;;17110:448;-1:-1:-1::0;;17575:4:0::1;504:22:::0;;;17575:4;14218:3369;-1:-1:-1;;;;;;;;;;14218:3369:0:o;21453:166::-;251:1;397:7;;:19;389:63;;;;-1:-1:-1;;;389:63:0;;;;;;;:::i;:::-;251:1;463:7;:18;2177:6:::1;::::0;-1:-1:-1;;;;;2177:6:0::1;1680:10:::0;2177:22:::1;2169:67;;;;-1:-1:-1::0;;;2169:67:0::1;;;;;;;:::i;:::-;21528:9:::2;::::0;::::2;;21527:10;21519:65;;;::::0;-1:-1:-1;;;21519:65:0;;13276:2:1;21519:65:0::2;::::0;::::2;13258:21:1::0;13315:2;13295:18;;;13288:30;13354:34;13334:18;;;13327:62;-1:-1:-1;;;13405:18:1;;;13398:40;13455:19;;21519:65:0::2;13074:406:1::0;21519:65:0::2;21595:9;:16:::0;;-1:-1:-1;;21595:16:0::2;21607:4;21595:16:::0;;::::2;::::0;;;504:22;;21453:166::o;21268:177::-;21315:7;21355:1;21343:9;;:13;21335:38;;;;-1:-1:-1;;;21335:38:0;;13687:2:1;21335:38:0;;;13669:21:1;13726:2;13706:18;;;13699:30;-1:-1:-1;;;13745:18:1;;;13738:42;13797:18;;21335:38:0;13485:336:1;21335:38:0;21431:4;21413:24;;;;:9;:24;;;;;;21391:9;;:19;;5245:6;;21391:19;:::i;:::-;:46;;;;:::i;2420:281::-;2177:6;;-1:-1:-1;;;;;2177:6:0;1680:10;2177:22;2169:67;;;;-1:-1:-1;;;2169:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2523:22:0;::::1;2501:110;;;::::0;-1:-1:-1;;;2501:110:0;;14028:2:1;2501:110:0::1;::::0;::::1;14010:21:1::0;14067:2;14047:18;;;14040:30;14106:34;14086:18;;;14079:62;-1:-1:-1;;;14157:18:1;;;14150:36;14203:19;;2501:110:0::1;13826:402:1::0;2501:110:0::1;2648:6;::::0;;2627:38:::1;::::0;-1:-1:-1;;;;;2627:38:0;;::::1;::::0;2648:6;::::1;::::0;2627:38:::1;::::0;::::1;2676:6;:17:::0;;-1:-1:-1;;;;;;2676:17:0::1;-1:-1:-1::0;;;;;2676:17:0;;;::::1;::::0;;;::::1;::::0;;2420:281::o;18452:344::-;2177:6;;-1:-1:-1;;;;;2177:6:0;1680:10;2177:22;2169:67;;;;-1:-1:-1;;;2169:67:0;;;;;;;:::i;:::-;4782:3:::1;18608:31;18623:16:::0;18608:12;:31:::1;:::i;:::-;:47;18586:122;;;::::0;-1:-1:-1;;;18586:122:0;;14435:2:1;18586:122:0::1;::::0;::::1;14417:21:1::0;14474:2;14454:18;;;14447:30;14513:27;14493:18;;;14486:55;14558:18;;18586:122:0::1;14233:349:1::0;18586:122:0::1;18721:9;:24:::0;;;;18756:13:::1;:32:::0;18452:344::o;7876:153::-;2177:6;;-1:-1:-1;;;;;2177:6:0;1680:10;2177:22;2169:67;;;;-1:-1:-1;;;2169:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7989:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;7989:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;7876:153::o;10525:3361::-;10660:4;251:1;397:7;;:19;389:63;;;;-1:-1:-1;;;389:63:0;;;;;;;:::i;:::-;251:1;463:7;:18;10730:15:::1;10718:27:::0;::::1;;10710:56;;;::::0;-1:-1:-1;;;10710:56:0;;11124:2:1;10710:56:0::1;::::0;::::1;11106:21:1::0;11163:2;11143:18;;;11136:30;-1:-1:-1;;;11182:18:1;;;11175:46;11238:18;;10710:56:0::1;10922:340:1::0;10710:56:0::1;10793:10;10777:13;10841:20:::0;;;:13:::1;:20;::::0;;;;10864:12:::1;10841:35:::0;;10926:9:::1;::::0;10918:52:::1;;;::::0;-1:-1:-1;;;10918:52:0;;14789:2:1;10918:52:0::1;::::0;::::1;14771:21:1::0;14828:2;14808:18;;;14801:30;14867:28;14847:18;;;14840:56;14913:18;;10918:52:0::1;14587:350:1::0;10918:52:0::1;11042:9;::::0;::::1;;::::0;:35:::1;;-1:-1:-1::0;;;;;;11055:22:0;::::1;;::::0;;;:15:::1;:22;::::0;;;;;::::1;;11042:35;11020:104;;;::::0;-1:-1:-1;;;11020:104:0;;15144:2:1;11020:104:0::1;::::0;::::1;15126:21:1::0;15183:2;15163:18;;;15156:30;-1:-1:-1;;;15202:18:1;;;15195:49;15261:18;;11020:104:0::1;14942:343:1::0;11020:104:0::1;-1:-1:-1::0;;;;;11187:18:0;::::1;11167:17;11187:18:::0;;;:11:::1;:18;::::0;;;;;::::1;;:89;;4265:3;11259:6;;11247:9;:18;;;;:::i;:::-;11246:30;;;;:::i;:::-;11187:89;;;11221:9;11187:89;11167:109;;11332:20;11420:9;;11408;:21;;;;:::i;:::-;11396:8;;:34;;;;:::i;:::-;11373:4;11355:24;::::0;;;:9:::1;:24;::::0;;;;;:76:::1;::::0;;::::1;:::i;:::-;11531:6;::::0;-1:-1:-1;;;;;11496:16:0;::::1;;::::0;;;:9:::1;:16;::::0;;;;;11332:99;;-1:-1:-1;11531:6:0;11496:31:::1;::::0;11332:99;;11496:31:::1;:::i;:::-;:41;;:84;;;-1:-1:-1::0;;;;;;11558:22:0;::::1;;::::0;;;:15:::1;:22;::::0;;;;;::::1;;11496:84;11474:153;;;::::0;-1:-1:-1;;;11474:153:0;;15492:2:1;11474:153:0::1;::::0;::::1;15474:21:1::0;15531:2;15511:18;;;15504:30;-1:-1:-1;;;15550:18:1;;;15543:49;15609:18;;11474:153:0::1;15290:343:1::0;11474:153:0::1;11693:1;11678:12;:16;11670:64;;;::::0;-1:-1:-1;;;11670:64:0;;15840:2:1;11670:64:0::1;::::0;::::1;15822:21:1::0;15879:2;15859:18;;;15852:30;15918:34;15898:18;;;15891:62;-1:-1:-1;;;15969:18:1;;;15962:33;16012:19;;11670:64:0::1;15638:399:1::0;11670:64:0::1;11803:11;11787:12;:27;;11779:66;;;::::0;-1:-1:-1;;;11779:66:0;;12249:2:1;11779:66:0::1;::::0;::::1;12231:21:1::0;12288:2;12268:18;;;12261:30;12327:28;12307:18;;;12300:56;12373:18;;11779:66:0::1;12047:350:1::0;11779:66:0::1;11934:51;::::0;-1:-1:-1;;;11934:51:0;;-1:-1:-1;;;;;16300:15:1;;11934:51:0::1;::::0;::::1;16282:34:1::0;11968:4:0::1;16332:18:1::0;;;16325:43;16384:18;;;16377:34;;;11925:6:0::1;::::0;3566:42:::1;::::0;11934:18:::1;::::0;16217::1;;11934:51:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11925:60;;12006:1;11998:37;;;::::0;-1:-1:-1;;;11998:37:0;;16624:2:1;11998:37:0::1;::::0;::::1;16606:21:1::0;16663:2;16643:18;;;16636:30;16702:25;16682:18;;;16675:53;16745:18;;11998:37:0::1;16422:347:1::0;11998:37:0::1;12101:29;12105:10;12117:12;12101:3;:29::i;:::-;12200:17;12220:21;12232:9:::0;12220;:21:::1;:::i;:::-;12200:41;;12278:9;12265:10;;:22;;;;:::i;:::-;12252:10;:35:::0;12310:9:::1;::::0;:21:::1;::::0;12322:9;;12310:21:::1;:::i;:::-;12298:9;:33:::0;12385:15:::1;12369:13;12443;:11;:13::i;:::-;12431:25;::::0;:9;:25:::1;:::i;:::-;12411:45;;12482:9;12467:11;;:24;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;12504:11:0::1;::::0;;;:4:::1;:11;::::0;;;;:24;;12519:9;;12504:11;:24:::1;::::0;12519:9;;12504:24:::1;:::i;:::-;;;;;;;;12586:1;12575:7;;:12;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;12610:7:0::1;::::0;12598:20:::1;::::0;;;:11:::1;:20;::::0;;;;:28;;;12673:13:::1;:11;:13::i;:::-;12654:16;:14;:16::i;:::-;:32;;;;:::i;:::-;12697:22;::::0;;;:15:::1;:22;::::0;;;;:35;;;12747:27:::1;;::::0;12637:49;;-1:-1:-1;12747:32:0;12743:405:::1;;12800:7;;12811:1;12800:12:::0;12796:341:::1;;12950:13;:11;:13::i;:::-;3492;3442:1;3492:2;:13;:::i;:::-;3926:22;::::0;:5:::1;:22;:::i;:::-;12898:9;12886;;:21;;;;:::i;:::-;12885:40;;;;:::i;:::-;12884:79;;;;:::i;:::-;12833:22;::::0;;;:15:::1;:22;::::0;;;;:27:::1;;:130:::0;12796:341:::1;;;13034:15;:81;13072:11;:24;13094:1;13084:7;;:11;;;;:::i;:::-;13072:24;;;;;;;;;;;;13034:81;;;;;;;;;;;:87;;;13004:15;:22;13020:5;13004:22;;;;;;;;;;;:27;;:117;;;;12796:341;13158:22;::::0;;;:15:::1;:22;::::0;;;;:28:::1;::::0;::::1;:37:::0;;;13226:27:::1;;::::0;:36;-1:-1:-1;13226:36:0;:85:::1;;-1:-1:-1::0;13279:22:0::1;::::0;;;:15:::1;:22;::::0;;;;:27:::1;;::::0;:32;13226:85:::1;13208:178;;;13338:22;::::0;;;:15:::1;:22;::::0;;;;:27:::1;;:36:::0;;;13208:178:::1;13416:22;::::0;;;:15:::1;:22;::::0;;;;:26:::1;;::::0;:35;-1:-1:-1;13416:35:0;:83:::1;;-1:-1:-1::0;13468:22:0::1;::::0;;;:15:::1;:22;::::0;;;;:26:::1;;::::0;:31;13416:83:::1;13398:175;;;13526:22;::::0;;;:15:::1;:22;::::0;;;;:26:::1;;:35:::0;;;13398:175:::1;13630:49;::::0;713:25:1;;;13654:10:0::1;::::0;13647:4:::1;::::0;-1:-1:-1;;;;;;;;;;;13630:49:0;701:2:1;686:18;13630:49:0::1;;;;;;;13749:4;13716:10;13695:161;13769:12:::0;13796:9;13832:13:::1;:11;:13::i;:::-;13820:25;::::0;:9;:25:::1;:::i;9536:521::-:0;-1:-1:-1;;;;;9698:18:0;;;9671:24;9698:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;-1:-1:-1;;9740:37:0;;9736:314;;9840:6;9820:16;:26;;9794:117;;;;-1:-1:-1;;;9794:117:0;;16976:2:1;9794:117:0;;;16958:21:1;17015:2;16995:18;;;16988:30;17054:31;17034:18;;;17027:59;17103:18;;9794:117:0;16774:353:1;9794:117:0;9973:51;9982:5;9989:7;9998:25;10017:6;9998:16;:25;:::i;:::-;9973:8;:51::i;:::-;9660:397;9536:521;;;:::o;8670:858::-;8796:4;-1:-1:-1;;;;;8868:23:0;;;;;;:53;;-1:-1:-1;;;;;;8895:26:0;;8916:4;8895:26;;8868:53;8846:137;;;;-1:-1:-1;;;8846:137:0;;17334:2:1;8846:137:0;;;17316:21:1;17373:2;17353:18;;;17346:30;17412:34;17392:18;;;17385:62;-1:-1:-1;;;17463:18:1;;;17456:32;17505:19;;8846:137:0;17132:398:1;8846:137:0;9011:1;9002:6;:10;8994:64;;;;-1:-1:-1;;;8994:64:0;;17737:2:1;8994:64:0;;;17719:21:1;17776:2;17756:18;;;17749:30;17815:34;17795:18;;;17788:62;-1:-1:-1;;;17866:18:1;;;17859:39;17915:19;;8994:64:0;17535:405:1;8994:64:0;-1:-1:-1;;;;;9091:26:0;;;;;;:15;:26;;;;;;;;;:86;;-1:-1:-1;9171:6:0;;-1:-1:-1;;;;;9138:20:0;;;;;;:9;:20;;;;;;:29;;9161:6;;9138:29;:::i;:::-;:39;;9091:86;9069:156;;;;-1:-1:-1;;;9069:156:0;;18147:2:1;9069:156:0;;;18129:21:1;18186:2;18166:18;;;18159:30;-1:-1:-1;;;18205:18:1;;;18198:50;18265:18;;9069:156:0;17945:344:1;9069:156:0;-1:-1:-1;;;;;9291:17:0;;;;;;:9;:17;;;;;;:26;;9311:6;;9291:26;:::i;:::-;-1:-1:-1;;;;;9271:17:0;;;;;;;:9;:17;;;;;;:46;;;;9389:20;;;;;;;:29;;9412:6;;9389:29;:::i;:::-;-1:-1:-1;;;;;9366:20:0;;;;;;;:9;:20;;;;;;;:52;;;;9463:35;;;;;;-1:-1:-1;;;;;;;;;;;9463:35:0;;;9491:6;713:25:1;;701:2;686:18;;567:177;9463:35:0;;;;;;;;-1:-1:-1;9516:4:0;8670:858;;;;;:::o;13940:196::-;-1:-1:-1;;;;;14029:19:0;;;;;;:9;:19;;;;;;:28;;14051:6;;14029:28;:::i;:::-;-1:-1:-1;;;;;14007:19:0;;;;;;:9;:19;;;;;;:50;;;;14113:4;14095:24;;;;:33;;14122:6;;14095:33;:::i;:::-;14086:4;14068:24;;;;:9;:24;;;;;:60;-1:-1:-1;;13940:196:0:o;10065:380::-;-1:-1:-1;;;;;10201:19:0;;10193:68;;;;-1:-1:-1;;;10193:68:0;;18496:2:1;10193:68:0;;;18478:21:1;18535:2;18515:18;;;18508:30;18574:34;18554:18;;;18547:62;-1:-1:-1;;;18625:18:1;;;18618:34;18669:19;;10193:68:0;18294:400:1;10193:68:0;-1:-1:-1;;;;;10280:21:0;;10272:68;;;;-1:-1:-1;;;10272:68:0;;18901:2:1;10272:68:0;;;18883:21:1;18940:2;18920:18;;;18913:30;18979:34;18959:18;;;18952:62;-1:-1:-1;;;19030:18:1;;;19023:32;19072:19;;10272:68:0;18699:398:1;10272:68:0;-1:-1:-1;;;;;10353:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10405:32;;713:25:1;;;10405:32:0;;686:18:1;10405:32:0;;;;;;;10065: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;8202:127::-;8263:10;8258:3;8254:20;8251:1;8244:31;8294:4;8291:1;8284:15;8318:4;8315:1;8308:15;9342:128;9409:9;;;9430:11;;;9427:37;;;9444:18;;:::i;10180:125::-;10245:9;;;10266:10;;;10263:36;;;10279:18;;:::i;10733:184::-;10803:6;10856:2;10844:9;10835:7;10831:23;10827:32;10824:52;;;10872:1;10869;10862:12;10824:52;-1:-1:-1;10895:16:1;;10733:184;-1:-1:-1;10733:184:1:o

Swarm Source

ipfs://e336f1712ee2f35f0da9dd9d35900aacab3ffe5878e2b3907467d9f69164e062

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.