ETH Price: $2,064.61 (-3.01%)

Contract

0xcD682EF09d07668d49A8103ddD65Ff54AebFbfDe
 

Overview

ETH Balance

2.479698681740124364 ETH

Eth Value

$5,119.60 (@ $2,064.61/ETH)

More Info

Private Name Tags

TokenTracker

Multichain Info

Transaction Hash
Method
Block
From
To
Approve224695012025-05-12 20:15:47297 days ago1747080947IN
SURGE: SRG Token
0 ETH0.000093413.84371792
_sell214159972024-12-16 15:32:23444 days ago1734363143IN
SURGE: SRG Token
0 ETH0.0065343824.35005856
_sell202005492024-06-29 23:13:23614 days ago1719702803IN
SURGE: SRG Token
0 ETH0.0003751.37238981
_sell198693552024-05-14 16:15:35660 days ago1715703335IN
SURGE: SRG Token
0 ETH0.002323348.50531847
Transfer198693262024-05-14 16:09:35660 days ago1715702975IN
SURGE: SRG Token
0 ETH0.000361599.20059456
Transfer198693112024-05-14 16:06:35660 days ago1715702795IN
SURGE: SRG Token
0 ETH0.000320588.15727282
Approve195471822024-03-30 13:51:59705 days ago1711806719IN
SURGE: SRG Token
0 ETH0.0006429926.4562516
Approve194716262024-03-19 22:00:35716 days ago1710885635IN
SURGE: SRG Token
0 ETH0.0009328538.38262918
Approve192399832024-02-16 10:52:11748 days ago1708080731IN
SURGE: SRG Token
0 ETH0.000528921.76190735
Approve192399802024-02-16 10:51:35748 days ago1708080695IN
SURGE: SRG Token
0 ETH0.0005589923
Approve191588792024-02-05 1:43:23760 days ago1707097403IN
SURGE: SRG Token
0 ETH0.0003313713.63466211
Approve191285132024-01-31 19:22:23764 days ago1706728943IN
SURGE: SRG Token
0 ETH0.0006765527.83723149
Approve190579332024-01-21 21:44:47774 days ago1705873487IN
SURGE: SRG Token
0 ETH0.0003003411.41837569
Approve190579332024-01-21 21:44:47774 days ago1705873487IN
SURGE: SRG Token
0 ETH0.0002630710.82445284
Approve190556442024-01-21 13:50:11774 days ago1705845011IN
SURGE: SRG Token
0 ETH0.000341814.0638517
Approve190551022024-01-21 12:01:11774 days ago1705838471IN
SURGE: SRG Token
0 ETH0.0002754811.33494964
_sell189057392023-12-31 13:24:11795 days ago1704029051IN
SURGE: SRG Token
0 ETH0.0040457314.81194835
_sell189056912023-12-31 13:14:35795 days ago1704028475IN
SURGE: SRG Token
0 ETH0.003485112.75941908
_sell187489322023-12-09 13:20:47817 days ago1702128047IN
SURGE: SRG Token
0 ETH0.0090125831.56109873
Transfer186423712023-11-24 15:10:47832 days ago1700838647IN
SURGE: SRG Token
0 ETH0.0011497236.03475331
_sell185274232023-11-08 13:05:59848 days ago1699448759IN
SURGE: SRG Token
0 ETH0.0095882935.091631
_sell184847082023-11-02 13:32:23854 days ago1698931943IN
SURGE: SRG Token
0 ETH0.0093621534.26098627
Approve184015112023-10-21 21:57:35866 days ago1697925455IN
SURGE: SRG Token
0 ETH0.000235259.67967939
Transfer182137392023-09-25 15:37:59892 days ago1695656279IN
SURGE: SRG Token
0 ETH0.000702920.37339803
_sell182040342023-09-24 7:00:59893 days ago1695538859IN
SURGE: SRG Token
0 ETH0.002137947.8241781
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Method Block
From
To
Transfer239967762025-12-12 13:15:1183 days ago1765545311
SURGE: SRG Token
0.00092013 ETH
Transfer233683992025-09-15 12:12:11171 days ago1757938331
SURGE: SRG Token
0.01510387 ETH
Transfer214159972024-12-16 15:32:23444 days ago1734363143
SURGE: SRG Token
0.02989634 ETH
Transfer202005492024-06-29 23:13:23614 days ago1719702803
SURGE: SRG Token
0.0159836 ETH
Transfer198693552024-05-14 16:15:35660 days ago1715703335
SURGE: SRG Token
0.0757542 ETH
Transfer189057392023-12-31 13:24:11795 days ago1704029051
SURGE: SRG Token
0.04637718 ETH
Transfer189056912023-12-31 13:14:35795 days ago1704028475
SURGE: SRG Token
0.07487068 ETH
Transfer187489322023-12-09 13:20:47817 days ago1702128047
SURGE: SRG Token
0.09021914 ETH
Transfer185274232023-11-08 13:05:59848 days ago1699448759
SURGE: SRG Token
0.02001423 ETH
Transfer184847082023-11-02 13:32:23854 days ago1698931943
SURGE: SRG Token
0.06311052 ETH
Transfer182040342023-09-24 7:00:59893 days ago1695538859
SURGE: SRG Token
0.01275491 ETH
Transfer181766442023-09-20 10:56:23897 days ago1695207383
SURGE: SRG Token
0.1446331 ETH
Transfer181556602023-09-17 12:09:11900 days ago1694952551
SURGE: SRG Token
0.08855267 ETH
Transfer181152782023-09-11 19:44:35906 days ago1694461475
SURGE: SRG Token
0.02982798 ETH
_buy180664172023-09-04 23:31:23913 days ago1693870283
SURGE: SRG Token
0.015 ETH
Transfer180642972023-09-04 16:25:59913 days ago1693844759
SURGE: SRG Token
0.02063836 ETH
Transfer180349322023-08-31 13:43:47917 days ago1693489427
SURGE: SRG Token
0.05562493 ETH
Transfer180078882023-08-27 18:49:35921 days ago1693162175
SURGE: SRG Token
0.06628527 ETH
Transfer180078852023-08-27 18:48:59921 days ago1693162139
SURGE: SRG Token
0.06750869 ETH
Transfer180065152023-08-27 14:11:47921 days ago1693145507
SURGE: SRG Token
0.00682535 ETH
Transfer179425602023-08-18 15:27:35930 days ago1692372455
SURGE: SRG Token
0.02318668 ETH
Transfer179425502023-08-18 15:25:35930 days ago1692372335
SURGE: SRG Token
0.02318668 ETH
Transfer179358122023-08-17 16:44:59931 days ago1692290699
SURGE: SRG Token
0.0363965 ETH
Transfer179044652023-08-13 7:31:35935 days ago1691911895
SURGE: SRG Token
0.02485957 ETH
Transfer178801792023-08-09 21:59:35939 days ago1691618375
SURGE: SRG Token
0.1423124 ETH
View All Internal Transactions
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
SURGE

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license, Audited
/**
 *Submitted for verification at Etherscan.io on 2023-01-12
*/

//SPDX-License-Identifier: MIT

/**
 * Contract: Surge Token
 * Developed by: Heisenman
 * Team: t.me/ALBINO_RHINOOO, t.me/Heisenman, t.me/STFGNZ
 * Trade without dex fees. $SURGE is the inception of the next generation of decentralized protocols.
 * Socials:
 * TG: https://t.me/SURGEPROTOCOL
 * Website: https://surgeprotocol.io/
 * Twitter: https://twitter.com/SURGEPROTOCOL
 */

pragma solidity 0.8.17;

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 IPancakePair {
    function token0() external view returns (address);

    function token1() external view returns (address);

    function getReserves()
        external
        view
        returns (
            uint112 reserve0,
            uint112 reserve1,
            uint32 blockTimestampLast
        );
}

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

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 SURGE 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 = "SURGE";
    string private constant _symbol = "SRG";
    uint8 private constant _decimals = 9;
    uint256 private constant _decMultiplier = 10**_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 = 0xDa17D158bC42f9C29E626b836d9231bB173bab06;
    address public treasuryWallet = 0xF526A924c406D31d16a844FF04810b79E71804Ef;

    // 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 = 4 ether;
    uint256 public liqConst = liquidity * _totalSupply;
    uint256 public constant TRADE_OPEN_TIME = 1673544600;

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

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

    //Migration Wallet
    address public constant MIGRATION_WALLET =
        0xc207cd3f61Da958AA6f4209C5f0a145C056B576f;

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

        isFeeExempt[msg.sender] = true;
        isFeeExempt[MIGRATION_WALLET] = true;
        
        isTxLimitExempt[MIGRATION_WALLET] = 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"
            );

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

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

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

    /** Purchases SURGE Tokens and Deposits Them in Sender's Address*/
    function _buy(uint256 minTokenOut, uint256 deadline)
        public
        payable
        nonReentrant
        returns (bool)
    {
        // deadline requirement
        require(deadline >= block.timestamp, "Deadline EXPIRED");

        // Frontrun Guard
        _lastBuyBlock[msg.sender] = block.number;

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

        // check if trading is open or whether the buying wallet is the migration one
        require(
            block.timestamp >= TRADE_OPEN_TIME ||
                msg.sender == MIGRATION_WALLET,
            "Trading is not Open"
        );

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

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

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

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

        // revert for slippage
        require(tokensToSend >= minTokenOut, "INSUFFICIENT OUTPUT AMOUNT");

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

        //update available tax to extract and Liquidity
        uint256 taxAmount = msg.value - bnbAmount;
        taxBalance = taxBalance + taxAmount;
        liquidity = liquidity + bnbAmount;

        //update volume
        uint256 cTime = block.timestamp;
        uint256 dollarBuy = msg.value * getBNBPrice();
        totalVolume += dollarBuy;
        indVol[msg.sender] += dollarBuy;
        tVol[cTime] += dollarBuy;

        //update candleStickData
        totalTx += 1;
        txTimeStamp[totalTx] = cTime;
        uint256 cPrice = calculatePrice() * getBNBPrice();
        candleStickData[cTime].time = cTime;
        if (candleStickData[cTime].open == 0) {
            if (totalTx == 1) {
                candleStickData[cTime].open =
                    ((liquidity - bnbAmount) / (_totalSupply)) *
                    getBNBPrice();
            } 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,
            msg.value,
            bnbAmount * getBNBPrice()
        );
        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 amountBNB = liquidity -
            (liqConst / (_balances[address(this)] + tokenAmount));
        uint256 amountTax = (amountBNB * (DIVISOR - sellMul)) / DIVISOR;
        uint256 BNBToSend = amountBNB - amountTax;

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

        // send BNB to Seller
        (bool successful, ) = isFeeExempt[msg.sender]
            ? payable(seller).call{value: amountBNB}("")
            : payable(seller).call{value: BNBToSend}("");
        require(successful, "BNB/ETH 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 - amountBNB;

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

        //update volume
        uint256 cTime = block.timestamp;
        uint256 dollarSell = amountBNB * getBNBPrice();
        totalVolume += dollarSell;
        indVol[msg.sender] += dollarSell;
        tVol[cTime] += dollarSell;

        //update candleStickData
        totalTx += 1;
        txTimeStamp[totalTx] = cTime;
        uint256 cPrice = calculatePrice() * getBNBPrice();
        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,
                amountBNB,
                dollarSell
            );
        } else {
            emit Sold(
                address(this),
                msg.sender,
                tokenAmount,
                BNBToSend,
                BNBToSend * getBNBPrice()
            );
        }
        return true;
    }

    /** Amount of BNB 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)]) *
            getBNBPrice();
    }

    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, ) = payable(teamWallet).call{
            value: (taxBalance * teamShare) / SHAREDIVISOR
        }("");
        (bool temp2, ) = payable(treasuryWallet).call{
            value: (taxBalance * treasuryShare) / SHAREDIVISOR
        }("");
        assert(temp1 && temp2);
        taxBalance = 0;
    }

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

    function getBNBAmountOut(uint256 amountIn) public view returns (uint256) {
        uint256 beansBefore = liqConst / _balances[address(this)];
        uint256 beansAfter = liqConst / (_balances[address(this)] + amountIn);
        return beansBefore - beansAfter;
    }

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

        uint256 oldLiq = liquidity;
        liquidity = liquidity + msg.value;
        _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() * getBNBPrice());
    }

    address private stablePairAddress =
        0xB4e16d0168e52d35CaCD2c6185b44281Ec28C9Dc;
    address private stableAddress = 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48;

    function changeStablePair(address newStablePair, address newStableAddress)
        external
        onlyOwner
    {
        require(
            newStablePair != address(0) && newStableAddress != address(0),
            "New addresses must not be the ZERO address"
        );

        stablePairAddress = newStablePair;
        stableAddress = newStableAddress;
        emit StablePairChanged(newStablePair, newStableAddress);
    }

    // calculate price based on pair reserves
    function getBNBPrice() public view returns (uint256) {
        IPancakePair pair = IPancakePair(stablePairAddress);
        IERC20 token1 = pair.token0() == stableAddress
            ? IERC20(pair.token1())
            : IERC20(pair.token0());

        (uint256 Res0, uint256 Res1, ) = pair.getReserves();

        if (pair.token0() != stableAddress) {
            (Res1, Res0, ) = pair.getReserves();
        }
        uint256 res0 = Res0 * 10**token1.decimals();
        return (res0 / Res1); // return amount of token0 needed to buy token1
    }

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

Contract Security Audit

Contract ABI

API
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":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":"MIGRATION_WALLET","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SHAREDIVISOR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TRADE_OPEN_TIME","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":"minTokenOut","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"_buy","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"payable","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":[],"name":"addLiquidity","outputs":[],"stateMutability":"payable","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":"address","name":"newStablePair","type":"address"},{"internalType":"address","name":"newStableAddress","type":"address"}],"name":"changeStablePair","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":[{"internalType":"uint256","name":"amountIn","type":"uint256"}],"name":"getBNBAmountOut","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBNBPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":[{"internalType":"uint256","name":"amountBNBIn","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":"address","name":"","type":"address"}],"name":"indVol","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":"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":[{"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"}]

6080604052605f600581905560065560646200001e6009600a620003f0565b6200002e906305f5e10062000408565b6200003a919062000422565b60085560006009908155600a80546001600160a01b031990811673da17d158bc42f9c29e626b836d9231bb173bab06178255600b805490911673f526a924c406d31d16a844ff04810b79e71804ef1790556028600c55603c600d55673782dace9d900000600e55620000ad9190620003f0565b620000bd906305f5e10062000408565b600e54620000cc919062000408565b600f556000601255601780546001600160a01b031990811673b4e16d0168e52d35cacd2c6185b44281ec28c9dc179091556018805490911673a0b86991c6218b36c1d19d4a2e9eb0ce3606eb481790553480156200012957600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600180556200017d6009600a620003f0565b6200018d906305f5e10062000408565b30600081815260026020908152604080832094909455338252600481528382208054600160ff1991821681179092557fa117656c6a259eb6b5d8d76b4581229baabc32fdc432407a7740bae4c3df9f52805482168317905560079092527fea2c12fe97acd9868ccd4ce083e17f3749fee6bf474bfed5f51316445f6b10da8054831682179055848320805483168217905583835293822080548216851790557fb0c2646e02af70b79e3fe9277b98373379f54150e4e26b2b5650139f7a75a65d80548216851790558180527f6d5257204ebe7d88fd91ae87941cb2dd9d8062b64ae5a2bd2d28ec40b9fbf6df8054909116909317909255907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620002b46009600a620003f0565b620002c4906305f5e10062000408565b60405190815260200160405180910390a362000445565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000332578160001904821115620003165762000316620002db565b808516156200032457918102915b93841c9390800290620002f6565b509250929050565b6000826200034b57506001620003ea565b816200035a57506000620003ea565b81600181146200037357600281146200037e576200039e565b6001915050620003ea565b60ff841115620003925762000392620002db565b50506001821b620003ea565b5060208310610133831016604e8410600b8410161715620003c3575081810a620003ea565b620003cf8383620002f1565b8060001904821115620003e657620003e6620002db565b0290505b92915050565b60006200040160ff8416836200033a565b9392505050565b8082028115828204841417620003ea57620003ea620002db565b6000826200044057634e487b7160e01b600052601260045260246000fd5b500490565b612f6c80620004556000396000f3fe60806040526004361061036b5760003560e01c80637220cf39116101c6578063aa98e163116100f7578063e8f620b111610095578063f2fde38b1161006f578063f2fde38b14610a08578063f4034e4b14610a28578063f7a62fe914610a48578063fabe628314610a7557600080fd5b8063e8f620b1146109c7578063ea6ef2fe146109dd578063f2220c9e146109f357600080fd5b8063d348b409116100d1578063d348b4091461094e578063dd62ed3e14610963578063e0cfcc95146109a9578063e8078d94146109bf57600080fd5b8063aa98e163146108f0578063b37659a414610906578063b4492d0c1461092657600080fd5b806395d89b4111610164578063a0e571a21161013e578063a0e571a214610828578063a3a2e89e1461083e578063a8fb66b41461085e578063a9059cbb146108d057600080fd5b806395d89b41146107b95780639cbd09ac146107e55780639d7550261461081257600080fd5b80638b42507f116101a05780638b42507f146107435780638da5cb5b146107735780638f0d3b8b1461079157806390825c28146107a457600080fd5b80637220cf39146106f75780637796ff371461070d5780637db1342c1461072357600080fd5b8063313ce567116102a0578063599270441161023e5780636ebcf607116102185780636ebcf6071461065f57806370a082311461068c57806371073b38146106c2578063715018a6146106e257600080fd5b806359927044146106295780635f81a57c1461064957806362ff2e9a1461054a57600080fd5b80633f4218e01161027a5780633f4218e0146105745780634626402b146105a457806349ce234c146105dc578063571ac8b01461060957600080fd5b8063313ce5671461052e5780633410fe6e1461054a5780633eaaf86b1461055f57600080fd5b80631f02a29c1161030d57806321ecff5b116102e757806321ecff5b146104c157806323b872dd146104e157806325b15556146105015780632b112e491461051957600080fd5b80631f02a29c146104615780631f1a73d5146104815780631f2c80f1146104a157600080fd5b806318160ddd1161034957806318160ddd146103ff5780631a686502146104145780631ab6ab241461042a5780631d6bdb5b1461044c57600080fd5b806306fdde03146103705780630910a510146103b0578063095ea7b3146103cf575b600080fd5b34801561037c57600080fd5b50604080518082019091526005815264535552474560d81b60208201525b6040516103a79190612abd565b60405180910390f35b3480156103bc57600080fd5b50600e545b6040519081526020016103a7565b3480156103db57600080fd5b506103ef6103ea366004612b23565b610a95565b60405190151581526020016103a7565b34801561040b57600080fd5b506103c1610bbb565b34801561042057600080fd5b506103c1600e5481565b34801561043657600080fd5b5061044a610445366004612b4f565b610bdc565b005b34801561045857600080fd5b5061044a610cf4565b34801561046d57600080fd5b506103c161047c366004612b88565b610e4e565b34801561048d57600080fd5b506103c161049c366004612ba5565b610e9b565b3480156104ad57600080fd5b5061044a6104bc366004612b4f565b610ef9565b3480156104cd57600080fd5b5061044a6104dc366004612bbe565b610fce565b3480156104ed57600080fd5b506103ef6104fc366004612be0565b6110a4565b34801561050d57600080fd5b506103c16363c0439881565b34801561052557600080fd5b506103c16110c6565b34801561053a57600080fd5b50604051600981526020016103a7565b34801561055657600080fd5b506103c1606481565b34801561056b57600080fd5b506103c1611119565b34801561058057600080fd5b506103ef61058f366004612b88565b60046020526000908152604090205460ff1681565b3480156105b057600080fd5b50600b546105c4906001600160a01b031681565b6040516001600160a01b0390911681526020016103a7565b3480156105e857600080fd5b506103c16105f7366004612ba5565b60116020526000908152604090205481565b34801561061557600080fd5b506103ef610624366004612b88565b611136565b34801561063557600080fd5b50600a546105c4906001600160a01b031681565b34801561065557600080fd5b506103c160125481565b34801561066b57600080fd5b506103c161067a366004612b88565b60026020526000908152604090205481565b34801561069857600080fd5b506103c16106a7366004612b88565b6001600160a01b031660009081526002602052604090205490565b3480156106ce57600080fd5b506103c16106dd366004612ba5565b611144565b3480156106ee57600080fd5b5061044a611176565b34801561070357600080fd5b506103c160135481565b34801561071957600080fd5b506103c1600d5481565b34801561072f57600080fd5b5061044a61073e366004612ba5565b6111ea565b34801561074f57600080fd5b506103ef61075e366004612b88565b60076020526000908152604090205460ff1681565b34801561077f57600080fd5b506000546001600160a01b03166105c4565b6103ef61079f366004612bbe565b6112e3565b3480156107b057600080fd5b506103c16118a6565b3480156107c557600080fd5b5060408051808201909152600381526253524760e81b602082015261039a565b3480156107f157600080fd5b506103c1610800366004612b88565b60106020526000908152604090205481565b34801561081e57600080fd5b506103c160055481565b34801561083457600080fd5b506103c160065481565b34801561084a57600080fd5b5061044a610859366004612c21565b6118d4565b34801561086a57600080fd5b506108a8610879366004612ba5565b601560205260009081526040902080546001820154600283015460038401546004909401549293919290919085565b604080519586526020860194909452928401919091526060830152608082015260a0016103a7565b3480156108dc57600080fd5b506103ef6108eb366004612b23565b611929565b3480156108fc57600080fd5b506103c160095481565b34801561091257600080fd5b506103ef610921366004612c54565b61193d565b34801561093257600080fd5b506105c473c207cd3f61da958aa6f4209c5f0a145c056b576f81565b34801561095a57600080fd5b506103c1611fb7565b34801561096f57600080fd5b506103c161097e366004612b4f565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b3480156109b557600080fd5b506103c160085481565b61044a612016565b3480156109d357600080fd5b506103c1600f5481565b3480156109e957600080fd5b506103c1600c5481565b3480156109ff57600080fd5b506103c1612161565b348015610a1457600080fd5b5061044a610a23366004612b88565b6124c2565b348015610a3457600080fd5b5061044a610a43366004612bbe565b6125ac565b348015610a5457600080fd5b506103c1610a63366004612ba5565b60146020526000908152604090205481565b348015610a8157600080fd5b5061044a610a90366004612c21565b61263a565b60006001600160a01b038316610afd5760405162461bcd60e51b815260206004820152602260248201527f53524732303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084015b60405180910390fd5b33610b565760405162461bcd60e51b8152602060048201526024808201527f53524732303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610af4565b3360008181526003602090815260408083206001600160a01b03881680855290835292819020869055518581529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35060015b92915050565b6000610bc96009600a612d7a565b610bd7906305f5e100612d89565b905090565b6000546001600160a01b03163314610c065760405162461bcd60e51b8152600401610af490612da0565b6001600160a01b03821615801590610c2657506001600160a01b03811615155b610c855760405162461bcd60e51b815260206004820152602a60248201527f4e657720616464726573736573206d757374206e6f7420626520746865205a45604482015269524f206164647265737360b01b6064820152608401610af4565b601780546001600160a01b038481166001600160a01b03199283168117909355601880549185169190921681179091556040805192835260208301919091527f9531844c54a073e677302121f844ce762e5d0d82415924346672381a39f8532c91015b60405180910390a15050565b600260015403610d165760405162461bcd60e51b8152600401610af490612dd5565b60026001556000546001600160a01b03163314610d455760405162461bcd60e51b8152600401610af490612da0565b600a54600c546009546000926001600160a01b031691606491610d689190612d89565b610d729190612e0c565b604051600081818185875af1925050503d8060008114610dae576040519150601f19603f3d011682016040523d82523d6000602084013e610db3565b606091505b5050600b54600d546009549293506000926001600160a01b0390921691606491610ddc91612d89565b610de69190612e0c565b604051600081818185875af1925050503d8060008114610e22576040519150601f19603f3d011682016040523d82523d6000602084013e610e27565b606091505b50509050818015610e355750805b610e4157610e41612e2e565b5050600060095560018055565b6000610e58612161565b3060009081526002602052604080822054600e546001600160a01b03871684529190922054610e879190612d89565b610e919190612e0c565b610bb59190612d89565b30600090815260026020526040812054600f548291610eb991612e0c565b3060009081526002602052604081205491925090610ed8908590612e44565b600f54610ee59190612e0c565b9050610ef18183612e57565b949350505050565b6000546001600160a01b03163314610f235760405162461bcd60e51b8152600401610af490612da0565b6001600160a01b03821615801590610f4357506001600160a01b03811615155b610fa05760405162461bcd60e51b815260206004820152602860248201527f4e65772077616c6c657473206d757374206e6f7420626520746865205a45524f604482015267206164647265737360c01b6064820152608401610af4565b600a80546001600160a01b039384166001600160a01b031991821617909155600b8054929093169116179055565b6000546001600160a01b03163314610ff85760405162461bcd60e51b8152600401610af490612da0565b605a821015801561100a5750605a8110155b8015611017575060648211155b8015611024575060648111155b6110645760405162461bcd60e51b815260206004820152601160248201527008ccacae640c2e4ca40e8dede40d0d2ced607b1b6044820152606401610af4565b6006829055600581905560408051838152602081018390527fc19ebd395193e8ddaaeda048fb5cb09d4e2dbebcce719174166029a4093878569101610ce8565b6000336110b285828561268f565b6110bd858585612721565b95945050505050565b61dead600090815260026020527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc546111016009600a612d7a565b61110f906305f5e100612d89565b610bd79190612e57565b6111256009600a612d7a565b611133906305f5e100612d89565b81565b6000610bb582600019610a95565b60008082600e546111559190612e57565b600f546111629190612e0c565b90506000600e54600f54610ee59190612e0c565b6000546001600160a01b031633146111a05760405162461bcd60e51b8152600401610af490612da0565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146112145760405162461bcd60e51b8152600401610af490612da0565b60646112226009600a612d7a565b611230906305f5e100612d89565b61123a9190612e0c565b8110156112a85760405162461bcd60e51b815260206004820152603660248201527f4e65772077616c6c6574206c696d69742073686f756c64206265206174206c65604482015275617374203125206f6620746f74616c20737570706c7960501b6064820152608401610af4565b60088190556040518181527fb579b5ff4decd3791f679ec8d72f16128df08aa3f346b425480a0135d2e8bf759060200160405180910390a150565b60006002600154036113075760405162461bcd60e51b8152600401610af490612dd5565b60026001554282101561134f5760405162461bcd60e51b815260206004820152601060248201526f111958591b1a5b99481156141254915160821b6044820152606401610af4565b336000908152601660205260409020439055600e546113b05760405162461bcd60e51b815260206004820152601a60248201527f54686520746f6b656e20686173206e6f206c69717569646974790000000000006044820152606401610af4565b6363c04398421015806113d657503373c207cd3f61da958aa6f4209c5f0a145c056b576f145b6114185760405162461bcd60e51b81526020600482015260136024820152722a3930b234b7339034b9903737ba1027b832b760691b6044820152606401610af4565b3360009081526004602052604081205460ff1661144e5760646006543461143f9190612d89565b6114499190612e0c565b611450565b345b90506000600e54826114629190612e44565b600f5461146f9190612e0c565b306000908152600260205260409020546114899190612e57565b60085433600090815260026020526040902054919250906114ab908390612e44565b1115806114c757503360009081526007602052604090205460ff165b6115095760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610af4565b600181116115675760405162461bcd60e51b815260206004820152602560248201527f4d75737420427579206d6f7265207468616e203120646563696d616c206f6620604482015264537572676560d81b6064820152608401610af4565b848110156115b75760405162461bcd60e51b815260206004820152601a60248201527f494e53554646494349454e54204f555450555420414d4f554e540000000000006044820152606401610af4565b6115c13382612934565b60006115cd8334612e57565b9050806009546115dd9190612e44565b600955600e546115ee908490612e44565b600e554260006115fc612161565b6116069034612d89565b9050806012600082825461161a9190612e44565b9091555050336000908152601060205260408120805483929061163e908490612e44565b909155505060008281526011602052604081208054839290611661908490612e44565b9250508190555060016013600082825461167b9190612e44565b9091555050601354600090815260146020526040812083905561169c612161565b6116a4611fb7565b6116ae9190612d89565b6000848152601560205260408120858155600101549192500361178357601354600103611730576116dd612161565b6116e96009600a612d7a565b6116f7906305f5e100612d89565b87600e546117059190612e57565b61170f9190612e0c565b6117199190612d89565b600084815260156020526040902060010155611783565b601560006014600060016013546117479190612e57565b81526020019081526020016000205481526020019081526020016000206002015460156000858152602001908152602001600020600101819055505b600083815260156020526040902060028101829055600301548111806117b85750600083815260156020526040902060030154155b156117d25760008381526015602052604090206003018190555b6000838152601560205260409020600401548110806118005750600083815260156020526040902060040154155b1561181a5760008381526015602052604090206004018190555b60405185815233903090600080516020612f178339815191529060200160405180910390a330337f7ce543d1780f3bdc3dac42da06c95da802653cd1b212b8d74ec3e3c33ad7095c873461186c612161565b611876908c612d89565b6040805193845260208401929092529082015260600160405180910390a350506001808055979650505050505050565b60006118b0612161565b6118b8611fb7565b6118c06110c6565b6118ca9190612d89565b610bd79190612d89565b6000546001600160a01b031633146118fe5760405162461bcd60e51b8152600401610af490612da0565b6001600160a01b03919091166000908152600460205260409020805460ff1916911515919091179055565b6000611936338484612721565b9392505050565b60006002600154036119615760405162461bcd60e51b8152600401610af490612dd5565b6002600155428310156119a95760405162461bcd60e51b815260206004820152601060248201526f111958591b1a5b99481156141254915160821b6044820152606401610af4565b33600090815260166020526040902054439003611a255760405162461bcd60e51b815260206004820152603460248201527f427579696e6720616e642073656c6c696e6720696e207468652073616d6520626044820152736c6f636b206973206e6f7420616c6c6f7765642160601b6064820152608401610af4565b33600081815260026020526040902054851115611a845760405162461bcd60e51b815260206004820152601e60248201527f63616e6e6f742073656c6c2061626f766520746f6b656e20616d6f756e7400006044820152606401610af4565b30600090815260026020526040812054611a9f908790612e44565b600f54611aac9190612e0c565b600e54611ab99190612e57565b9050600060646005546064611ace9190612e57565b611ad89084612d89565b611ae29190612e0c565b90506000611af08284612e57565b905085831015611b425760405162461bcd60e51b815260206004820152601a60248201527f494e53554646494349454e54204f555450555420414d4f554e540000000000006044820152606401610af4565b3360009081526004602052604081205460ff16611bad576040516001600160a01b038616908390600081818185875af1925050503d8060008114611ba2576040519150601f19603f3d011682016040523d82523d6000602084013e611ba7565b606091505b50611bfd565b6040516001600160a01b038616908590600081818185875af1925050503d8060008114611bf6576040519150601f19603f3d011682016040523d82523d6000602084013e611bfb565b606091505b505b50905080611c4d5760405162461bcd60e51b815260206004820152601760248201527f424e422f455448207472616e73666572206661696c65640000000000000000006044820152606401610af4565b6001600160a01b038516600090815260026020526040902054611c71908a90612e57565b6001600160a01b03861660009081526002602090815260408083209390935533825260049052205460ff16611cb35782600954611cae9190612e44565b611cb7565b6009545b600955600e54611cc8908590612e57565b600e5530600090815260026020526040902054611ce6908a90612e44565b306000908152600260205260408120919091554290611d03612161565b611d0d9087612d89565b90508060126000828254611d219190612e44565b90915550503360009081526010602052604081208054839290611d45908490612e44565b909155505060008281526011602052604081208054839290611d68908490612e44565b92505081905550600160136000828254611d829190612e44565b90915550506013546000908152601460205260408120839055611da3612161565b611dab611fb7565b611db59190612d89565b60008481526015602052604081208581556001015491925003611e255760156000601460006001601354611de99190612e57565b81526020019081526020016000205481526020019081526020016000206002015460156000858152602001908152602001600020600101819055505b60008381526015602052604090206002810182905560030154811180611e5a5750600083815260156020526040902060030154155b15611e745760008381526015602052604090206003018190555b600083815260156020526040902060040154811080611ea25750600083815260156020526040902060040154155b15611ebc5760008381526015602052604090206004018190555b6040518c815230906001600160a01b038a1690600080516020612f178339815191529060200160405180910390a33360009081526004602052604090205460ff1615611f4c57604080518d815260208101899052908101839052339030907f9be8a5ca22b7e6e81f04b5879f0248227bb770114291bd47dfaee4c3a82ad60e9060600160405180910390a3611fa2565b33307f9be8a5ca22b7e6e81f04b5879f0248227bb770114291bd47dfaee4c3a82ad60e8e88611f79612161565b611f83908b612d89565b6040805193845260208401929092529082015260600160405180910390a35b505060018080559a9950505050505050505050565b600080600e5411611ff95760405162461bcd60e51b815260206004820152600c60248201526b4e6f204c697175696469747960a01b6044820152606401610af4565b30600090815260026020526040902054600e54610bd79190612e0c565b6000546001600160a01b031633146120405760405162461bcd60e51b8152600401610af490612da0565b600e5430600090815260026020526040812054909190612061903490612d89565b61206b9190612e0c565b336000908152600260205260409020549091508111156120c25760405162461bcd60e51b81526020600482015260126024820152714e6f7420656e6f75676820746f6b656e732160701b6044820152606401610af4565b600e546120cf3482612e44565b600e5530600090815260026020526040812080548492906120f1908490612e44565b90915550503360009081526002602052604081208054849290612115908490612e57565b9091555050600e54600f54829161212b91612d89565b6121359190612e0c565b600f5560405182815230903390600080516020612f178339815191529060200160405180910390a35050565b60175460185460408051630dfe168160e01b815290516000936001600160a01b039081169385939116918491630dfe16819160048083019260209291908290030181865afa1580156121b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121db9190612e6a565b6001600160a01b03161461225057816001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015612227573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061224b9190612e6a565b6122b2565b816001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa15801561228e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122b29190612e6a565b9050600080836001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156122f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123199190612ea3565b506001600160701b031691506001600160701b03169150601860009054906101000a90046001600160a01b03166001600160a01b0316846001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa15801561238d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123b19190612e6a565b6001600160a01b03161461243357836001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156123fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124219190612ea3565b506001600160701b0390811693501690505b6000836001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015612473573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124979190612ef3565b6124a290600a612d7a565b6124ac9084612d89565b90506124b88282612e0c565b9550505050505090565b6000546001600160a01b031633146124ec5760405162461bcd60e51b8152600401610af490612da0565b6001600160a01b0381166125515760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610af4565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146125d65760405162461bcd60e51b8152600401610af490612da0565b60646125e28284612e44565b1461262f5760405162461bcd60e51b815260206004820152601960248201527f53756d206f6620736861726573206d75737420626520313030000000000000006044820152606401610af4565b600c91909155600d55565b6000546001600160a01b031633146126645760405162461bcd60e51b8152600401610af490612da0565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6001600160a01b03808416600090815260036020908152604080832093861683529290522054600019811461271b578181101561270e5760405162461bcd60e51b815260206004820152601d60248201527f53524732303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610af4565b61271b8484848403612999565b50505050565b60006001600160a01b0383161580159061274457506001600160a01b0383163014155b61279b5760405162461bcd60e51b815260206004820152602260248201527f7472616e7366657220746f20746865207a65726f2061646472657373206f7220604482015261434160f01b6064820152608401610af4565b600082116127fd5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610af4565b6001600160a01b03831660009081526007602052604090205460ff168061284957506008546001600160a01b038416600090815260026020526040902054612846908490612e44565b11155b61288c5760405162461bcd60e51b81526020600482015260146024820152734d61782077616c6c65742065786365656465642160601b6044820152606401610af4565b6001600160a01b0384166000908152600260205260409020546128b0908390612e57565b6001600160a01b0380861660009081526002602052604080822093909355908516815220546128e0908390612e44565b6001600160a01b038085166000818152600260205260409081902093909355915190861690600080516020612f17833981519152906129229086815260200190565b60405180910390a35060019392505050565b6001600160a01b038216600090815260026020526040902054612958908290612e44565b6001600160a01b038316600090815260026020526040808220929092553081522054612985908290612e57565b306000908152600260205260409020555050565b6001600160a01b0383166129fb5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610af4565b6001600160a01b038216612a5c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610af4565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600060208083528351808285015260005b81811015612aea57858101830151858201604001528201612ace565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114612b2057600080fd5b50565b60008060408385031215612b3657600080fd5b8235612b4181612b0b565b946020939093013593505050565b60008060408385031215612b6257600080fd5b8235612b6d81612b0b565b91506020830135612b7d81612b0b565b809150509250929050565b600060208284031215612b9a57600080fd5b813561193681612b0b565b600060208284031215612bb757600080fd5b5035919050565b60008060408385031215612bd157600080fd5b50508035926020909101359150565b600080600060608486031215612bf557600080fd5b8335612c0081612b0b565b92506020840135612c1081612b0b565b929592945050506040919091013590565b60008060408385031215612c3457600080fd5b8235612c3f81612b0b565b915060208301358015158114612b7d57600080fd5b600080600060608486031215612c6957600080fd5b505081359360208301359350604090920135919050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115612cd1578160001904821115612cb757612cb7612c80565b80851615612cc457918102915b93841c9390800290612c9b565b509250929050565b600082612ce857506001610bb5565b81612cf557506000610bb5565b8160018114612d0b5760028114612d1557612d31565b6001915050610bb5565b60ff841115612d2657612d26612c80565b50506001821b610bb5565b5060208310610133831016604e8410600b8410161715612d54575081810a610bb5565b612d5e8383612c96565b8060001904821115612d7257612d72612c80565b029392505050565b600061193660ff841683612cd9565b8082028115828204841417610bb557610bb5612c80565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b600082612e2957634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052600160045260246000fd5b80820180821115610bb557610bb5612c80565b81810381811115610bb557610bb5612c80565b600060208284031215612e7c57600080fd5b815161193681612b0b565b80516001600160701b0381168114612e9e57600080fd5b919050565b600080600060608486031215612eb857600080fd5b612ec184612e87565b9250612ecf60208501612e87565b9150604084015163ffffffff81168114612ee857600080fd5b809150509250925092565b600060208284031215612f0557600080fd5b815160ff8116811461193657600080fdfeddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220893f225586137da88d5b98ad2229843777935be15a78dd070329ab9cd3fc1dab64736f6c63430008110033

Deployed Bytecode

0x60806040526004361061036b5760003560e01c80637220cf39116101c6578063aa98e163116100f7578063e8f620b111610095578063f2fde38b1161006f578063f2fde38b14610a08578063f4034e4b14610a28578063f7a62fe914610a48578063fabe628314610a7557600080fd5b8063e8f620b1146109c7578063ea6ef2fe146109dd578063f2220c9e146109f357600080fd5b8063d348b409116100d1578063d348b4091461094e578063dd62ed3e14610963578063e0cfcc95146109a9578063e8078d94146109bf57600080fd5b8063aa98e163146108f0578063b37659a414610906578063b4492d0c1461092657600080fd5b806395d89b4111610164578063a0e571a21161013e578063a0e571a214610828578063a3a2e89e1461083e578063a8fb66b41461085e578063a9059cbb146108d057600080fd5b806395d89b41146107b95780639cbd09ac146107e55780639d7550261461081257600080fd5b80638b42507f116101a05780638b42507f146107435780638da5cb5b146107735780638f0d3b8b1461079157806390825c28146107a457600080fd5b80637220cf39146106f75780637796ff371461070d5780637db1342c1461072357600080fd5b8063313ce567116102a0578063599270441161023e5780636ebcf607116102185780636ebcf6071461065f57806370a082311461068c57806371073b38146106c2578063715018a6146106e257600080fd5b806359927044146106295780635f81a57c1461064957806362ff2e9a1461054a57600080fd5b80633f4218e01161027a5780633f4218e0146105745780634626402b146105a457806349ce234c146105dc578063571ac8b01461060957600080fd5b8063313ce5671461052e5780633410fe6e1461054a5780633eaaf86b1461055f57600080fd5b80631f02a29c1161030d57806321ecff5b116102e757806321ecff5b146104c157806323b872dd146104e157806325b15556146105015780632b112e491461051957600080fd5b80631f02a29c146104615780631f1a73d5146104815780631f2c80f1146104a157600080fd5b806318160ddd1161034957806318160ddd146103ff5780631a686502146104145780631ab6ab241461042a5780631d6bdb5b1461044c57600080fd5b806306fdde03146103705780630910a510146103b0578063095ea7b3146103cf575b600080fd5b34801561037c57600080fd5b50604080518082019091526005815264535552474560d81b60208201525b6040516103a79190612abd565b60405180910390f35b3480156103bc57600080fd5b50600e545b6040519081526020016103a7565b3480156103db57600080fd5b506103ef6103ea366004612b23565b610a95565b60405190151581526020016103a7565b34801561040b57600080fd5b506103c1610bbb565b34801561042057600080fd5b506103c1600e5481565b34801561043657600080fd5b5061044a610445366004612b4f565b610bdc565b005b34801561045857600080fd5b5061044a610cf4565b34801561046d57600080fd5b506103c161047c366004612b88565b610e4e565b34801561048d57600080fd5b506103c161049c366004612ba5565b610e9b565b3480156104ad57600080fd5b5061044a6104bc366004612b4f565b610ef9565b3480156104cd57600080fd5b5061044a6104dc366004612bbe565b610fce565b3480156104ed57600080fd5b506103ef6104fc366004612be0565b6110a4565b34801561050d57600080fd5b506103c16363c0439881565b34801561052557600080fd5b506103c16110c6565b34801561053a57600080fd5b50604051600981526020016103a7565b34801561055657600080fd5b506103c1606481565b34801561056b57600080fd5b506103c1611119565b34801561058057600080fd5b506103ef61058f366004612b88565b60046020526000908152604090205460ff1681565b3480156105b057600080fd5b50600b546105c4906001600160a01b031681565b6040516001600160a01b0390911681526020016103a7565b3480156105e857600080fd5b506103c16105f7366004612ba5565b60116020526000908152604090205481565b34801561061557600080fd5b506103ef610624366004612b88565b611136565b34801561063557600080fd5b50600a546105c4906001600160a01b031681565b34801561065557600080fd5b506103c160125481565b34801561066b57600080fd5b506103c161067a366004612b88565b60026020526000908152604090205481565b34801561069857600080fd5b506103c16106a7366004612b88565b6001600160a01b031660009081526002602052604090205490565b3480156106ce57600080fd5b506103c16106dd366004612ba5565b611144565b3480156106ee57600080fd5b5061044a611176565b34801561070357600080fd5b506103c160135481565b34801561071957600080fd5b506103c1600d5481565b34801561072f57600080fd5b5061044a61073e366004612ba5565b6111ea565b34801561074f57600080fd5b506103ef61075e366004612b88565b60076020526000908152604090205460ff1681565b34801561077f57600080fd5b506000546001600160a01b03166105c4565b6103ef61079f366004612bbe565b6112e3565b3480156107b057600080fd5b506103c16118a6565b3480156107c557600080fd5b5060408051808201909152600381526253524760e81b602082015261039a565b3480156107f157600080fd5b506103c1610800366004612b88565b60106020526000908152604090205481565b34801561081e57600080fd5b506103c160055481565b34801561083457600080fd5b506103c160065481565b34801561084a57600080fd5b5061044a610859366004612c21565b6118d4565b34801561086a57600080fd5b506108a8610879366004612ba5565b601560205260009081526040902080546001820154600283015460038401546004909401549293919290919085565b604080519586526020860194909452928401919091526060830152608082015260a0016103a7565b3480156108dc57600080fd5b506103ef6108eb366004612b23565b611929565b3480156108fc57600080fd5b506103c160095481565b34801561091257600080fd5b506103ef610921366004612c54565b61193d565b34801561093257600080fd5b506105c473c207cd3f61da958aa6f4209c5f0a145c056b576f81565b34801561095a57600080fd5b506103c1611fb7565b34801561096f57600080fd5b506103c161097e366004612b4f565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b3480156109b557600080fd5b506103c160085481565b61044a612016565b3480156109d357600080fd5b506103c1600f5481565b3480156109e957600080fd5b506103c1600c5481565b3480156109ff57600080fd5b506103c1612161565b348015610a1457600080fd5b5061044a610a23366004612b88565b6124c2565b348015610a3457600080fd5b5061044a610a43366004612bbe565b6125ac565b348015610a5457600080fd5b506103c1610a63366004612ba5565b60146020526000908152604090205481565b348015610a8157600080fd5b5061044a610a90366004612c21565b61263a565b60006001600160a01b038316610afd5760405162461bcd60e51b815260206004820152602260248201527f53524732303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084015b60405180910390fd5b33610b565760405162461bcd60e51b8152602060048201526024808201527f53524732303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610af4565b3360008181526003602090815260408083206001600160a01b03881680855290835292819020869055518581529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35060015b92915050565b6000610bc96009600a612d7a565b610bd7906305f5e100612d89565b905090565b6000546001600160a01b03163314610c065760405162461bcd60e51b8152600401610af490612da0565b6001600160a01b03821615801590610c2657506001600160a01b03811615155b610c855760405162461bcd60e51b815260206004820152602a60248201527f4e657720616464726573736573206d757374206e6f7420626520746865205a45604482015269524f206164647265737360b01b6064820152608401610af4565b601780546001600160a01b038481166001600160a01b03199283168117909355601880549185169190921681179091556040805192835260208301919091527f9531844c54a073e677302121f844ce762e5d0d82415924346672381a39f8532c91015b60405180910390a15050565b600260015403610d165760405162461bcd60e51b8152600401610af490612dd5565b60026001556000546001600160a01b03163314610d455760405162461bcd60e51b8152600401610af490612da0565b600a54600c546009546000926001600160a01b031691606491610d689190612d89565b610d729190612e0c565b604051600081818185875af1925050503d8060008114610dae576040519150601f19603f3d011682016040523d82523d6000602084013e610db3565b606091505b5050600b54600d546009549293506000926001600160a01b0390921691606491610ddc91612d89565b610de69190612e0c565b604051600081818185875af1925050503d8060008114610e22576040519150601f19603f3d011682016040523d82523d6000602084013e610e27565b606091505b50509050818015610e355750805b610e4157610e41612e2e565b5050600060095560018055565b6000610e58612161565b3060009081526002602052604080822054600e546001600160a01b03871684529190922054610e879190612d89565b610e919190612e0c565b610bb59190612d89565b30600090815260026020526040812054600f548291610eb991612e0c565b3060009081526002602052604081205491925090610ed8908590612e44565b600f54610ee59190612e0c565b9050610ef18183612e57565b949350505050565b6000546001600160a01b03163314610f235760405162461bcd60e51b8152600401610af490612da0565b6001600160a01b03821615801590610f4357506001600160a01b03811615155b610fa05760405162461bcd60e51b815260206004820152602860248201527f4e65772077616c6c657473206d757374206e6f7420626520746865205a45524f604482015267206164647265737360c01b6064820152608401610af4565b600a80546001600160a01b039384166001600160a01b031991821617909155600b8054929093169116179055565b6000546001600160a01b03163314610ff85760405162461bcd60e51b8152600401610af490612da0565b605a821015801561100a5750605a8110155b8015611017575060648211155b8015611024575060648111155b6110645760405162461bcd60e51b815260206004820152601160248201527008ccacae640c2e4ca40e8dede40d0d2ced607b1b6044820152606401610af4565b6006829055600581905560408051838152602081018390527fc19ebd395193e8ddaaeda048fb5cb09d4e2dbebcce719174166029a4093878569101610ce8565b6000336110b285828561268f565b6110bd858585612721565b95945050505050565b61dead600090815260026020527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc546111016009600a612d7a565b61110f906305f5e100612d89565b610bd79190612e57565b6111256009600a612d7a565b611133906305f5e100612d89565b81565b6000610bb582600019610a95565b60008082600e546111559190612e57565b600f546111629190612e0c565b90506000600e54600f54610ee59190612e0c565b6000546001600160a01b031633146111a05760405162461bcd60e51b8152600401610af490612da0565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146112145760405162461bcd60e51b8152600401610af490612da0565b60646112226009600a612d7a565b611230906305f5e100612d89565b61123a9190612e0c565b8110156112a85760405162461bcd60e51b815260206004820152603660248201527f4e65772077616c6c6574206c696d69742073686f756c64206265206174206c65604482015275617374203125206f6620746f74616c20737570706c7960501b6064820152608401610af4565b60088190556040518181527fb579b5ff4decd3791f679ec8d72f16128df08aa3f346b425480a0135d2e8bf759060200160405180910390a150565b60006002600154036113075760405162461bcd60e51b8152600401610af490612dd5565b60026001554282101561134f5760405162461bcd60e51b815260206004820152601060248201526f111958591b1a5b99481156141254915160821b6044820152606401610af4565b336000908152601660205260409020439055600e546113b05760405162461bcd60e51b815260206004820152601a60248201527f54686520746f6b656e20686173206e6f206c69717569646974790000000000006044820152606401610af4565b6363c04398421015806113d657503373c207cd3f61da958aa6f4209c5f0a145c056b576f145b6114185760405162461bcd60e51b81526020600482015260136024820152722a3930b234b7339034b9903737ba1027b832b760691b6044820152606401610af4565b3360009081526004602052604081205460ff1661144e5760646006543461143f9190612d89565b6114499190612e0c565b611450565b345b90506000600e54826114629190612e44565b600f5461146f9190612e0c565b306000908152600260205260409020546114899190612e57565b60085433600090815260026020526040902054919250906114ab908390612e44565b1115806114c757503360009081526007602052604090205460ff165b6115095760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610af4565b600181116115675760405162461bcd60e51b815260206004820152602560248201527f4d75737420427579206d6f7265207468616e203120646563696d616c206f6620604482015264537572676560d81b6064820152608401610af4565b848110156115b75760405162461bcd60e51b815260206004820152601a60248201527f494e53554646494349454e54204f555450555420414d4f554e540000000000006044820152606401610af4565b6115c13382612934565b60006115cd8334612e57565b9050806009546115dd9190612e44565b600955600e546115ee908490612e44565b600e554260006115fc612161565b6116069034612d89565b9050806012600082825461161a9190612e44565b9091555050336000908152601060205260408120805483929061163e908490612e44565b909155505060008281526011602052604081208054839290611661908490612e44565b9250508190555060016013600082825461167b9190612e44565b9091555050601354600090815260146020526040812083905561169c612161565b6116a4611fb7565b6116ae9190612d89565b6000848152601560205260408120858155600101549192500361178357601354600103611730576116dd612161565b6116e96009600a612d7a565b6116f7906305f5e100612d89565b87600e546117059190612e57565b61170f9190612e0c565b6117199190612d89565b600084815260156020526040902060010155611783565b601560006014600060016013546117479190612e57565b81526020019081526020016000205481526020019081526020016000206002015460156000858152602001908152602001600020600101819055505b600083815260156020526040902060028101829055600301548111806117b85750600083815260156020526040902060030154155b156117d25760008381526015602052604090206003018190555b6000838152601560205260409020600401548110806118005750600083815260156020526040902060040154155b1561181a5760008381526015602052604090206004018190555b60405185815233903090600080516020612f178339815191529060200160405180910390a330337f7ce543d1780f3bdc3dac42da06c95da802653cd1b212b8d74ec3e3c33ad7095c873461186c612161565b611876908c612d89565b6040805193845260208401929092529082015260600160405180910390a350506001808055979650505050505050565b60006118b0612161565b6118b8611fb7565b6118c06110c6565b6118ca9190612d89565b610bd79190612d89565b6000546001600160a01b031633146118fe5760405162461bcd60e51b8152600401610af490612da0565b6001600160a01b03919091166000908152600460205260409020805460ff1916911515919091179055565b6000611936338484612721565b9392505050565b60006002600154036119615760405162461bcd60e51b8152600401610af490612dd5565b6002600155428310156119a95760405162461bcd60e51b815260206004820152601060248201526f111958591b1a5b99481156141254915160821b6044820152606401610af4565b33600090815260166020526040902054439003611a255760405162461bcd60e51b815260206004820152603460248201527f427579696e6720616e642073656c6c696e6720696e207468652073616d6520626044820152736c6f636b206973206e6f7420616c6c6f7765642160601b6064820152608401610af4565b33600081815260026020526040902054851115611a845760405162461bcd60e51b815260206004820152601e60248201527f63616e6e6f742073656c6c2061626f766520746f6b656e20616d6f756e7400006044820152606401610af4565b30600090815260026020526040812054611a9f908790612e44565b600f54611aac9190612e0c565b600e54611ab99190612e57565b9050600060646005546064611ace9190612e57565b611ad89084612d89565b611ae29190612e0c565b90506000611af08284612e57565b905085831015611b425760405162461bcd60e51b815260206004820152601a60248201527f494e53554646494349454e54204f555450555420414d4f554e540000000000006044820152606401610af4565b3360009081526004602052604081205460ff16611bad576040516001600160a01b038616908390600081818185875af1925050503d8060008114611ba2576040519150601f19603f3d011682016040523d82523d6000602084013e611ba7565b606091505b50611bfd565b6040516001600160a01b038616908590600081818185875af1925050503d8060008114611bf6576040519150601f19603f3d011682016040523d82523d6000602084013e611bfb565b606091505b505b50905080611c4d5760405162461bcd60e51b815260206004820152601760248201527f424e422f455448207472616e73666572206661696c65640000000000000000006044820152606401610af4565b6001600160a01b038516600090815260026020526040902054611c71908a90612e57565b6001600160a01b03861660009081526002602090815260408083209390935533825260049052205460ff16611cb35782600954611cae9190612e44565b611cb7565b6009545b600955600e54611cc8908590612e57565b600e5530600090815260026020526040902054611ce6908a90612e44565b306000908152600260205260408120919091554290611d03612161565b611d0d9087612d89565b90508060126000828254611d219190612e44565b90915550503360009081526010602052604081208054839290611d45908490612e44565b909155505060008281526011602052604081208054839290611d68908490612e44565b92505081905550600160136000828254611d829190612e44565b90915550506013546000908152601460205260408120839055611da3612161565b611dab611fb7565b611db59190612d89565b60008481526015602052604081208581556001015491925003611e255760156000601460006001601354611de99190612e57565b81526020019081526020016000205481526020019081526020016000206002015460156000858152602001908152602001600020600101819055505b60008381526015602052604090206002810182905560030154811180611e5a5750600083815260156020526040902060030154155b15611e745760008381526015602052604090206003018190555b600083815260156020526040902060040154811080611ea25750600083815260156020526040902060040154155b15611ebc5760008381526015602052604090206004018190555b6040518c815230906001600160a01b038a1690600080516020612f178339815191529060200160405180910390a33360009081526004602052604090205460ff1615611f4c57604080518d815260208101899052908101839052339030907f9be8a5ca22b7e6e81f04b5879f0248227bb770114291bd47dfaee4c3a82ad60e9060600160405180910390a3611fa2565b33307f9be8a5ca22b7e6e81f04b5879f0248227bb770114291bd47dfaee4c3a82ad60e8e88611f79612161565b611f83908b612d89565b6040805193845260208401929092529082015260600160405180910390a35b505060018080559a9950505050505050505050565b600080600e5411611ff95760405162461bcd60e51b815260206004820152600c60248201526b4e6f204c697175696469747960a01b6044820152606401610af4565b30600090815260026020526040902054600e54610bd79190612e0c565b6000546001600160a01b031633146120405760405162461bcd60e51b8152600401610af490612da0565b600e5430600090815260026020526040812054909190612061903490612d89565b61206b9190612e0c565b336000908152600260205260409020549091508111156120c25760405162461bcd60e51b81526020600482015260126024820152714e6f7420656e6f75676820746f6b656e732160701b6044820152606401610af4565b600e546120cf3482612e44565b600e5530600090815260026020526040812080548492906120f1908490612e44565b90915550503360009081526002602052604081208054849290612115908490612e57565b9091555050600e54600f54829161212b91612d89565b6121359190612e0c565b600f5560405182815230903390600080516020612f178339815191529060200160405180910390a35050565b60175460185460408051630dfe168160e01b815290516000936001600160a01b039081169385939116918491630dfe16819160048083019260209291908290030181865afa1580156121b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121db9190612e6a565b6001600160a01b03161461225057816001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015612227573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061224b9190612e6a565b6122b2565b816001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa15801561228e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122b29190612e6a565b9050600080836001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156122f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123199190612ea3565b506001600160701b031691506001600160701b03169150601860009054906101000a90046001600160a01b03166001600160a01b0316846001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa15801561238d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123b19190612e6a565b6001600160a01b03161461243357836001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156123fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124219190612ea3565b506001600160701b0390811693501690505b6000836001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015612473573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124979190612ef3565b6124a290600a612d7a565b6124ac9084612d89565b90506124b88282612e0c565b9550505050505090565b6000546001600160a01b031633146124ec5760405162461bcd60e51b8152600401610af490612da0565b6001600160a01b0381166125515760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610af4565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146125d65760405162461bcd60e51b8152600401610af490612da0565b60646125e28284612e44565b1461262f5760405162461bcd60e51b815260206004820152601960248201527f53756d206f6620736861726573206d75737420626520313030000000000000006044820152606401610af4565b600c91909155600d55565b6000546001600160a01b031633146126645760405162461bcd60e51b8152600401610af490612da0565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6001600160a01b03808416600090815260036020908152604080832093861683529290522054600019811461271b578181101561270e5760405162461bcd60e51b815260206004820152601d60248201527f53524732303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610af4565b61271b8484848403612999565b50505050565b60006001600160a01b0383161580159061274457506001600160a01b0383163014155b61279b5760405162461bcd60e51b815260206004820152602260248201527f7472616e7366657220746f20746865207a65726f2061646472657373206f7220604482015261434160f01b6064820152608401610af4565b600082116127fd5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610af4565b6001600160a01b03831660009081526007602052604090205460ff168061284957506008546001600160a01b038416600090815260026020526040902054612846908490612e44565b11155b61288c5760405162461bcd60e51b81526020600482015260146024820152734d61782077616c6c65742065786365656465642160601b6044820152606401610af4565b6001600160a01b0384166000908152600260205260409020546128b0908390612e57565b6001600160a01b0380861660009081526002602052604080822093909355908516815220546128e0908390612e44565b6001600160a01b038085166000818152600260205260409081902093909355915190861690600080516020612f17833981519152906129229086815260200190565b60405180910390a35060019392505050565b6001600160a01b038216600090815260026020526040902054612958908290612e44565b6001600160a01b038316600090815260026020526040808220929092553081522054612985908290612e57565b306000908152600260205260409020555050565b6001600160a01b0383166129fb5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610af4565b6001600160a01b038216612a5c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610af4565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600060208083528351808285015260005b81811015612aea57858101830151858201604001528201612ace565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114612b2057600080fd5b50565b60008060408385031215612b3657600080fd5b8235612b4181612b0b565b946020939093013593505050565b60008060408385031215612b6257600080fd5b8235612b6d81612b0b565b91506020830135612b7d81612b0b565b809150509250929050565b600060208284031215612b9a57600080fd5b813561193681612b0b565b600060208284031215612bb757600080fd5b5035919050565b60008060408385031215612bd157600080fd5b50508035926020909101359150565b600080600060608486031215612bf557600080fd5b8335612c0081612b0b565b92506020840135612c1081612b0b565b929592945050506040919091013590565b60008060408385031215612c3457600080fd5b8235612c3f81612b0b565b915060208301358015158114612b7d57600080fd5b600080600060608486031215612c6957600080fd5b505081359360208301359350604090920135919050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115612cd1578160001904821115612cb757612cb7612c80565b80851615612cc457918102915b93841c9390800290612c9b565b509250929050565b600082612ce857506001610bb5565b81612cf557506000610bb5565b8160018114612d0b5760028114612d1557612d31565b6001915050610bb5565b60ff841115612d2657612d26612c80565b50506001821b610bb5565b5060208310610133831016604e8410600b8410161715612d54575081810a610bb5565b612d5e8383612c96565b8060001904821115612d7257612d72612c80565b029392505050565b600061193660ff841683612cd9565b8082028115828204841417610bb557610bb5612c80565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b600082612e2957634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052600160045260246000fd5b80820180821115610bb557610bb5612c80565b81810381811115610bb557610bb5612c80565b600060208284031215612e7c57600080fd5b815161193681612b0b565b80516001600160701b0381168114612e9e57600080fd5b919050565b600080600060608486031215612eb857600080fd5b612ec184612e87565b9250612ecf60208501612e87565b9150604084015163ffffffff81168114612ee857600080fd5b809150509250925092565b600060208284031215612f0557600080fd5b815160ff8116811461193657600080fdfeddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220893f225586137da88d5b98ad2229843777935be15a78dd070329ab9cd3fc1dab64736f6c63430008110033

Deployed Bytecode Sourcemap

3194:19505:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6829:83;;;;;;;;;;-1:-1:-1;6899:5:0;;;;;;;;;;;;-1:-1:-1;;;6899:5:0;;;;6829:83;;;;;;;:::i;:::-;;;;;;;;18015:89;;;;;;;;;;-1:-1:-1;18087:9:0;;18015:89;;;713:25:1;;;701:2;686:18;18015:89:0;567:177:1;7106:450:0;;;;;;;;;;-1:-1:-1;7106:450:0;;;;;:::i;:::-;;:::i;:::-;;;1370:14:1;;1363:22;1345:41;;1333:2;1318:18;7106:450:0;1205:187:1;6396:102:0;;;;;;;;;;;;;:::i;5052:34::-;;;;;;;;;;;;;;;;21405:444;;;;;;;;;;-1:-1:-1;21405:444:0;;;;;:::i;:::-;;:::i;:::-;;19565:392;;;;;;;;;;;;;:::i;18179:202::-;;;;;;;;;;-1:-1:-1;18179:202:0;;;;;:::i;:::-;;:::i;20260:271::-;;;;;;;;;;-1:-1:-1;20260:271:0;;;;;:::i;:::-;;:::i;19180:377::-;;;;;;;;;;-1:-1:-1;19180:377:0;;;;;:::i;:::-;;:::i;18389:431::-;;;;;;;;;;-1:-1:-1;18389:431:0;;;;;:::i;:::-;;:::i;8663:335::-;;;;;;;;;;-1:-1:-1;8663:335:0;;;;;:::i;:::-;;:::i;5150:52::-;;;;;;;;;;;;5192:10;5150:52;;7694:118;;;;;;;;;;;;;:::i;7015:83::-;;;;;;;;;;-1:-1:-1;7015:83:0;;3922:1;3083:36:1;;3071:2;3056:18;7015:83:0;2941:184:1;4359:37:0;;;;;;;;;;;;4393:3;4359:37;;4015:61;;;;;;;;;;;;;:::i;4242:43::-;;;;;;;;;;-1:-1:-1;4242:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;4694:74;;;;;;;;;;-1:-1:-1;4694:74:0;;;;-1:-1:-1;;;;;4694:74:0;;;;;;-1:-1:-1;;;;;3294:32:1;;;3276:51;;3264:2;3249:18;4694:74:0;3130:203:1;5282:39:0;;;;;;;;;;-1:-1:-1;5282:39:0;;;;;:::i;:::-;;;;;;;;;;;;;;7564:122;;;;;;;;;;-1:-1:-1;7564:122:0;;;;;:::i;:::-;;:::i;4617:70::-;;;;;;;;;;-1:-1:-1;4617:70:0;;;;-1:-1:-1;;;;;4617:70:0;;;5328:30;;;;;;;;;;;;;;;;4102:44;;;;;;;;;;-1:-1:-1;4102:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;6506:119;;;;;;;;;;-1:-1:-1;6506:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;6599:18:0;6572:7;6599:18;;;:9;:18;;;;;;;6506:119;19965:287;;;;;;;;;;-1:-1:-1;19965:287:0;;;;;:::i;:::-;;:::i;2750:148::-;;;;;;;;;;;;;:::i;5391:22::-;;;;;;;;;;;;;;;;4831:33;;;;;;;;;;;;;;;;7820:284;;;;;;;;;;-1:-1:-1;7820:284:0;;;;;:::i;:::-;;:::i;4433:47::-;;;;;;;;;;-1:-1:-1;4433:47:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;2536:79;;;;;;;;;;-1:-1:-1;2574:7:0;2601:6;-1:-1:-1;;;;;2601:6:0;2536:79;;10915:3294;;;;;;:::i;:::-;;:::i;21079:141::-;;;;;;;;;;;;;:::i;6920:87::-;;;;;;;;;;-1:-1:-1;6992:7:0;;;;;;;;;;;;-1:-1:-1;;;6992:7:0;;;;6920:87;;5234:41;;;;;;;;;;-1:-1:-1;5234:41:0;;;;;:::i;:::-;;;;;;;;;;;;;;4292:27;;;;;;;;;;;;;;;;4326:26;;;;;;;;;;;;;;;;8112:122;;;;;;;;;;-1:-1:-1;8112:122:0;;;;;:::i;:::-;;:::i;5625:54::-;;;;;;;;;;-1:-1:-1;5625:54:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4018:25:1;;;4074:2;4059:18;;4052:34;;;;4102:18;;;4095:34;;;;4160:2;4145:18;;4138:34;4203:3;4188:19;;4181:35;4005:3;3990:19;5625:54:0;3759:463:1;8433:188:0;;;;;;;;;;-1:-1:-1;8433:188:0;;;;;:::i;:::-;;:::i;4560:29::-;;;;;;;;;;;;;;;;14541:3428;;;;;;;;;;-1:-1:-1;14541:3428:0;;;;;:::i;:::-;;:::i;5792:94::-;;;;;;;;;;;;5844:42;5792:94;;22529:167;;;;;;;;;;;;;:::i;6633:188::-;;;;;;;;;;-1:-1:-1;6633:188:0;;;;;:::i;:::-;-1:-1:-1;;;;;6785:19:0;;;6753:7;6785:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;6633:188;4487:42;;;;;;;;;;;;;;;;20539:532;;;:::i;5093:50::-;;;;;;;;;;;;;;;;4795:29;;;;;;;;;;;;;;;;21904:561;;;;;;;;;;;;;:::i;2906:281::-;;;;;;;;;;-1:-1:-1;2906:281:0;;;;;:::i;:::-;;:::i;18828:344::-;;;;;;;;;;-1:-1:-1;18828:344:0;;;;;:::i;:::-;;:::i;5420:46::-;;;;;;;;;;-1:-1:-1;5420:46:0;;;;;:::i;:::-;;;;;;;;;;;;;;8242:153;;;;;;;;;;-1:-1:-1;8242:153:0;;;;;:::i;:::-;;:::i;7106:450::-;7208:4;-1:-1:-1;;;;;7238:21:0;;7230:68;;;;-1:-1:-1;;;7230:68:0;;4750:2:1;7230:68:0;;;4732:21:1;4789:2;4769:18;;;4762:30;4828:34;4808:18;;;4801:62;-1:-1:-1;;;4879:18:1;;;4872:32;4921:19;;7230:68:0;;;;;;;;;7331:10;7309:110;;;;-1:-1:-1;;;7309:110:0;;5153:2:1;7309:110:0;;;5135:21:1;5192:2;5172:18;;;5165:30;5231:34;5211:18;;;5204:62;-1:-1:-1;;;5282:18:1;;;5275:34;5326:19;;7309:110:0;4951:400:1;7309:110:0;7444:10;7432:23;;;;:11;:23;;;;;;;;-1:-1:-1;;;;;7432:32:0;;;;;;;;;;;;:41;;;7489:37;713:25:1;;;7432:32:0;;7444:10;7489:37;;686:18:1;7489:37:0;;;;;;;-1:-1:-1;7544:4:0;7106:450;;;;;:::o;6396:102::-;6451:7;3972:13;3922:1;3972:2;:13;:::i;:::-;4054:22;;:5;:22;:::i;:::-;6471:19;;6396:102;:::o;21405:444::-;2663:6;;-1:-1:-1;;;;;2663:6:0;2166:10;2663:22;2655:67;;;;-1:-1:-1;;;2655:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21555:27:0;::::1;::::0;;::::1;::::0;:61:::1;;-1:-1:-1::0;;;;;;21586:30:0;::::1;::::0;::::1;21555:61;21533:153;;;::::0;-1:-1:-1;;;21533:153:0;;7607:2:1;21533:153:0::1;::::0;::::1;7589:21:1::0;7646:2;7626:18;;;7619:30;7685:34;7665:18;;;7658:62;-1:-1:-1;;;7736:18:1;;;7729:40;7786:19;;21533:153:0::1;7405:406:1::0;21533:153:0::1;21699:17;:33:::0;;-1:-1:-1;;;;;21699:33:0;;::::1;-1:-1:-1::0;;;;;;21699:33:0;;::::1;::::0;::::1;::::0;;;21743:13:::1;:32:::0;;;;::::1;::::0;;;::::1;::::0;::::1;::::0;;;21791:50:::1;::::0;;8028:34:1;;;8093:2;8078:18;;8071:43;;;;21791:50:0::1;::::0;7963:18:1;21791:50:0::1;;;;;;;;21405:444:::0;;:::o;19565:392::-;548:1;694:7;;:19;686:63;;;;-1:-1:-1;;;686:63:0;;;;;;;:::i;:::-;548:1;760:7;:18;2663:6:::1;::::0;-1:-1:-1;;;;;2663:6:0::1;2166:10:::0;2663:22:::1;2655:67;;;;-1:-1:-1::0;;;2655:67:0::1;;;;;;;:::i;:::-;19663:10:::2;::::0;19715:9:::2;::::0;19702:10:::2;::::0;19639::::2;::::0;-1:-1:-1;;;;;19663:10:0::2;::::0;4910:3:::2;::::0;19702:22:::2;::::0;19715:9;19702:22:::2;:::i;:::-;19701:39;;;;:::i;:::-;19655:100;::::0;::::2;::::0;;;;;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;19791:14:0::2;::::0;19847:13:::2;::::0;19834:10:::2;::::0;19638:117;;-1:-1:-1;19767:10:0::2;::::0;-1:-1:-1;;;;;19791:14:0;;::::2;::::0;4910:3:::2;::::0;19834:26:::2;::::0;::::2;:::i;:::-;19833:43;;;;:::i;:::-;19783:108;::::0;::::2;::::0;;;;;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19766:125;;;19909:5;:14;;;;;19918:5;19909:14;19902:22;;;;:::i;:::-;-1:-1:-1::0;;19948:1:0::2;19935:10;:14:::0;504:1;801:22;;19565:392::o;18179:202::-;18244:7;18360:13;:11;:13::i;:::-;18337:4;18319:24;;;;:9;:24;;;;;;;18306:9;;-1:-1:-1;;;;;18286:17:0;;;;;;;;;:29;;18306:9;18286:29;:::i;:::-;18285:58;;;;:::i;:::-;18284:89;;;;:::i;20260:271::-;20395:4;20324:7;20377:24;;;:9;:24;;;;;;20366:8;;20324:7;;20366:35;;;:::i;:::-;20463:4;20412:18;20445:24;;;:9;:24;;;;;;20344:57;;-1:-1:-1;20412:18:0;20445:35;;20472:8;;20445:35;:::i;:::-;20433:8;;:48;;;;:::i;:::-;20412:69;-1:-1:-1;20499:24:0;20412:69;20499:11;:24;:::i;:::-;20492:31;20260:271;-1:-1:-1;;;;20260:271:0:o;19180:377::-;2663:6;;-1:-1:-1;;;;;2663:6:0;2166:10;2663:22;2655:67;;;;-1:-1:-1;;;2655:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19335:27:0;::::1;::::0;;::::1;::::0;:62:::1;;-1:-1:-1::0;;;;;;19366:31:0;::::1;::::0;::::1;19335:62;19313:152;;;::::0;-1:-1:-1;;;19313:152:0;;9514:2:1;19313:152:0::1;::::0;::::1;9496:21:1::0;9553:2;9533:18;;;9526:30;9592:34;9572:18;;;9565:62;-1:-1:-1;;;9643:18:1;;;9636:38;9691:19;;19313:152:0::1;9312:404:1::0;19313:152:0::1;19478:10;:26:::0;;-1:-1:-1;;;;;19478:26:0;;::::1;-1:-1:-1::0;;;;;;19478:26:0;;::::1;;::::0;;;19515:14:::1;:34:::0;;;;;::::1;::::0;::::1;;::::0;;19180:377::o;18389:431::-;2663:6;;-1:-1:-1;;;;;2663:6:0;2166:10;2663:22;2655:67;;;;-1:-1:-1;;;2655:67:0;;;;;;;:::i;:::-;18536:2:::1;18523:9;:15;;:52;;;;;18573:2;18559:10;:16;;18523:52;:89;;;;;18609:3;18596:9;:16;;18523:89;:127;;;;;18647:3;18633:10;:17;;18523:127;18501:194;;;::::0;-1:-1:-1;;;18501:194:0;;9923:2:1;18501:194:0::1;::::0;::::1;9905:21:1::0;9962:2;9942:18;;;9935:30;-1:-1:-1;;;9981:18:1;;;9974:47;10038:18;;18501:194:0::1;9721:341:1::0;18501:194:0::1;18708:6;:18:::0;;;18737:7:::1;:20:::0;;;18775:37:::1;::::0;;10241:25:1;;;10297:2;10282:18;;10275:34;;;18775:37:0::1;::::0;10214:18:1;18775:37:0::1;10067:248:1::0;8663:335:0;8797:4;8832:10;8892:40;8908:6;8832:10;8925:6;8892:15;:40::i;:::-;8950;8964:6;8972:9;8983:6;8950:13;:40::i;:::-;8943:47;8663:335;-1:-1:-1;;;;;8663:335:0:o;7694:118::-;4975:42;7747:7;7789:15;;;:9;:15;;;;3972:13;3922:1;3972:2;:13;:::i;:::-;4054:22;;:5;:22;:::i;:::-;7774:30;;;;:::i;4015:61::-;3972:13;3922:1;3972:2;:13;:::i;:::-;4054:22;;:5;:22;:::i;:::-;4015:61;:::o;7564:122::-;7619:4;7643:35;7651:7;-1:-1:-1;;7643:7:0;:35::i;19965:287::-;20063:7;20088:19;20134:11;20122:9;;:23;;;;:::i;:::-;20110:8;;:36;;;;:::i;:::-;20088:58;;20157:20;20191:9;;20180:8;;:20;;;;:::i;2750:148::-;2663:6;;-1:-1:-1;;;;;2663:6:0;2166:10;2663:22;2655:67;;;;-1:-1:-1;;;2655:67:0;;;;;;;:::i;:::-;2857:1:::1;2841:6:::0;;2820:40:::1;::::0;-1:-1:-1;;;;;2841:6:0;;::::1;::::0;2820:40:::1;::::0;2857:1;;2820:40:::1;2888:1;2871:19:::0;;-1:-1:-1;;;;;;2871:19:0::1;::::0;;2750:148::o;7820:284::-;2663:6;;-1:-1:-1;;;;;2663:6:0;2166:10;2663:22;2655:67;;;;-1:-1:-1;;;2655:67:0;;;;;;;:::i;:::-;7944:3:::1;3972:13;3922:1;3972:2;:13;:::i;:::-;4054:22;::::0;:5:::1;:22;:::i;:::-;7929:18;;;;:::i;:::-;7917:8;:30;;7895:134;;;::::0;-1:-1:-1;;;7895:134:0;;10522:2:1;7895:134:0::1;::::0;::::1;10504:21:1::0;10561:2;10541:18;;;10534:30;10600:34;10580:18;;;10573:62;-1:-1:-1;;;10651:18:1;;;10644:52;10713:19;;7895:134:0::1;10320:418:1::0;7895:134:0::1;8040:6;:17:::0;;;8073:23:::1;::::0;713:25:1;;;8073:23:0::1;::::0;701:2:1;686:18;8073:23:0::1;;;;;;;7820:284:::0;:::o;10915:3294::-;11041:4;548:1;694:7;;:19;686:63;;;;-1:-1:-1;;;686:63:0;;;;;;;:::i;:::-;548:1;760:7;:18;11116:15:::1;11104:27:::0;::::1;;11096:56;;;::::0;-1:-1:-1;;;11096:56:0;;10945:2:1;11096:56:0::1;::::0;::::1;10927:21:1::0;10984:2;10964:18;;;10957:30;-1:-1:-1;;;11003:18:1;;;10996:46;11059:18;;11096:56:0::1;10743:340:1::0;11096:56:0::1;11206:10;11192:25;::::0;;;:13:::1;:25;::::0;;;;11220:12:::1;11192:40:::0;;11282:9:::1;::::0;11274:52:::1;;;::::0;-1:-1:-1;;;11274:52:0;;11290:2:1;11274:52:0::1;::::0;::::1;11272:21:1::0;11329:2;11309:18;;;11302:30;11368:28;11348:18;;;11341:56;11414:18;;11274:52:0::1;11088:350:1::0;11274:52:0::1;5192:10;11448:15;:34;;:85;;;-1:-1:-1::0;11503:10:0::1;5844:42;11503:30;11448:85;11426:154;;;::::0;-1:-1:-1;;;11426:154:0;;11645:2:1;11426:154:0::1;::::0;::::1;11627:21:1::0;11684:2;11664:18;;;11657:30;-1:-1:-1;;;11703:18:1;;;11696:49;11762:18;;11426:154:0::1;11443:343:1::0;11426:154:0::1;11655:10;11623:17;11643:23:::0;;;:11:::1;:23;::::0;;;;;::::1;;:94;;4393:3;11720:6;;11708:9;:18;;;;:::i;:::-;11707:30;;;;:::i;:::-;11643:94;;;11682:9;11643:94;11623:114;;11793:20;11881:9;;11869;:21;;;;:::i;:::-;11857:8;;:34;;;;:::i;:::-;11834:4;11816:24;::::0;;;:9:::1;:24;::::0;;;;;:76:::1;::::0;;::::1;:::i;:::-;11997:6;::::0;11967:10:::1;11957:21;::::0;;;:9:::1;:21;::::0;;;;;11793:99;;-1:-1:-1;11997:6:0;11957:36:::1;::::0;11793:99;;11957:36:::1;:::i;:::-;:46;;:94;;;-1:-1:-1::0;12040:10:0::1;12024:27;::::0;;;:15:::1;:27;::::0;;;;;::::1;;11957:94;11935:163;;;::::0;-1:-1:-1;;;11935:163:0;;11993:2:1;11935:163:0::1;::::0;::::1;11975:21:1::0;12032:2;12012:18;;;12005:30;-1:-1:-1;;;12051:18:1;;;12044:49;12110:18;;11935:163:0::1;11791:343:1::0;11935:163:0::1;12164:1;12149:12;:16;12141:66;;;::::0;-1:-1:-1;;;12141:66:0;;12341:2:1;12141:66:0::1;::::0;::::1;12323:21:1::0;12380:2;12360:18;;;12353:30;12419:34;12399:18;;;12392:62;-1:-1:-1;;;12470:18:1;;;12463:35;12515:19;;12141:66:0::1;12139:401:1::0;12141:66:0::1;12276:11;12260:12;:27;;12252:66;;;::::0;-1:-1:-1;;;12252:66:0;;12747:2:1;12252:66:0::1;::::0;::::1;12729:21:1::0;12786:2;12766:18;;;12759:30;12825:28;12805:18;;;12798:56;12871:18;;12252:66:0::1;12545:350:1::0;12252:66:0::1;12384:29;12388:10;12400:12;12384:3;:29::i;:::-;12483:17;12503:21;12515:9:::0;12503::::1;:21;:::i;:::-;12483:41;;12561:9;12548:10;;:22;;;;:::i;:::-;12535:10;:35:::0;12593:9:::1;::::0;:21:::1;::::0;12605:9;;12593:21:::1;:::i;:::-;12581:9;:33:::0;12668:15:::1;12652:13;12726;:11;:13::i;:::-;12714:25;::::0;:9:::1;:25;:::i;:::-;12694:45;;12765:9;12750:11;;:24;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;12792:10:0::1;12785:18;::::0;;;:6:::1;:18;::::0;;;;:31;;12807:9;;12785:18;:31:::1;::::0;12807:9;;12785:31:::1;:::i;:::-;::::0;;;-1:-1:-1;;12827:11:0::1;::::0;;;:4:::1;:11;::::0;;;;:24;;12842:9;;12827:11;:24:::1;::::0;12842:9;;12827:24:::1;:::i;:::-;;;;;;;;12909:1;12898:7;;:12;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;12933:7:0::1;::::0;12921:20:::1;::::0;;;:11:::1;:20;::::0;;;;:28;;;12996:13:::1;:11;:13::i;:::-;12977:16;:14;:16::i;:::-;:32;;;;:::i;:::-;13020:22;::::0;;;:15:::1;:22;::::0;;;;:35;;;13070:27:::1;;::::0;12960:49;;-1:-1:-1;13070:32:0;13066:405:::1;;13123:7;;13134:1;13123:12:::0;13119:341:::1;;13273:13;:11;:13::i;:::-;3972;3922:1;3972:2;:13;:::i;:::-;4054:22;::::0;:5:::1;:22;:::i;:::-;13221:9;13209;;:21;;;;:::i;:::-;13208:40;;;;:::i;:::-;13207:79;;;;:::i;:::-;13156:22;::::0;;;:15:::1;:22;::::0;;;;:27:::1;;:130:::0;13119:341:::1;;;13357:15;:81;13395:11;:24;13417:1;13407:7;;:11;;;;:::i;:::-;13395:24;;;;;;;;;;;;13357:81;;;;;;;;;;;:87;;;13327:15;:22;13343:5;13327:22;;;;;;;;;;;:27;;:117;;;;13119:341;13481:22;::::0;;;:15:::1;:22;::::0;;;;:28:::1;::::0;::::1;:37:::0;;;13549:27:::1;;::::0;:36;-1:-1:-1;13549:36:0;:85:::1;;-1:-1:-1::0;13602:22:0::1;::::0;;;:15:::1;:22;::::0;;;;:27:::1;;::::0;:32;13549:85:::1;13531:178;;;13661:22;::::0;;;:15:::1;:22;::::0;;;;:27:::1;;:36:::0;;;13531:178:::1;13739:22;::::0;;;:15:::1;:22;::::0;;;;:26:::1;;::::0;:35;-1:-1:-1;13739:35:0;:83:::1;;-1:-1:-1::0;13791:22:0::1;::::0;;;:15:::1;:22;::::0;;;;:26:::1;;::::0;:31;13739:83:::1;13721:175;;;13849:22;::::0;;;:15:::1;:22;::::0;;;;:26:::1;;:35:::0;;;13721:175:::1;13953:49;::::0;713:25:1;;;13977:10:0::1;::::0;13970:4:::1;::::0;-1:-1:-1;;;;;;;;;;;13953:49:0;701:2:1;686:18;13953:49:0::1;;;;;;;14072:4;14039:10;14018:161;14092:12:::0;14119:9:::1;14155:13;:11;:13::i;:::-;14143:25;::::0;:9;:25:::1;:::i;:::-;14018:161;::::0;;13102:25:1;;;13158:2;13143:18;;13136:34;;;;13186:18;;;13179:34;13090:2;13075:18;14018:161:0::1;;;;;;;-1:-1:-1::0;;14197:4:0::1;801:22:::0;;;14197:4;10915:3294;-1:-1:-1;;;;;;;10915:3294:0:o;21079:141::-;21126:7;21198:13;:11;:13::i;:::-;21179:16;:14;:16::i;:::-;21154:22;:20;:22::i;:::-;:41;;;;:::i;:::-;:57;;;;:::i;8112:122::-;2663:6;;-1:-1:-1;;;;;2663:6:0;2166:10;2663:22;2655:67;;;;-1:-1:-1;;;2655:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8198:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;8198:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;8112:122::o;8433:188::-;8540:4;8569:44;8583:10;8595:9;8606:6;8569:13;:44::i;:::-;8562:51;8433:188;-1:-1:-1;;;8433:188:0:o;14541:3428::-;14677:4;548:1;694:7;;:19;686:63;;;;-1:-1:-1;;;686:63:0;;;;;;;:::i;:::-;548:1;760:7;:18;14747:15:::1;14735:27:::0;::::1;;14727:56;;;::::0;-1:-1:-1;;;14727:56:0;;10945:2:1;14727:56:0::1;::::0;::::1;10927:21:1::0;10984:2;10964:18;;;10957:30;-1:-1:-1;;;11003:18:1;;;10996:46;11059:18;;14727:56:0::1;10743:340:1::0;14727:56:0::1;14858:10;14844:25;::::0;;;:13:::1;:25;::::0;;;;;14873:12:::1;14844:41:::0;;14822:143:::1;;;::::0;-1:-1:-1;;;14822:143:0;;13426:2:1;14822:143:0::1;::::0;::::1;13408:21:1::0;13465:2;13445:18;;;13438:30;13504:34;13484:18;;;13477:62;-1:-1:-1;;;13555:18:1;;;13548:50;13615:19;;14822:143:0::1;13224:416:1::0;14822:143:0::1;14995:10;14978:14;15086:17:::0;;;:9:::1;:17;::::0;;;;;:32;-1:-1:-1;15086:32:0::1;15064:112;;;::::0;-1:-1:-1;;;15064:112:0;;13847:2:1;15064:112:0::1;::::0;::::1;13829:21:1::0;13886:2;13866:18;;;13859:30;13925:32;13905:18;;;13898:60;13975:18;;15064:112:0::1;13645:354:1::0;15064:112:0::1;15317:4;15241:17;15299:24:::0;;;:9:::1;:24;::::0;;;;;:38:::1;::::0;15326:11;;15299:38:::1;:::i;:::-;15287:8;;:51;;;;:::i;:::-;15261:9;;:78;;;;:::i;:::-;15241:98;;15350:17;4393:3;15394:7;;4393:3;15384:17;;;;:::i;:::-;15371:31;::::0;:9;:31:::1;:::i;:::-;15370:43;;;;:::i;:::-;15350:63:::0;-1:-1:-1;15424:17:0::1;15444:21;15350:63:::0;15444:9;:21:::1;:::i;:::-;15424:41;;15526:9;15513;:22;;15505:61;;;::::0;-1:-1:-1;;;15505:61:0;;12747:2:1;15505:61:0::1;::::0;::::1;12729:21:1::0;12786:2;12766:18;;;12759:30;12825:28;12805:18;;;12798:56;12871:18;;15505:61:0::1;12545:350:1::0;15505:61:0::1;15644:10;15611:15;15632:23:::0;;;:11:::1;:23;::::0;;;;;::::1;;:139;;15729:42;::::0;-1:-1:-1;;;;;15729:20:0;::::1;::::0;15757:9;;15729:42:::1;::::0;;;15757:9;15729:20;:42:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15632:139;;;15671:42;::::0;-1:-1:-1;;;;;15671:20:0;::::1;::::0;15699:9;;15671:42:::1;::::0;;;15699:9;15671:20;:42:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15632:139;15610:161;;;15790:10;15782:46;;;::::0;-1:-1:-1;;;15782:46:0;;14206:2:1;15782:46:0::1;::::0;::::1;14188:21:1::0;14245:2;14225:18;;;14218:30;14284:25;14264:18;;;14257:53;14327:18;;15782:46:0::1;14004:347:1::0;15782:46:0::1;-1:-1:-1::0;;;;;15906:17:0;::::1;;::::0;;;:9:::1;:17;::::0;;;;;:31:::1;::::0;15926:11;;15906:31:::1;:::i;:::-;-1:-1:-1::0;;;;;15886:17:0;::::1;;::::0;;;:9:::1;:17;::::0;;;;;;;:51;;;;16080:10:::1;16068:23:::0;;:11:::1;:23:::0;;;;::::1;;:87;;16146:9;16133:10;;:22;;;;:::i;:::-;16068:87;;;16107:10;;16068:87;16055:10;:100:::0;16178:9:::1;::::0;:21:::1;::::0;16190:9;;16178:21:::1;:::i;:::-;16166:9;:33:::0;16303:4:::1;16285:24;::::0;;;:9:::1;:24;::::0;;;;;:38:::1;::::0;16312:11;;16285:38:::1;:::i;:::-;16276:4;16258:24;::::0;;;:9:::1;:24;::::0;;;;:65;;;;16377:15:::1;::::0;16436:13:::1;:11;:13::i;:::-;16424:25;::::0;:9;:25:::1;:::i;:::-;16403:46;;16475:10;16460:11;;:25;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;16503:10:0::1;16496:18;::::0;;;:6:::1;:18;::::0;;;;:32;;16518:10;;16496:18;:32:::1;::::0;16518:10;;16496:32:::1;:::i;:::-;::::0;;;-1:-1:-1;;16539:11:0::1;::::0;;;:4:::1;:11;::::0;;;;:25;;16554:10;;16539:11;:25:::1;::::0;16554:10;;16539:25:::1;:::i;:::-;;;;;;;;16622:1;16611:7;;:12;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;16646:7:0::1;::::0;16634:20:::1;::::0;;;:11:::1;:20;::::0;;;;:28;;;16709:13:::1;:11;:13::i;:::-;16690:16;:14;:16::i;:::-;:32;;;;:::i;:::-;16733:22;::::0;;;:15:::1;:22;::::0;;;;:35;;;16783:27:::1;;::::0;16673:49;;-1:-1:-1;16783:32:0;16779:174:::1;;16862:15;:73;16896:11;:24;16918:1;16908:7;;:11;;;;:::i;:::-;16896:24;;;;;;;;;;;;16862:73;;;;;;;;;;;:79;;;16832:15;:22;16848:5;16832:22;;;;;;;;;;;:27;;:109;;;;16779:174;16963:22;::::0;;;:15:::1;:22;::::0;;;;:28:::1;::::0;::::1;:37:::0;;;17031:27:::1;;::::0;:36;-1:-1:-1;17031:36:0;:85:::1;;-1:-1:-1::0;17084:22:0::1;::::0;;;:15:::1;:22;::::0;;;;:27:::1;;::::0;:32;17031:85:::1;17013:178;;;17143:22;::::0;;;:15:::1;:22;::::0;;;;:27:::1;;:36:::0;;;17013:178:::1;17221:22;::::0;;;:15:::1;:22;::::0;;;;:26:::1;;::::0;:35;-1:-1:-1;17221:35:0;:83:::1;;-1:-1:-1::0;17273:22:0::1;::::0;;;:15:::1;:22;::::0;;;;:26:::1;;::::0;:31;17221:83:::1;17203:175;;;17331:22;::::0;;;:15:::1;:22;::::0;;;;:26:::1;;:35:::0;;;17203:175:::1;17437:44;::::0;713:25:1;;;17462:4:0::1;::::0;-1:-1:-1;;;;;17437:44:0;::::1;::::0;-1:-1:-1;;;;;;;;;;;17437:44:0;701:2:1;686:18;17437:44:0::1;;;;;;;17508:10;17496:23;::::0;;;:11:::1;:23;::::0;;;;;::::1;;17492:448;;;17541:167;::::0;;13102:25:1;;;13158:2;13143:18;;13136:34;;;13186:18;;;13179:34;;;17596:10:0::1;::::0;17572:4:::1;::::0;17541:167:::1;::::0;13090:2:1;13075:18;17541:167:0::1;;;;;;;17492:448;;;17801:10;17777:4;17746:182;17830:11:::0;17860:9;17900:13:::1;:11;:13::i;:::-;17888:25;::::0;:9;:25:::1;:::i;:::-;17746:182;::::0;;13102:25:1;;;13158:2;13143:18;;13136:34;;;;13186:18;;;13179:34;13090:2;13075:18;17746:182:0::1;;;;;;;17492:448;-1:-1:-1::0;;17957:4:0::1;801:22:::0;;;17957:4;14541:3428;-1:-1:-1;;;;;;;;;;14541:3428:0:o;22529:167::-;22576:7;22616:1;22604:9;;:13;22596:38;;;;-1:-1:-1;;;22596:38:0;;14558:2:1;22596:38:0;;;14540:21:1;14597:2;14577:18;;;14570:30;-1:-1:-1;;;14616:18:1;;;14609:42;14668:18;;22596:38:0;14356:336:1;22596:38:0;22682:4;22664:24;;;;:9;:24;;;;;;22652:9;;:36;;22664:24;22652:36;:::i;20539:532::-;2663:6;;-1:-1:-1;;;;;2663:6:0;2166:10;2663:22;2655:67;;;;-1:-1:-1;;;2655:67:0;;;;;;;:::i;:::-;20677:9:::1;::::0;20642:4:::1;20601:19;20624:24:::0;;;:9:::1;:24;::::0;;;;;20601:19;;20677:9;20624:36:::1;::::0;20651:9:::1;::::0;20624:36:::1;:::i;:::-;20623:63;;;;:::i;:::-;20715:10;20705:21;::::0;;;:9:::1;:21;::::0;;;;;20601:85;;-1:-1:-1;20705:36:0;-1:-1:-1;20705:36:0::1;20697:67;;;::::0;-1:-1:-1;;;20697:67:0;;14899:2:1;20697:67:0::1;::::0;::::1;14881:21:1::0;14938:2;14918:18;;;14911:30;-1:-1:-1;;;14957:18:1;;;14950:48;15015:18;;20697:67:0::1;14697:342:1::0;20697:67:0::1;20794:9;::::0;20826:21:::1;20838:9;20794::::0;20826:21:::1;:::i;:::-;20814:9;:33:::0;20876:4:::1;20858:24;::::0;;;:9:::1;:24;::::0;;;;:39;;20886:11;;20858:24;:39:::1;::::0;20886:11;;20858:39:::1;:::i;:::-;::::0;;;-1:-1:-1;;20918:10:0::1;20908:21;::::0;;;:9:::1;:21;::::0;;;;:36;;20933:11;;20908:21;:36:::1;::::0;20933:11;;20908:36:::1;:::i;:::-;::::0;;;-1:-1:-1;;20978:9:0::1;::::0;20967:8:::1;::::0;20991:6;;20967:20:::1;::::0;::::1;:::i;:::-;20966:31;;;;:::i;:::-;20955:8;:42:::0;21015:48:::1;::::0;713:25:1;;;21044:4:0::1;::::0;21024:10:::1;::::0;-1:-1:-1;;;;;;;;;;;21015:48:0;701:2:1;686:18;21015:48:0::1;;;;;;;20590:481;;20539:532::o:0;21904:561::-;22001:17;;22063:13;;22046;;;-1:-1:-1;;;22046:13:0;;;;21948:7;;-1:-1:-1;;;;;22001:17:0;;;;21948:7;;22063:13;;;22001:17;;22046:11;;:13;;;;;;;;;;;;;;22001:17;22046:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;22046:30:0;;:104;;22136:4;-1:-1:-1;;;;;22136:11:0;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22046:104;;;22099:4;-1:-1:-1;;;;;22099:11:0;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22030:120;;22164:12;22178;22196:4;-1:-1:-1;;;;;22196:16:0;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22163:51;-1:-1:-1;;;;;22163:51:0;;;-1:-1:-1;;;;;22163:51:0;;;22248:13;;;;;;;;;-1:-1:-1;;;;;22248:13:0;-1:-1:-1;;;;;22231:30:0;:4;-1:-1:-1;;;;;22231:11:0;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;22231:30:0;;22227:98;;22295:4;-1:-1:-1;;;;;22295:16:0;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;22278:35:0;;;;-1:-1:-1;22278:35:0;;-1:-1:-1;22227:98:0;22335:12;22361:6;-1:-1:-1;;;;;22361:15:0;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22357:21;;:2;:21;:::i;:::-;22350:28;;:4;:28;:::i;:::-;22335:43;-1:-1:-1;22397:11:0;22404:4;22335:43;22397:11;:::i;:::-;22389:20;;;;;;;21904:561;:::o;2906:281::-;2663:6;;-1:-1:-1;;;;;2663:6:0;2166:10;2663:22;2655:67;;;;-1:-1:-1;;;2655:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3009:22:0;::::1;2987:110;;;::::0;-1:-1:-1;;;2987:110:0;;16428:2:1;2987:110:0::1;::::0;::::1;16410:21:1::0;16467:2;16447:18;;;16440:30;16506:34;16486:18;;;16479:62;-1:-1:-1;;;16557:18:1;;;16550:36;16603:19;;2987:110:0::1;16226:402:1::0;2987:110:0::1;3134:6;::::0;;3113:38:::1;::::0;-1:-1:-1;;;;;3113:38:0;;::::1;::::0;3134:6;::::1;::::0;3113:38:::1;::::0;::::1;3162:6;:17:::0;;-1:-1:-1;;;;;;3162:17:0::1;-1:-1:-1::0;;;;;3162:17:0;;;::::1;::::0;;;::::1;::::0;;2906:281::o;18828:344::-;2663:6;;-1:-1:-1;;;;;2663:6:0;2166:10;2663:22;2655:67;;;;-1:-1:-1;;;2655:67:0;;;;;;;:::i;:::-;4910:3:::1;18984:31;18999:16:::0;18984:12;:31:::1;:::i;:::-;:47;18962:122;;;::::0;-1:-1:-1;;;18962:122:0;;16835:2:1;18962:122:0::1;::::0;::::1;16817:21:1::0;16874:2;16854:18;;;16847:30;16913:27;16893:18;;;16886:55;16958:18;;18962:122:0::1;16633:349:1::0;18962:122:0::1;19097:9;:24:::0;;;;19132:13:::1;:32:::0;18828:344::o;8242:153::-;2663:6;;-1:-1:-1;;;;;2663:6:0;2166:10;2663:22;2655:67;;;;-1:-1:-1;;;2655:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8355:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;8355:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;8242:153::o;9902:545::-;-1:-1:-1;;;;;10064:18:0;;;10037:24;10064:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;-1:-1:-1;;10106:37:0;;10102:338;;10206:6;10186:16;:26;;10160:117;;;;-1:-1:-1;;;10160:117:0;;17189:2:1;10160:117:0;;;17171:21:1;17228:2;17208:18;;;17201:30;17267:31;17247:18;;;17240:59;17316:18;;10160:117:0;16987:353:1;10160:117:0;10362:51;10371:5;10378:7;10406:6;10387:16;:25;10362:8;:51::i;:::-;10026:421;9902:545;;;:::o;9036:858::-;9162:4;-1:-1:-1;;;;;9234:23:0;;;;;;:53;;-1:-1:-1;;;;;;9261:26:0;;9282:4;9261:26;;9234:53;9212:137;;;;-1:-1:-1;;;9212:137:0;;17547:2:1;9212:137:0;;;17529:21:1;17586:2;17566:18;;;17559:30;17625:34;17605:18;;;17598:62;-1:-1:-1;;;17676:18:1;;;17669:32;17718:19;;9212:137:0;17345:398:1;9212:137:0;9377:1;9368:6;:10;9360:64;;;;-1:-1:-1;;;9360:64:0;;17950:2:1;9360:64:0;;;17932:21:1;17989:2;17969:18;;;17962:30;18028:34;18008:18;;;18001:62;-1:-1:-1;;;18079:18:1;;;18072:39;18128:19;;9360:64:0;17748:405:1;9360:64:0;-1:-1:-1;;;;;9457:26:0;;;;;;:15;:26;;;;;;;;;:86;;-1:-1:-1;9537:6:0;;-1:-1:-1;;;;;9504:20:0;;;;;;:9;:20;;;;;;:29;;9527:6;;9504:29;:::i;:::-;:39;;9457:86;9435:156;;;;-1:-1:-1;;;9435:156:0;;18360:2:1;9435:156:0;;;18342:21:1;18399:2;18379:18;;;18372:30;-1:-1:-1;;;18418:18:1;;;18411:50;18478:18;;9435:156:0;18158:344:1;9435:156:0;-1:-1:-1;;;;;9657:17:0;;;;;;:9;:17;;;;;;:26;;9677:6;;9657:26;:::i;:::-;-1:-1:-1;;;;;9637:17:0;;;;;;;:9;:17;;;;;;:46;;;;9755:20;;;;;;;:29;;9778:6;;9755:29;:::i;:::-;-1:-1:-1;;;;;9732:20:0;;;;;;;:9;:20;;;;;;;:52;;;;9829:35;;;;;;-1:-1:-1;;;;;;;;;;;9829:35:0;;;9857:6;713:25:1;;701:2;686:18;;567:177;9829:35:0;;;;;;;;-1:-1:-1;9882:4:0;9036:858;;;;;:::o;14263:196::-;-1:-1:-1;;;;;14352:19:0;;;;;;:9;:19;;;;;;:28;;14374:6;;14352:28;:::i;:::-;-1:-1:-1;;;;;14330:19:0;;;;;;:9;:19;;;;;;:50;;;;14436:4;14418:24;;;;:33;;14445:6;;14418:33;:::i;:::-;14409:4;14391:24;;;;:9;:24;;;;;:60;-1:-1:-1;;14263:196:0:o;10455:380::-;-1:-1:-1;;;;;10591:19:0;;10583:68;;;;-1:-1:-1;;;10583:68:0;;18709:2:1;10583:68:0;;;18691:21:1;18748:2;18728:18;;;18721:30;18787:34;18767:18;;;18760:62;-1:-1:-1;;;18838:18:1;;;18831:34;18882:19;;10583:68:0;18507:400:1;10583:68:0;-1:-1:-1;;;;;10670:21:0;;10662:68;;;;-1:-1:-1;;;10662:68:0;;19114:2:1;10662:68:0;;;19096:21:1;19153:2;19133:18;;;19126:30;19192:34;19172:18;;;19165:62;-1:-1:-1;;;19243:18:1;;;19236:32;19285:19;;10662:68:0;18912:398:1;10662:68:0;-1:-1:-1;;;;;10743:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10795:32;;713:25:1;;;10795:32:0;;686:18:1;10795:32:0;;;;;;;10455: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:131::-;-1:-1:-1;;;;;824:31:1;;814:42;;804:70;;870:1;867;860:12;804:70;749:131;:::o;885:315::-;953:6;961;1014:2;1002:9;993:7;989:23;985:32;982:52;;;1030:1;1027;1020:12;982:52;1069:9;1056:23;1088:31;1113:5;1088:31;:::i;:::-;1138:5;1190:2;1175:18;;;;1162:32;;-1:-1:-1;;;885:315:1:o;1397:388::-;1465:6;1473;1526:2;1514:9;1505:7;1501:23;1497:32;1494:52;;;1542:1;1539;1532:12;1494:52;1581:9;1568:23;1600:31;1625:5;1600:31;:::i;:::-;1650:5;-1:-1:-1;1707:2:1;1692:18;;1679:32;1720:33;1679:32;1720:33;:::i;:::-;1772:7;1762:17;;;1397:388;;;;;:::o;1790:247::-;1849:6;1902:2;1890:9;1881:7;1877:23;1873:32;1870:52;;;1918:1;1915;1908:12;1870:52;1957:9;1944:23;1976:31;2001:5;1976:31;:::i;2042:180::-;2101:6;2154:2;2142:9;2133:7;2129:23;2125:32;2122:52;;;2170:1;2167;2160:12;2122:52;-1:-1:-1;2193:23:1;;2042:180;-1:-1:-1;2042:180:1:o;2227:248::-;2295:6;2303;2356:2;2344:9;2335:7;2331:23;2327:32;2324:52;;;2372:1;2369;2362:12;2324:52;-1:-1:-1;;2395:23:1;;;2465:2;2450:18;;;2437:32;;-1:-1:-1;2227:248:1:o;2480:456::-;2557:6;2565;2573;2626:2;2614:9;2605:7;2601:23;2597:32;2594:52;;;2642:1;2639;2632:12;2594:52;2681:9;2668:23;2700:31;2725:5;2700:31;:::i;:::-;2750:5;-1:-1:-1;2807:2:1;2792:18;;2779:32;2820:33;2779:32;2820:33;:::i;:::-;2480:456;;2872:7;;-1:-1:-1;;;2926:2:1;2911:18;;;;2898:32;;2480:456::o;3338:416::-;3403:6;3411;3464:2;3452:9;3443:7;3439:23;3435:32;3432:52;;;3480:1;3477;3470:12;3432:52;3519:9;3506:23;3538:31;3563:5;3538:31;:::i;:::-;3588:5;-1:-1:-1;3645:2:1;3630:18;;3617:32;3687:15;;3680:23;3668:36;;3658:64;;3718:1;3715;3708:12;4227:316;4304:6;4312;4320;4373:2;4361:9;4352:7;4348:23;4344:32;4341:52;;;4389:1;4386;4379:12;4341:52;-1:-1:-1;;4412:23:1;;;4482:2;4467:18;;4454:32;;-1:-1:-1;4533:2:1;4518:18;;;4505:32;;4227:316;-1:-1:-1;4227:316:1:o;5356:127::-;5417:10;5412:3;5408:20;5405:1;5398:31;5448:4;5445:1;5438:15;5472:4;5469:1;5462:15;5488:422;5577:1;5620:5;5577:1;5634:270;5655:7;5645:8;5642:21;5634:270;;;5714:4;5710:1;5706:6;5702:17;5696:4;5693:27;5690:53;;;5723:18;;:::i;:::-;5773:7;5763:8;5759:22;5756:55;;;5793:16;;;;5756:55;5872:22;;;;5832:15;;;;5634:270;;;5638:3;5488:422;;;;;:::o;5915:806::-;5964:5;5994:8;5984:80;;-1:-1:-1;6035:1:1;6049:5;;5984:80;6083:4;6073:76;;-1:-1:-1;6120:1:1;6134:5;;6073:76;6165:4;6183:1;6178:59;;;;6251:1;6246:130;;;;6158:218;;6178:59;6208:1;6199:10;;6222:5;;;6246:130;6283:3;6273:8;6270:17;6267:43;;;6290:18;;:::i;:::-;-1:-1:-1;;6346:1:1;6332:16;;6361:5;;6158:218;;6460:2;6450:8;6447:16;6441:3;6435:4;6432:13;6428:36;6422:2;6412:8;6409:16;6404:2;6398:4;6395:12;6391:35;6388:77;6385:159;;;-1:-1:-1;6497:19:1;;;6529:5;;6385:159;6576:34;6601:8;6595:4;6576:34;:::i;:::-;6646:6;6642:1;6638:6;6634:19;6625:7;6622:32;6619:58;;;6657:18;;:::i;:::-;6695:20;;5915:806;-1:-1:-1;;;5915:806:1:o;6726:140::-;6784:5;6813:47;6854:4;6844:8;6840:19;6834:4;6813:47;:::i;6871:168::-;6944:9;;;6975;;6992:15;;;6986:22;;6972:37;6962:71;;7013:18;;:::i;7044:356::-;7246:2;7228:21;;;7265:18;;;7258:30;7324:34;7319:2;7304:18;;7297:62;7391:2;7376:18;;7044:356::o;8125:355::-;8327:2;8309:21;;;8366:2;8346:18;;;8339:30;8405:33;8400:2;8385:18;;8378:61;8471:2;8456:18;;8125:355::o;8485:217::-;8525:1;8551;8541:132;;8595:10;8590:3;8586:20;8583:1;8576:31;8630:4;8627:1;8620:15;8658:4;8655:1;8648:15;8541:132;-1:-1:-1;8687:9:1;;8485:217::o;8917:127::-;8978:10;8973:3;8969:20;8966:1;8959:31;9009:4;9006:1;8999:15;9033:4;9030:1;9023:15;9049:125;9114:9;;;9135:10;;;9132:36;;;9148:18;;:::i;9179:128::-;9246:9;;;9267:11;;;9264:37;;;9281:18;;:::i;15044:251::-;15114:6;15167:2;15155:9;15146:7;15142:23;15138:32;15135:52;;;15183:1;15180;15173:12;15135:52;15215:9;15209:16;15234:31;15259:5;15234:31;:::i;15300:188::-;15379:13;;-1:-1:-1;;;;;15421:42:1;;15411:53;;15401:81;;15478:1;15475;15468:12;15401:81;15300:188;;;:::o;15493:450::-;15580:6;15588;15596;15649:2;15637:9;15628:7;15624:23;15620:32;15617:52;;;15665:1;15662;15655:12;15617:52;15688:40;15718:9;15688:40;:::i;:::-;15678:50;;15747:49;15792:2;15781:9;15777:18;15747:49;:::i;:::-;15737:59;;15839:2;15828:9;15824:18;15818:25;15883:10;15876:5;15872:22;15865:5;15862:33;15852:61;;15909:1;15906;15899:12;15852:61;15932:5;15922:15;;;15493:450;;;;;:::o;15948:273::-;16016:6;16069:2;16057:9;16048:7;16044:23;16040:32;16037:52;;;16085:1;16082;16075:12;16037:52;16117:9;16111:16;16167:4;16160:5;16156:16;16149:5;16146:27;16136:55;;16187:1;16184;16177:12

Swarm Source

ipfs://893f225586137da88d5b98ad2229843777935be15a78dd070329ab9cd3fc1dab

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

OVERVIEW

Surge is a DeFi protocol that stores its liquidity pool inside of the smart contract itself allowing trading without trading fees and an unextractable LP. Buying and selling can be done directly on the blockchain explorer by using the first two functions accordingly.

Loading...
Loading
[ Download: CSV Export  ]
[ 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.