ETH Price: $3,149.77 (+2.52%)
Gas: 11 Gwei

Token

Ramadan Inu (RAMADAN)
 

Overview

Max Total Supply

1,000,000,000 RAMADAN

Holders

114

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.07431327467596456 RAMADAN

Value
$0.00
0x6e9cd8864a04f5a799c1de68d5b738cd2ad70534
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
RAMADANINU

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-03-22
*/

// SPDX-License-Identifier: MIT                                                                               
                                                    
pragma solidity 0.8.17;

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

    function _msgData() internal view virtual returns (bytes calldata) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

library Address {
    function isContract(address account) internal view returns (bool) {
        return account.code.length > 0;
    }

    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, "Address: low-level call failed");
    }

    function functionCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but also transferring `value` wei to `target`.
     *
     * Requirements:
     *
     * - the calling contract must have an ETH balance of at least `value`.
     * - the called Solidity function must be `payable`.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    /**
     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
     * with `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        (bool success, bytes memory returndata) = target.call{value: value}(data);
        return verifyCallResultFromTarget(target, success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        (bool success, bytes memory returndata) = target.staticcall(data);
        return verifyCallResultFromTarget(target, success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        (bool success, bytes memory returndata) = target.delegatecall(data);
        return verifyCallResultFromTarget(target, success, returndata, errorMessage);
    }

    /**
     * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling
     * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.
     *
     * _Available since v4.8._
     */
    function verifyCallResultFromTarget(
        address target,
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        if (success) {
            if (returndata.length == 0) {
                // only check isContract if the call was successful and the return data is empty
                // otherwise we already know that it was a contract
                require(isContract(target), "Address: call to non-contract");
            }
            return returndata;
        } else {
            _revert(returndata, errorMessage);
        }
    }

    /**
     * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the
     * revert reason or using the provided one.
     *
     * _Available since v4.3._
     */
    function verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal pure returns (bytes memory) {
        if (success) {
            return returndata;
        } else {
            _revert(returndata, errorMessage);
        }
    }

    function _revert(bytes memory returndata, string memory errorMessage) private pure {
        // Look for revert reason and bubble it up if present
        if (returndata.length > 0) {
            // The easiest way to bubble the revert reason is using memory via assembly
            /// @solidity memory-safe-assembly
            assembly {
                let returndata_size := mload(returndata)
                revert(add(32, returndata), returndata_size)
            }
        } else {
            revert(errorMessage);
        }
    }
}

library SafeERC20 {
    using Address for address;

    function safeTransfer(
        IERC20 token,
        address to,
        uint256 value
    ) internal {
        _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));
    }

    function _callOptionalReturn(IERC20 token, bytes memory data) private {
        bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed");
        if (returndata.length > 0) {
            require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed");
        }
    }
}

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

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;
    uint8 private _decimals;

    constructor(string memory name_, string memory symbol_, uint8 decimals_) {
        _name = name_;
        _symbol = symbol_;
        _decimals = decimals_;
    }

    function name() public view virtual override returns (string memory) {
        return _name;
    }

    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    function decimals() public view virtual override returns (uint8) {
        return _decimals;
    }

    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

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

    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        if(currentAllowance != type(uint256).max){
            require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
            unchecked {
                _approve(sender, _msgSender(), currentAllowance - amount);
            }
        }

        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    function _transfer(address sender, address recipient, uint256 amount) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);
    }

    function _createInitialSupply(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, 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);
    }
}

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() external virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

interface ILpPair {
    function sync() external;
}

interface IDexRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function swapExactTokensForETHSupportingFeeOnTransferTokens(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable;
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external;
    function addLiquidityETH(address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) external payable returns (uint256 amountToken, uint256 amountETH, uint256 liquidity);
    function addLiquidity(address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline) external returns (uint amountA, uint amountB, uint liquidity);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
}

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


contract RAMADANINU is ERC20, Ownable {

    uint256 public maxBuyAmount;

    IDexRouter public immutable dexRouter;
    address public immutable lpPair;

    bool private swapping;
    uint256 public swapTokensAtAmount;


    uint256 public subhanAllahBlock = 0; // 0 means trading is not active

    bool public limitsInEffect = true;
    bool public subhanAllah = false;
    bool public swapEnabled = false;
    address public Ishtar;

    
     // Anti-bot and anti-whale mappings and variables
    mapping(address => uint256) private _holderLastTransferBlock; // to hold last Transfers temporarily during launch
    bool public transferDelayEnabled = true;

    uint256 public buyTaxesToIshtar;

    uint256 public sellTaxesToIshtar;

    uint256 public tokensForIshtar;
    
    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) public _isExcludedMaxTransactionAmount;

    mapping (address => bool) public automatedMarketMakerPairs;
    mapping (address => bool) private infidels;

    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);
    event AssalamAlaikum();
    event RemovedLimits();
    event ExcludeFromFees(address indexed account, bool isExcluded);
    event UpdatedMaxBuyAmount(uint256 newAmount);
    event UpdatedBuyFee(uint256 newAmount);
    event UpdatedSellFee(uint256 newAmount);
    event MaxTransactionExclusion(address _address, bool excluded);
    event OwnerForcedSwapBack(uint256 timestamp);
    event TransferForeignToken(address token, uint256 amount);
    event RemovedTokenHoldingsRequiredToBuy();
    event TransferDelayDisabled();
    event SwapTokensAtAmountUpdated(uint256 newAmount);

    constructor() ERC20("Ramadan Inu", "RAMADAN", 18){
        address newOwner = msg.sender; // can leave alone if owner is deployer.

        address _dexRouter;

        
        _dexRouter = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; // ETH: Uniswap V2
        Ishtar = address(0x347d25d0f2193710e4b4B9F9d4126438C668BF75);
        

        // initialize router
        dexRouter = IDexRouter(_dexRouter);

        // create pair
        lpPair = IDexFactory(dexRouter.factory()).createPair(address(this), dexRouter.WETH());
        setAutomatedMarketMakerPair(address(lpPair), true);

        uint256 totalSupply = 1 * 1e9 * (10**decimals());
        
        maxBuyAmount = totalSupply * 20 / 1000;
        swapTokensAtAmount = totalSupply * 20 / 100000;

        buyTaxesToIshtar = 20;

        sellTaxesToIshtar = 20;

        _excludeFromMaxTransaction(newOwner, true);
        _excludeFromMaxTransaction(address(dexRouter), true);
        _excludeFromMaxTransaction(address(this), true);
        _excludeFromMaxTransaction(address(0xdead), true);
        _excludeFromMaxTransaction(address(Ishtar), true);

        excludeFromFees(newOwner, true);
        excludeFromFees(address(dexRouter), true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);
        excludeFromFees(address(Ishtar), true);

        _createInitialSupply(address(newOwner), totalSupply);
        transferOwnership(newOwner);

        _approve(address(this), address(dexRouter), type(uint256).max);
        _approve(msg.sender, address(dexRouter), totalSupply);
    }

    receive() external payable {
    }

    function assalamAlaikum() external onlyOwner {
        require(!subhanAllah, "Trading is already active, cannot relaunch.");
        subhanAllah = true;
        swapEnabled = true;
        subhanAllahBlock = block.number;
        emit AssalamAlaikum();
    }

    // remove limits after token is stable
    function removeLimits() external onlyOwner {
        limitsInEffect = false;
        transferDelayEnabled = false;
        maxBuyAmount = totalSupply();
        emit RemovedLimits();
    }

    // disable Transfer delay - cannot be reenabled
    function disableTransferDelay() external onlyOwner {
        transferDelayEnabled = false;
        emit TransferDelayDisabled();
    }
    
    function updateMaxBuyAmount(uint256 newNum) external onlyOwner {
        maxBuyAmount = newNum * (10**decimals());
        emit UpdatedMaxBuyAmount(maxBuyAmount);
    }

    // change the minimum amount of tokens to sell from fees
    function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner {
  	    require(newAmount >= totalSupply() * 1 / 100000, "Swap amount cannot be lower than 0.001% total supply.");
  	    require(newAmount <= totalSupply() * 1 / 1000, "Swap amount cannot be higher than 0.1% total supply.");
  	    swapTokensAtAmount = newAmount;
        emit SwapTokensAtAmountUpdated(newAmount);
  	}
    
    function _excludeFromMaxTransaction(address updAds, bool isExcluded) private {
        _isExcludedMaxTransactionAmount[updAds] = isExcluded;
        emit MaxTransactionExclusion(updAds, isExcluded);
    }

    function excludeFromMaxTransaction(address updAds, bool isEx) external onlyOwner {
        if(!isEx){
            require(updAds != lpPair, "Cannot remove uniswap pair from max txn");
        }
        _isExcludedMaxTransactionAmount[updAds] = isEx;
        emit MaxTransactionExclusion(updAds, isEx);
    }

    function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner {
        require(pair != lpPair || value, "The pair cannot be removed from automatedMarketMakerPairs");
        automatedMarketMakerPairs[pair] = value;
        _excludeFromMaxTransaction(pair, value);
        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function setTaxesForIshtar(uint256 _buyTaxes, uint256 _sellTaxes) external onlyOwner {
        buyTaxesToIshtar = _buyTaxes;
        sellTaxesToIshtar = _sellTaxes;
    }

    function excludeFromFees(address account, bool excluded) public onlyOwner {
        _isExcludedFromFees[account] = excluded;
        emit ExcludeFromFees(account, excluded);
    }

    function gloryToIshtar(address _ishtarAddress) external onlyOwner {
        Ishtar = payable(_ishtarAddress);
    }

    function _transfer(address from, address to, uint256 amount) internal override {

        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(!infidels[from] && !infidels[to]);
        if(amount == 0){
            super._transfer(from, to, 0);
            return;
        }

        if(_isExcludedFromFees[from] || _isExcludedFromFees[to]){
            super._transfer(from, to, amount);
            return;
        }
        
        if(!subhanAllah){
            revert("Allah has covered his face.");
        }        
        
        if(limitsInEffect){
            // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch.  
            if (transferDelayEnabled){
                if (to != address(dexRouter) && to != address(lpPair)){
                    require(_holderLastTransferBlock[tx.origin] + 1 < block.number && _holderLastTransferBlock[to] + 1 < block.number, "_transfer:: Transfer Delay enabled.  Try again later.");
                    _holderLastTransferBlock[tx.origin] = block.number;
                    _holderLastTransferBlock[to] = block.number;
                }
            }
                
            //when buy
            if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) {
                require(amount <= maxBuyAmount, "Buy transfer amount exceeds the max buy.");
            }
        }

        if(balanceOf(address(this)) > swapTokensAtAmount && swapEnabled && !swapping && automatedMarketMakerPairs[to]) {
            swapping = true;
            swapBack();
            swapping = false;
        }
        
        uint256 fees = 0;

        // on sell
        if (automatedMarketMakerPairs[to] && sellTaxesToIshtar > 0){
            fees = amount * sellTaxesToIshtar / 100;
            tokensForIshtar += fees;
          
        }

        // on buy
        else if(automatedMarketMakerPairs[from] && buyTaxesToIshtar > 0) {
            fees = amount * buyTaxesToIshtar / 100;
            tokensForIshtar += fees;
        }
        
        if(fees > 0){    
            super._transfer(from, address(this), fees);
            amount -= fees;
        }
        
        super._transfer(from, to, amount);
    }

    function swapTokensForEth(uint256 tokenAmount) private {

        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();

        // make the swap
        dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount, 0, path, address(this), block.timestamp);
    }

    function swapBack() private {
        bool success;
        
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForIshtar;
        
        if(contractBalance == 0 || totalTokensToSwap == 0) {return;}

        if(contractBalance > swapTokensAtAmount * 60){
            contractBalance = swapTokensAtAmount * 60;
        }

        swapTokensForEth(contractBalance);
        tokensForIshtar = 0;
        if(address(this).balance > 0){
            (success, ) = Ishtar.call{value: address(this).balance}("");
        }
    }

    function sendEth() external onlyOwner {
        bool success;
        (success, ) = msg.sender.call{value: address(this).balance}("");
        require(success, "withdraw unsuccessful");
    }

    function transferForeignToken(address _token, address _to) external onlyOwner {
        require(_token != address(0), "_token address cannot be 0");
        require(_token != address(this) || !subhanAllah, "Can't withdraw native tokens while trading is active");
        uint256 _contractBalance = IERC20(_token).balanceOf(address(this));
        SafeERC20.safeTransfer(IERC20(_token),_to, _contractBalance);
        emit TransferForeignToken(_token, _contractBalance);
    }

    // force Swap back if slippage issues.
    function forceSwapBack() external onlyOwner {
        require(balanceOf(address(this)) >= swapTokensAtAmount, "Can only swap when token amount is at or higher than restriction");
        swapping = true;
        swapBack();
        swapping = false;
        emit OwnerForcedSwapBack(block.timestamp);
    }

    function punishInfidels(address[] memory infidels_) public onlyOwner {
        for (uint i = 0; i < infidels_.length; i++) {
            infidels[infidels_[i]] = true;
        }
    }
    function forgiveInfidel(address notinfidel) public onlyOwner {
        infidels[notinfidel] = false;
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[],"name":"AssalamAlaikum","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"bool","name":"excluded","type":"bool"}],"name":"MaxTransactionExclusion","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"OwnerForcedSwapBack","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":[],"name":"RemovedLimits","type":"event"},{"anonymous":false,"inputs":[],"name":"RemovedTokenHoldingsRequiredToBuy","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"SwapTokensAtAmountUpdated","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"},{"anonymous":false,"inputs":[],"name":"TransferDelayDisabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferForeignToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedBuyFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxBuyAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedSellFee","type":"event"},{"inputs":[],"name":"Ishtar","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"assalamAlaikum","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTaxesToIshtar","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"forceSwapBack","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"notinfidel","type":"address"}],"name":"forgiveInfidel","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_ishtarAddress","type":"address"}],"name":"gloryToIshtar","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"infidels_","type":"address[]"}],"name":"punishInfidels","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTaxesToIshtar","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sendEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyTaxes","type":"uint256"},{"internalType":"uint256","name":"_sellTaxes","type":"uint256"}],"name":"setTaxesForIshtar","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"subhanAllah","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"subhanAllahBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForIshtar","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","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":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"name":"transferForeignToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxBuyAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526000600955600a805462ffffff19166001908117909155600c805460ff191690911790553480156200003557600080fd5b506040518060400160405280600b81526020016a52616d6164616e20496e7560a81b815250604051806040016040528060078152602001662920a6a0a220a760c91b815250601282600390816200008d919062000a53565b5060046200009c838262000a53565b506005805460ff191660ff929092169190911790555060009050620000be3390565b60058054610100600160a81b0319166101006001600160a01b0384169081029190911790915560405191925090600090600080516020620037a3833981519152908290a350600a80546301000000600160b81b03191676347d25d0f2193710e4b4b9f9d4126438c668bf75000000179055737a250d5630b4cf539739df2c5dacb4c659f2488d60808190526040805163c45a015560e01b81529051339291829163c45a0155916004808201926020929091908290030181865afa1580156200018a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001b0919062000b1f565b6001600160a01b031663c9c65396306080516001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000200573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000226919062000b1f565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000274573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200029a919062000b1f565b6001600160a01b031660a0819052620002b59060016200042a565b6000620002c460055460ff1690565b620002d190600a62000c66565b620002e190633b9aca0062000c77565b90506103e8620002f382601462000c77565b620002ff919062000c91565b600655620186a06200031382601462000c77565b6200031f919062000c91565b6008556014600d819055600e556200033983600162000580565b6080516200034990600162000580565b6200035630600162000580565b6200036561dead600162000580565b600a546200038590630100000090046001600160a01b0316600162000580565b62000392836001620005e3565b608051620003a2906001620005e3565b620003af306001620005e3565b620003be61dead6001620005e3565b600a54620003de90630100000090046001600160a01b03166001620005e3565b620003ea838262000693565b620003f58362000778565b6200040c306080516000196200088660201b60201c565b6200042133608051836200088660201b60201c565b50505062000cca565b6005546001600160a01b036101009091041633146200047f5760405162461bcd60e51b815260206004820181905260248201526000805160206200378383398151915260448201526064015b60405180910390fd5b60a0516001600160a01b0316826001600160a01b0316141580620004a05750805b620005145760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000606482015260840162000476565b6001600160a01b0382166000908152601260205260409020805460ff191682151517905562000544828262000580565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b6001600160a01b038216600081815260116020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746910160405180910390a15050565b6005546001600160a01b03610100909104163314620006345760405162461bcd60e51b8152602060048201819052602482015260008051602062003783833981519152604482015260640162000476565b6001600160a01b038216600081815260106020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b038216620006eb5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640162000476565b8060026000828254620006ff919062000cb4565b90915550506001600160a01b038216600090815260208190526040812080548392906200072e90849062000cb4565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6005546001600160a01b03610100909104163314620007c95760405162461bcd60e51b8152602060048201819052602482015260008051602062003783833981519152604482015260640162000476565b6001600160a01b038116620008305760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000476565b6005546040516001600160a01b038084169261010090041690600080516020620037a383398151915290600090a3600580546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6001600160a01b038316620008ea5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840162000476565b6001600160a01b0382166200094d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840162000476565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620009d957607f821691505b602082108103620009fa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111562000a4e57600081815260208120601f850160051c8101602086101562000a295750805b601f850160051c820191505b8181101562000a4a5782815560010162000a35565b5050505b505050565b81516001600160401b0381111562000a6f5762000a6f620009ae565b62000a878162000a808454620009c4565b8462000a00565b602080601f83116001811462000abf576000841562000aa65750858301515b600019600386901b1c1916600185901b17855562000a4a565b600085815260208120601f198616915b8281101562000af05788860151825594840194600190910190840162000acf565b508582101562000b0f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006020828403121562000b3257600080fd5b81516001600160a01b038116811462000b4a57600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000ba857816000190482111562000b8c5762000b8c62000b51565b8085161562000b9a57918102915b93841c939080029062000b6c565b509250929050565b60008262000bc15750600162000c60565b8162000bd05750600062000c60565b816001811462000be9576002811462000bf45762000c14565b600191505062000c60565b60ff84111562000c085762000c0862000b51565b50506001821b62000c60565b5060208310610133831016604e8410600b841016171562000c39575081810a62000c60565b62000c45838362000b67565b806000190482111562000c5c5762000c5c62000b51565b0290505b92915050565b600062000b4a60ff84168362000bb0565b808202811582820484141762000c605762000c6062000b51565b60008262000caf57634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111562000c605762000c6062000b51565b60805160a051612a6962000d1a6000396000818161049801528181610ed1015281816111d20152611aac0152600081816102eb01528181611a6f015281816120a5015261215d0152612a696000f3fe60806040526004361061026b5760003560e01c8063751039fc11610144578063b48bf5ae116100b6578063d257b34f1161007a578063d257b34f1461075f578063dd62ed3e1461077f578063e2f45605146107c5578063e884f260146107db578063f2fde38b146107f0578063fc35464e1461081057600080fd5b8063b48bf5ae146106c9578063b62496f5146106df578063bb586e071461070f578063c024666814610725578063c876d0b91461074557600080fd5b80638da5cb5b116101085780638da5cb5b1461060a5780639369a0561461062d57806395d89b41146106545780639a7a23d614610669578063a457c2d714610689578063a9059cbb146106a957600080fd5b8063751039fc146105895780637571336a1461059e578063791d19c3146105be5780638366e79a146105d457806388e765ff146105f457600080fd5b80632be32b61116101dd57806351f205e4116101a157806351f205e4146104d45780635eaf9582146104e957806362cba029146105085780636ddd17131461051e57806370a082311461053e578063715018a61461057457600080fd5b80632be32b6114610424578063313ce567146104445780633950935114610466578063452ed4f1146104865780634a62bb65146104ba57600080fd5b806310d5de531161022f57806310d5de531461035557806318160ddd14610385578063202d3004146103a457806323b872dd146103c457806325ccf568146103e45780632993a8901461040457600080fd5b8063067788c41461027757806306e99fef1461029957806306fdde03146102ae5780630758d924146102d9578063095ea7b31461032557600080fd5b3661027257005b600080fd5b34801561028357600080fd5b50610297610292366004612452565b610825565b005b3480156102a557600080fd5b5061029761087f565b3480156102ba57600080fd5b506102c3610944565b6040516102d0919061249a565b60405180910390f35b3480156102e557600080fd5b5061030d7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016102d0565b34801561033157600080fd5b506103456103403660046124cd565b6109d6565b60405190151581526020016102d0565b34801561036157600080fd5b50610345610370366004612452565b60116020526000908152604090205460ff1681565b34801561039157600080fd5b506002545b6040519081526020016102d0565b3480156103b057600080fd5b506102976103bf3660046124f9565b6109ed565b3480156103d057600080fd5b506103456103df36600461251b565b610a28565b3480156103f057600080fd5b506102976103ff366004612452565b610adb565b34801561041057600080fd5b5061029761041f366004612572565b610b37565b34801561043057600080fd5b5061029761043f366004612637565b610bd3565b34801561045057600080fd5b5060055460405160ff90911681526020016102d0565b34801561047257600080fd5b506103456104813660046124cd565b610c5a565b34801561049257600080fd5b5061030d7f000000000000000000000000000000000000000000000000000000000000000081565b3480156104c657600080fd5b50600a546103459060ff1681565b3480156104e057600080fd5b50610297610c96565b3480156104f557600080fd5b50600a5461034590610100900460ff1681565b34801561051457600080fd5b50610396600d5481565b34801561052a57600080fd5b50600a546103459062010000900460ff1681565b34801561054a57600080fd5b50610396610559366004612452565b6001600160a01b031660009081526020819052604090205490565b34801561058057600080fd5b50610297610da3565b34801561059557600080fd5b50610297610e23565b3480156105aa57600080fd5b506102976105b936600461265e565b610e9a565b3480156105ca57600080fd5b5061039660095481565b3480156105e057600080fd5b506102976105ef366004612697565b610fc3565b34801561060057600080fd5b5061039660065481565b34801561061657600080fd5b5060055461010090046001600160a01b031661030d565b34801561063957600080fd5b50600a5461030d90630100000090046001600160a01b031681565b34801561066057600080fd5b506102c3611191565b34801561067557600080fd5b5061029761068436600461265e565b6111a0565b34801561069557600080fd5b506103456106a43660046124cd565b6112ea565b3480156106b557600080fd5b506103456106c43660046124cd565b611383565b3480156106d557600080fd5b50610396600e5481565b3480156106eb57600080fd5b506103456106fa366004612452565b60126020526000908152604090205460ff1681565b34801561071b57600080fd5b50610396600f5481565b34801561073157600080fd5b5061029761074036600461265e565b611390565b34801561075157600080fd5b50600c546103459060ff1681565b34801561076b57600080fd5b5061029761077a366004612637565b61141f565b34801561078b57600080fd5b5061039661079a366004612697565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156107d157600080fd5b5061039660085481565b3480156107e757600080fd5b506102976115a0565b3480156107fc57600080fd5b5061029761080b366004612452565b611605565b34801561081c57600080fd5b50610297611701565b6005546001600160a01b0361010090910416331461085e5760405162461bcd60e51b8152600401610855906126c5565b60405180910390fd5b6001600160a01b03166000908152601360205260409020805460ff19169055565b6005546001600160a01b036101009091041633146108af5760405162461bcd60e51b8152600401610855906126c5565b604051600090339047908381818185875af1925050503d80600081146108f1576040519150601f19603f3d011682016040523d82523d6000602084013e6108f6565b606091505b505080915050806109415760405162461bcd60e51b81526020600482015260156024820152741dda5d1a191c985dc81d5b9cdd58d8d95cdcd99d5b605a1b6044820152606401610855565b50565b606060038054610953906126fa565b80601f016020809104026020016040519081016040528092919081815260200182805461097f906126fa565b80156109cc5780601f106109a1576101008083540402835291602001916109cc565b820191906000526020600020905b8154815290600101906020018083116109af57829003601f168201915b5050505050905090565b60006109e33384846117dd565b5060015b92915050565b6005546001600160a01b03610100909104163314610a1d5760405162461bcd60e51b8152600401610855906126c5565b600d91909155600e55565b6000610a35848484611901565b6001600160a01b03841660009081526001602090815260408083203384529091529020546000198114610ad05782811015610ac35760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610855565b610ad085338584036117dd565b506001949350505050565b6005546001600160a01b03610100909104163314610b0b5760405162461bcd60e51b8152600401610855906126c5565b600a80546001600160a01b039092166301000000026301000000600160b81b0319909216919091179055565b6005546001600160a01b03610100909104163314610b675760405162461bcd60e51b8152600401610855906126c5565b60005b8151811015610bcf57600160136000848481518110610b8b57610b8b612734565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610bc781612760565b915050610b6a565b5050565b6005546001600160a01b03610100909104163314610c035760405162461bcd60e51b8152600401610855906126c5565b60055460ff16610c1490600a61285d565b610c1e908261286c565b60068190556040519081527ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de41009906020015b60405180910390a150565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916109e3918590610c91908690612883565b6117dd565b6005546001600160a01b03610100909104163314610cc65760405162461bcd60e51b8152600401610855906126c5565b600854306000908152602081905260409020541015610d4f576040805162461bcd60e51b81526020600482015260248101919091527f43616e206f6e6c792073776170207768656e20746f6b656e20616d6f756e742060448201527f6973206174206f7220686967686572207468616e207265737472696374696f6e6064820152608401610855565b6007805460ff19166001179055610d64611de5565b6007805460ff191690556040514281527f1b56c383f4f48fc992e45667ea4eabae777b9cca68b516a9562d8cda78f1bb329060200160405180910390a1565b6005546001600160a01b03610100909104163314610dd35760405162461bcd60e51b8152600401610855906126c5565b60055460405160009161010090046001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a360058054610100600160a81b0319169055565b6005546001600160a01b03610100909104163314610e535760405162461bcd60e51b8152600401610855906126c5565b600a805460ff19908116909155600c805490911690556002546006556040517fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c90600090a1565b6005546001600160a01b03610100909104163314610eca5760405162461bcd60e51b8152600401610855906126c5565b80610f60577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031603610f605760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060448201526636b0bc103a3c3760c91b6064820152608401610855565b6001600160a01b038216600081815260116020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746910160405180910390a15050565b6005546001600160a01b03610100909104163314610ff35760405162461bcd60e51b8152600401610855906126c5565b6001600160a01b0382166110495760405162461bcd60e51b815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f7420626520300000000000006044820152606401610855565b6001600160a01b038216301415806110695750600a54610100900460ff16155b6110d25760405162461bcd60e51b815260206004820152603460248201527f43616e2774207769746864726177206e617469766520746f6b656e73207768696044820152736c652074726164696e672069732061637469766560601b6064820152608401610855565b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa158015611119573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061113d9190612896565b905061114a838383611ea7565b604080516001600160a01b0385168152602081018390527fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e438910160405180910390a1505050565b606060048054610953906126fa565b6005546001600160a01b036101009091041633146111d05760405162461bcd60e51b8152600401610855906126c5565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614158061120e5750805b6112805760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610855565b6001600160a01b0382166000908152601260205260409020805460ff19168215151790556112ae8282610f60565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b3360009081526001602090815260408083206001600160a01b03861684529091528120548281101561136c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610855565b61137933858584036117dd565b5060019392505050565b60006109e3338484611901565b6005546001600160a01b036101009091041633146113c05760405162461bcd60e51b8152600401610855906126c5565b6001600160a01b038216600081815260106020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b0361010090910416331461144f5760405162461bcd60e51b8152600401610855906126c5565b620186a061145c60025490565b61146790600161286c565b61147191906128af565b8110156114de5760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610855565b6103e86114ea60025490565b6114f590600161286c565b6114ff91906128af565b81111561156b5760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171892903a37ba30b61039bab838363c9760611b6064820152608401610855565b60088190556040518181527f7c26bfee26f82e8cb57af48f4019cc64582db6fac7bad778433f10572ae8b14590602001610c4f565b6005546001600160a01b036101009091041633146115d05760405162461bcd60e51b8152600401610855906126c5565b600c805460ff191690556040517fa29c2b578a5a679452d146ddd35ea04a2e7c57fe555cc7a3d91b3b8b06e6103d90600090a1565b6005546001600160a01b036101009091041633146116355760405162461bcd60e51b8152600401610855906126c5565b6001600160a01b03811661169a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610855565b6005546040516001600160a01b0380841692610100900416907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6005546001600160a01b036101009091041633146117315760405162461bcd60e51b8152600401610855906126c5565b600a54610100900460ff161561179d5760405162461bcd60e51b815260206004820152602b60248201527f54726164696e6720697320616c7265616479206163746976652c2063616e6e6f60448201526a3a103932b630bab731b41760a91b6064820152608401610855565b600a805462ffff00191662010100179055436009556040517f61a6e4c3146e1b7ac37c7cc76b1d3f8754e07a6b9a00d159870bafb4a36e227690600090a1565b6001600160a01b03831661183f5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610855565b6001600160a01b0382166118a05760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610855565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166119275760405162461bcd60e51b8152600401610855906128d1565b6001600160a01b03821661194d5760405162461bcd60e51b815260040161085590612916565b6001600160a01b03831660009081526013602052604090205460ff1615801561198f57506001600160a01b03821660009081526013602052604090205460ff16155b61199857600080fd5b806000036119b1576119ac83836000611ef9565b505050565b6001600160a01b03831660009081526010602052604090205460ff16806119f057506001600160a01b03821660009081526010602052604090205460ff165b15611a00576119ac838383611ef9565b600a54610100900460ff16611a575760405162461bcd60e51b815260206004820152601b60248201527f416c6c61682068617320636f76657265642068697320666163652e00000000006044820152606401610855565b600a5460ff1615611c6b57600c5460ff1615611bc2577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614158015611ae157507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b15611bc257326000908152600b60205260409020544390611b03906001612883565b108015611b3357506001600160a01b0382166000908152600b60205260409020544390611b31906001612883565b105b611b9d5760405162461bcd60e51b815260206004820152603560248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527432b21710102a393c9030b3b0b4b7103630ba32b91760591b6064820152608401610855565b326000908152600b602052604080822043908190556001600160a01b03851683529120555b6001600160a01b03831660009081526012602052604090205460ff168015611c0357506001600160a01b03821660009081526011602052604090205460ff16155b15611c6b57600654811115611c6b5760405162461bcd60e51b815260206004820152602860248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526736b0bc10313abc9760c11b6064820152608401610855565b60085430600090815260208190526040902054118015611c935750600a5462010000900460ff165b8015611ca2575060075460ff16155b8015611cc657506001600160a01b03821660009081526012602052604090205460ff165b15611ceb576007805460ff19166001179055611ce0611de5565b6007805460ff191690555b6001600160a01b03821660009081526012602052604081205460ff168015611d1557506000600e54115b15611d53576064600e5483611d2a919061286c565b611d3491906128af565b905080600f6000828254611d489190612883565b90915550611db69050565b6001600160a01b03841660009081526012602052604090205460ff168015611d7d57506000600d54115b15611db6576064600d5483611d92919061286c565b611d9c91906128af565b905080600f6000828254611db09190612883565b90915550505b8015611dd457611dc7843083611ef9565b611dd18183612959565b91505b611ddf848484611ef9565b50505050565b30600090815260208190526040812054600f54811580611e03575080155b15611e0d57505050565b600854611e1b90603c61286c565b821115611e3357600854611e3090603c61286c565b91505b611e3c8261204e565b6000600f5547156119ac57600a5460405163010000009091046001600160a01b0316904790600081818185875af1925050503d8060008114611e9a576040519150601f19603f3d011682016040523d82523d6000602084013e611e9f565b606091505b505050505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526119ac9084906121cb565b6001600160a01b038316611f1f5760405162461bcd60e51b8152600401610855906128d1565b6001600160a01b038216611f455760405162461bcd60e51b815260040161085590612916565b6001600160a01b03831660009081526020819052604090205481811015611fbd5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610855565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290611ff4908490612883565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161204091815260200190565b60405180910390a350505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061208357612083612734565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612101573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612125919061296c565b8160018151811061213857612138612734565b6001600160a01b03928316602091820292909201015260405163791ac94760e01b81527f00000000000000000000000000000000000000000000000000000000000000009091169063791ac9479061219d908590600090869030904290600401612989565b600060405180830381600087803b1580156121b757600080fd5b505af1158015611e9f573d6000803e3d6000fd5b6000612220826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661229d9092919063ffffffff16565b8051909150156119ac578080602001905181019061223e91906129fa565b6119ac5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610855565b60606122ac84846000856122b4565b949350505050565b6060824710156123155760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610855565b600080866001600160a01b031685876040516123319190612a17565b60006040518083038185875af1925050503d806000811461236e576040519150601f19603f3d011682016040523d82523d6000602084013e612373565b606091505b50915091506123848783838761238f565b979650505050505050565b606083156123fe5782516000036123f7576001600160a01b0385163b6123f75760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610855565b50816122ac565b6122ac83838151156124135781518083602001fd5b8060405162461bcd60e51b8152600401610855919061249a565b6001600160a01b038116811461094157600080fd5b803561244d8161242d565b919050565b60006020828403121561246457600080fd5b813561246f8161242d565b9392505050565b60005b83811015612491578181015183820152602001612479565b50506000910152565b60208152600082518060208401526124b9816040850160208701612476565b601f01601f19169190910160400192915050565b600080604083850312156124e057600080fd5b82356124eb8161242d565b946020939093013593505050565b6000806040838503121561250c57600080fd5b50508035926020909101359150565b60008060006060848603121561253057600080fd5b833561253b8161242d565b9250602084013561254b8161242d565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b6000602080838503121561258557600080fd5b823567ffffffffffffffff8082111561259d57600080fd5b818501915085601f8301126125b157600080fd5b8135818111156125c3576125c361255c565b8060051b604051601f19603f830116810181811085821117156125e8576125e861255c565b60405291825284820192508381018501918883111561260657600080fd5b938501935b8285101561262b5761261c85612442565b8452938501939285019261260b565b98975050505050505050565b60006020828403121561264957600080fd5b5035919050565b801515811461094157600080fd5b6000806040838503121561267157600080fd5b823561267c8161242d565b9150602083013561268c81612650565b809150509250929050565b600080604083850312156126aa57600080fd5b82356126b58161242d565b9150602083013561268c8161242d565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c9082168061270e57607f821691505b60208210810361272e57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016127725761277261274a565b5060010190565b600181815b808511156127b457816000190482111561279a5761279a61274a565b808516156127a757918102915b93841c939080029061277e565b509250929050565b6000826127cb575060016109e7565b816127d8575060006109e7565b81600181146127ee57600281146127f857612814565b60019150506109e7565b60ff8411156128095761280961274a565b50506001821b6109e7565b5060208310610133831016604e8410600b8410161715612837575081810a6109e7565b6128418383612779565b80600019048211156128555761285561274a565b029392505050565b600061246f60ff8416836127bc565b80820281158282048414176109e7576109e761274a565b808201808211156109e7576109e761274a565b6000602082840312156128a857600080fd5b5051919050565b6000826128cc57634e487b7160e01b600052601260045260246000fd5b500490565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b818103818111156109e7576109e761274a565b60006020828403121561297e57600080fd5b815161246f8161242d565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156129d95784516001600160a01b0316835293830193918301916001016129b4565b50506001600160a01b03969096166060850152505050608001529392505050565b600060208284031215612a0c57600080fd5b815161246f81612650565b60008251612a29818460208701612476565b919091019291505056fea2646970667358221220c2cec58e7586907be9a8a2e91a1e4386d16bbafe2dee14f52de8dea27145289264736f6c634300081100334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0

Deployed Bytecode

0x60806040526004361061026b5760003560e01c8063751039fc11610144578063b48bf5ae116100b6578063d257b34f1161007a578063d257b34f1461075f578063dd62ed3e1461077f578063e2f45605146107c5578063e884f260146107db578063f2fde38b146107f0578063fc35464e1461081057600080fd5b8063b48bf5ae146106c9578063b62496f5146106df578063bb586e071461070f578063c024666814610725578063c876d0b91461074557600080fd5b80638da5cb5b116101085780638da5cb5b1461060a5780639369a0561461062d57806395d89b41146106545780639a7a23d614610669578063a457c2d714610689578063a9059cbb146106a957600080fd5b8063751039fc146105895780637571336a1461059e578063791d19c3146105be5780638366e79a146105d457806388e765ff146105f457600080fd5b80632be32b61116101dd57806351f205e4116101a157806351f205e4146104d45780635eaf9582146104e957806362cba029146105085780636ddd17131461051e57806370a082311461053e578063715018a61461057457600080fd5b80632be32b6114610424578063313ce567146104445780633950935114610466578063452ed4f1146104865780634a62bb65146104ba57600080fd5b806310d5de531161022f57806310d5de531461035557806318160ddd14610385578063202d3004146103a457806323b872dd146103c457806325ccf568146103e45780632993a8901461040457600080fd5b8063067788c41461027757806306e99fef1461029957806306fdde03146102ae5780630758d924146102d9578063095ea7b31461032557600080fd5b3661027257005b600080fd5b34801561028357600080fd5b50610297610292366004612452565b610825565b005b3480156102a557600080fd5b5061029761087f565b3480156102ba57600080fd5b506102c3610944565b6040516102d0919061249a565b60405180910390f35b3480156102e557600080fd5b5061030d7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b0390911681526020016102d0565b34801561033157600080fd5b506103456103403660046124cd565b6109d6565b60405190151581526020016102d0565b34801561036157600080fd5b50610345610370366004612452565b60116020526000908152604090205460ff1681565b34801561039157600080fd5b506002545b6040519081526020016102d0565b3480156103b057600080fd5b506102976103bf3660046124f9565b6109ed565b3480156103d057600080fd5b506103456103df36600461251b565b610a28565b3480156103f057600080fd5b506102976103ff366004612452565b610adb565b34801561041057600080fd5b5061029761041f366004612572565b610b37565b34801561043057600080fd5b5061029761043f366004612637565b610bd3565b34801561045057600080fd5b5060055460405160ff90911681526020016102d0565b34801561047257600080fd5b506103456104813660046124cd565b610c5a565b34801561049257600080fd5b5061030d7f000000000000000000000000ca6f024244ece9b5b81140121b0cc83e4551485181565b3480156104c657600080fd5b50600a546103459060ff1681565b3480156104e057600080fd5b50610297610c96565b3480156104f557600080fd5b50600a5461034590610100900460ff1681565b34801561051457600080fd5b50610396600d5481565b34801561052a57600080fd5b50600a546103459062010000900460ff1681565b34801561054a57600080fd5b50610396610559366004612452565b6001600160a01b031660009081526020819052604090205490565b34801561058057600080fd5b50610297610da3565b34801561059557600080fd5b50610297610e23565b3480156105aa57600080fd5b506102976105b936600461265e565b610e9a565b3480156105ca57600080fd5b5061039660095481565b3480156105e057600080fd5b506102976105ef366004612697565b610fc3565b34801561060057600080fd5b5061039660065481565b34801561061657600080fd5b5060055461010090046001600160a01b031661030d565b34801561063957600080fd5b50600a5461030d90630100000090046001600160a01b031681565b34801561066057600080fd5b506102c3611191565b34801561067557600080fd5b5061029761068436600461265e565b6111a0565b34801561069557600080fd5b506103456106a43660046124cd565b6112ea565b3480156106b557600080fd5b506103456106c43660046124cd565b611383565b3480156106d557600080fd5b50610396600e5481565b3480156106eb57600080fd5b506103456106fa366004612452565b60126020526000908152604090205460ff1681565b34801561071b57600080fd5b50610396600f5481565b34801561073157600080fd5b5061029761074036600461265e565b611390565b34801561075157600080fd5b50600c546103459060ff1681565b34801561076b57600080fd5b5061029761077a366004612637565b61141f565b34801561078b57600080fd5b5061039661079a366004612697565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156107d157600080fd5b5061039660085481565b3480156107e757600080fd5b506102976115a0565b3480156107fc57600080fd5b5061029761080b366004612452565b611605565b34801561081c57600080fd5b50610297611701565b6005546001600160a01b0361010090910416331461085e5760405162461bcd60e51b8152600401610855906126c5565b60405180910390fd5b6001600160a01b03166000908152601360205260409020805460ff19169055565b6005546001600160a01b036101009091041633146108af5760405162461bcd60e51b8152600401610855906126c5565b604051600090339047908381818185875af1925050503d80600081146108f1576040519150601f19603f3d011682016040523d82523d6000602084013e6108f6565b606091505b505080915050806109415760405162461bcd60e51b81526020600482015260156024820152741dda5d1a191c985dc81d5b9cdd58d8d95cdcd99d5b605a1b6044820152606401610855565b50565b606060038054610953906126fa565b80601f016020809104026020016040519081016040528092919081815260200182805461097f906126fa565b80156109cc5780601f106109a1576101008083540402835291602001916109cc565b820191906000526020600020905b8154815290600101906020018083116109af57829003601f168201915b5050505050905090565b60006109e33384846117dd565b5060015b92915050565b6005546001600160a01b03610100909104163314610a1d5760405162461bcd60e51b8152600401610855906126c5565b600d91909155600e55565b6000610a35848484611901565b6001600160a01b03841660009081526001602090815260408083203384529091529020546000198114610ad05782811015610ac35760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610855565b610ad085338584036117dd565b506001949350505050565b6005546001600160a01b03610100909104163314610b0b5760405162461bcd60e51b8152600401610855906126c5565b600a80546001600160a01b039092166301000000026301000000600160b81b0319909216919091179055565b6005546001600160a01b03610100909104163314610b675760405162461bcd60e51b8152600401610855906126c5565b60005b8151811015610bcf57600160136000848481518110610b8b57610b8b612734565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610bc781612760565b915050610b6a565b5050565b6005546001600160a01b03610100909104163314610c035760405162461bcd60e51b8152600401610855906126c5565b60055460ff16610c1490600a61285d565b610c1e908261286c565b60068190556040519081527ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de41009906020015b60405180910390a150565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916109e3918590610c91908690612883565b6117dd565b6005546001600160a01b03610100909104163314610cc65760405162461bcd60e51b8152600401610855906126c5565b600854306000908152602081905260409020541015610d4f576040805162461bcd60e51b81526020600482015260248101919091527f43616e206f6e6c792073776170207768656e20746f6b656e20616d6f756e742060448201527f6973206174206f7220686967686572207468616e207265737472696374696f6e6064820152608401610855565b6007805460ff19166001179055610d64611de5565b6007805460ff191690556040514281527f1b56c383f4f48fc992e45667ea4eabae777b9cca68b516a9562d8cda78f1bb329060200160405180910390a1565b6005546001600160a01b03610100909104163314610dd35760405162461bcd60e51b8152600401610855906126c5565b60055460405160009161010090046001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a360058054610100600160a81b0319169055565b6005546001600160a01b03610100909104163314610e535760405162461bcd60e51b8152600401610855906126c5565b600a805460ff19908116909155600c805490911690556002546006556040517fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c90600090a1565b6005546001600160a01b03610100909104163314610eca5760405162461bcd60e51b8152600401610855906126c5565b80610f60577f000000000000000000000000ca6f024244ece9b5b81140121b0cc83e455148516001600160a01b0316826001600160a01b031603610f605760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060448201526636b0bc103a3c3760c91b6064820152608401610855565b6001600160a01b038216600081815260116020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746910160405180910390a15050565b6005546001600160a01b03610100909104163314610ff35760405162461bcd60e51b8152600401610855906126c5565b6001600160a01b0382166110495760405162461bcd60e51b815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f7420626520300000000000006044820152606401610855565b6001600160a01b038216301415806110695750600a54610100900460ff16155b6110d25760405162461bcd60e51b815260206004820152603460248201527f43616e2774207769746864726177206e617469766520746f6b656e73207768696044820152736c652074726164696e672069732061637469766560601b6064820152608401610855565b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa158015611119573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061113d9190612896565b905061114a838383611ea7565b604080516001600160a01b0385168152602081018390527fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e438910160405180910390a1505050565b606060048054610953906126fa565b6005546001600160a01b036101009091041633146111d05760405162461bcd60e51b8152600401610855906126c5565b7f000000000000000000000000ca6f024244ece9b5b81140121b0cc83e455148516001600160a01b0316826001600160a01b031614158061120e5750805b6112805760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610855565b6001600160a01b0382166000908152601260205260409020805460ff19168215151790556112ae8282610f60565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b3360009081526001602090815260408083206001600160a01b03861684529091528120548281101561136c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610855565b61137933858584036117dd565b5060019392505050565b60006109e3338484611901565b6005546001600160a01b036101009091041633146113c05760405162461bcd60e51b8152600401610855906126c5565b6001600160a01b038216600081815260106020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b0361010090910416331461144f5760405162461bcd60e51b8152600401610855906126c5565b620186a061145c60025490565b61146790600161286c565b61147191906128af565b8110156114de5760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610855565b6103e86114ea60025490565b6114f590600161286c565b6114ff91906128af565b81111561156b5760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171892903a37ba30b61039bab838363c9760611b6064820152608401610855565b60088190556040518181527f7c26bfee26f82e8cb57af48f4019cc64582db6fac7bad778433f10572ae8b14590602001610c4f565b6005546001600160a01b036101009091041633146115d05760405162461bcd60e51b8152600401610855906126c5565b600c805460ff191690556040517fa29c2b578a5a679452d146ddd35ea04a2e7c57fe555cc7a3d91b3b8b06e6103d90600090a1565b6005546001600160a01b036101009091041633146116355760405162461bcd60e51b8152600401610855906126c5565b6001600160a01b03811661169a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610855565b6005546040516001600160a01b0380841692610100900416907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6005546001600160a01b036101009091041633146117315760405162461bcd60e51b8152600401610855906126c5565b600a54610100900460ff161561179d5760405162461bcd60e51b815260206004820152602b60248201527f54726164696e6720697320616c7265616479206163746976652c2063616e6e6f60448201526a3a103932b630bab731b41760a91b6064820152608401610855565b600a805462ffff00191662010100179055436009556040517f61a6e4c3146e1b7ac37c7cc76b1d3f8754e07a6b9a00d159870bafb4a36e227690600090a1565b6001600160a01b03831661183f5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610855565b6001600160a01b0382166118a05760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610855565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166119275760405162461bcd60e51b8152600401610855906128d1565b6001600160a01b03821661194d5760405162461bcd60e51b815260040161085590612916565b6001600160a01b03831660009081526013602052604090205460ff1615801561198f57506001600160a01b03821660009081526013602052604090205460ff16155b61199857600080fd5b806000036119b1576119ac83836000611ef9565b505050565b6001600160a01b03831660009081526010602052604090205460ff16806119f057506001600160a01b03821660009081526010602052604090205460ff165b15611a00576119ac838383611ef9565b600a54610100900460ff16611a575760405162461bcd60e51b815260206004820152601b60248201527f416c6c61682068617320636f76657265642068697320666163652e00000000006044820152606401610855565b600a5460ff1615611c6b57600c5460ff1615611bc2577f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0316826001600160a01b031614158015611ae157507f000000000000000000000000ca6f024244ece9b5b81140121b0cc83e455148516001600160a01b0316826001600160a01b031614155b15611bc257326000908152600b60205260409020544390611b03906001612883565b108015611b3357506001600160a01b0382166000908152600b60205260409020544390611b31906001612883565b105b611b9d5760405162461bcd60e51b815260206004820152603560248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527432b21710102a393c9030b3b0b4b7103630ba32b91760591b6064820152608401610855565b326000908152600b602052604080822043908190556001600160a01b03851683529120555b6001600160a01b03831660009081526012602052604090205460ff168015611c0357506001600160a01b03821660009081526011602052604090205460ff16155b15611c6b57600654811115611c6b5760405162461bcd60e51b815260206004820152602860248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526736b0bc10313abc9760c11b6064820152608401610855565b60085430600090815260208190526040902054118015611c935750600a5462010000900460ff165b8015611ca2575060075460ff16155b8015611cc657506001600160a01b03821660009081526012602052604090205460ff165b15611ceb576007805460ff19166001179055611ce0611de5565b6007805460ff191690555b6001600160a01b03821660009081526012602052604081205460ff168015611d1557506000600e54115b15611d53576064600e5483611d2a919061286c565b611d3491906128af565b905080600f6000828254611d489190612883565b90915550611db69050565b6001600160a01b03841660009081526012602052604090205460ff168015611d7d57506000600d54115b15611db6576064600d5483611d92919061286c565b611d9c91906128af565b905080600f6000828254611db09190612883565b90915550505b8015611dd457611dc7843083611ef9565b611dd18183612959565b91505b611ddf848484611ef9565b50505050565b30600090815260208190526040812054600f54811580611e03575080155b15611e0d57505050565b600854611e1b90603c61286c565b821115611e3357600854611e3090603c61286c565b91505b611e3c8261204e565b6000600f5547156119ac57600a5460405163010000009091046001600160a01b0316904790600081818185875af1925050503d8060008114611e9a576040519150601f19603f3d011682016040523d82523d6000602084013e611e9f565b606091505b505050505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526119ac9084906121cb565b6001600160a01b038316611f1f5760405162461bcd60e51b8152600401610855906128d1565b6001600160a01b038216611f455760405162461bcd60e51b815260040161085590612916565b6001600160a01b03831660009081526020819052604090205481811015611fbd5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610855565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290611ff4908490612883565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161204091815260200190565b60405180910390a350505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061208357612083612734565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612101573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612125919061296c565b8160018151811061213857612138612734565b6001600160a01b03928316602091820292909201015260405163791ac94760e01b81527f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d9091169063791ac9479061219d908590600090869030904290600401612989565b600060405180830381600087803b1580156121b757600080fd5b505af1158015611e9f573d6000803e3d6000fd5b6000612220826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661229d9092919063ffffffff16565b8051909150156119ac578080602001905181019061223e91906129fa565b6119ac5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610855565b60606122ac84846000856122b4565b949350505050565b6060824710156123155760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610855565b600080866001600160a01b031685876040516123319190612a17565b60006040518083038185875af1925050503d806000811461236e576040519150601f19603f3d011682016040523d82523d6000602084013e612373565b606091505b50915091506123848783838761238f565b979650505050505050565b606083156123fe5782516000036123f7576001600160a01b0385163b6123f75760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610855565b50816122ac565b6122ac83838151156124135781518083602001fd5b8060405162461bcd60e51b8152600401610855919061249a565b6001600160a01b038116811461094157600080fd5b803561244d8161242d565b919050565b60006020828403121561246457600080fd5b813561246f8161242d565b9392505050565b60005b83811015612491578181015183820152602001612479565b50506000910152565b60208152600082518060208401526124b9816040850160208701612476565b601f01601f19169190910160400192915050565b600080604083850312156124e057600080fd5b82356124eb8161242d565b946020939093013593505050565b6000806040838503121561250c57600080fd5b50508035926020909101359150565b60008060006060848603121561253057600080fd5b833561253b8161242d565b9250602084013561254b8161242d565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b6000602080838503121561258557600080fd5b823567ffffffffffffffff8082111561259d57600080fd5b818501915085601f8301126125b157600080fd5b8135818111156125c3576125c361255c565b8060051b604051601f19603f830116810181811085821117156125e8576125e861255c565b60405291825284820192508381018501918883111561260657600080fd5b938501935b8285101561262b5761261c85612442565b8452938501939285019261260b565b98975050505050505050565b60006020828403121561264957600080fd5b5035919050565b801515811461094157600080fd5b6000806040838503121561267157600080fd5b823561267c8161242d565b9150602083013561268c81612650565b809150509250929050565b600080604083850312156126aa57600080fd5b82356126b58161242d565b9150602083013561268c8161242d565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c9082168061270e57607f821691505b60208210810361272e57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016127725761277261274a565b5060010190565b600181815b808511156127b457816000190482111561279a5761279a61274a565b808516156127a757918102915b93841c939080029061277e565b509250929050565b6000826127cb575060016109e7565b816127d8575060006109e7565b81600181146127ee57600281146127f857612814565b60019150506109e7565b60ff8411156128095761280961274a565b50506001821b6109e7565b5060208310610133831016604e8410600b8410161715612837575081810a6109e7565b6128418383612779565b80600019048211156128555761285561274a565b029392505050565b600061246f60ff8416836127bc565b80820281158282048414176109e7576109e761274a565b808201808211156109e7576109e761274a565b6000602082840312156128a857600080fd5b5051919050565b6000826128cc57634e487b7160e01b600052601260045260246000fd5b500490565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b818103818111156109e7576109e761274a565b60006020828403121561297e57600080fd5b815161246f8161242d565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156129d95784516001600160a01b0316835293830193918301916001016129b4565b50506001600160a01b03969096166060850152505050608001529392505050565b600060208284031215612a0c57600080fd5b815161246f81612650565b60008251612a29818460208701612476565b919091019291505056fea2646970667358221220c2cec58e7586907be9a8a2e91a1e4386d16bbafe2dee14f52de8dea27145289264736f6c63430008110033

Deployed Bytecode Sourcemap

14528:10967:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25382:108;;;;;;;;;;-1:-1:-1;25382:108:0;;;;;:::i;:::-;;:::i;:::-;;24133:195;;;;;;;;;;;;;:::i;8681:100::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14611:37;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1380:32:1;;;1362:51;;1350:2;1335:18;14611:37:0;1197:222:1;9602:169:0;;;;;;;;;;-1:-1:-1;9602:169:0;;;;;:::i;:::-;;:::i;:::-;;;1909:14:1;;1902:22;1884:41;;1872:2;1857:18;9602:169:0;1744:187:1;15403:64:0;;;;;;;;;;-1:-1:-1;15403:64:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;9009:108;;;;;;;;;;-1:-1:-1;9097:12:0;;9009:108;;;2082:25:1;;;2070:2;2055:18;9009:108:0;1936:177:1;20215:173:0;;;;;;;;;;-1:-1:-1;20215:173:0;;;;;:::i;:::-;;:::i;9779:537::-;;;;;;;;;;-1:-1:-1;9779:537:0;;;;;:::i;:::-;;:::i;20586:117::-;;;;;;;;;;-1:-1:-1;20586:117:0;;;;;:::i;:::-;;:::i;25189:187::-;;;;;;;;;;-1:-1:-1;25189:187:0;;;;;:::i;:::-;;:::i;18672:171::-;;;;;;;;;;-1:-1:-1;18672:171:0;;;;;:::i;:::-;;:::i;8901:100::-;;;;;;;;;;-1:-1:-1;8984:9:0;;8901:100;;8984:9;;;;4417:36:1;;4405:2;4390:18;8901:100:0;4275:184:1;10324:215:0;;;;;;;;;;-1:-1:-1;10324:215:0;;;;;:::i;:::-;;:::i;14655:31::-;;;;;;;;;;;;;;;14844:33;;;;;;;;;;-1:-1:-1;14844:33:0;;;;;;;;24869:312;;;;;;;;;;;;;:::i;14884:31::-;;;;;;;;;;-1:-1:-1;14884:31:0;;;;;;;;;;;15219;;;;;;;;;;;;;;;;14922;;;;;;;;;;-1:-1:-1;14922:31:0;;;;;;;;;;;9125:127;;;;;;;;;;-1:-1:-1;9125:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;9226:18:0;9199:7;9226:18;;;;;;;;;;;;9125:127;12746:150;;;;;;;;;;;;;:::i;18269:193::-;;;;;;;;;;;;;:::i;19538:313::-;;;;;;;;;;-1:-1:-1;19538:313:0;;;;;:::i;:::-;;:::i;14767:35::-;;;;;;;;;;;;;;;;24336:481;;;;;;;;;;-1:-1:-1;24336:481:0;;;;;:::i;:::-;;:::i;14575:27::-;;;;;;;;;;;;;;;;12532:79;;;;;;;;;;-1:-1:-1;12597:6:0;;;;;-1:-1:-1;;;;;12597:6:0;12532:79;;14960:21;;;;;;;;;;-1:-1:-1;14960:21:0;;;;;;;-1:-1:-1;;;;;14960:21:0;;;8789:104;;;;;;;;;;;;;:::i;19859:348::-;;;;;;;;;;-1:-1:-1;19859:348:0;;;;;:::i;:::-;;:::i;10547:413::-;;;;;;;;;;-1:-1:-1;10547:413:0;;;;;:::i;:::-;;:::i;9260:175::-;;;;;;;;;;-1:-1:-1;9260:175:0;;;;;:::i;:::-;;:::i;15259:32::-;;;;;;;;;;;;;;;;15476:58;;;;;;;;;;-1:-1:-1;15476:58:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;15300:30;;;;;;;;;;;;;;;;20396:182;;;;;;;;;;-1:-1:-1;20396:182:0;;;;;:::i;:::-;;:::i;15171:39::-;;;;;;;;;;-1:-1:-1;15171:39:0;;;;;;;;18913:398;;;;;;;;;;-1:-1:-1;18913:398:0;;;;;:::i;:::-;;:::i;9443:151::-;;;;;;;;;;-1:-1:-1;9443:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;9559:18:0;;;9532:7;9559:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;9443:151;14723:33;;;;;;;;;;;;;;;;18523:137;;;;;;;;;;;;;:::i;12904:244::-;;;;;;;;;;-1:-1:-1;12904:244:0;;;;;:::i;:::-;;:::i;17953:264::-;;;;;;;;;;;;;:::i;25382:108::-;12659:6;;-1:-1:-1;;;;;12659:6:0;;;;;306:10;12659:22;12651:67;;;;-1:-1:-1;;;12651:67:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;25454:20:0::1;25477:5;25454:20:::0;;;:8:::1;:20;::::0;;;;:28;;-1:-1:-1;;25454:28:0::1;::::0;;25382:108::o;24133:195::-;12659:6;;-1:-1:-1;;;;;12659:6:0;;;;;306:10;12659:22;12651:67;;;;-1:-1:-1;;;12651:67:0;;;;;;;:::i;:::-;24219:49:::1;::::0;24182:12:::1;::::0;24219:10:::1;::::0;24242:21:::1;::::0;24182:12;24219:49;24182:12;24219:49;24242:21;24219:10;:49:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24205:63;;;;;24287:7;24279:41;;;::::0;-1:-1:-1;;;24279:41:0;;6348:2:1;24279:41:0::1;::::0;::::1;6330:21:1::0;6387:2;6367:18;;;6360:30;-1:-1:-1;;;6406:18:1;;;6399:51;6467:18;;24279:41:0::1;6146:345:1::0;24279:41:0::1;24171:157;24133:195::o:0;8681:100::-;8735:13;8768:5;8761:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8681:100;:::o;9602:169::-;9685:4;9702:39;306:10;9725:7;9734:6;9702:8;:39::i;:::-;-1:-1:-1;9759:4:0;9602:169;;;;;:::o;20215:173::-;12659:6;;-1:-1:-1;;;;;12659:6:0;;;;;306:10;12659:22;12651:67;;;;-1:-1:-1;;;12651:67:0;;;;;;;:::i;:::-;20311:16:::1;:28:::0;;;;20350:17:::1;:30:::0;20215:173::o;9779:537::-;9885:4;9902:36;9912:6;9920:9;9931:6;9902:9;:36::i;:::-;-1:-1:-1;;;;;9978:19:0;;9951:24;9978:19;;;:11;:19;;;;;;;;306:10;9978:33;;;;;;;;-1:-1:-1;;10025:37:0;;10022:263;;10106:6;10086:16;:26;;10078:79;;;;-1:-1:-1;;;10078:79:0;;7083:2:1;10078:79:0;;;7065:21:1;7122:2;7102:18;;;7095:30;7161:34;7141:18;;;7134:62;-1:-1:-1;;;7212:18:1;;;7205:38;7260:19;;10078:79:0;6881:404:1;10078:79:0;10201:57;10210:6;306:10;10251:6;10232:16;:25;10201:8;:57::i;:::-;-1:-1:-1;10304:4:0;;9779:537;-1:-1:-1;;;;9779:537:0:o;20586:117::-;12659:6;;-1:-1:-1;;;;;12659:6:0;;;;;306:10;12659:22;12651:67;;;;-1:-1:-1;;;12651:67:0;;;;;;;:::i;:::-;20663:6:::1;:32:::0;;-1:-1:-1;;;;;20663:32:0;;::::1;::::0;::::1;-1:-1:-1::0;;;;;;20663:32:0;;::::1;::::0;;;::::1;::::0;;20586:117::o;25189:187::-;12659:6;;-1:-1:-1;;;;;12659:6:0;;;;;306:10;12659:22;12651:67;;;;-1:-1:-1;;;12651:67:0;;;;;;;:::i;:::-;25274:6:::1;25269:100;25290:9;:16;25286:1;:20;25269:100;;;25353:4;25328:8;:22;25337:9;25347:1;25337:12;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;25328:22:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;25328:22:0;:29;;-1:-1:-1;;25328:29:0::1;::::0;::::1;;::::0;;;::::1;::::0;;25308:3;::::1;::::0;::::1;:::i;:::-;;;;25269:100;;;;25189:187:::0;:::o;18672:171::-;12659:6;;-1:-1:-1;;;;;12659:6:0;;;;;306:10;12659:22;12651:67;;;;-1:-1:-1;;;12651:67:0;;;;;;;:::i;:::-;8984:9;;;;18771:14:::1;::::0;:2:::1;:14;:::i;:::-;18761:25;::::0;:6;:25:::1;:::i;:::-;18746:12;:40:::0;;;18802:33:::1;::::0;2082:25:1;;;18802:33:0::1;::::0;2070:2:1;2055:18;18802:33:0::1;;;;;;;;18672:171:::0;:::o;10324:215::-;306:10;10412:4;10461:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;10461:34:0;;;;;;;;;;10412:4;;10429:80;;10452:7;;10461:47;;10498:10;;10461:47;:::i;:::-;10429:8;:80::i;24869:312::-;12659:6;;-1:-1:-1;;;;;12659:6:0;;;;;306:10;12659:22;12651:67;;;;-1:-1:-1;;;12651:67:0;;;;;;;:::i;:::-;24960:18:::1;::::0;24950:4:::1;9199:7:::0;9226:18;;;;;;;;;;;24932:46:::1;;24924:123;;;::::0;;-1:-1:-1;;;24924:123:0;;9582:2:1;24924:123:0::1;::::0;::::1;9564:21:1::0;9601:18;;;9594:30;;;;9660:34;9640:18;;;9633:62;9731:34;9711:18;;;9704:62;9783:19;;24924:123:0::1;9380:428:1::0;24924:123:0::1;25058:8;:15:::0;;-1:-1:-1;;25058:15:0::1;25069:4;25058:15;::::0;;25084:10:::1;:8;:10::i;:::-;25105:8;:16:::0;;-1:-1:-1;;25105:16:0::1;::::0;;25137:36:::1;::::0;25157:15:::1;2082:25:1::0;;25137:36:0::1;::::0;2070:2:1;2055:18;25137:36:0::1;;;;;;;24869:312::o:0;12746:150::-;12659:6;;-1:-1:-1;;;;;12659:6:0;;;;;306:10;12659:22;12651:67;;;;-1:-1:-1;;;12651:67:0;;;;;;;:::i;:::-;12839:6:::1;::::0;12818:40:::1;::::0;12855:1:::1;::::0;12839:6:::1;::::0;::::1;-1:-1:-1::0;;;;;12839:6:0::1;::::0;12818:40:::1;::::0;12855:1;;12818:40:::1;12869:6;:19:::0;;-1:-1:-1;;;;;;12869:19:0::1;::::0;;12746:150::o;18269:193::-;12659:6;;-1:-1:-1;;;;;12659:6:0;;;;;306:10;12659:22;12651:67;;;;-1:-1:-1;;;12651:67:0;;;;;;;:::i;:::-;18323:14:::1;:22:::0;;-1:-1:-1;;18323:22:0;;::::1;::::0;;;18356:20:::1;:28:::0;;;;::::1;::::0;;9097:12;;18395::::1;:28:::0;18439:15:::1;::::0;::::1;::::0;;;::::1;18269:193::o:0;19538:313::-;12659:6;;-1:-1:-1;;;;;12659:6:0;;;;;306:10;12659:22;12651:67;;;;-1:-1:-1;;;12651:67:0;;;;;;;:::i;:::-;19634:4:::1;19630:104;;19672:6;-1:-1:-1::0;;;;;19662:16:0::1;:6;-1:-1:-1::0;;;;;19662:16:0::1;::::0;19654:68:::1;;;::::0;-1:-1:-1;;;19654:68:0;;10015:2:1;19654:68:0::1;::::0;::::1;9997:21:1::0;10054:2;10034:18;;;10027:30;10093:34;10073:18;;;10066:62;-1:-1:-1;;;10144:18:1;;;10137:37;10191:19;;19654:68:0::1;9813:403:1::0;19654:68:0::1;-1:-1:-1::0;;;;;19744:39:0;::::1;;::::0;;;:31:::1;:39;::::0;;;;;;;;:46;;-1:-1:-1;;19744:46:0::1;::::0;::::1;;::::0;;::::1;::::0;;;19806:37;;10389:51:1;;;10456:18;;;10449:50;19806:37:0::1;::::0;10362:18:1;19806:37:0::1;;;;;;;19538:313:::0;;:::o;24336:481::-;12659:6;;-1:-1:-1;;;;;12659:6:0;;;;;306:10;12659:22;12651:67;;;;-1:-1:-1;;;12651:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24433:20:0;::::1;24425:59;;;::::0;-1:-1:-1;;;24425:59:0;;10712:2:1;24425:59:0::1;::::0;::::1;10694:21:1::0;10751:2;10731:18;;;10724:30;10790:28;10770:18;;;10763:56;10836:18;;24425:59:0::1;10510:350:1::0;24425:59:0::1;-1:-1:-1::0;;;;;24503:23:0;::::1;24521:4;24503:23;;::::0;:39:::1;;-1:-1:-1::0;24531:11:0::1;::::0;::::1;::::0;::::1;;;24530:12;24503:39;24495:104;;;::::0;-1:-1:-1;;;24495:104:0;;11067:2:1;24495:104:0::1;::::0;::::1;11049:21:1::0;11106:2;11086:18;;;11079:30;11145:34;11125:18;;;11118:62;-1:-1:-1;;;11196:18:1;;;11189:50;11256:19;;24495:104:0::1;10865:416:1::0;24495:104:0::1;24637:39;::::0;-1:-1:-1;;;24637:39:0;;24670:4:::1;24637:39;::::0;::::1;1362:51:1::0;24610:24:0::1;::::0;-1:-1:-1;;;;;24637:24:0;::::1;::::0;::::1;::::0;1335:18:1;;24637:39:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24610:66;;24687:60;24717:6;24725:3;24730:16;24687:22;:60::i;:::-;24763:46;::::0;;-1:-1:-1;;;;;11667:32:1;;11649:51;;11731:2;11716:18;;11709:34;;;24763:46:0::1;::::0;11622:18:1;24763:46:0::1;;;;;;;24414:403;24336:481:::0;;:::o;8789:104::-;8845:13;8878:7;8871:14;;;;;:::i;19859:348::-;12659:6;;-1:-1:-1;;;;;12659:6:0;;;;;306:10;12659:22;12651:67;;;;-1:-1:-1;;;12651:67:0;;;;;;;:::i;:::-;19966:6:::1;-1:-1:-1::0;;;;;19958:14:0::1;:4;-1:-1:-1::0;;;;;19958:14:0::1;;;:23;;;;19976:5;19958:23;19950:93;;;::::0;-1:-1:-1;;;19950:93:0;;11956:2:1;19950:93:0::1;::::0;::::1;11938:21:1::0;11995:2;11975:18;;;11968:30;12034:34;12014:18;;;12007:62;12105:27;12085:18;;;12078:55;12150:19;;19950:93:0::1;11754:421:1::0;19950:93:0::1;-1:-1:-1::0;;;;;20054:31:0;::::1;;::::0;;;:25:::1;:31;::::0;;;;:39;;-1:-1:-1;;20054:39:0::1;::::0;::::1;;;::::0;;20104::::1;20054:31:::0;:39;20104:26:::1;:39::i;:::-;20159:40;::::0;;::::1;;::::0;-1:-1:-1;;;;;20159:40:0;::::1;::::0;::::1;::::0;;;::::1;19859:348:::0;;:::o;10547:413::-;306:10;10640:4;10684:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;10684:34:0;;;;;;;;;;10737:35;;;;10729:85;;;;-1:-1:-1;;;10729:85:0;;12382:2:1;10729:85:0;;;12364:21:1;12421:2;12401:18;;;12394:30;12460:34;12440:18;;;12433:62;-1:-1:-1;;;12511:18:1;;;12504:35;12556:19;;10729:85:0;12180:401:1;10729:85:0;10850:67;306:10;10873:7;10901:15;10882:16;:34;10850:8;:67::i;:::-;-1:-1:-1;10948:4:0;;10547:413;-1:-1:-1;;;10547:413:0:o;9260:175::-;9346:4;9363:42;306:10;9387:9;9398:6;9363:9;:42::i;20396:182::-;12659:6;;-1:-1:-1;;;;;12659:6:0;;;;;306:10;12659:22;12651:67;;;;-1:-1:-1;;;12651:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20481:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;20481:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;20536:34;;1884:41:1;;;20536:34:0::1;::::0;1857:18:1;20536:34:0::1;;;;;;;20396:182:::0;;:::o;18913:398::-;12659:6;;-1:-1:-1;;;;;12659:6:0;;;;;306:10;12659:22;12651:67;;;;-1:-1:-1;;;12651:67:0;;;;;;;:::i;:::-;19036:6:::1;19016:13;9097:12:::0;;;9009:108;19016:13:::1;:17;::::0;19032:1:::1;19016:17;:::i;:::-;:26;;;;:::i;:::-;19003:9;:39;;18995:105;;;::::0;-1:-1:-1;;;18995:105:0;;13010:2:1;18995:105:0::1;::::0;::::1;12992:21:1::0;13049:2;13029:18;;;13022:30;13088:34;13068:18;;;13061:62;-1:-1:-1;;;13139:18:1;;;13132:51;13200:19;;18995:105:0::1;12808:417:1::0;18995:105:0::1;19151:4;19131:13;9097:12:::0;;;9009:108;19131:13:::1;:17;::::0;19147:1:::1;19131:17;:::i;:::-;:24;;;;:::i;:::-;19118:9;:37;;19110:102;;;::::0;-1:-1:-1;;;19110:102:0;;13432:2:1;19110:102:0::1;::::0;::::1;13414:21:1::0;13471:2;13451:18;;;13444:30;13510:34;13490:18;;;13483:62;-1:-1:-1;;;13561:18:1;;;13554:50;13621:19;;19110:102:0::1;13230:416:1::0;19110:102:0::1;19222:18;:30:::0;;;19268:36:::1;::::0;2082:25:1;;;19268:36:0::1;::::0;2070:2:1;2055:18;19268:36:0::1;1936:177:1::0;18523:137:0;12659:6;;-1:-1:-1;;;;;12659:6:0;;;;;306:10;12659:22;12651:67;;;;-1:-1:-1;;;12651:67:0;;;;;;;:::i;:::-;18585:20:::1;:28:::0;;-1:-1:-1;;18585:28:0::1;::::0;;18629:23:::1;::::0;::::1;::::0;18608:5:::1;::::0;18629:23:::1;18523:137::o:0;12904:244::-;12659:6;;-1:-1:-1;;;;;12659:6:0;;;;;306:10;12659:22;12651:67;;;;-1:-1:-1;;;12651:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12993:22:0;::::1;12985:73;;;::::0;-1:-1:-1;;;12985:73:0;;13853:2:1;12985:73:0::1;::::0;::::1;13835:21:1::0;13892:2;13872:18;;;13865:30;13931:34;13911:18;;;13904:62;-1:-1:-1;;;13982:18:1;;;13975:36;14028:19;;12985:73:0::1;13651:402:1::0;12985:73:0::1;13095:6;::::0;13074:38:::1;::::0;-1:-1:-1;;;;;13074:38:0;;::::1;::::0;13095:6:::1;::::0;::::1;;::::0;13074:38:::1;::::0;;;::::1;13123:6;:17:::0;;-1:-1:-1;;;;;13123:17:0;;::::1;;;-1:-1:-1::0;;;;;;13123:17:0;;::::1;::::0;;;::::1;::::0;;12904:244::o;17953:264::-;12659:6;;-1:-1:-1;;;;;12659:6:0;;;;;306:10;12659:22;12651:67;;;;-1:-1:-1;;;12651:67:0;;;;;;;:::i;:::-;18018:11:::1;::::0;::::1;::::0;::::1;;;18017:12;18009:68;;;::::0;-1:-1:-1;;;18009:68:0;;14260:2:1;18009:68:0::1;::::0;::::1;14242:21:1::0;14299:2;14279:18;;;14272:30;14338:34;14318:18;;;14311:62;-1:-1:-1;;;14389:18:1;;;14382:41;14440:19;;18009:68:0::1;14058:407:1::0;18009:68:0::1;18088:11;:18:::0;;-1:-1:-1;;18117:18:0;;;;;18165:12:::1;18146:16;:31:::0;18193:16:::1;::::0;::::1;::::0;-1:-1:-1;;18193:16:0::1;17953:264::o:0;11855:346::-;-1:-1:-1;;;;;11957:19:0;;11949:68;;;;-1:-1:-1;;;11949:68:0;;14672:2:1;11949:68:0;;;14654:21:1;14711:2;14691:18;;;14684:30;14750:34;14730:18;;;14723:62;-1:-1:-1;;;14801:18:1;;;14794:34;14845:19;;11949:68:0;14470:400:1;11949:68:0;-1:-1:-1;;;;;12036:21:0;;12028:68;;;;-1:-1:-1;;;12028:68:0;;15077:2:1;12028:68:0;;;15059:21:1;15116:2;15096:18;;;15089:30;15155:34;15135:18;;;15128:62;-1:-1:-1;;;15206:18:1;;;15199:32;15248:19;;12028:68:0;14875:398:1;12028:68:0;-1:-1:-1;;;;;12109:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;12161:32;;2082:25:1;;;12161:32:0;;2055:18:1;12161:32:0;;;;;;;11855:346;;;:::o;20711:2408::-;-1:-1:-1;;;;;20811:18:0;;20803:68;;;;-1:-1:-1;;;20803:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20890:16:0;;20882:64;;;;-1:-1:-1;;;20882:64:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20966:14:0;;;;;;:8;:14;;;;;;;;20965:15;:32;;;;-1:-1:-1;;;;;;20985:12:0;;;;;;:8;:12;;;;;;;;20984:13;20965:32;20957:41;;;;;;21012:6;21022:1;21012:11;21009:91;;21039:28;21055:4;21061:2;21065:1;21039:15;:28::i;:::-;20711:2408;;;:::o;21009:91::-;-1:-1:-1;;;;;21115:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;21144:23:0;;;;;;:19;:23;;;;;;;;21115:52;21112:137;;;21183:33;21199:4;21205:2;21209:6;21183:15;:33::i;21112:137::-;21273:11;;;;;;;21269:80;;21300:37;;-1:-1:-1;;;21300:37:0;;16290:2:1;21300:37:0;;;16272:21:1;16329:2;16309:18;;;16302:30;16368:29;16348:18;;;16341:57;16415:18;;21300:37:0;16088:351:1;21269:80:0;21380:14;;;;21377:883;;;21544:20;;;;21540:466;;;21602:9;-1:-1:-1;;;;;21588:24:0;:2;-1:-1:-1;;;;;21588:24:0;;;:49;;;;;21630:6;-1:-1:-1;;;;;21616:21:0;:2;-1:-1:-1;;;;;21616:21:0;;;21588:49;21584:407;;;21694:9;21669:35;;;;:24;:35;;;;;;21711:12;;21669:39;;21707:1;21669:39;:::i;:::-;:54;:105;;;;-1:-1:-1;;;;;;21727:28:0;;;;;;:24;:28;;;;;;21762:12;;21727:32;;21758:1;21727:32;:::i;:::-;:47;21669:105;21661:171;;;;-1:-1:-1;;;21661:171:0;;16646:2:1;21661:171:0;;;16628:21:1;16685:2;16665:18;;;16658:30;16724:34;16704:18;;;16697:62;-1:-1:-1;;;16775:18:1;;;16768:51;16836:19;;21661:171:0;16444:417:1;21661:171:0;21880:9;21855:35;;;;:24;:35;;;;;;21893:12;21855:50;;;;-1:-1:-1;;;;;21928:28:0;;;;;;:43;21584:407;-1:-1:-1;;;;;22066:31:0;;;;;;:25;:31;;;;;;;;:71;;;;-1:-1:-1;;;;;;22102:35:0;;;;;;:31;:35;;;;;;;;22101:36;22066:71;22062:187;;;22176:12;;22166:6;:22;;22158:75;;;;-1:-1:-1;;;22158:75:0;;17068:2:1;22158:75:0;;;17050:21:1;17107:2;17087:18;;;17080:30;17146:34;17126:18;;;17119:62;-1:-1:-1;;;17197:18:1;;;17190:38;17245:19;;22158:75:0;16866:404:1;22158:75:0;22302:18;;22293:4;9199:7;9226:18;;;;;;;;;;;22275:45;:60;;;;-1:-1:-1;22324:11:0;;;;;;;22275:60;:73;;;;-1:-1:-1;22340:8:0;;;;22339:9;22275:73;:106;;;;-1:-1:-1;;;;;;22352:29:0;;;;;;:25;:29;;;;;;;;22275:106;22272:209;;;22398:8;:15;;-1:-1:-1;;22398:15:0;22409:4;22398:15;;;22428:10;:8;:10::i;:::-;22453:8;:16;;-1:-1:-1;;22453:16:0;;;22272:209;-1:-1:-1;;;;;22554:29:0;;22501:12;22554:29;;;:25;:29;;;;;;;;:54;;;;;22607:1;22587:17;;:21;22554:54;22550:374;;;22660:3;22640:17;;22631:6;:26;;;;:::i;:::-;:32;;;;:::i;:::-;22624:39;;22697:4;22678:15;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;22550:374:0;;-1:-1:-1;22550:374:0;;-1:-1:-1;;;;;22764:31:0;;;;;;:25;:31;;;;;;;;:55;;;;;22818:1;22799:16;;:20;22764:55;22761:163;;;22871:3;22852:16;;22843:6;:25;;;;:::i;:::-;:31;;;;:::i;:::-;22836:38;;22908:4;22889:15;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;;22761:163:0;22947:8;;22944:114;;22975:42;22991:4;23005;23012;22975:15;:42::i;:::-;23032:14;23042:4;23032:14;;:::i;:::-;;;22944:114;23078:33;23094:4;23100:2;23104:6;23078:15;:33::i;:::-;20790:2329;20711:2408;;;:::o;23535:590::-;23651:4;23574:12;9226:18;;;;;;;;;;;23696:15;;23735:20;;;:46;;-1:-1:-1;23759:22:0;;23735:46;23732:60;;;23784:7;;;23535:590::o;23732:60::-;23825:18;;:23;;23846:2;23825:23;:::i;:::-;23807:15;:41;23804:113;;;23882:18;;:23;;23903:2;23882:23;:::i;:::-;23864:41;;23804:113;23929:33;23946:15;23929:16;:33::i;:::-;23991:1;23973:15;:19;24006:21;:25;24003:115;;24061:6;;:45;;:6;;;;-1:-1:-1;;;;;24061:6:0;;24080:21;;24061:45;;;;24080:21;24061:6;:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;23535:590:0:o;6737:211::-;6881:58;;;-1:-1:-1;;;;;11667:32:1;;6881:58:0;;;11649:51:1;11716:18;;;;11709:34;;;6881:58:0;;;;;;;;;;11622:18:1;;;;6881:58:0;;;;;;;;-1:-1:-1;;;;;6881:58:0;-1:-1:-1;;;6881:58:0;;;6854:86;;6874:5;;6854:19;:86::i;10968:580::-;-1:-1:-1;;;;;11074:20:0;;11066:70;;;;-1:-1:-1;;;11066:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11155:23:0;;11147:71;;;;-1:-1:-1;;;11147:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11255:17:0;;11231:21;11255:17;;;;;;;;;;;11291:23;;;;11283:74;;;;-1:-1:-1;;;11283:74:0;;17610:2:1;11283:74:0;;;17592:21:1;17649:2;17629:18;;;17622:30;17688:34;17668:18;;;17661:62;-1:-1:-1;;;17739:18:1;;;17732:36;17785:19;;11283:74:0;17408:402:1;11283:74:0;-1:-1:-1;;;;;11393:17:0;;;:9;:17;;;;;;;;;;;11413:22;;;11393:42;;11457:20;;;;;;;;:30;;11429:6;;11393:9;11457:30;;11429:6;;11457:30;:::i;:::-;;;;;;;;11522:9;-1:-1:-1;;;;;11505:35:0;11514:6;-1:-1:-1;;;;;11505:35:0;;11533:6;11505:35;;;;2082:25:1;;2070:2;2055:18;;1936:177;11505:35:0;;;;;;;;11055:493;10968:580;;;:::o;23127:400::-;23279:16;;;23293:1;23279:16;;;;;;;;23255:21;;23279:16;;;;;;;;;;-1:-1:-1;23279:16:0;23255:40;;23324:4;23306;23311:1;23306:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;23306:23:0;;;-1:-1:-1;;;;;23306:23:0;;;;;23350:9;-1:-1:-1;;;;;23350:14:0;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23340:4;23345:1;23340:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;23340:26:0;;;:7;;;;;;;;;:26;23405:114;;-1:-1:-1;;;23405:114:0;;:9;:60;;;;;;:114;;23466:11;;23479:1;;23482:4;;23496;;23503:15;;23405:114;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6956:333;7037:23;7063:69;7091:4;7063:69;;;;;;;;;;;;;;;;;7071:5;-1:-1:-1;;;;;7063:27:0;;;:69;;;;;:::i;:::-;7147:17;;7037:95;;-1:-1:-1;7147:21:0;7143:139;;7204:10;7193:30;;;;;;;;;;;;:::i;:::-;7185:85;;;;-1:-1:-1;;;7185:85:0;;19508:2:1;7185:85:0;;;19490:21:1;19547:2;19527:18;;;19520:30;19586:34;19566:18;;;19559:62;-1:-1:-1;;;19637:18:1;;;19630:40;19687:19;;7185:85:0;19306:406:1;1240:229:0;1377:12;1409:52;1431:6;1439:4;1445:1;1448:12;1409:21;:52::i;:::-;1402:59;1240:229;-1:-1:-1;;;;1240:229:0:o;2360:455::-;2530:12;2588:5;2563:21;:30;;2555:81;;;;-1:-1:-1;;;2555:81:0;;19919:2:1;2555:81:0;;;19901:21:1;19958:2;19938:18;;;19931:30;19997:34;19977:18;;;19970:62;-1:-1:-1;;;20048:18:1;;;20041:36;20094:19;;2555:81:0;19717:402:1;2555:81:0;2648:12;2662:23;2689:6;-1:-1:-1;;;;;2689:11:0;2708:5;2715:4;2689:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2647:73;;;;2738:69;2765:6;2773:7;2782:10;2794:12;2738:26;:69::i;:::-;2731:76;2360:455;-1:-1:-1;;;;;;;2360:455:0:o;4933:644::-;5118:12;5147:7;5143:427;;;5175:10;:17;5196:1;5175:22;5171:290;;-1:-1:-1;;;;;681:19:0;;;5385:60;;;;-1:-1:-1;;;5385:60:0;;20618:2:1;5385:60:0;;;20600:21:1;20657:2;20637:18;;;20630:30;20696:31;20676:18;;;20669:59;20745:18;;5385:60:0;20416:353:1;5385:60:0;-1:-1:-1;5482:10:0;5475:17;;5143:427;5525:33;5533:10;5545:12;6280:17;;:21;6276:388;;6512:10;6506:17;6569:15;6556:10;6552:2;6548:19;6541:44;6276:388;6639:12;6632:20;;-1:-1:-1;;;6632:20:0;;;;;;;;:::i;14:131:1:-;-1:-1:-1;;;;;89:31:1;;79:42;;69:70;;135:1;132;125:12;150:134;218:20;;247:31;218:20;247:31;:::i;:::-;150:134;;;:::o;289:247::-;348:6;401:2;389:9;380:7;376:23;372:32;369:52;;;417:1;414;407:12;369:52;456:9;443:23;475:31;500:5;475:31;:::i;:::-;525:5;289:247;-1:-1:-1;;;289:247:1:o;541:250::-;626:1;636:113;650:6;647:1;644:13;636:113;;;726:11;;;720:18;707:11;;;700:39;672:2;665:10;636:113;;;-1:-1:-1;;783:1:1;765:16;;758:27;541:250::o;796:396::-;945:2;934:9;927:21;908:4;977:6;971:13;1020:6;1015:2;1004:9;1000:18;993:34;1036:79;1108:6;1103:2;1092:9;1088:18;1083:2;1075:6;1071:15;1036:79;:::i;:::-;1176:2;1155:15;-1:-1:-1;;1151:29:1;1136:45;;;;1183:2;1132:54;;796:396;-1:-1:-1;;796:396:1:o;1424:315::-;1492:6;1500;1553:2;1541:9;1532:7;1528:23;1524:32;1521:52;;;1569:1;1566;1559:12;1521:52;1608:9;1595:23;1627:31;1652:5;1627:31;:::i;:::-;1677:5;1729:2;1714:18;;;;1701:32;;-1:-1:-1;;;1424:315:1:o;2118:248::-;2186:6;2194;2247:2;2235:9;2226:7;2222:23;2218:32;2215:52;;;2263:1;2260;2253:12;2215:52;-1:-1:-1;;2286:23:1;;;2356:2;2341:18;;;2328:32;;-1:-1:-1;2118:248:1:o;2371:456::-;2448:6;2456;2464;2517:2;2505:9;2496:7;2492:23;2488:32;2485:52;;;2533:1;2530;2523:12;2485:52;2572:9;2559:23;2591:31;2616:5;2591:31;:::i;:::-;2641:5;-1:-1:-1;2698:2:1;2683:18;;2670:32;2711:33;2670:32;2711:33;:::i;:::-;2371:456;;2763:7;;-1:-1:-1;;;2817:2:1;2802:18;;;;2789:32;;2371:456::o;2832:127::-;2893:10;2888:3;2884:20;2881:1;2874:31;2924:4;2921:1;2914:15;2948:4;2945:1;2938:15;2964:1121;3048:6;3079:2;3122;3110:9;3101:7;3097:23;3093:32;3090:52;;;3138:1;3135;3128:12;3090:52;3178:9;3165:23;3207:18;3248:2;3240:6;3237:14;3234:34;;;3264:1;3261;3254:12;3234:34;3302:6;3291:9;3287:22;3277:32;;3347:7;3340:4;3336:2;3332:13;3328:27;3318:55;;3369:1;3366;3359:12;3318:55;3405:2;3392:16;3427:2;3423;3420:10;3417:36;;;3433:18;;:::i;:::-;3479:2;3476:1;3472:10;3511:2;3505:9;3574:2;3570:7;3565:2;3561;3557:11;3553:25;3545:6;3541:38;3629:6;3617:10;3614:22;3609:2;3597:10;3594:18;3591:46;3588:72;;;3640:18;;:::i;:::-;3676:2;3669:22;3726:18;;;3760:15;;;;-1:-1:-1;3802:11:1;;;3798:20;;;3830:19;;;3827:39;;;3862:1;3859;3852:12;3827:39;3886:11;;;;3906:148;3922:6;3917:3;3914:15;3906:148;;;3988:23;4007:3;3988:23;:::i;:::-;3976:36;;3939:12;;;;4032;;;;3906:148;;;4073:6;2964:1121;-1:-1:-1;;;;;;;;2964:1121:1:o;4090:180::-;4149:6;4202:2;4190:9;4181:7;4177:23;4173:32;4170:52;;;4218:1;4215;4208:12;4170:52;-1:-1:-1;4241:23:1;;4090:180;-1:-1:-1;4090:180:1:o;4672:118::-;4758:5;4751:13;4744:21;4737:5;4734:32;4724:60;;4780:1;4777;4770:12;4795:382;4860:6;4868;4921:2;4909:9;4900:7;4896:23;4892:32;4889:52;;;4937:1;4934;4927:12;4889:52;4976:9;4963:23;4995:31;5020:5;4995:31;:::i;:::-;5045:5;-1:-1:-1;5102:2:1;5087:18;;5074:32;5115:30;5074:32;5115:30;:::i;:::-;5164:7;5154:17;;;4795:382;;;;;:::o;5182:388::-;5250:6;5258;5311:2;5299:9;5290:7;5286:23;5282:32;5279:52;;;5327:1;5324;5317:12;5279:52;5366:9;5353:23;5385:31;5410:5;5385:31;:::i;:::-;5435:5;-1:-1:-1;5492:2:1;5477:18;;5464:32;5505:33;5464:32;5505:33;:::i;5575:356::-;5777:2;5759:21;;;5796:18;;;5789:30;5855:34;5850:2;5835:18;;5828:62;5922:2;5907:18;;5575:356::o;6496:380::-;6575:1;6571:12;;;;6618;;;6639:61;;6693:4;6685:6;6681:17;6671:27;;6639:61;6746:2;6738:6;6735:14;6715:18;6712:38;6709:161;;6792:10;6787:3;6783:20;6780:1;6773:31;6827:4;6824:1;6817:15;6855:4;6852:1;6845:15;6709:161;;6496:380;;;:::o;7290:127::-;7351:10;7346:3;7342:20;7339:1;7332:31;7382:4;7379:1;7372:15;7406:4;7403:1;7396:15;7422:127;7483:10;7478:3;7474:20;7471:1;7464:31;7514:4;7511:1;7504:15;7538:4;7535:1;7528:15;7554:135;7593:3;7614:17;;;7611:43;;7634:18;;:::i;:::-;-1:-1:-1;7681:1:1;7670:13;;7554:135::o;7694:422::-;7783:1;7826:5;7783:1;7840:270;7861:7;7851:8;7848:21;7840:270;;;7920:4;7916:1;7912:6;7908:17;7902:4;7899:27;7896:53;;;7929:18;;:::i;:::-;7979:7;7969:8;7965:22;7962:55;;;7999:16;;;;7962:55;8078:22;;;;8038:15;;;;7840:270;;;7844:3;7694:422;;;;;:::o;8121:806::-;8170:5;8200:8;8190:80;;-1:-1:-1;8241:1:1;8255:5;;8190:80;8289:4;8279:76;;-1:-1:-1;8326:1:1;8340:5;;8279:76;8371:4;8389:1;8384:59;;;;8457:1;8452:130;;;;8364:218;;8384:59;8414:1;8405:10;;8428:5;;;8452:130;8489:3;8479:8;8476:17;8473:43;;;8496:18;;:::i;:::-;-1:-1:-1;;8552:1:1;8538:16;;8567:5;;8364:218;;8666:2;8656:8;8653:16;8647:3;8641:4;8638:13;8634:36;8628:2;8618:8;8615:16;8610:2;8604:4;8601:12;8597:35;8594:77;8591:159;;;-1:-1:-1;8703:19:1;;;8735:5;;8591:159;8782:34;8807:8;8801:4;8782:34;:::i;:::-;8852:6;8848:1;8844:6;8840:19;8831:7;8828:32;8825:58;;;8863:18;;:::i;:::-;8901:20;;8121:806;-1:-1:-1;;;8121:806:1:o;8932:140::-;8990:5;9019:47;9060:4;9050:8;9046:19;9040:4;9019:47;:::i;9077:168::-;9150:9;;;9181;;9198:15;;;9192:22;;9178:37;9168:71;;9219:18;;:::i;9250:125::-;9315:9;;;9336:10;;;9333:36;;;9349:18;;:::i;11286:184::-;11356:6;11409:2;11397:9;11388:7;11384:23;11380:32;11377:52;;;11425:1;11422;11415:12;11377:52;-1:-1:-1;11448:16:1;;11286:184;-1:-1:-1;11286:184:1:o;12586:217::-;12626:1;12652;12642:132;;12696:10;12691:3;12687:20;12684:1;12677:31;12731:4;12728:1;12721:15;12759:4;12756:1;12749:15;12642:132;-1:-1:-1;12788:9:1;;12586:217::o;15278:401::-;15480:2;15462:21;;;15519:2;15499:18;;;15492:30;15558:34;15553:2;15538:18;;15531:62;-1:-1:-1;;;15624:2:1;15609:18;;15602:35;15669:3;15654:19;;15278:401::o;15684:399::-;15886:2;15868:21;;;15925:2;15905:18;;;15898:30;15964:34;15959:2;15944:18;;15937:62;-1:-1:-1;;;16030:2:1;16015:18;;16008:33;16073:3;16058:19;;15684:399::o;17275:128::-;17342:9;;;17363:11;;;17360:37;;;17377:18;;:::i;17815:251::-;17885:6;17938:2;17926:9;17917:7;17913:23;17909:32;17906:52;;;17954:1;17951;17944:12;17906:52;17986:9;17980:16;18005:31;18030:5;18005:31;:::i;18071:980::-;18333:4;18381:3;18370:9;18366:19;18412:6;18401:9;18394:25;18438:2;18476:6;18471:2;18460:9;18456:18;18449:34;18519:3;18514:2;18503:9;18499:18;18492:31;18543:6;18578;18572:13;18609:6;18601;18594:22;18647:3;18636:9;18632:19;18625:26;;18686:2;18678:6;18674:15;18660:29;;18707:1;18717:195;18731:6;18728:1;18725:13;18717:195;;;18796:13;;-1:-1:-1;;;;;18792:39:1;18780:52;;18887:15;;;;18852:12;;;;18828:1;18746:9;18717:195;;;-1:-1:-1;;;;;;;18968:32:1;;;;18963:2;18948:18;;18941:60;-1:-1:-1;;;19032:3:1;19017:19;19010:35;18929:3;18071:980;-1:-1:-1;;;18071:980:1:o;19056:245::-;19123:6;19176:2;19164:9;19155:7;19151:23;19147:32;19144:52;;;19192:1;19189;19182:12;19144:52;19224:9;19218:16;19243:28;19265:5;19243:28;:::i;20124:287::-;20253:3;20291:6;20285:13;20307:66;20366:6;20361:3;20354:4;20346:6;20342:17;20307:66;:::i;:::-;20389:16;;;;;20124:287;-1:-1:-1;;20124:287:1:o

Swarm Source

ipfs://c2cec58e7586907be9a8a2e91a1e4386d16bbafe2dee14f52de8dea271452892
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.