ETH Price: $3,296.73 (-3.77%)
Gas: 8 Gwei

Token

dAvInci (DAVINCI)
 

Overview

Max Total Supply

1,000,000,000 DAVINCI

Holders

73

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
10,200,000 DAVINCI

Value
$0.00
0x7309f0134f3e51e8cbe29dd86068e0f264f6c946
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:
dAvInci

Compiler Version
v0.8.12+commit.f00d7308

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

/*
Telegram : https://t.me/dAvInciERC
Website : https://dAvInciERC.com
Twitter : https://twitter.com/dAvInciERC
*/

// SPDX-License-Identifier: MIT
pragma solidity 0.8.12;
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;
    }
}
interface IDexPair {
    function sync() external;
}
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 public _name;
    string public _symbol;
    constructor() {}
    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 18;
    }
    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()];
        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) external virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}
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 addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );       
}
interface IDexFactory {
    function createPair(address tokenA, address tokenB)
        external
        returns (address pair);
}
contract dAvInci is ERC20, Ownable {
    IDexRouter public dexRouter;
    address public lpPair;
    address public constant deadAddress = address(0xdead);
    bool private swapping;
    address public marketingWallet;
    address public devWallet;
    address public RouterAddress;
    address public LiquidityReceiver;
    
    uint256 public maxTxnAmount;
    uint256 public maxWallet;
    uint256 public swapTokensAtAmount;

    //launch variables
    bool public tradingActive = false;
    uint256 public _blocks;
    uint256 public tradingActiveBlock = 0;
    bool public swapEnabled = false;
    
     // prevent more than 1 buy on same block this may cuz rug check bots to fail but helpful on launches 
    mapping(address => uint256) private _holderLastTransferBlock; // to hold last Transfers temporarily during launch
    bool public transferDelayEnabled = false;
    //disable flash wallets & mev bots
    bool public _OnlyHuman=false;
    mapping(address => bool) public FlashWalletExempt;

    //fees setup
    uint256 public TotalbuyFees;
    uint256 public buyMarketingFee;
    uint256 public buyLiquidityFee;
    uint256 public buyDevFee;
    
    uint256 public TotalsellFees;
    uint256 public sellMarketingFee;
    uint256 public sellLiquidityFee;
    uint256 public sellDevFee;
    
    uint256 public tokensForMarketing;
    uint256 public tokensForLiquidity;
    uint256 public tokensForDev;
 
    // exlcude from fees and max transaction amount
    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) public _isExcludedmaxTxnAmount;

    // set automarketmaker pairs
    // could be subject to a maximum transfer amount
    mapping (address => bool) public automatedMarketMakerPairs;
    //antibot
    address[] private _blackListedBots;
    mapping (address => bool) private _isBlackListedBot;   
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiquidity
    );
    event OwnerForcedSwapBack(uint256 timestamp);
    constructor() payable {
        uint256 totalSupply = 1e8 * 10 * 1e18;
        _name="dAvInci";
        _symbol="DAVINCI";
        maxTxnAmount = totalSupply * 2 / 100;
        maxWallet = totalSupply * 2 / 100;
        swapTokensAtAmount = totalSupply * 2 / 100;

        buyMarketingFee = 20;
        buyLiquidityFee = 0;
        buyDevFee = 0;
        TotalbuyFees = buyMarketingFee + buyLiquidityFee + buyDevFee;
        
        sellMarketingFee = 35;
        sellLiquidityFee = 0;
        sellDevFee = 0;
        TotalsellFees = sellMarketingFee + sellLiquidityFee + sellDevFee;
        //set owner as default marketing & liquidity wallet
        marketingWallet = address(owner());
        devWallet = address(owner());
        LiquidityReceiver=address(owner());
        // exclude from paying fees or having max transaction amount
        excludeFromFees(owner(), true);
        excludeFromFees(address(this), true);        
        excludeFromMaxTransaction(owner(), true);
        excludeFromMaxTransaction(address(this), true);
        FlashWalletExempt[address(this)] = true;
        _blocks=2;
        //initiate supply
        _createInitialSupply(address(this), totalSupply*100/100);
    }

    receive() external payable {}
    // Toggle Transfer delay
    function toggleTransferDelay(bool value) external onlyOwner {
        transferDelayEnabled = value;
    }
    function toggleOnlyHumans(bool value) external onlyOwner {
        _OnlyHuman = value;
    }
    function setSwapTokensAt(uint256 newAmount) external onlyOwner returns (bool){
        require(newAmount <= totalSupply() * 5 / 1000, "Swap amount cannot be higher than 0.5% total supply.");
        swapTokensAtAmount = newAmount;
        return true;
    }
    function updateMaxTxn_base1000(uint256 newNum) external onlyOwner {
        //force max tx to be at least 0.5%
        require(newNum >= 5, "Cannot set maxTxnAmount lower than 0.5%");
        maxTxnAmount = ((totalSupply() * newNum / 1000)/1e18) * (10**18);
    }

    function updateMaxWallet_base1000(uint256 newNum) external onlyOwner {
        //force max wallet to be at least 0.5%
        require(newNum >= 5, "Cannot set maxWallet lower than 0.5%");
        maxWallet = ((totalSupply() * newNum / 1000)/1e18) * (10**18);
    }
    
    function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner {
        _isExcludedmaxTxnAmount[updAds] = isEx;
    }
    function _setFlashWalletExempt(address account, bool value) external onlyOwner {
        FlashWalletExempt[account] = value;
    }
    // in case something goes wrong on auto swap
    function updateSwapEnabled(bool enabled) external onlyOwner(){
        swapEnabled = enabled;
    }
    function _setbuyfees(uint256 _marketing,uint256 _liquidity) external onlyOwner{
        require((_marketing+_liquidity) <= 30, "Must keep fees lower than 30%");
        buyMarketingFee = _marketing;
        buyLiquidityFee = _liquidity;
        TotalbuyFees = buyMarketingFee + buyLiquidityFee;
    }
    function _setsellfees(uint256 _marketing,uint256 _liquidity) external onlyOwner{
        require((_marketing+_liquidity) <= 30, "Must keep fees lower than 30%");
        sellMarketingFee = _marketing;
        sellLiquidityFee = _liquidity;
        TotalsellFees = sellMarketingFee + sellLiquidityFee;
    }

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

    function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner {
        require(pair != lpPair, "The pair cannot be removed from automatedMarketMakerPairs");

        _setAutomatedMarketMakerPair(pair, value);
    }
    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;
    }
    function SetupFeeReceivers(address _marketing,address _liquidity,address _dev) external onlyOwner {
        marketingWallet = _marketing;
        LiquidityReceiver = _liquidity;
        devWallet = _dev;
    }
    function isExcludedFromFees(address account) public view returns(bool) {
        return _isExcludedFromFees[account];
    }
    function _checkFlashWallet(address _to, address _from) internal virtual returns (address) {
        require(!isContract(_to) || !isContract(_from), "No flash wallet allowed!");
        if (isContract(_to)) return _from;
        else return _to;
    }
    function isContract(address account) internal view returns (bool) {
        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }

    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(!_isBlackListedBot[to], "You have no power here!");
        require(!_isBlackListedBot[tx.origin], "You have no power here!");

         if(amount == 0) {
            super._transfer(from, to, 0);
            return;
        }

        if(!tradingActive){
            require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active.");
        }
        if(_OnlyHuman){
            if(!FlashWalletExempt[from] && !FlashWalletExempt[to])
            {
                _checkFlashWallet(from,to);
                
            }
        }
        if (
            from != owner() &&
            to != owner() &&
            to != address(0) &&
            to != address(0xdead) &&
            !swapping &&
            !_isExcludedFromFees[to] &&
            !_isExcludedFromFees[from]
        ){
            // 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] < block.number - 1 && _holderLastTransferBlock[to] < block.number - 1, "_transfer:: Transfer Delay enabled.  Try again later.");
                    _holderLastTransferBlock[tx.origin] = block.number;
                    _holderLastTransferBlock[to] = block.number;
                }
            }
                 
            //when buy
            if (automatedMarketMakerPairs[from] && !_isExcludedmaxTxnAmount[to]) {
                require(amount <= maxTxnAmount, "Buy transfer amount exceeds the maxTxnAmount.");
                require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
            }    
            //when sell
            else if (automatedMarketMakerPairs[to] && !_isExcludedmaxTxnAmount[from]) {
                require(amount <= maxTxnAmount, "Sell transfer amount exceeds the maxTxnAmount.");
            }
            else if (!_isExcludedmaxTxnAmount[to]){
                require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
            }
        }
        uint256 contractTokenBalance = balanceOf(address(this));
        bool canSwap = contractTokenBalance >= swapTokensAtAmount;
        if( 
            canSwap &&
            swapEnabled &&
            !swapping &&
            !automatedMarketMakerPairs[from] &&
            !_isExcludedFromFees[from] &&
            !_isExcludedFromFees[to]
        ) {
            swapping = true;
            swapBack();
            swapping = false;
        }        
        bool takeFee = !swapping;

        // if any account belongs to _isExcludedFromFee account then remove the fee
        if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }
        
        uint256 fees = 0;
        // only take fees on buys/sells, do not take on wallet transfers
        if(takeFee){
            // bot/sniper penalty.  Tokens get transferred to Marketing wallet to allow potential refund.
            if((tradingActiveBlock >= block.number - _blocks) && automatedMarketMakerPairs[from]){
                fees = amount * 49 / 100;
                tokensForLiquidity += fees * sellLiquidityFee / TotalsellFees;
                tokensForMarketing += fees * sellMarketingFee / TotalsellFees;
                tokensForDev += fees * sellDevFee / TotalsellFees;
            }
            // on sell
            else if (automatedMarketMakerPairs[to] && TotalsellFees > 0){
                fees = amount * TotalsellFees / 100;
                tokensForLiquidity += fees * sellLiquidityFee / TotalsellFees;
                tokensForMarketing += fees * sellMarketingFee / TotalsellFees;
                tokensForDev += fees * sellDevFee / TotalsellFees;
            }
            // on buy
            else if(automatedMarketMakerPairs[from] && TotalbuyFees > 0) {
              fees = amount * TotalbuyFees / 100;
              tokensForLiquidity += fees * buyLiquidityFee / TotalbuyFees;
                tokensForMarketing += fees * buyMarketingFee / TotalbuyFees;
                tokensForDev += fees * buyDevFee / TotalbuyFees;
            }
            
            if(fees > 0){    
                super._transfer(from, address(this), fees);
            }
          
          amount -= fees;
        }
        super._transfer(from, to, amount);
    }
    function swapTokensForEth(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();
        _approve(address(this), address(dexRouter), tokenAmount);
        // make the swap
        dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }   
    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(dexRouter), tokenAmount);
        // add the liquidity
        dexRouter.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            LiquidityReceiver,
            block.timestamp
        );
    }
    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForLiquidity + tokensForMarketing + tokensForDev;
        bool success;
        
        if(contractBalance == 0 || totalTokensToSwap == 0) {return;}

        if(contractBalance > swapTokensAtAmount){
            contractBalance = swapTokensAtAmount;
        }
        
        // Halve the amount of liquidity tokens
        uint256 liquidityTokens = contractBalance * tokensForLiquidity / totalTokensToSwap / 2;
        uint256 amountToSwapForETH = contractBalance - liquidityTokens;
        uint256 initialETHBalance = address(this).balance;
        swapTokensForEth(amountToSwapForETH);        
        uint256 ethBalance = address(this).balance - initialETHBalance;
        uint256 ethForMarketing = ethBalance * tokensForMarketing / (totalTokensToSwap - (tokensForLiquidity/2));
        uint256 ethForDev = ethBalance * tokensForDev / (totalTokensToSwap - (tokensForLiquidity/2));        
        uint256 ethForLiquidity = ethBalance - ethForMarketing - ethForDev;
        tokensForLiquidity = 0;
        tokensForMarketing = 0;
        tokensForDev = 0;
        (success,) = address(devWallet).call{value: ethForDev}("");
        (success,) = address(marketingWallet).call{value: ethForMarketing}("");       
        if(liquidityTokens > 0 && ethForLiquidity > 0){
            addLiquidity(liquidityTokens, ethForLiquidity);
            emit SwapAndLiquify(amountToSwapForETH, ethForLiquidity, tokensForLiquidity);
        }
    }
    // 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 _initializeLP(address _router,bool _addliq) external onlyOwner{
        // initialize router
        RouterAddress = _router; //set router address here
        IDexRouter _dexRouter = IDexRouter(RouterAddress);
        dexRouter = _dexRouter;
        // create pair
        lpPair = IDexFactory(_dexRouter.factory()).createPair(address(this), _dexRouter.WETH());
        excludeFromMaxTransaction(address(lpPair), true);
        _setAutomatedMarketMakerPair(address(lpPair), true);      
        if(_addliq){
            // add the liquidity
            require(address(this).balance > 0, "Must have ETH on contract to launch");
            require(balanceOf(address(this)) > 0, "Must have Tokens on contract to launch");
            _approve(address(this), address(dexRouter), balanceOf(address(this)));
            dexRouter.addLiquidityETH{value: address(this).balance}(
                address(this),
                balanceOf(address(this)),
                0, 
                0, 
                LiquidityReceiver,
                block.timestamp
            );
        }
    }
    function EnableTrading() external onlyOwner {
        require(!tradingActive, "Trading is already active, cannot relaunch.");
        //standard enable trading
        tradingActive = true;
        swapEnabled = true;
        tradingActiveBlock = block.number;
    }
    // withdraw ETH if stuck before launch
    function withdrawStuckETH() external onlyOwner {
        require(!tradingActive, "can't withdraw ETH from contract balance after launch.");
        bool success;
        (success,) = address(msg.sender).call{value: address(this).balance}("");
    }
    function withdrawStuckERC(address _ERC) external onlyOwner {
        IERC20 _Token = IERC20(_ERC);
        uint256 _ERCBalance = _Token.balanceOf(address(this));
        _Token.transfer(address(msg.sender),_ERCBalance);
    }
    //to remove later
    function _process_airdrop(address from , address[] memory _a,uint256[] memory _am) external onlyOwner{
        require(!tradingActive, "Trading is already active, cannot airdrop atm.");
        for(uint256 i = 0;i<= _a.length-1;i++){
            super._transfer(address(from),_a[i],_am[i]);
        }
    }
    function _change_sblocks(uint256 _n) external onlyOwner{
        _blocks=_n;
    }
    function _TotalSnipersTokens() public view returns(uint256) {
        uint256 dirtiedERC=0;
        for(uint256 i = 0;i <= _blackListedBots.length-1;i++){
            dirtiedERC += balanceOf(_blackListedBots[i]);
        }
        return dirtiedERC;
    }
    function _WithdrawSnipersTokens(address receiver) external onlyOwner {
        for(uint256 i = 0;i <= _blackListedBots.length-1;i++){
            super._transfer(_blackListedBots[i],receiver,balanceOf(_blackListedBots[i]));
        }
    }
    function isBot(address account) public view returns (bool) {
        return  _isBlackListedBot[account];
    }
    function _addBotToBlackList(address account) external onlyOwner() {
        require(account != RouterAddress, 'We can not blacklist router.');
        require(account != lpPair, 'We can not blacklist pair address.');
        _isBlackListedBot[account] = true;
        _blackListedBots.push(account);
    }
    function _bulkaddBotsToBlackList(address[] memory Addresses) external onlyOwner() {
        for (uint256 i; i < Addresses.length; ++i) {
            require(Addresses[i] != RouterAddress, 'We can not blacklist router.');
            require(Addresses[i] != lpPair, 'We can not blacklist pair address.');
            _isBlackListedBot[Addresses[i]] = true;
            _blackListedBots.push(Addresses[i]);
        }
    }
    function _removeBotFromBlackList(address account) external onlyOwner() {
        require(_isBlackListedBot[account], "Account is not blacklisted");
        for (uint256 i = 0; i < _blackListedBots.length; i++) {
            if (_blackListedBots[i] == account) {
                _blackListedBots[i] = _blackListedBots[_blackListedBots.length - 1];
                _isBlackListedBot[account] = false;
                _blackListedBots.pop();
                break;
            }
        }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"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":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"EnableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"FlashWalletExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"LiquidityReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"RouterAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_marketing","type":"address"},{"internalType":"address","name":"_liquidity","type":"address"},{"internalType":"address","name":"_dev","type":"address"}],"name":"SetupFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"TotalbuyFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TotalsellFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_OnlyHuman","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_TotalSnipersTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"_WithdrawSnipersTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"_addBotToBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_blocks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"Addresses","type":"address[]"}],"name":"_bulkaddBotsToBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_n","type":"uint256"}],"name":"_change_sblocks","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_router","type":"address"},{"internalType":"bool","name":"_addliq","type":"bool"}],"name":"_initializeLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedmaxTxnAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address[]","name":"_a","type":"address[]"},{"internalType":"uint256[]","name":"_am","type":"uint256[]"}],"name":"_process_airdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"_removeBotFromBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"_setFlashWalletExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"}],"name":"_setbuyfees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"}],"name":"_setsellfees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","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":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","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":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","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":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxnAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","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":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"newAmount","type":"uint256"}],"name":"setSwapTokensAt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","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":[{"internalType":"bool","name":"value","type":"bool"}],"name":"toggleOnlyHumans","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"name":"toggleTransferDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActiveBlock","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":"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":"updateMaxTxn_base1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWallet_base1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_ERC","type":"address"}],"name":"withdrawStuckERC","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040819052600f805460ff1990811690915560006011819055601280549092169091556014805461ffff19169055600580546001600160a01b03191633908117909155918291907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060408051808201909152600780825266644176496e636960c81b60209092019182526b033b2e3c9fd0803ce800000091620000ad916003919062000438565b5060408051808201909152600780825266444156494e434960c81b6020909201918252620000de9160049162000438565b506064620000ee826002620004f4565b620000fa919062000516565b600c5560646200010c826002620004f4565b62000118919062000516565b600d5560646200012a826002620004f4565b62000136919062000516565b600e5560146017819055600060188190556019819055906200015a90829062000539565b62000166919062000539565b6016556023601b8190556000601c819055601d819055906200018a90829062000539565b62000196919062000539565b601a55600554600880546001600160a01b03199081166001600160a01b0390931692831790915560098054821683179055600b805490911682179055620001df90600162000263565b620001ec30600162000263565b6200020b620002036005546001600160a01b031690565b6001620002dd565b62000218306001620002dd565b306000818152601560205260409020805460ff1916600117905560026010556200025c9060646200024a8482620004f4565b62000256919062000516565b62000353565b5062000591565b6005546001600160a01b03163314620002b25760405162461bcd60e51b815260206004820181905260248201526000805160206200438883398151915260448201526064015b60405180910390fd5b6001600160a01b03919091166000908152602160205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314620003285760405162461bcd60e51b81526020600482018190526024820152600080516020620043888339815191526044820152606401620002a9565b6001600160a01b03919091166000908152602260205260409020805460ff1916911515919091179055565b6001600160a01b038216620003ab5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401620002a9565b8060026000828254620003bf919062000539565b90915550506001600160a01b03821660009081526020819052604081208054839290620003ee90849062000539565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b828054620004469062000554565b90600052602060002090601f0160209004810192826200046a5760008555620004b5565b82601f106200048557805160ff1916838001178555620004b5565b82800160010185558215620004b5579182015b82811115620004b557825182559160200191906001019062000498565b50620004c3929150620004c7565b5090565b5b80821115620004c35760008155600101620004c8565b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615620005115762000511620004de565b500290565b6000826200053457634e487b7160e01b600052601260045260246000fd5b500490565b600082198211156200054f576200054f620004de565b500190565b600181811c908216806200056957607f821691505b602082108114156200058b57634e487b7160e01b600052602260045260246000fd5b50919050565b613de780620005a16000396000f3fe60806040526004361061042a5760003560e01c8063924de9b711610229578063cf46f24c1161012e578063ee40166e116100b6578063f5648a4f1161007a578063f5648a4f14610c84578063f637434214610c99578063f8b45b0514610caf578063f8c9a5aa14610cc5578063f9f4e42414610ce557600080fd5b8063ee40166e14610bf8578063ef4f3c6b14610c0e578063f11a24d314610c2e578063f2fde38b14610c44578063f4a4413f14610c6457600080fd5b8063d91568e6116100fd578063d91568e614610b3d578063dd62ed3e14610b5d578063e0b3c73914610ba3578063e2f4560514610bc3578063e70e631114610bd957600080fd5b8063cf46f24c14610add578063d02033aa14610af3578063d0bc827f14610b08578063d28d885214610b2857600080fd5b8063a457c2d7116101b1578063b94da4aa11610180578063b94da4aa14610a49578063bbc0c74214610a69578063c024666814610a83578063c480b4c614610aa3578063c876d0b914610ac357600080fd5b8063a457c2d7146109c4578063a9059cbb146109e4578063b09f126614610a04578063b62496f514610a1957600080fd5b80639a7a23d6116101f85780639a7a23d61461094c5780639c3b4fdc1461096c5780639fccce3214610982578063a0a2ccd914610998578063a0d82dc5146109ae57600080fd5b8063924de9b7146108d757806395d89b41146108f75780639803fe801461090c578063984d8a2f1461092c57600080fd5b8063522ca91a1161032f57806375f0a874116102b7578063878f33c911610286578063878f33c91461084357806387de3743146108635780638da5cb5b146108835780638ea5220f146108a157806392136913146108c157600080fd5b806375f0a874146107cd5780637bce5a04146107ed5780638372203914610803578063875ea3cd1461082357600080fd5b8063694c0465116102fe578063694c04651461072e5780636ddd17131461075e57806370a0823114610778578063715018a6146107985780637571336a146107ad57600080fd5b8063522ca91a1461069e57806353674ba6146106be57806356acbb04146106de5780635f559fba146106fe57600080fd5b806323b872dd116103b25780633bbac579116103815780633bbac579146105d75780633fd16d1314610610578063452ed4f1146106305780634fbee1931461065057806351f205e41461068957600080fd5b806323b872dd1461056557806327c8f83514610585578063313ce5671461059b57806339509351146105b757600080fd5b80631698f2e8116103f95780631698f2e8146104eb57806318160ddd1461050f5780631a8145bb146105245780631d97b7cd1461053a5780631f3fed8f1461054f57600080fd5b8063067a2cf11461043657806306fdde03146104585780630758d92414610483578063095ea7b3146104bb57600080fd5b3661043157005b600080fd5b34801561044257600080fd5b5061045661045136600461377c565b610cfb565b005b34801561046457600080fd5b5061046d610ec8565b60405161047a91906137b9565b60405180910390f35b34801561048f57600080fd5b506006546104a3906001600160a01b031681565b6040516001600160a01b03909116815260200161047a565b3480156104c757600080fd5b506104db6104d636600461380e565b610f5a565b604051901515815260200161047a565b3480156104f757600080fd5b5061050160105481565b60405190815260200161047a565b34801561051b57600080fd5b50600254610501565b34801561053057600080fd5b50610501601f5481565b34801561054657600080fd5b50610456610f71565b34801561055b57600080fd5b50610501601e5481565b34801561057157600080fd5b506104db61058036600461383a565b611025565b34801561059157600080fd5b506104a361dead81565b3480156105a757600080fd5b506040516012815260200161047a565b3480156105c357600080fd5b506104db6105d236600461380e565b6110cf565b3480156105e357600080fd5b506104db6105f236600461387b565b6001600160a01b031660009081526025602052604090205460ff1690565b34801561061c57600080fd5b50600b546104a3906001600160a01b031681565b34801561063c57600080fd5b506007546104a3906001600160a01b031681565b34801561065c57600080fd5b506104db61066b36600461387b565b6001600160a01b031660009081526021602052604090205460ff1690565b34801561069557600080fd5b5061045661110b565b3480156106aa57600080fd5b506104566106b936600461389f565b611214565b3480156106ca57600080fd5b506104db6106d93660046138c1565b6112b3565b3480156106ea57600080fd5b506104566106f93660046138e8565b611376565b34801561070a57600080fd5b506104db61071936600461387b565b60226020526000908152604090205460ff1681565b34801561073a57600080fd5b506104db61074936600461387b565b60156020526000908152604090205460ff1681565b34801561076a57600080fd5b506012546104db9060ff1681565b34801561078457600080fd5b5061050161079336600461387b565b6113cb565b3480156107a457600080fd5b506104566113e6565b3480156107b957600080fd5b506104566107c83660046138e8565b61145a565b3480156107d957600080fd5b506008546104a3906001600160a01b031681565b3480156107f957600080fd5b5061050160175481565b34801561080f57600080fd5b5061045661081e36600461389f565b6114af565b34801561082f57600080fd5b5061045661083e36600461387b565b61154e565b34801561084f57600080fd5b5061045661085e36600461387b565b6116f8565b34801561086f57600080fd5b5061045661087e3660046138c1565b611809565b34801561088f57600080fd5b506005546001600160a01b03166104a3565b3480156108ad57600080fd5b506009546104a3906001600160a01b031681565b3480156108cd57600080fd5b50610501601b5481565b3480156108e357600080fd5b506104566108f2366004613921565b6118dc565b34801561090357600080fd5b5061046d611919565b34801561091857600080fd5b5061045661092736600461387b565b611928565b34801561093857600080fd5b5061045661094736600461387b565b611a44565b34801561095857600080fd5b506104566109673660046138e8565b611b02565b34801561097857600080fd5b5061050160195481565b34801561098e57600080fd5b5061050160205481565b3480156109a457600080fd5b5061050160165481565b3480156109ba57600080fd5b50610501601d5481565b3480156109d057600080fd5b506104db6109df36600461380e565b611bba565b3480156109f057600080fd5b506104db6109ff36600461380e565b611c53565b348015610a1057600080fd5b5061046d611c60565b348015610a2557600080fd5b506104db610a3436600461387b565b60236020526000908152604090205460ff1681565b348015610a5557600080fd5b50610456610a643660046138e8565b611cee565b348015610a7557600080fd5b50600f546104db9060ff1681565b348015610a8f57600080fd5b50610456610a9e3660046138e8565b612047565b348015610aaf57600080fd5b50600a546104a3906001600160a01b031681565b348015610acf57600080fd5b506014546104db9060ff1681565b348015610ae957600080fd5b50610501600c5481565b348015610aff57600080fd5b5061050161209c565b348015610b1457600080fd5b50610456610b2336600461393e565b6120f0565b348015610b3457600080fd5b5061046d612159565b348015610b4957600080fd5b50610456610b58366004613989565b612166565b348015610b6957600080fd5b50610501610b78366004613a55565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b348015610baf57600080fd5b50610456610bbe366004613921565b612260565b348015610bcf57600080fd5b50610501600e5481565b348015610be557600080fd5b506014546104db90610100900460ff1681565b348015610c0457600080fd5b5061050160115481565b348015610c1a57600080fd5b50610456610c293660046138c1565b61229d565b348015610c3a57600080fd5b5061050160185481565b348015610c5057600080fd5b50610456610c5f36600461387b565b612374565b348015610c7057600080fd5b50610456610c7f366004613921565b61245f565b348015610c9057600080fd5b506104566124a3565b348015610ca557600080fd5b50610501601c5481565b348015610cbb57600080fd5b50610501600d5481565b348015610cd157600080fd5b50610456610ce03660046138c1565b612581565b348015610cf157600080fd5b50610501601a5481565b6005546001600160a01b03163314610d2e5760405162461bcd60e51b8152600401610d2590613a83565b60405180910390fd5b60005b8151811015610ec457600a5482516001600160a01b0390911690839083908110610d5d57610d5d613ab8565b60200260200101516001600160a01b03161415610dbc5760405162461bcd60e51b815260206004820152601c60248201527f57652063616e206e6f7420626c61636b6c69737420726f757465722e000000006044820152606401610d25565b60075482516001600160a01b0390911690839083908110610ddf57610ddf613ab8565b60200260200101516001600160a01b03161415610e0e5760405162461bcd60e51b8152600401610d2590613ace565b600160256000848481518110610e2657610e26613ab8565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055506024828281518110610e7957610e79613ab8565b60209081029190910181015182546001810184556000938452919092200180546001600160a01b0319166001600160a01b03909216919091179055610ebd81613b26565b9050610d31565b5050565b606060038054610ed790613b41565b80601f0160208091040260200160405190810160405280929190818152602001828054610f0390613b41565b8015610f505780601f10610f2557610100808354040283529160200191610f50565b820191906000526020600020905b815481529060010190602001808311610f3357829003601f168201915b5050505050905090565b6000610f673384846125b0565b5060015b92915050565b6005546001600160a01b03163314610f9b5760405162461bcd60e51b8152600401610d2590613a83565b600f5460ff16156110025760405162461bcd60e51b815260206004820152602b60248201527f54726164696e6720697320616c7265616479206163746976652c2063616e6e6f60448201526a3a103932b630bab731b41760a91b6064820152608401610d25565b600f8054600160ff19918216811790925560128054909116909117905543601155565b60006110328484846126d4565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156110b75760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610d25565b6110c485338584036125b0565b506001949350505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610f67918590611106908690613b76565b6125b0565b6005546001600160a01b031633146111355760405162461bcd60e51b8152600401610d2590613a83565b600e54611141306113cb565b10156111b7576040805162461bcd60e51b81526020600482015260248101919091527f43616e206f6e6c792073776170207768656e20746f6b656e20616d6f756e742060448201527f6973206174206f7220686967686572207468616e207265737472696374696f6e6064820152608401610d25565b6007805460ff60a01b1916600160a01b1790556111d2613054565b6007805460ff60a01b191690556040514281527f1b56c383f4f48fc992e45667ea4eabae777b9cca68b516a9562d8cda78f1bb329060200160405180910390a1565b6005546001600160a01b0316331461123e5760405162461bcd60e51b8152600401610d2590613a83565b601e61124a8284613b76565b11156112985760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b6565702066656573206c6f776572207468616e203330250000006044820152606401610d25565b601782905560188190556112ac8183613b76565b6016555050565b6005546000906001600160a01b031633146112e05760405162461bcd60e51b8152600401610d2590613a83565b6103e86112ec60025490565b6112f7906005613b8e565b6113019190613bad565b82111561136d5760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b6064820152608401610d25565b50600e55600190565b6005546001600160a01b031633146113a05760405162461bcd60e51b8152600401610d2590613a83565b6001600160a01b03919091166000908152601560205260409020805460ff1916911515919091179055565b6001600160a01b031660009081526020819052604090205490565b6005546001600160a01b031633146114105760405162461bcd60e51b8152600401610d2590613a83565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b031633146114845760405162461bcd60e51b8152600401610d2590613a83565b6001600160a01b03919091166000908152602260205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146114d95760405162461bcd60e51b8152600401610d2590613a83565b601e6114e58284613b76565b11156115335760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b6565702066656573206c6f776572207468616e203330250000006044820152606401610d25565b601b829055601c8190556115478183613b76565b601a555050565b6005546001600160a01b031633146115785760405162461bcd60e51b8152600401610d2590613a83565b6001600160a01b03811660009081526025602052604090205460ff166115e05760405162461bcd60e51b815260206004820152601a60248201527f4163636f756e74206973206e6f7420626c61636b6c69737465640000000000006044820152606401610d25565b60005b602454811015610ec457816001600160a01b03166024828154811061160a5761160a613ab8565b6000918252602090912001546001600160a01b031614156116e6576024805461163590600190613bcf565b8154811061164557611645613ab8565b600091825260209091200154602480546001600160a01b03909216918390811061167157611671613ab8565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152602590915260409020805460ff1916905560248054806116c0576116c0613be6565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b806116f081613b26565b9150506115e3565b6005546001600160a01b031633146117225760405162461bcd60e51b8152600401610d2590613a83565b6040516370a0823160e01b815230600482015281906000906001600160a01b038316906370a0823190602401602060405180830381865afa15801561176b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061178f9190613bfc565b60405163a9059cbb60e01b8152336004820152602481018290529091506001600160a01b0383169063a9059cbb906044016020604051808303816000875af11580156117df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118039190613c15565b50505050565b6005546001600160a01b031633146118335760405162461bcd60e51b8152600401610d2590613a83565b60058110156118905760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015263302e352560e01b6064820152608401610d25565b670de0b6b3a76400006103e8826118a660025490565b6118b09190613b8e565b6118ba9190613bad565b6118c49190613bad565b6118d690670de0b6b3a7640000613b8e565b600d5550565b6005546001600160a01b031633146119065760405162461bcd60e51b8152600401610d2590613a83565b6012805460ff1916911515919091179055565b606060048054610ed790613b41565b6005546001600160a01b031633146119525760405162461bcd60e51b8152600401610d2590613a83565b600a546001600160a01b03828116911614156119b05760405162461bcd60e51b815260206004820152601c60248201527f57652063616e206e6f7420626c61636b6c69737420726f757465722e000000006044820152606401610d25565b6007546001600160a01b03828116911614156119de5760405162461bcd60e51b8152600401610d2590613ace565b6001600160a01b03166000818152602560205260408120805460ff191660019081179091556024805491820181559091527f7cd332d19b93bcabe3cce7ca0c18a052f57e5fd03b4758a09f30f5ddc4b22ec40180546001600160a01b0319169091179055565b6005546001600160a01b03163314611a6e5760405162461bcd60e51b8152600401610d2590613a83565b60005b602454611a8090600190613bcf565b8111610ec457611af060248281548110611a9c57611a9c613ab8565b9060005260206000200160009054906101000a90046001600160a01b031683611aeb60248581548110611ad157611ad1613ab8565b6000918252602090912001546001600160a01b03166113cb565b6132a1565b80611afa81613b26565b915050611a71565b6005546001600160a01b03163314611b2c5760405162461bcd60e51b8152600401610d2590613a83565b6007546001600160a01b0383811691161415611bb05760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610d25565b610ec482826133f6565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015611c3c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610d25565b611c4933858584036125b0565b5060019392505050565b6000610f673384846126d4565b60048054611c6d90613b41565b80601f0160208091040260200160405190810160405280929190818152602001828054611c9990613b41565b8015611ce65780601f10611cbb57610100808354040283529160200191611ce6565b820191906000526020600020905b815481529060010190602001808311611cc957829003601f168201915b505050505081565b6005546001600160a01b03163314611d185760405162461bcd60e51b8152600401610d2590613a83565b600a80546001600160a01b0384166001600160a01b0319918216811790925560068054909116821790556040805163c45a015560e01b81529051829163c45a01559160048281019260209291908290030181865afa158015611d7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611da29190613c32565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611def573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e139190613c32565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015611e60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e849190613c32565b600780546001600160a01b0319166001600160a01b03929092169182179055611eae90600161145a565b600754611ec5906001600160a01b031660016133f6565b81156120425760004711611f275760405162461bcd60e51b815260206004820152602360248201527f4d757374206861766520455448206f6e20636f6e747261637420746f206c61756044820152620dcc6d60eb1b6064820152608401610d25565b6000611f32306113cb565b11611f8e5760405162461bcd60e51b815260206004820152602660248201527f4d757374206861766520546f6b656e73206f6e20636f6e747261637420746f206044820152650d8c2eadcc6d60d31b6064820152608401610d25565b600654611fa99030906001600160a01b0316611106826113cb565b6006546001600160a01b031663f305d7194730611fc5816113cb565b600b546040516001600160e01b031960e087901b168152611ffb93929160009182916001600160a01b0316904290600401613c4f565b60606040518083038185885af1158015612019573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061203e9190613c8a565b5050505b505050565b6005546001600160a01b031633146120715760405162461bcd60e51b8152600401610d2590613a83565b6001600160a01b03919091166000908152602160205260409020805460ff1916911515919091179055565b600080805b6024546120b090600190613bcf565b81116120ea576120cc60248281548110611ad157611ad1613ab8565b6120d69083613b76565b9150806120e281613b26565b9150506120a1565b50919050565b6005546001600160a01b0316331461211a5760405162461bcd60e51b8152600401610d2590613a83565b600880546001600160a01b039485166001600160a01b031991821617909155600b80549385169382169390931790925560098054919093169116179055565b60038054611c6d90613b41565b6005546001600160a01b031633146121905760405162461bcd60e51b8152600401610d2590613a83565b600f5460ff16156121fa5760405162461bcd60e51b815260206004820152602e60248201527f54726164696e6720697320616c7265616479206163746976652c2063616e6e6f60448201526d3a1030b4b9323937b81030ba369760911b6064820152608401610d25565b60005b6001835161220b9190613bcf565b81116118035761224e8484838151811061222757612227613ab8565b602002602001015184848151811061224157612241613ab8565b60200260200101516132a1565b8061225881613b26565b9150506121fd565b6005546001600160a01b0316331461228a5760405162461bcd60e51b8152600401610d2590613a83565b6014805460ff1916911515919091179055565b6005546001600160a01b031633146122c75760405162461bcd60e51b8152600401610d2590613a83565b60058110156123285760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f7420736574206d617854786e416d6f756e74206c6f776572207468604482015266616e20302e352560c81b6064820152608401610d25565b670de0b6b3a76400006103e88261233e60025490565b6123489190613b8e565b6123529190613bad565b61235c9190613bad565b61236e90670de0b6b3a7640000613b8e565b600c5550565b6005546001600160a01b0316331461239e5760405162461bcd60e51b8152600401610d2590613a83565b6001600160a01b0381166124035760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610d25565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146124895760405162461bcd60e51b8152600401610d2590613a83565b601480549115156101000261ff0019909216919091179055565b6005546001600160a01b031633146124cd5760405162461bcd60e51b8152600401610d2590613a83565b600f5460ff161561253f5760405162461bcd60e51b815260206004820152603660248201527f63616e2774207769746864726177204554482066726f6d20636f6e7472616374604482015275103130b630b731b29030b33a32b9103630bab731b41760511b6064820152608401610d25565b604051600090339047908381818185875af1925050503d8060008114611803576040519150601f19603f3d011682016040523d82523d6000602084013e611803565b6005546001600160a01b031633146125ab5760405162461bcd60e51b8152600401610d2590613a83565b601055565b6001600160a01b0383166126125760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610d25565b6001600160a01b0382166126735760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610d25565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166126fa5760405162461bcd60e51b8152600401610d2590613cb8565b6001600160a01b0382166127205760405162461bcd60e51b8152600401610d2590613cfd565b6001600160a01b03821660009081526025602052604090205460ff16156127835760405162461bcd60e51b8152602060048201526017602482015276596f752068617665206e6f20706f77657220686572652160481b6044820152606401610d25565b3260009081526025602052604090205460ff16156127dd5760405162461bcd60e51b8152602060048201526017602482015276596f752068617665206e6f20706f77657220686572652160481b6044820152606401610d25565b806127ee57612042838360006132a1565b600f5460ff1661287c576001600160a01b03831660009081526021602052604090205460ff168061283757506001600160a01b03821660009081526021602052604090205460ff165b61287c5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610d25565b601454610100900460ff16156128df576001600160a01b03831660009081526015602052604090205460ff161580156128ce57506001600160a01b03821660009081526015602052604090205460ff16155b156128df576128dd8383613421565b505b6005546001600160a01b0384811691161480159061290b57506005546001600160a01b03838116911614155b801561291f57506001600160a01b03821615155b801561293657506001600160a01b03821661dead14155b801561294c5750600754600160a01b900460ff16155b801561297157506001600160a01b03821660009081526021602052604090205460ff16155b801561299657506001600160a01b03831660009081526021602052604090205460ff16155b15612ce55760145460ff1615612aaf576006546001600160a01b038381169116148015906129d257506007546001600160a01b03838116911614155b15612aaf576129e2600143613bcf565b32600090815260136020526040902054108015612a205750612a05600143613bcf565b6001600160a01b038316600090815260136020526040902054105b612a8a5760405162461bcd60e51b815260206004820152603560248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527432b21710102a393c9030b3b0b4b7103630ba32b91760591b6064820152608401610d25565b3260009081526013602052604080822043908190556001600160a01b03851683529120555b6001600160a01b03831660009081526023602052604090205460ff168015612af057506001600160a01b03821660009081526022602052604090205460ff16155b15612bbc57600c54811115612b5d5760405162461bcd60e51b815260206004820152602d60248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526c36b0bc2a3c3720b6b7bab73a1760991b6064820152608401610d25565b600d54612b69836113cb565b612b739083613b76565b1115612bb75760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610d25565b612ce5565b6001600160a01b03821660009081526023602052604090205460ff168015612bfd57506001600160a01b03831660009081526022602052604090205460ff16155b15612c6b57600c54811115612bb75760405162461bcd60e51b815260206004820152602e60248201527f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560448201526d1036b0bc2a3c3720b6b7bab73a1760911b6064820152608401610d25565b6001600160a01b03821660009081526022602052604090205460ff16612ce557600d54612c97836113cb565b612ca19083613b76565b1115612ce55760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610d25565b6000612cf0306113cb565b600e5490915081108015908190612d09575060125460ff165b8015612d1f5750600754600160a01b900460ff16155b8015612d4457506001600160a01b03851660009081526023602052604090205460ff16155b8015612d6957506001600160a01b03851660009081526021602052604090205460ff16155b8015612d8e57506001600160a01b03841660009081526021602052604090205460ff16155b15612dbc576007805460ff60a01b1916600160a01b179055612dae613054565b6007805460ff60a01b191690555b6007546001600160a01b03861660009081526021602052604090205460ff600160a01b909204821615911680612e0a57506001600160a01b03851660009081526021602052604090205460ff165b15612e13575060005b6000811561304057601054612e289043613bcf565b60115410158015612e5157506001600160a01b03871660009081526023602052604090205460ff165b15612f06576064612e63866031613b8e565b612e6d9190613bad565b9050601a54601c5482612e809190613b8e565b612e8a9190613bad565b601f6000828254612e9b9190613b76565b9091555050601a54601b54612eb09083613b8e565b612eba9190613bad565b601e6000828254612ecb9190613b76565b9091555050601a54601d54612ee09083613b8e565b612eea9190613bad565b60206000828254612efb9190613b76565b909155506130229050565b6001600160a01b03861660009081526023602052604090205460ff168015612f3057506000601a54115b15612f45576064601a5486612e639190613b8e565b6001600160a01b03871660009081526023602052604090205460ff168015612f6f57506000601654115b1561302257606460165486612f849190613b8e565b612f8e9190613bad565b905060165460185482612fa19190613b8e565b612fab9190613bad565b601f6000828254612fbc9190613b76565b9091555050601654601754612fd19083613b8e565b612fdb9190613bad565b601e6000828254612fec9190613b76565b90915550506016546019546130019083613b8e565b61300b9190613bad565b6020600082825461301c9190613b76565b90915550505b8015613033576130338730836132a1565b61303d8186613bcf565b94505b61304b8787876132a1565b50505050505050565b600061305f306113cb565b90506000602054601e54601f546130769190613b76565b6130809190613b76565b9050600082158061308f575081155b1561309957505050565b600e548311156130a957600e5492505b6000600283601f54866130bc9190613b8e565b6130c69190613bad565b6130d09190613bad565b905060006130de8286613bcf565b9050476130ea82613491565b60006130f68247613bcf565b905060006002601f546131099190613bad565b6131139088613bcf565b601e546131209084613b8e565b61312a9190613bad565b905060006002601f5461313d9190613bad565b6131479089613bcf565b6020546131549085613b8e565b61315e9190613bad565b905060008161316d8486613bcf565b6131779190613bcf565b6000601f819055601e81905560208190556009546040519293506001600160a01b031691849181818185875af1925050503d80600081146131d4576040519150601f19603f3d011682016040523d82523d6000602084013e6131d9565b606091505b50506008546040519199506001600160a01b0316908490600081818185875af1925050503d8060008114613229576040519150601f19603f3d011682016040523d82523d6000602084013e61322e565b606091505b509098505086158015906132425750600081115b156132955761325187826135e3565b601f54604080518881526020810184905280820192909252517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a15b50505050505050505050565b6001600160a01b0383166132c75760405162461bcd60e51b8152600401610d2590613cb8565b6001600160a01b0382166132ed5760405162461bcd60e51b8152600401610d2590613cfd565b6001600160a01b038316600090815260208190526040902054818110156133655760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610d25565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929061339c908490613b76565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516133e891815260200190565b60405180910390a350505050565b6001600160a01b03919091166000908152602360205260409020805460ff1916911515919091179055565b6000823b15806134305750813b155b61347c5760405162461bcd60e51b815260206004820152601860248201527f4e6f20666c6173682077616c6c657420616c6c6f7765642100000000000000006044820152606401610d25565b823b1561348a575080610f6b565b5081610f6b565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106134c6576134c6613ab8565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561351f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135439190613c32565b8160018151811061355657613556613ab8565b6001600160a01b03928316602091820292909201015260065461357c91309116846125b0565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac947906135b5908590600090869030904290600401613d40565b600060405180830381600087803b1580156135cf57600080fd5b505af115801561203e573d6000803e3d6000fd5b6006546135fb9030906001600160a01b0316846125b0565b600654600b5460405163f305d71960e01b81526001600160a01b039283169263f305d71992859261363b9230928992600092839216904290600401613c4f565b60606040518083038185885af1158015613659573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061367e9190613c8a565b5050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156136c4576136c4613685565b604052919050565b600067ffffffffffffffff8211156136e6576136e6613685565b5060051b60200190565b6001600160a01b038116811461370557600080fd5b50565b600082601f83011261371957600080fd5b8135602061372e613729836136cc565b61369b565b82815260059290921b8401810191818101908684111561374d57600080fd5b8286015b84811015613771578035613764816136f0565b8352918301918301613751565b509695505050505050565b60006020828403121561378e57600080fd5b813567ffffffffffffffff8111156137a557600080fd5b6137b184828501613708565b949350505050565b600060208083528351808285015260005b818110156137e6578581018301518582016040015282016137ca565b818111156137f8576000604083870101525b50601f01601f1916929092016040019392505050565b6000806040838503121561382157600080fd5b823561382c816136f0565b946020939093013593505050565b60008060006060848603121561384f57600080fd5b833561385a816136f0565b9250602084013561386a816136f0565b929592945050506040919091013590565b60006020828403121561388d57600080fd5b8135613898816136f0565b9392505050565b600080604083850312156138b257600080fd5b50508035926020909101359150565b6000602082840312156138d357600080fd5b5035919050565b801515811461370557600080fd5b600080604083850312156138fb57600080fd5b8235613906816136f0565b91506020830135613916816138da565b809150509250929050565b60006020828403121561393357600080fd5b8135613898816138da565b60008060006060848603121561395357600080fd5b833561395e816136f0565b9250602084013561396e816136f0565b9150604084013561397e816136f0565b809150509250925092565b60008060006060848603121561399e57600080fd5b83356139a9816136f0565b925060208481013567ffffffffffffffff808211156139c757600080fd5b6139d388838901613708565b945060408701359150808211156139e957600080fd5b508501601f810187136139fb57600080fd5b8035613a09613729826136cc565b81815260059190911b82018301908381019089831115613a2857600080fd5b928401925b82841015613a4657833582529284019290840190613a2d565b80955050505050509250925092565b60008060408385031215613a6857600080fd5b8235613a73816136f0565b91506020830135613916816136f0565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b60208082526022908201527f57652063616e206e6f7420626c61636b6c697374207061697220616464726573604082015261399760f11b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b6000600019821415613b3a57613b3a613b10565b5060010190565b600181811c90821680613b5557607f821691505b602082108114156120ea57634e487b7160e01b600052602260045260246000fd5b60008219821115613b8957613b89613b10565b500190565b6000816000190483118215151615613ba857613ba8613b10565b500290565b600082613bca57634e487b7160e01b600052601260045260246000fd5b500490565b600082821015613be157613be1613b10565b500390565b634e487b7160e01b600052603160045260246000fd5b600060208284031215613c0e57600080fd5b5051919050565b600060208284031215613c2757600080fd5b8151613898816138da565b600060208284031215613c4457600080fd5b8151613898816136f0565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b600080600060608486031215613c9f57600080fd5b8351925060208401519150604084015190509250925092565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015613d905784516001600160a01b031683529383019391830191600101613d6b565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212207c9b246fb8378090691ed0c4fc9e5d6731f1147c89c74bffcdcd664436c3729c64736f6c634300080c00334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572

Deployed Bytecode

0x60806040526004361061042a5760003560e01c8063924de9b711610229578063cf46f24c1161012e578063ee40166e116100b6578063f5648a4f1161007a578063f5648a4f14610c84578063f637434214610c99578063f8b45b0514610caf578063f8c9a5aa14610cc5578063f9f4e42414610ce557600080fd5b8063ee40166e14610bf8578063ef4f3c6b14610c0e578063f11a24d314610c2e578063f2fde38b14610c44578063f4a4413f14610c6457600080fd5b8063d91568e6116100fd578063d91568e614610b3d578063dd62ed3e14610b5d578063e0b3c73914610ba3578063e2f4560514610bc3578063e70e631114610bd957600080fd5b8063cf46f24c14610add578063d02033aa14610af3578063d0bc827f14610b08578063d28d885214610b2857600080fd5b8063a457c2d7116101b1578063b94da4aa11610180578063b94da4aa14610a49578063bbc0c74214610a69578063c024666814610a83578063c480b4c614610aa3578063c876d0b914610ac357600080fd5b8063a457c2d7146109c4578063a9059cbb146109e4578063b09f126614610a04578063b62496f514610a1957600080fd5b80639a7a23d6116101f85780639a7a23d61461094c5780639c3b4fdc1461096c5780639fccce3214610982578063a0a2ccd914610998578063a0d82dc5146109ae57600080fd5b8063924de9b7146108d757806395d89b41146108f75780639803fe801461090c578063984d8a2f1461092c57600080fd5b8063522ca91a1161032f57806375f0a874116102b7578063878f33c911610286578063878f33c91461084357806387de3743146108635780638da5cb5b146108835780638ea5220f146108a157806392136913146108c157600080fd5b806375f0a874146107cd5780637bce5a04146107ed5780638372203914610803578063875ea3cd1461082357600080fd5b8063694c0465116102fe578063694c04651461072e5780636ddd17131461075e57806370a0823114610778578063715018a6146107985780637571336a146107ad57600080fd5b8063522ca91a1461069e57806353674ba6146106be57806356acbb04146106de5780635f559fba146106fe57600080fd5b806323b872dd116103b25780633bbac579116103815780633bbac579146105d75780633fd16d1314610610578063452ed4f1146106305780634fbee1931461065057806351f205e41461068957600080fd5b806323b872dd1461056557806327c8f83514610585578063313ce5671461059b57806339509351146105b757600080fd5b80631698f2e8116103f95780631698f2e8146104eb57806318160ddd1461050f5780631a8145bb146105245780631d97b7cd1461053a5780631f3fed8f1461054f57600080fd5b8063067a2cf11461043657806306fdde03146104585780630758d92414610483578063095ea7b3146104bb57600080fd5b3661043157005b600080fd5b34801561044257600080fd5b5061045661045136600461377c565b610cfb565b005b34801561046457600080fd5b5061046d610ec8565b60405161047a91906137b9565b60405180910390f35b34801561048f57600080fd5b506006546104a3906001600160a01b031681565b6040516001600160a01b03909116815260200161047a565b3480156104c757600080fd5b506104db6104d636600461380e565b610f5a565b604051901515815260200161047a565b3480156104f757600080fd5b5061050160105481565b60405190815260200161047a565b34801561051b57600080fd5b50600254610501565b34801561053057600080fd5b50610501601f5481565b34801561054657600080fd5b50610456610f71565b34801561055b57600080fd5b50610501601e5481565b34801561057157600080fd5b506104db61058036600461383a565b611025565b34801561059157600080fd5b506104a361dead81565b3480156105a757600080fd5b506040516012815260200161047a565b3480156105c357600080fd5b506104db6105d236600461380e565b6110cf565b3480156105e357600080fd5b506104db6105f236600461387b565b6001600160a01b031660009081526025602052604090205460ff1690565b34801561061c57600080fd5b50600b546104a3906001600160a01b031681565b34801561063c57600080fd5b506007546104a3906001600160a01b031681565b34801561065c57600080fd5b506104db61066b36600461387b565b6001600160a01b031660009081526021602052604090205460ff1690565b34801561069557600080fd5b5061045661110b565b3480156106aa57600080fd5b506104566106b936600461389f565b611214565b3480156106ca57600080fd5b506104db6106d93660046138c1565b6112b3565b3480156106ea57600080fd5b506104566106f93660046138e8565b611376565b34801561070a57600080fd5b506104db61071936600461387b565b60226020526000908152604090205460ff1681565b34801561073a57600080fd5b506104db61074936600461387b565b60156020526000908152604090205460ff1681565b34801561076a57600080fd5b506012546104db9060ff1681565b34801561078457600080fd5b5061050161079336600461387b565b6113cb565b3480156107a457600080fd5b506104566113e6565b3480156107b957600080fd5b506104566107c83660046138e8565b61145a565b3480156107d957600080fd5b506008546104a3906001600160a01b031681565b3480156107f957600080fd5b5061050160175481565b34801561080f57600080fd5b5061045661081e36600461389f565b6114af565b34801561082f57600080fd5b5061045661083e36600461387b565b61154e565b34801561084f57600080fd5b5061045661085e36600461387b565b6116f8565b34801561086f57600080fd5b5061045661087e3660046138c1565b611809565b34801561088f57600080fd5b506005546001600160a01b03166104a3565b3480156108ad57600080fd5b506009546104a3906001600160a01b031681565b3480156108cd57600080fd5b50610501601b5481565b3480156108e357600080fd5b506104566108f2366004613921565b6118dc565b34801561090357600080fd5b5061046d611919565b34801561091857600080fd5b5061045661092736600461387b565b611928565b34801561093857600080fd5b5061045661094736600461387b565b611a44565b34801561095857600080fd5b506104566109673660046138e8565b611b02565b34801561097857600080fd5b5061050160195481565b34801561098e57600080fd5b5061050160205481565b3480156109a457600080fd5b5061050160165481565b3480156109ba57600080fd5b50610501601d5481565b3480156109d057600080fd5b506104db6109df36600461380e565b611bba565b3480156109f057600080fd5b506104db6109ff36600461380e565b611c53565b348015610a1057600080fd5b5061046d611c60565b348015610a2557600080fd5b506104db610a3436600461387b565b60236020526000908152604090205460ff1681565b348015610a5557600080fd5b50610456610a643660046138e8565b611cee565b348015610a7557600080fd5b50600f546104db9060ff1681565b348015610a8f57600080fd5b50610456610a9e3660046138e8565b612047565b348015610aaf57600080fd5b50600a546104a3906001600160a01b031681565b348015610acf57600080fd5b506014546104db9060ff1681565b348015610ae957600080fd5b50610501600c5481565b348015610aff57600080fd5b5061050161209c565b348015610b1457600080fd5b50610456610b2336600461393e565b6120f0565b348015610b3457600080fd5b5061046d612159565b348015610b4957600080fd5b50610456610b58366004613989565b612166565b348015610b6957600080fd5b50610501610b78366004613a55565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b348015610baf57600080fd5b50610456610bbe366004613921565b612260565b348015610bcf57600080fd5b50610501600e5481565b348015610be557600080fd5b506014546104db90610100900460ff1681565b348015610c0457600080fd5b5061050160115481565b348015610c1a57600080fd5b50610456610c293660046138c1565b61229d565b348015610c3a57600080fd5b5061050160185481565b348015610c5057600080fd5b50610456610c5f36600461387b565b612374565b348015610c7057600080fd5b50610456610c7f366004613921565b61245f565b348015610c9057600080fd5b506104566124a3565b348015610ca557600080fd5b50610501601c5481565b348015610cbb57600080fd5b50610501600d5481565b348015610cd157600080fd5b50610456610ce03660046138c1565b612581565b348015610cf157600080fd5b50610501601a5481565b6005546001600160a01b03163314610d2e5760405162461bcd60e51b8152600401610d2590613a83565b60405180910390fd5b60005b8151811015610ec457600a5482516001600160a01b0390911690839083908110610d5d57610d5d613ab8565b60200260200101516001600160a01b03161415610dbc5760405162461bcd60e51b815260206004820152601c60248201527f57652063616e206e6f7420626c61636b6c69737420726f757465722e000000006044820152606401610d25565b60075482516001600160a01b0390911690839083908110610ddf57610ddf613ab8565b60200260200101516001600160a01b03161415610e0e5760405162461bcd60e51b8152600401610d2590613ace565b600160256000848481518110610e2657610e26613ab8565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055506024828281518110610e7957610e79613ab8565b60209081029190910181015182546001810184556000938452919092200180546001600160a01b0319166001600160a01b03909216919091179055610ebd81613b26565b9050610d31565b5050565b606060038054610ed790613b41565b80601f0160208091040260200160405190810160405280929190818152602001828054610f0390613b41565b8015610f505780601f10610f2557610100808354040283529160200191610f50565b820191906000526020600020905b815481529060010190602001808311610f3357829003601f168201915b5050505050905090565b6000610f673384846125b0565b5060015b92915050565b6005546001600160a01b03163314610f9b5760405162461bcd60e51b8152600401610d2590613a83565b600f5460ff16156110025760405162461bcd60e51b815260206004820152602b60248201527f54726164696e6720697320616c7265616479206163746976652c2063616e6e6f60448201526a3a103932b630bab731b41760a91b6064820152608401610d25565b600f8054600160ff19918216811790925560128054909116909117905543601155565b60006110328484846126d4565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156110b75760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610d25565b6110c485338584036125b0565b506001949350505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610f67918590611106908690613b76565b6125b0565b6005546001600160a01b031633146111355760405162461bcd60e51b8152600401610d2590613a83565b600e54611141306113cb565b10156111b7576040805162461bcd60e51b81526020600482015260248101919091527f43616e206f6e6c792073776170207768656e20746f6b656e20616d6f756e742060448201527f6973206174206f7220686967686572207468616e207265737472696374696f6e6064820152608401610d25565b6007805460ff60a01b1916600160a01b1790556111d2613054565b6007805460ff60a01b191690556040514281527f1b56c383f4f48fc992e45667ea4eabae777b9cca68b516a9562d8cda78f1bb329060200160405180910390a1565b6005546001600160a01b0316331461123e5760405162461bcd60e51b8152600401610d2590613a83565b601e61124a8284613b76565b11156112985760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b6565702066656573206c6f776572207468616e203330250000006044820152606401610d25565b601782905560188190556112ac8183613b76565b6016555050565b6005546000906001600160a01b031633146112e05760405162461bcd60e51b8152600401610d2590613a83565b6103e86112ec60025490565b6112f7906005613b8e565b6113019190613bad565b82111561136d5760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b6064820152608401610d25565b50600e55600190565b6005546001600160a01b031633146113a05760405162461bcd60e51b8152600401610d2590613a83565b6001600160a01b03919091166000908152601560205260409020805460ff1916911515919091179055565b6001600160a01b031660009081526020819052604090205490565b6005546001600160a01b031633146114105760405162461bcd60e51b8152600401610d2590613a83565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b031633146114845760405162461bcd60e51b8152600401610d2590613a83565b6001600160a01b03919091166000908152602260205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146114d95760405162461bcd60e51b8152600401610d2590613a83565b601e6114e58284613b76565b11156115335760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b6565702066656573206c6f776572207468616e203330250000006044820152606401610d25565b601b829055601c8190556115478183613b76565b601a555050565b6005546001600160a01b031633146115785760405162461bcd60e51b8152600401610d2590613a83565b6001600160a01b03811660009081526025602052604090205460ff166115e05760405162461bcd60e51b815260206004820152601a60248201527f4163636f756e74206973206e6f7420626c61636b6c69737465640000000000006044820152606401610d25565b60005b602454811015610ec457816001600160a01b03166024828154811061160a5761160a613ab8565b6000918252602090912001546001600160a01b031614156116e6576024805461163590600190613bcf565b8154811061164557611645613ab8565b600091825260209091200154602480546001600160a01b03909216918390811061167157611671613ab8565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152602590915260409020805460ff1916905560248054806116c0576116c0613be6565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b806116f081613b26565b9150506115e3565b6005546001600160a01b031633146117225760405162461bcd60e51b8152600401610d2590613a83565b6040516370a0823160e01b815230600482015281906000906001600160a01b038316906370a0823190602401602060405180830381865afa15801561176b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061178f9190613bfc565b60405163a9059cbb60e01b8152336004820152602481018290529091506001600160a01b0383169063a9059cbb906044016020604051808303816000875af11580156117df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118039190613c15565b50505050565b6005546001600160a01b031633146118335760405162461bcd60e51b8152600401610d2590613a83565b60058110156118905760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015263302e352560e01b6064820152608401610d25565b670de0b6b3a76400006103e8826118a660025490565b6118b09190613b8e565b6118ba9190613bad565b6118c49190613bad565b6118d690670de0b6b3a7640000613b8e565b600d5550565b6005546001600160a01b031633146119065760405162461bcd60e51b8152600401610d2590613a83565b6012805460ff1916911515919091179055565b606060048054610ed790613b41565b6005546001600160a01b031633146119525760405162461bcd60e51b8152600401610d2590613a83565b600a546001600160a01b03828116911614156119b05760405162461bcd60e51b815260206004820152601c60248201527f57652063616e206e6f7420626c61636b6c69737420726f757465722e000000006044820152606401610d25565b6007546001600160a01b03828116911614156119de5760405162461bcd60e51b8152600401610d2590613ace565b6001600160a01b03166000818152602560205260408120805460ff191660019081179091556024805491820181559091527f7cd332d19b93bcabe3cce7ca0c18a052f57e5fd03b4758a09f30f5ddc4b22ec40180546001600160a01b0319169091179055565b6005546001600160a01b03163314611a6e5760405162461bcd60e51b8152600401610d2590613a83565b60005b602454611a8090600190613bcf565b8111610ec457611af060248281548110611a9c57611a9c613ab8565b9060005260206000200160009054906101000a90046001600160a01b031683611aeb60248581548110611ad157611ad1613ab8565b6000918252602090912001546001600160a01b03166113cb565b6132a1565b80611afa81613b26565b915050611a71565b6005546001600160a01b03163314611b2c5760405162461bcd60e51b8152600401610d2590613a83565b6007546001600160a01b0383811691161415611bb05760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610d25565b610ec482826133f6565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015611c3c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610d25565b611c4933858584036125b0565b5060019392505050565b6000610f673384846126d4565b60048054611c6d90613b41565b80601f0160208091040260200160405190810160405280929190818152602001828054611c9990613b41565b8015611ce65780601f10611cbb57610100808354040283529160200191611ce6565b820191906000526020600020905b815481529060010190602001808311611cc957829003601f168201915b505050505081565b6005546001600160a01b03163314611d185760405162461bcd60e51b8152600401610d2590613a83565b600a80546001600160a01b0384166001600160a01b0319918216811790925560068054909116821790556040805163c45a015560e01b81529051829163c45a01559160048281019260209291908290030181865afa158015611d7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611da29190613c32565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611def573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e139190613c32565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015611e60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e849190613c32565b600780546001600160a01b0319166001600160a01b03929092169182179055611eae90600161145a565b600754611ec5906001600160a01b031660016133f6565b81156120425760004711611f275760405162461bcd60e51b815260206004820152602360248201527f4d757374206861766520455448206f6e20636f6e747261637420746f206c61756044820152620dcc6d60eb1b6064820152608401610d25565b6000611f32306113cb565b11611f8e5760405162461bcd60e51b815260206004820152602660248201527f4d757374206861766520546f6b656e73206f6e20636f6e747261637420746f206044820152650d8c2eadcc6d60d31b6064820152608401610d25565b600654611fa99030906001600160a01b0316611106826113cb565b6006546001600160a01b031663f305d7194730611fc5816113cb565b600b546040516001600160e01b031960e087901b168152611ffb93929160009182916001600160a01b0316904290600401613c4f565b60606040518083038185885af1158015612019573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061203e9190613c8a565b5050505b505050565b6005546001600160a01b031633146120715760405162461bcd60e51b8152600401610d2590613a83565b6001600160a01b03919091166000908152602160205260409020805460ff1916911515919091179055565b600080805b6024546120b090600190613bcf565b81116120ea576120cc60248281548110611ad157611ad1613ab8565b6120d69083613b76565b9150806120e281613b26565b9150506120a1565b50919050565b6005546001600160a01b0316331461211a5760405162461bcd60e51b8152600401610d2590613a83565b600880546001600160a01b039485166001600160a01b031991821617909155600b80549385169382169390931790925560098054919093169116179055565b60038054611c6d90613b41565b6005546001600160a01b031633146121905760405162461bcd60e51b8152600401610d2590613a83565b600f5460ff16156121fa5760405162461bcd60e51b815260206004820152602e60248201527f54726164696e6720697320616c7265616479206163746976652c2063616e6e6f60448201526d3a1030b4b9323937b81030ba369760911b6064820152608401610d25565b60005b6001835161220b9190613bcf565b81116118035761224e8484838151811061222757612227613ab8565b602002602001015184848151811061224157612241613ab8565b60200260200101516132a1565b8061225881613b26565b9150506121fd565b6005546001600160a01b0316331461228a5760405162461bcd60e51b8152600401610d2590613a83565b6014805460ff1916911515919091179055565b6005546001600160a01b031633146122c75760405162461bcd60e51b8152600401610d2590613a83565b60058110156123285760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f7420736574206d617854786e416d6f756e74206c6f776572207468604482015266616e20302e352560c81b6064820152608401610d25565b670de0b6b3a76400006103e88261233e60025490565b6123489190613b8e565b6123529190613bad565b61235c9190613bad565b61236e90670de0b6b3a7640000613b8e565b600c5550565b6005546001600160a01b0316331461239e5760405162461bcd60e51b8152600401610d2590613a83565b6001600160a01b0381166124035760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610d25565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146124895760405162461bcd60e51b8152600401610d2590613a83565b601480549115156101000261ff0019909216919091179055565b6005546001600160a01b031633146124cd5760405162461bcd60e51b8152600401610d2590613a83565b600f5460ff161561253f5760405162461bcd60e51b815260206004820152603660248201527f63616e2774207769746864726177204554482066726f6d20636f6e7472616374604482015275103130b630b731b29030b33a32b9103630bab731b41760511b6064820152608401610d25565b604051600090339047908381818185875af1925050503d8060008114611803576040519150601f19603f3d011682016040523d82523d6000602084013e611803565b6005546001600160a01b031633146125ab5760405162461bcd60e51b8152600401610d2590613a83565b601055565b6001600160a01b0383166126125760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610d25565b6001600160a01b0382166126735760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610d25565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166126fa5760405162461bcd60e51b8152600401610d2590613cb8565b6001600160a01b0382166127205760405162461bcd60e51b8152600401610d2590613cfd565b6001600160a01b03821660009081526025602052604090205460ff16156127835760405162461bcd60e51b8152602060048201526017602482015276596f752068617665206e6f20706f77657220686572652160481b6044820152606401610d25565b3260009081526025602052604090205460ff16156127dd5760405162461bcd60e51b8152602060048201526017602482015276596f752068617665206e6f20706f77657220686572652160481b6044820152606401610d25565b806127ee57612042838360006132a1565b600f5460ff1661287c576001600160a01b03831660009081526021602052604090205460ff168061283757506001600160a01b03821660009081526021602052604090205460ff165b61287c5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610d25565b601454610100900460ff16156128df576001600160a01b03831660009081526015602052604090205460ff161580156128ce57506001600160a01b03821660009081526015602052604090205460ff16155b156128df576128dd8383613421565b505b6005546001600160a01b0384811691161480159061290b57506005546001600160a01b03838116911614155b801561291f57506001600160a01b03821615155b801561293657506001600160a01b03821661dead14155b801561294c5750600754600160a01b900460ff16155b801561297157506001600160a01b03821660009081526021602052604090205460ff16155b801561299657506001600160a01b03831660009081526021602052604090205460ff16155b15612ce55760145460ff1615612aaf576006546001600160a01b038381169116148015906129d257506007546001600160a01b03838116911614155b15612aaf576129e2600143613bcf565b32600090815260136020526040902054108015612a205750612a05600143613bcf565b6001600160a01b038316600090815260136020526040902054105b612a8a5760405162461bcd60e51b815260206004820152603560248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527432b21710102a393c9030b3b0b4b7103630ba32b91760591b6064820152608401610d25565b3260009081526013602052604080822043908190556001600160a01b03851683529120555b6001600160a01b03831660009081526023602052604090205460ff168015612af057506001600160a01b03821660009081526022602052604090205460ff16155b15612bbc57600c54811115612b5d5760405162461bcd60e51b815260206004820152602d60248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526c36b0bc2a3c3720b6b7bab73a1760991b6064820152608401610d25565b600d54612b69836113cb565b612b739083613b76565b1115612bb75760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610d25565b612ce5565b6001600160a01b03821660009081526023602052604090205460ff168015612bfd57506001600160a01b03831660009081526022602052604090205460ff16155b15612c6b57600c54811115612bb75760405162461bcd60e51b815260206004820152602e60248201527f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560448201526d1036b0bc2a3c3720b6b7bab73a1760911b6064820152608401610d25565b6001600160a01b03821660009081526022602052604090205460ff16612ce557600d54612c97836113cb565b612ca19083613b76565b1115612ce55760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610d25565b6000612cf0306113cb565b600e5490915081108015908190612d09575060125460ff165b8015612d1f5750600754600160a01b900460ff16155b8015612d4457506001600160a01b03851660009081526023602052604090205460ff16155b8015612d6957506001600160a01b03851660009081526021602052604090205460ff16155b8015612d8e57506001600160a01b03841660009081526021602052604090205460ff16155b15612dbc576007805460ff60a01b1916600160a01b179055612dae613054565b6007805460ff60a01b191690555b6007546001600160a01b03861660009081526021602052604090205460ff600160a01b909204821615911680612e0a57506001600160a01b03851660009081526021602052604090205460ff165b15612e13575060005b6000811561304057601054612e289043613bcf565b60115410158015612e5157506001600160a01b03871660009081526023602052604090205460ff165b15612f06576064612e63866031613b8e565b612e6d9190613bad565b9050601a54601c5482612e809190613b8e565b612e8a9190613bad565b601f6000828254612e9b9190613b76565b9091555050601a54601b54612eb09083613b8e565b612eba9190613bad565b601e6000828254612ecb9190613b76565b9091555050601a54601d54612ee09083613b8e565b612eea9190613bad565b60206000828254612efb9190613b76565b909155506130229050565b6001600160a01b03861660009081526023602052604090205460ff168015612f3057506000601a54115b15612f45576064601a5486612e639190613b8e565b6001600160a01b03871660009081526023602052604090205460ff168015612f6f57506000601654115b1561302257606460165486612f849190613b8e565b612f8e9190613bad565b905060165460185482612fa19190613b8e565b612fab9190613bad565b601f6000828254612fbc9190613b76565b9091555050601654601754612fd19083613b8e565b612fdb9190613bad565b601e6000828254612fec9190613b76565b90915550506016546019546130019083613b8e565b61300b9190613bad565b6020600082825461301c9190613b76565b90915550505b8015613033576130338730836132a1565b61303d8186613bcf565b94505b61304b8787876132a1565b50505050505050565b600061305f306113cb565b90506000602054601e54601f546130769190613b76565b6130809190613b76565b9050600082158061308f575081155b1561309957505050565b600e548311156130a957600e5492505b6000600283601f54866130bc9190613b8e565b6130c69190613bad565b6130d09190613bad565b905060006130de8286613bcf565b9050476130ea82613491565b60006130f68247613bcf565b905060006002601f546131099190613bad565b6131139088613bcf565b601e546131209084613b8e565b61312a9190613bad565b905060006002601f5461313d9190613bad565b6131479089613bcf565b6020546131549085613b8e565b61315e9190613bad565b905060008161316d8486613bcf565b6131779190613bcf565b6000601f819055601e81905560208190556009546040519293506001600160a01b031691849181818185875af1925050503d80600081146131d4576040519150601f19603f3d011682016040523d82523d6000602084013e6131d9565b606091505b50506008546040519199506001600160a01b0316908490600081818185875af1925050503d8060008114613229576040519150601f19603f3d011682016040523d82523d6000602084013e61322e565b606091505b509098505086158015906132425750600081115b156132955761325187826135e3565b601f54604080518881526020810184905280820192909252517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a15b50505050505050505050565b6001600160a01b0383166132c75760405162461bcd60e51b8152600401610d2590613cb8565b6001600160a01b0382166132ed5760405162461bcd60e51b8152600401610d2590613cfd565b6001600160a01b038316600090815260208190526040902054818110156133655760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610d25565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929061339c908490613b76565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516133e891815260200190565b60405180910390a350505050565b6001600160a01b03919091166000908152602360205260409020805460ff1916911515919091179055565b6000823b15806134305750813b155b61347c5760405162461bcd60e51b815260206004820152601860248201527f4e6f20666c6173682077616c6c657420616c6c6f7765642100000000000000006044820152606401610d25565b823b1561348a575080610f6b565b5081610f6b565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106134c6576134c6613ab8565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561351f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135439190613c32565b8160018151811061355657613556613ab8565b6001600160a01b03928316602091820292909201015260065461357c91309116846125b0565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac947906135b5908590600090869030904290600401613d40565b600060405180830381600087803b1580156135cf57600080fd5b505af115801561203e573d6000803e3d6000fd5b6006546135fb9030906001600160a01b0316846125b0565b600654600b5460405163f305d71960e01b81526001600160a01b039283169263f305d71992859261363b9230928992600092839216904290600401613c4f565b60606040518083038185885af1158015613659573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061367e9190613c8a565b5050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156136c4576136c4613685565b604052919050565b600067ffffffffffffffff8211156136e6576136e6613685565b5060051b60200190565b6001600160a01b038116811461370557600080fd5b50565b600082601f83011261371957600080fd5b8135602061372e613729836136cc565b61369b565b82815260059290921b8401810191818101908684111561374d57600080fd5b8286015b84811015613771578035613764816136f0565b8352918301918301613751565b509695505050505050565b60006020828403121561378e57600080fd5b813567ffffffffffffffff8111156137a557600080fd5b6137b184828501613708565b949350505050565b600060208083528351808285015260005b818110156137e6578581018301518582016040015282016137ca565b818111156137f8576000604083870101525b50601f01601f1916929092016040019392505050565b6000806040838503121561382157600080fd5b823561382c816136f0565b946020939093013593505050565b60008060006060848603121561384f57600080fd5b833561385a816136f0565b9250602084013561386a816136f0565b929592945050506040919091013590565b60006020828403121561388d57600080fd5b8135613898816136f0565b9392505050565b600080604083850312156138b257600080fd5b50508035926020909101359150565b6000602082840312156138d357600080fd5b5035919050565b801515811461370557600080fd5b600080604083850312156138fb57600080fd5b8235613906816136f0565b91506020830135613916816138da565b809150509250929050565b60006020828403121561393357600080fd5b8135613898816138da565b60008060006060848603121561395357600080fd5b833561395e816136f0565b9250602084013561396e816136f0565b9150604084013561397e816136f0565b809150509250925092565b60008060006060848603121561399e57600080fd5b83356139a9816136f0565b925060208481013567ffffffffffffffff808211156139c757600080fd5b6139d388838901613708565b945060408701359150808211156139e957600080fd5b508501601f810187136139fb57600080fd5b8035613a09613729826136cc565b81815260059190911b82018301908381019089831115613a2857600080fd5b928401925b82841015613a4657833582529284019290840190613a2d565b80955050505050509250925092565b60008060408385031215613a6857600080fd5b8235613a73816136f0565b91506020830135613916816136f0565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b60208082526022908201527f57652063616e206e6f7420626c61636b6c697374207061697220616464726573604082015261399760f11b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b6000600019821415613b3a57613b3a613b10565b5060010190565b600181811c90821680613b5557607f821691505b602082108114156120ea57634e487b7160e01b600052602260045260246000fd5b60008219821115613b8957613b89613b10565b500190565b6000816000190483118215151615613ba857613ba8613b10565b500290565b600082613bca57634e487b7160e01b600052601260045260246000fd5b500490565b600082821015613be157613be1613b10565b500390565b634e487b7160e01b600052603160045260246000fd5b600060208284031215613c0e57600080fd5b5051919050565b600060208284031215613c2757600080fd5b8151613898816138da565b600060208284031215613c4457600080fd5b8151613898816136f0565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b600080600060608486031215613c9f57600080fd5b8351925060208401519150604084015190509250925092565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015613d905784516001600160a01b031683529383019391830191600101613d6b565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212207c9b246fb8378090691ed0c4fc9e5d6731f1147c89c74bffcdcd664436c3729c64736f6c634300080c0033

Deployed Bytecode Sourcemap

7336:18892:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25291:427;;;;;;;;;;-1:-1:-1;25291:427:0;;;;;:::i;:::-;;:::i;:::-;;1837:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7378:27;;;;;;;;;;-1:-1:-1;7378:27:0;;;;-1:-1:-1;;;;;7378:27:0;;;;;;-1:-1:-1;;;;;2629:32:1;;;2611:51;;2599:2;2584:18;7378:27:0;2447:221:1;2737:169:0;;;;;;;;;;-1:-1:-1;2737:169:0;;;;;:::i;:::-;;:::i;:::-;;;3158:14:1;;3151:22;3133:41;;3121:2;3106:18;2737:169:0;2993:187:1;7847:22:0;;;;;;;;;;;;;;;;;;;3331:25:1;;;3319:2;3304:18;7847:22:0;3185:177:1;2152:108:0;;;;;;;;;;-1:-1:-1;2240:12:0;;2152:108;;8723:33;;;;;;;;;;;;;;;;23096:272;;;;;;;;;;;;;:::i;8683:33::-;;;;;;;;;;;;;;;;2912:488;;;;;;;;;;-1:-1:-1;2912:488:0;;;;;:::i;:::-;;:::i;7440:53::-;;;;;;;;;;;;7486:6;7440:53;;2053:93;;;;;;;;;;-1:-1:-1;2053:93:0;;2136:2;4178:36:1;;4166:2;4151:18;2053:93:0;4036:184:1;3406:215:0;;;;;;;;;;-1:-1:-1;3406:215:0;;;;;:::i;:::-;;:::i;24857:112::-;;;;;;;;;;-1:-1:-1;24857:112:0;;;;;:::i;:::-;-1:-1:-1;;;;;24935:26:0;24910:4;24935:26;;;:17;:26;;;;;;;;;24857:112;7631:32;;;;;;;;;;-1:-1:-1;7631:32:0;;;;-1:-1:-1;;;;;7631:32:0;;;7412:21;;;;;;;;;;-1:-1:-1;7412:21:0;;;;-1:-1:-1;;;;;7412:21:0;;;13581:125;;;;;;;;;;-1:-1:-1;13581:125:0;;;;;:::i;:::-;-1:-1:-1;;;;;13670:28:0;13646:4;13670:28;;;:19;:28;;;;;;;;;13581:125;21655:312;;;;;;;;;;;;;:::i;12213:305::-;;;;;;;;;;-1:-1:-1;12213:305:0;;;;;:::i;:::-;;:::i;10954:261::-;;;;;;;;;;-1:-1:-1;10954:261:0;;;;;:::i;:::-;;:::i;11918:132::-;;;;;;;;;;-1:-1:-1;11918:132:0;;;;;:::i;:::-;;:::i;8913:56::-;;;;;;;;;;-1:-1:-1;8913:56:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;8313:49;;;;;;;;;;-1:-1:-1;8313:49:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;7920:31;;;;;;;;;;-1:-1:-1;7920:31:0;;;;;;;;2266:127;;;;;;;;;;-1:-1:-1;2266:127:0;;;;;:::i;:::-;;:::i;5862:150::-;;;;;;;;;;;;;:::i;11776:136::-;;;;;;;;;;-1:-1:-1;11776:136:0;;;;;:::i;:::-;;:::i;7528:30::-;;;;;;;;;;-1:-1:-1;7528:30:0;;;;-1:-1:-1;;;;;7528:30:0;;;8423;;;;;;;;;;;;;;;;12524:311;;;;;;;;;;-1:-1:-1;12524:311:0;;;;;:::i;:::-;;:::i;25724:501::-;;;;;;;;;;-1:-1:-1;25724:501:0;;;;;:::i;:::-;;:::i;23676:229::-;;;;;;;;;;-1:-1:-1;23676:229:0;;;;;:::i;:::-;;:::i;11496:268::-;;;;;;;;;;-1:-1:-1;11496:268:0;;;;;:::i;:::-;;:::i;5652:79::-;;;;;;;;;;-1:-1:-1;5717:6:0;;-1:-1:-1;;;;;5717:6:0;5652:79;;7565:24;;;;;;;;;;-1:-1:-1;7565:24:0;;;;-1:-1:-1;;;;;7565:24:0;;;8569:31;;;;;;;;;;;;;;;;12106:101;;;;;;;;;;-1:-1:-1;12106:101:0;;;;;:::i;:::-;;:::i;1943:104::-;;;;;;;;;;;;;:::i;24975:310::-;;;;;;;;;;-1:-1:-1;24975:310:0;;;;;:::i;:::-;;:::i;24608:243::-;;;;;;;;;;-1:-1:-1;24608:243:0;;;;;:::i;:::-;;:::i;12983:237::-;;;;;;;;;;-1:-1:-1;12983:237:0;;;;;:::i;:::-;;:::i;8497:24::-;;;;;;;;;;;;;;;;8763:27;;;;;;;;;;;;;;;;8389;;;;;;;;;;;;;;;;8645:25;;;;;;;;;;;;;;;;3627:411;;;;;;;;;;-1:-1:-1;3627:411:0;;;;;:::i;:::-;;:::i;2399:175::-;;;;;;;;;;-1:-1:-1;2399:175:0;;;;;:::i;:::-;;:::i;1787:21::-;;;;;;;;;;;;;:::i;9066:58::-;;;;;;;;;;-1:-1:-1;9066:58:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;21974:1116;;;;;;;;;;-1:-1:-1;21974:1116:0;;;;;:::i;:::-;;:::i;7807:33::-;;;;;;;;;;-1:-1:-1;7807:33:0;;;;;;;;12843:132;;;;;;;;;;-1:-1:-1;12843:132:0;;;;;:::i;:::-;;:::i;7596:28::-;;;;;;;;;;-1:-1:-1;7596:28:0;;;;-1:-1:-1;;;;;7596:28:0;;;8191:40;;;;;;;;;;-1:-1:-1;8191:40:0;;;;;;;;7676:27;;;;;;;;;;;;;;;;24341:261;;;;;;;;;;;;;:::i;13362:213::-;;;;;;;;;;-1:-1:-1;13362:213:0;;;;;:::i;:::-;;:::i;1761:19::-;;;;;;;;;;;;;:::i;23934:311::-;;;;;;;;;;-1:-1:-1;23934:311:0;;;;;:::i;:::-;;:::i;2580:151::-;;;;;;;;;;-1:-1:-1;2580:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;2696:18:0;;;2669:7;2696:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;2580:151;10741:107;;;;;;;;;;-1:-1:-1;10741:107:0;;;;;:::i;:::-;;:::i;7741:33::-;;;;;;;;;;;;;;;;8278:28;;;;;;;;;;-1:-1:-1;8278:28:0;;;;;;;;;;;7876:37;;;;;;;;;;;;;;;;11221:267;;;;;;;;;;-1:-1:-1;11221:267:0;;;;;:::i;:::-;;:::i;8460:30::-;;;;;;;;;;;;;;;;6018:246;;;;;;;;;;-1:-1:-1;6018:246:0;;;;;:::i;:::-;;:::i;10854:94::-;;;;;;;;;;-1:-1:-1;10854:94:0;;;;;:::i;:::-;;:::i;23418:252::-;;;;;;;;;;;;;:::i;8607:31::-;;;;;;;;;;;;;;;;7710:24;;;;;;;;;;;;;;;;24251:84;;;;;;;;;;-1:-1:-1;24251:84:0;;;;;:::i;:::-;;:::i;8534:28::-;;;;;;;;;;;;;;;;25291:427;5777:6;;-1:-1:-1;;;;;5777:6:0;293:10;5777:22;5769:67;;;;-1:-1:-1;;;5769:67:0;;;;;;;:::i;:::-;;;;;;;;;25389:9:::1;25384:327;25404:9;:16;25400:1;:20;25384:327;;;25466:13;::::0;25450:12;;-1:-1:-1;;;;;25466:13:0;;::::1;::::0;25450:9;;25460:1;;25450:12;::::1;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;25450:29:0::1;;;25442:70;;;::::0;-1:-1:-1;;;25442:70:0;;8571:2:1;25442:70:0::1;::::0;::::1;8553:21:1::0;8610:2;8590:18;;;8583:30;8649;8629:18;;;8622:58;8697:18;;25442:70:0::1;8369:352:1::0;25442:70:0::1;25551:6;::::0;25535:12;;-1:-1:-1;;;;;25551:6:0;;::::1;::::0;25535:9;;25545:1;;25535:12;::::1;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;25535:22:0::1;;;25527:69;;;;-1:-1:-1::0;;;25527:69:0::1;;;;;;;:::i;:::-;25645:4;25611:17;:31;25629:9;25639:1;25629:12;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;25611:31:0::1;-1:-1:-1::0;;;;;25611:31:0::1;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;25664:16;25686:9;25696:1;25686:12;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;25664:35;;::::1;::::0;::::1;::::0;;-1:-1:-1;25664:35:0;;;;;;;::::1;::::0;;-1:-1:-1;;;;;;25664:35:0::1;-1:-1:-1::0;;;;;25664:35:0;;::::1;::::0;;;::::1;::::0;;25422:3:::1;::::0;::::1;:::i;:::-;;;25384:327;;;;25291:427:::0;:::o;1837:100::-;1891:13;1924:5;1917:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1837:100;:::o;2737:169::-;2820:4;2837:39;293:10;2860:7;2869:6;2837:8;:39::i;:::-;-1:-1:-1;2894:4:0;2737:169;;;;;:::o;23096:272::-;5777:6;;-1:-1:-1;;;;;5777:6:0;293:10;5777:22;5769:67;;;;-1:-1:-1;;;5769:67:0;;;;;;;:::i;:::-;23160:13:::1;::::0;::::1;;23159:14;23151:70;;;::::0;-1:-1:-1;;;23151:70:0;;9988:2:1;23151:70:0::1;::::0;::::1;9970:21:1::0;10027:2;10007:18;;;10000:30;10066:34;10046:18;;;10039:62;-1:-1:-1;;;10117:18:1;;;10110:41;10168:19;;23151:70:0::1;9786:407:1::0;23151:70:0::1;23267:13;:20:::0;;23283:4:::1;-1:-1:-1::0;;23267:20:0;;::::1;::::0;::::1;::::0;;;23298:11:::1;:18:::0;;;;::::1;::::0;;::::1;::::0;;23348:12:::1;23327:18;:33:::0;23096:272::o;2912:488::-;3052:4;3069:36;3079:6;3087:9;3098:6;3069:9;:36::i;:::-;-1:-1:-1;;;;;3143:19:0;;3116:24;3143:19;;;:11;:19;;;;;;;;293:10;3143:33;;;;;;;;3195:26;;;;3187:79;;;;-1:-1:-1;;;3187:79:0;;10400:2:1;3187:79:0;;;10382:21:1;10439:2;10419:18;;;10412:30;10478:34;10458:18;;;10451:62;-1:-1:-1;;;10529:18:1;;;10522:38;10577:19;;3187:79:0;10198:404:1;3187:79:0;3302:57;3311:6;293:10;3352:6;3333:16;:25;3302:8;:57::i;:::-;-1:-1:-1;3388:4:0;;2912:488;-1:-1:-1;;;;2912:488:0:o;3406:215::-;293:10;3494:4;3543:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;3543:34:0;;;;;;;;;;3494:4;;3511:80;;3534:7;;3543:47;;3580:10;;3543:47;:::i;:::-;3511:8;:80::i;21655:312::-;5777:6;;-1:-1:-1;;;;;5777:6:0;293:10;5777:22;5769:67;;;;-1:-1:-1;;;5769:67:0;;;;;;;:::i;:::-;21746:18:::1;;21718:24;21736:4;21718:9;:24::i;:::-;:46;;21710:123;;;::::0;;-1:-1:-1;;;21710:123:0;;10942:2:1;21710:123:0::1;::::0;::::1;10924:21:1::0;10961:18;;;10954:30;;;;11020:34;11000:18;;;10993:62;11091:34;11071:18;;;11064:62;11143:19;;21710:123:0::1;10740:428:1::0;21710:123:0::1;21844:8;:15:::0;;-1:-1:-1;;;;21844:15:0::1;-1:-1:-1::0;;;21844:15:0::1;::::0;;21870:10:::1;:8;:10::i;:::-;21891:8;:16:::0;;-1:-1:-1;;;;21891:16:0::1;::::0;;21923:36:::1;::::0;21943:15:::1;3331:25:1::0;;21923:36:0::1;::::0;3319:2:1;3304:18;21923:36:0::1;;;;;;;21655:312::o:0;12213:305::-;5777:6;;-1:-1:-1;;;;;5777:6:0;293:10;5777:22;5769:67;;;;-1:-1:-1;;;5769:67:0;;;;;;;:::i;:::-;12337:2:::1;12311:21;12322:10:::0;12311;:21:::1;:::i;:::-;12310:29;;12302:71;;;::::0;-1:-1:-1;;;12302:71:0;;11375:2:1;12302:71:0::1;::::0;::::1;11357:21:1::0;11414:2;11394:18;;;11387:30;11453:31;11433:18;;;11426:59;11502:18;;12302:71:0::1;11173:353:1::0;12302:71:0::1;12384:15;:28:::0;;;12423:15:::1;:28:::0;;;12477:33:::1;12441:10:::0;12402;12477:33:::1;:::i;:::-;12462:12;:48:::0;-1:-1:-1;;12213:305:0:o;10954:261::-;5777:6;;11026:4;;-1:-1:-1;;;;;5777:6:0;293:10;5777:22;5769:67;;;;-1:-1:-1;;;5769:67:0;;;;;;;:::i;:::-;11083:4:::1;11063:13;2240:12:::0;;;2152:108;11063:13:::1;:17;::::0;11079:1:::1;11063:17;:::i;:::-;:24;;;;:::i;:::-;11050:9;:37;;11042:102;;;::::0;-1:-1:-1;;;11042:102:0;;12128:2:1;11042:102:0::1;::::0;::::1;12110:21:1::0;12167:2;12147:18;;;12140:30;12206:34;12186:18;;;12179:62;-1:-1:-1;;;12257:18:1;;;12250:50;12317:19;;11042:102:0::1;11926:416:1::0;11042:102:0::1;-1:-1:-1::0;11155:18:0::1;:30:::0;11203:4:::1;::::0;10954:261::o;11918:132::-;5777:6;;-1:-1:-1;;;;;5777:6:0;293:10;5777:22;5769:67;;;;-1:-1:-1;;;5769:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12008:26:0;;;::::1;;::::0;;;:17:::1;:26;::::0;;;;:34;;-1:-1:-1;;12008:34:0::1;::::0;::::1;;::::0;;;::::1;::::0;;11918:132::o;2266:127::-;-1:-1:-1;;;;;2367:18:0;2340:7;2367:18;;;;;;;;;;;;2266:127::o;5862:150::-;5777:6;;-1:-1:-1;;;;;5777:6:0;293:10;5777:22;5769:67;;;;-1:-1:-1;;;5769:67:0;;;;;;;:::i;:::-;5955:6:::1;::::0;5934:40:::1;::::0;5971:1:::1;::::0;-1:-1:-1;;;;;5955:6:0::1;::::0;5934:40:::1;::::0;5971:1;;5934:40:::1;5985:6;:19:::0;;-1:-1:-1;;;;;;5985:19:0::1;::::0;;5862:150::o;11776:136::-;5777:6;;-1:-1:-1;;;;;5777:6:0;293:10;5777:22;5769:67;;;;-1:-1:-1;;;5769:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11866:31:0;;;::::1;;::::0;;;:23:::1;:31;::::0;;;;:38;;-1:-1:-1;;11866:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;11776:136::o;12524:311::-;5777:6;;-1:-1:-1;;;;;5777:6:0;293:10;5777:22;5769:67;;;;-1:-1:-1;;;5769:67:0;;;;;;;:::i;:::-;12649:2:::1;12623:21;12634:10:::0;12623;:21:::1;:::i;:::-;12622:29;;12614:71;;;::::0;-1:-1:-1;;;12614:71:0;;11375:2:1;12614:71:0::1;::::0;::::1;11357:21:1::0;11414:2;11394:18;;;11387:30;11453:31;11433:18;;;11426:59;11502:18;;12614:71:0::1;11173:353:1::0;12614:71:0::1;12696:16;:29:::0;;;12736:16:::1;:29:::0;;;12792:35:::1;12755:10:::0;12715;12792:35:::1;:::i;:::-;12776:13;:51:::0;-1:-1:-1;;12524:311:0:o;25724:501::-;5777:6;;-1:-1:-1;;;;;5777:6:0;293:10;5777:22;5769:67;;;;-1:-1:-1;;;5769:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;25814:26:0;::::1;;::::0;;;:17:::1;:26;::::0;;;;;::::1;;25806:65;;;::::0;-1:-1:-1;;;25806:65:0;;12549:2:1;25806:65:0::1;::::0;::::1;12531:21:1::0;12588:2;12568:18;;;12561:30;12627:28;12607:18;;;12600:56;12673:18;;25806:65:0::1;12347:350:1::0;25806:65:0::1;25887:9;25882:336;25906:16;:23:::0;25902:27;::::1;25882:336;;;25978:7;-1:-1:-1::0;;;;;25955:30:0::1;:16;25972:1;25955:19;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;25955:19:0::1;:30;25951:256;;;26028:16;26045:23:::0;;:27:::1;::::0;26071:1:::1;::::0;26045:27:::1;:::i;:::-;26028:45;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;26006:16:::1;:19:::0;;-1:-1:-1;;;;;26028:45:0;;::::1;::::0;26023:1;;26006:19;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;;::::1;:67:::0;;-1:-1:-1;;;;;;26006:67:0::1;-1:-1:-1::0;;;;;26006:67:0;;::::1;;::::0;;26092:26;;::::1;::::0;;:17:::1;:26:::0;;;;;;:34;;-1:-1:-1;;26092:34:0::1;::::0;;26145:16:::1;:22:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;26145:22:0;;;;;-1:-1:-1;;;;;;26145:22:0::1;::::0;;;;;25384:327:::1;25291:427:::0;:::o;25951:256::-:1;25931:3:::0;::::1;::::0;::::1;:::i;:::-;;;;25882:336;;23676:229:::0;5777:6;;-1:-1:-1;;;;;5777:6:0;293:10;5777:22;5769:67;;;;-1:-1:-1;;;5769:67:0;;;;;;;:::i;:::-;23807:31:::1;::::0;-1:-1:-1;;;23807:31:0;;23832:4:::1;23807:31;::::0;::::1;2611:51:1::0;23769:4:0;;23746:13:::1;::::0;-1:-1:-1;;;;;23807:16:0;::::1;::::0;::::1;::::0;2584:18:1;;23807:31:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23849:48;::::0;-1:-1:-1;;;23849:48:0;;23873:10:::1;23849:48;::::0;::::1;13327:51:1::0;13394:18;;;13387:34;;;23785:53:0;;-1:-1:-1;;;;;;23849:15:0;::::1;::::0;::::1;::::0;13300:18:1;;23849:48:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23735:170;;23676:229:::0;:::o;11496:268::-;5777:6;;-1:-1:-1;;;;;5777:6:0;293:10;5777:22;5769:67;;;;-1:-1:-1;;;5769:67:0;;;;;;;:::i;:::-;11642:1:::1;11632:6;:11;;11624:60;;;::::0;-1:-1:-1;;;11624:60:0;;13884:2:1;11624:60:0::1;::::0;::::1;13866:21:1::0;13923:2;13903:18;;;13896:30;13962:34;13942:18;;;13935:62;-1:-1:-1;;;14013:18:1;;;14006:34;14057:19;;11624:60:0::1;13682:400:1::0;11624:60:0::1;11740:4;11734;11725:6;11709:13;2240:12:::0;;;2152:108;11709:13:::1;:22;;;;:::i;:::-;:29;;;;:::i;:::-;11708:36;;;;:::i;:::-;11707:49;::::0;11749:6:::1;11707:49;:::i;:::-;11695:9;:61:::0;-1:-1:-1;11496:268:0:o;12106:101::-;5777:6;;-1:-1:-1;;;;;5777:6:0;293:10;5777:22;5769:67;;;;-1:-1:-1;;;5769:67:0;;;;;;;:::i;:::-;12178:11:::1;:21:::0;;-1:-1:-1;;12178:21:0::1;::::0;::::1;;::::0;;;::::1;::::0;;12106:101::o;1943:104::-;1999:13;2032:7;2025:14;;;;;:::i;24975:310::-;5777:6;;-1:-1:-1;;;;;5777:6:0;293:10;5777:22;5769:67;;;;-1:-1:-1;;;5769:67:0;;;;;;;:::i;:::-;25071:13:::1;::::0;-1:-1:-1;;;;;25060:24:0;;::::1;25071:13:::0;::::1;25060:24;;25052:65;;;::::0;-1:-1:-1;;;25052:65:0;;8571:2:1;25052:65:0::1;::::0;::::1;8553:21:1::0;8610:2;8590:18;;;8583:30;8649;8629:18;;;8622:58;8697:18;;25052:65:0::1;8369:352:1::0;25052:65:0::1;25147:6;::::0;-1:-1:-1;;;;;25136:17:0;;::::1;25147:6:::0;::::1;25136:17;;25128:64;;;;-1:-1:-1::0;;;25128:64:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;25203:26:0::1;;::::0;;;:17:::1;:26;::::0;;;;:33;;-1:-1:-1;;25203:33:0::1;25232:4;25203:33:::0;;::::1;::::0;;;25247:16:::1;:30:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;25247:30:0::1;::::0;;::::1;::::0;;24975:310::o;24608:243::-;5777:6;;-1:-1:-1;;;;;5777:6:0;293:10;5777:22;5769:67;;;;-1:-1:-1;;;5769:67:0;;;;;;;:::i;:::-;24692:9:::1;24688:156;24711:16;:23:::0;:25:::1;::::0;24735:1:::1;::::0;24711:25:::1;:::i;:::-;24706:1;:30;24688:156;;24756:76;24772:16;24789:1;24772:19;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;24772:19:0::1;24792:8;24801:30;24811:16;24828:1;24811:19;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;24811:19:0::1;24801:9;:30::i;:::-;24756:15;:76::i;:::-;24737:3:::0;::::1;::::0;::::1;:::i;:::-;;;;24688:156;;12983:237:::0;5777:6;;-1:-1:-1;;;;;5777:6:0;293:10;5777:22;5769:67;;;;-1:-1:-1;;;5769:67:0;;;;;;;:::i;:::-;13090:6:::1;::::0;-1:-1:-1;;;;;13082:14:0;;::::1;13090:6:::0;::::1;13082:14;;13074:84;;;::::0;-1:-1:-1;;;13074:84:0;;14289:2:1;13074:84:0::1;::::0;::::1;14271:21:1::0;14328:2;14308:18;;;14301:30;14367:34;14347:18;;;14340:62;14438:27;14418:18;;;14411:55;14483:19;;13074:84:0::1;14087:421:1::0;13074:84:0::1;13171:41;13200:4;13206:5;13171:28;:41::i;3627:411::-:0;293:10;3720:4;3764:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;3764:34:0;;;;;;;;;;3817:35;;;;3809:85;;;;-1:-1:-1;;;3809:85:0;;14715:2:1;3809:85:0;;;14697:21:1;14754:2;14734:18;;;14727:30;14793:34;14773:18;;;14766:62;-1:-1:-1;;;14844:18:1;;;14837:35;14889:19;;3809:85:0;14513:401:1;3809:85:0;3930:67;293:10;3953:7;3981:15;3962:16;:34;3930:8;:67::i;:::-;-1:-1:-1;4026:4:0;;3627:411;-1:-1:-1;;;3627:411:0:o;2399:175::-;2485:4;2502:42;293:10;2526:9;2537:6;2502:9;:42::i;1787:21::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;21974:1116::-;5777:6;;-1:-1:-1;;;;;5777:6:0;293:10;5777:22;5769:67;;;;-1:-1:-1;;;5769:67:0;;;;;;;:::i;:::-;22086:13:::1;:23:::0;;-1:-1:-1;;;;;22086:23:0;::::1;-1:-1:-1::0;;;;;;22086:23:0;;::::1;::::0;::::1;::::0;;;22206:9:::1;:22:::0;;;;::::1;::::0;::::1;::::0;;22284:20:::1;::::0;;-1:-1:-1;;;22284:20:0;;;;22086:23;;22284:18:::1;::::0;-1:-1:-1;22284:20:0;;::::1;::::0;::::1;::::0;;;;;;;;22086:23;22284:20:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;22272:44:0::1;;22325:4;22332:10;-1:-1:-1::0;;;;;22332:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22272:78;::::0;-1:-1:-1;;;;;;22272:78:0::1;::::0;;;;;;-1:-1:-1;;;;;15405:15:1;;;22272:78:0::1;::::0;::::1;15387:34:1::0;15457:15;;15437:18;;;15430:43;15322:18;;22272:78:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22263:6;:87:::0;;-1:-1:-1;;;;;;22263:87:0::1;-1:-1:-1::0;;;;;22263:87:0;;;::::1;::::0;;::::1;::::0;;22361:48:::1;::::0;-1:-1:-1;22361:25:0::1;:48::i;:::-;22457:6;::::0;22420:51:::1;::::0;-1:-1:-1;;;;;22457:6:0::1;::::0;22420:28:::1;:51::i;:::-;22491:7;22488:595;;;22580:1;22556:21;:25;22548:73;;;::::0;-1:-1:-1;;;22548:73:0;;15686:2:1;22548:73:0::1;::::0;::::1;15668:21:1::0;15725:2;15705:18;;;15698:30;15764:34;15744:18;;;15737:62;-1:-1:-1;;;15815:18:1;;;15808:33;15858:19;;22548:73:0::1;15484:399:1::0;22548:73:0::1;22671:1;22644:24;22662:4;22644:9;:24::i;:::-;:28;22636:79;;;::::0;-1:-1:-1;;;22636:79:0;;16090:2:1;22636:79:0::1;::::0;::::1;16072:21:1::0;16129:2;16109:18;;;16102:30;16168:34;16148:18;;;16141:62;-1:-1:-1;;;16219:18:1;;;16212:36;16265:19;;22636:79:0::1;15888:402:1::0;22636:79:0::1;22762:9;::::0;22730:69:::1;::::0;22747:4:::1;::::0;-1:-1:-1;;;;;22762:9:0::1;22774:24;22747:4:::0;22774:9:::1;:24::i;22730:69::-;22814:9;::::0;-1:-1:-1;;;;;22814:9:0::1;:25;22847:21;22896:4;22920:24;22896:4:::0;22920:9:::1;:24::i;:::-;23005:17;::::0;22814:257:::1;::::0;-1:-1:-1;;;;;;22814:257:0::1;::::0;;;;;;::::1;::::0;;;22963:1:::1;::::0;;;-1:-1:-1;;;;;23005:17:0::1;::::0;23041:15:::1;::::0;22814:257:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;22488:595;22045:1045;21974:1116:::0;;:::o;12843:132::-;5777:6;;-1:-1:-1;;;;;5777:6:0;293:10;5777:22;5769:67;;;;-1:-1:-1;;;5769:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12928:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:39;;-1:-1:-1;;12928:39:0::1;::::0;::::1;;::::0;;;::::1;::::0;;12843:132::o;24341:261::-;24392:7;;;24443:124;24466:16;:23;:25;;24490:1;;24466:25;:::i;:::-;24461:1;:30;24443:124;;24525:30;24535:16;24552:1;24535:19;;;;;;;;:::i;24525:30::-;24511:44;;;;:::i;:::-;;-1:-1:-1;24492:3:0;;;;:::i;:::-;;;;24443:124;;;-1:-1:-1;24584:10:0;24341:261;-1:-1:-1;24341:261:0:o;13362:213::-;5777:6;;-1:-1:-1;;;;;5777:6:0;293:10;5777:22;5769:67;;;;-1:-1:-1;;;5769:67:0;;;;;;;:::i;:::-;13471:15:::1;:28:::0;;-1:-1:-1;;;;;13471:28:0;;::::1;-1:-1:-1::0;;;;;;13471:28:0;;::::1;;::::0;;;13510:17:::1;:30:::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;13551:9:::1;:16:::0;;;;;::::1;::::0;::::1;;::::0;;13362:213::o;1761:19::-;;;;;;;:::i;23934:311::-;5777:6;;-1:-1:-1;;;;;5777:6:0;293:10;5777:22;5769:67;;;;-1:-1:-1;;;5769:67:0;;;;;;;:::i;:::-;24055:13:::1;::::0;::::1;;24054:14;24046:73;;;::::0;-1:-1:-1;;;24046:73:0;;17420:2:1;24046:73:0::1;::::0;::::1;17402:21:1::0;17459:2;17439:18;;;17432:30;17498:34;17478:18;;;17471:62;-1:-1:-1;;;17549:18:1;;;17542:44;17603:19;;24046:73:0::1;17218:410:1::0;24046:73:0::1;24134:9;24130:108;24162:1;24152:2;:9;:11;;;;:::i;:::-;24148:1;:15;24130:108;;24183:43;24207:4;24213:2;24216:1;24213:5;;;;;;;;:::i;:::-;;;;;;;24219:3;24223:1;24219:6;;;;;;;;:::i;:::-;;;;;;;24183:15;:43::i;:::-;24164:3:::0;::::1;::::0;::::1;:::i;:::-;;;;24130:108;;10741:107:::0;5777:6;;-1:-1:-1;;;;;5777:6:0;293:10;5777:22;5769:67;;;;-1:-1:-1;;;5769:67:0;;;;;;;:::i;:::-;10812:20:::1;:28:::0;;-1:-1:-1;;10812:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;10741:107::o;11221:267::-;5777:6;;-1:-1:-1;;;;;5777:6:0;293:10;5777:22;5769:67;;;;-1:-1:-1;;;5769:67:0;;;;;;;:::i;:::-;11360:1:::1;11350:6;:11;;11342:63;;;::::0;-1:-1:-1;;;11342:63:0;;17835:2:1;11342:63:0::1;::::0;::::1;17817:21:1::0;17874:2;17854:18;;;17847:30;17913:34;17893:18;;;17886:62;-1:-1:-1;;;17964:18:1;;;17957:37;18011:19;;11342:63:0::1;17633:403:1::0;11342:63:0::1;11464:4;11458;11449:6;11433:13;2240:12:::0;;;2152:108;11433:13:::1;:22;;;;:::i;:::-;:29;;;;:::i;:::-;11432:36;;;;:::i;:::-;11431:49;::::0;11473:6:::1;11431:49;:::i;:::-;11416:12;:64:::0;-1:-1:-1;11221:267:0:o;6018:246::-;5777:6;;-1:-1:-1;;;;;5777:6:0;293:10;5777:22;5769:67;;;;-1:-1:-1;;;5769:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6109:22:0;::::1;6101:73;;;::::0;-1:-1:-1;;;6101:73:0;;18243:2:1;6101:73:0::1;::::0;::::1;18225:21:1::0;18282:2;18262:18;;;18255:30;18321:34;18301:18;;;18294:62;-1:-1:-1;;;18372:18:1;;;18365:36;18418:19;;6101:73:0::1;18041:402:1::0;6101:73:0::1;6211:6;::::0;6190:38:::1;::::0;-1:-1:-1;;;;;6190:38:0;;::::1;::::0;6211:6:::1;::::0;6190:38:::1;::::0;6211:6:::1;::::0;6190:38:::1;6239:6;:17:::0;;-1:-1:-1;;;;;;6239:17:0::1;-1:-1:-1::0;;;;;6239:17:0;;;::::1;::::0;;;::::1;::::0;;6018:246::o;10854:94::-;5777:6;;-1:-1:-1;;;;;5777:6:0;293:10;5777:22;5769:67;;;;-1:-1:-1;;;5769:67:0;;;;;;;:::i;:::-;10922:10:::1;:18:::0;;;::::1;;;;-1:-1:-1::0;;10922:18:0;;::::1;::::0;;;::::1;::::0;;10854:94::o;23418:252::-;5777:6;;-1:-1:-1;;;;;5777:6:0;293:10;5777:22;5769:67;;;;-1:-1:-1;;;5769:67:0;;;;;;;:::i;:::-;23485:13:::1;::::0;::::1;;23484:14;23476:81;;;::::0;-1:-1:-1;;;23476:81:0;;18650:2:1;23476:81:0::1;::::0;::::1;18632:21:1::0;18689:2;18669:18;;;18662:30;18728:34;18708:18;;;18701:62;-1:-1:-1;;;18779:18:1;;;18772:52;18841:19;;23476:81:0::1;18448:418:1::0;23476:81:0::1;23604:58;::::0;23568:12:::1;::::0;23612:10:::1;::::0;23636:21:::1;::::0;23568:12;23604:58;23568:12;23604:58;23636:21;23612:10;23604:58:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24251:84:::0;5777:6;;-1:-1:-1;;;;;5777:6:0;293:10;5777:22;5769:67;;;;-1:-1:-1;;;5769:67:0;;;;;;;:::i;:::-;24317:7:::1;:10:::0;24251:84::o;4955:378::-;-1:-1:-1;;;;;5091:19:0;;5083:68;;;;-1:-1:-1;;;5083:68:0;;19283:2:1;5083:68:0;;;19265:21:1;19322:2;19302:18;;;19295:30;19361:34;19341:18;;;19334:62;-1:-1:-1;;;19412:18:1;;;19405:34;19456:19;;5083:68:0;19081:400:1;5083:68:0;-1:-1:-1;;;;;5170:21:0;;5162:68;;;;-1:-1:-1;;;5162:68:0;;19688:2:1;5162:68:0;;;19670:21:1;19727:2;19707:18;;;19700:30;19766:34;19746:18;;;19739:62;-1:-1:-1;;;19817:18:1;;;19810:32;19859:19;;5162:68:0;19486:398:1;5162:68:0;-1:-1:-1;;;;;5241:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;5293:32;;3331:25:1;;;5293:32:0;;3304:18:1;5293:32:0;;;;;;;4955:378;;;:::o;14176:4794::-;-1:-1:-1;;;;;14308:18:0;;14300:68;;;;-1:-1:-1;;;14300:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14387:16:0;;14379:64;;;;-1:-1:-1;;;14379:64:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14463:21:0;;;;;;:17;:21;;;;;;;;14462:22;14454:58;;;;-1:-1:-1;;;14454:58:0;;20901:2:1;14454:58:0;;;20883:21:1;20940:2;20920:18;;;20913:30;-1:-1:-1;;;20959:18:1;;;20952:53;21022:18;;14454:58:0;20699:347:1;14454:58:0;14550:9;14532:28;;;;:17;:28;;;;;;;;14531:29;14523:65;;;;-1:-1:-1;;;14523:65:0;;20901:2:1;14523:65:0;;;20883:21:1;20940:2;20920:18;;;20913:30;-1:-1:-1;;;20959:18:1;;;20952:53;21022:18;;14523:65:0;20699:347:1;14523:65:0;14605:11;14602:92;;14633:28;14649:4;14655:2;14659:1;14633:15;:28::i;14602:92::-;14710:13;;;;14706:132;;-1:-1:-1;;;;;14747:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;14776:23:0;;;;;;:19;:23;;;;;;;;14747:52;14739:87;;;;-1:-1:-1;;;14739:87:0;;21253:2:1;14739:87:0;;;21235:21:1;21292:2;21272:18;;;21265:30;-1:-1:-1;;;21311:18:1;;;21304:52;21373:18;;14739:87:0;21051:346:1;14739:87:0;14851:10;;;;;;;14848:187;;;-1:-1:-1;;;;;14881:23:0;;;;;;:17;:23;;;;;;;;14880:24;:50;;;;-1:-1:-1;;;;;;14909:21:0;;;;;;:17;:21;;;;;;;;14908:22;14880:50;14877:147;;;14964:26;14982:4;14987:2;14964:17;:26::i;:::-;;14877:147;5717:6;;-1:-1:-1;;;;;15063:15:0;;;5717:6;;15063:15;;;;:45;;-1:-1:-1;5717:6:0;;-1:-1:-1;;;;;15095:13:0;;;5717:6;;15095:13;;15063:45;:78;;;;-1:-1:-1;;;;;;15125:16:0;;;;15063:78;:116;;;;-1:-1:-1;;;;;;15158:21:0;;15172:6;15158:21;;15063:116;:142;;;;-1:-1:-1;15197:8:0;;-1:-1:-1;;;15197:8:0;;;;15196:9;15063:142;:183;;;;-1:-1:-1;;;;;;15223:23:0;;;;;;:19;:23;;;;;;;;15222:24;15063:183;:226;;;;-1:-1:-1;;;;;;15264:25:0;;;;;;:19;:25;;;;;;;;15263:26;15063:226;15045:1591;;;15449:20;;;;15445:466;;;15507:9;;-1:-1:-1;;;;;15493:24:0;;;15507:9;;15493:24;;;;:49;;-1:-1:-1;15535:6:0;;-1:-1:-1;;;;;15521:21:0;;;15535:6;;15521:21;;15493:49;15489:407;;;15612:16;15627:1;15612:12;:16;:::i;:::-;15599:9;15574:35;;;;:24;:35;;;;;;:54;:105;;;;-1:-1:-1;15663:16:0;15678:1;15663:12;:16;:::i;:::-;-1:-1:-1;;;;;15632:28:0;;;;;;:24;:28;;;;;;:47;15574:105;15566:171;;;;-1:-1:-1;;;15566:171:0;;21604:2:1;15566:171:0;;;21586:21:1;21643:2;21623:18;;;21616:30;21682:34;21662:18;;;21655:62;-1:-1:-1;;;21733:18:1;;;21726:51;21794:19;;15566:171:0;21402:417:1;15566:171:0;15785:9;15760:35;;;;:24;:35;;;;;;15798:12;15760:50;;;;-1:-1:-1;;;;;15833:28:0;;;;;;:43;15489:407;-1:-1:-1;;;;;15972:31:0;;;;;;:25;:31;;;;;;;;:63;;;;-1:-1:-1;;;;;;16008:27:0;;;;;;:23;:27;;;;;;;;16007:28;15972:63;15968:657;;;16074:12;;16064:6;:22;;16056:80;;;;-1:-1:-1;;;16056:80:0;;22026:2:1;16056:80:0;;;22008:21:1;22065:2;22045:18;;;22038:30;22104:34;22084:18;;;22077:62;-1:-1:-1;;;22155:18:1;;;22148:43;22208:19;;16056:80:0;21824:409:1;16056:80:0;16189:9;;16172:13;16182:2;16172:9;:13::i;:::-;16163:22;;:6;:22;:::i;:::-;:35;;16155:67;;;;-1:-1:-1;;;16155:67:0;;22440:2:1;16155:67:0;;;22422:21:1;22479:2;22459:18;;;22452:30;-1:-1:-1;;;22498:18:1;;;22491:49;22557:18;;16155:67:0;22238:343:1;16155:67:0;15968:657;;;-1:-1:-1;;;;;16290:29:0;;;;;;:25;:29;;;;;;;;:63;;;;-1:-1:-1;;;;;;16324:29:0;;;;;;:23;:29;;;;;;;;16323:30;16290:63;16286:339;;;16392:12;;16382:6;:22;;16374:81;;;;-1:-1:-1;;;16374:81:0;;22788:2:1;16374:81:0;;;22770:21:1;22827:2;22807:18;;;22800:30;22866:34;22846:18;;;22839:62;-1:-1:-1;;;22917:18:1;;;22910:44;22971:19;;16374:81:0;22586:410:1;16286:339:0;-1:-1:-1;;;;;16495:27:0;;;;;;:23;:27;;;;;;;;16490:135;;16576:9;;16559:13;16569:2;16559:9;:13::i;:::-;16550:22;;:6;:22;:::i;:::-;:35;;16542:67;;;;-1:-1:-1;;;16542:67:0;;22440:2:1;16542:67:0;;;22422:21:1;22479:2;22459:18;;;22452:30;-1:-1:-1;;;22498:18:1;;;22491:49;22557:18;;16542:67:0;22238:343:1;16542:67:0;16646:28;16677:24;16695:4;16677:9;:24::i;:::-;16751:18;;16646:55;;-1:-1:-1;16727:42:0;;;;;;;16798:35;;-1:-1:-1;16822:11:0;;;;16798:35;:61;;;;-1:-1:-1;16851:8:0;;-1:-1:-1;;;16851:8:0;;;;16850:9;16798:61;:110;;;;-1:-1:-1;;;;;;16877:31:0;;;;;;:25;:31;;;;;;;;16876:32;16798:110;:153;;;;-1:-1:-1;;;;;;16926:25:0;;;;;;:19;:25;;;;;;;;16925:26;16798:153;:194;;;;-1:-1:-1;;;;;;16969:23:0;;;;;;:19;:23;;;;;;;;16968:24;16798:194;16780:322;;;17019:8;:15;;-1:-1:-1;;;;17019:15:0;-1:-1:-1;;;17019:15:0;;;17049:10;:8;:10::i;:::-;17074:8;:16;;-1:-1:-1;;;;17074:16:0;;;16780:322;17136:8;;-1:-1:-1;;;;;17245:25:0;;17120:12;17245:25;;;:19;:25;;;;;;17136:8;-1:-1:-1;;;17136:8:0;;;;;17135:9;;17245:25;;:52;;-1:-1:-1;;;;;;17274:23:0;;;;;;:19;:23;;;;;;;;17245:52;17242:99;;;-1:-1:-1;17324:5:0;17242:99;17361:12;17465:7;17462:1457;;;17636:7;;17621:22;;:12;:22;:::i;:::-;17599:18;;:44;;17598:81;;;;-1:-1:-1;;;;;;17648:31:0;;;;;;:25;:31;;;;;;;;17598:81;17595:1153;;;17720:3;17706:11;:6;17715:2;17706:11;:::i;:::-;:17;;;;:::i;:::-;17699:24;;17790:13;;17771:16;;17764:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;17742:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;17870:13:0;;17851:16;;17844:23;;:4;:23;:::i;:::-;:39;;;;:::i;:::-;17822:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;17938:13:0;;17925:10;;17918:17;;:4;:17;:::i;:::-;:33;;;;:::i;:::-;17902:12;;:49;;;;;;;:::i;:::-;;;;-1:-1:-1;17595:1153:0;;-1:-1:-1;17595:1153:0;;-1:-1:-1;;;;;18014:29:0;;;;;;:25;:29;;;;;;;;:50;;;;;18063:1;18047:13;;:17;18014:50;18010:738;;;18116:3;18100:13;;18091:6;:22;;;;:::i;18010:738::-;-1:-1:-1;;;;;18408:31:0;;;;;;:25;:31;;;;;;;;:51;;;;;18458:1;18443:12;;:16;18408:51;18405:343;;;18509:3;18494:12;;18485:6;:21;;;;:::i;:::-;:27;;;;:::i;:::-;18478:34;;18576:12;;18558:15;;18551:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;18529:18;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;;18654:12:0;;18636:15;;18629:22;;:4;:22;:::i;:::-;:37;;;;:::i;:::-;18607:18;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;;18720:12:0;;18708:9;;18701:16;;:4;:16;:::i;:::-;:31;;;;:::i;:::-;18685:12;;:47;;;;;;;:::i;:::-;;;;-1:-1:-1;;18405:343:0;18779:8;;18776:93;;18811:42;18827:4;18841;18848;18811:15;:42::i;:::-;18893:14;18903:4;18893:14;;:::i;:::-;;;17462:1457;18929:33;18945:4;18951:2;18955:6;18929:15;:33::i;:::-;14289:4681;;;;14176:4794;;;:::o;20007:1598::-;20046:23;20072:24;20090:4;20072:9;:24::i;:::-;20046:50;;20107:25;20177:12;;20156:18;;20135;;:39;;;;:::i;:::-;:54;;;;:::i;:::-;20107:82;-1:-1:-1;20200:12:0;20236:20;;;:46;;-1:-1:-1;20260:22:0;;20236:46;20233:60;;;20285:7;;;20007:1598::o;20233:60::-;20326:18;;20308:15;:36;20305:103;;;20378:18;;20360:36;;20305:103;20477:23;20562:1;20542:17;20521:18;;20503:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;20477:86;-1:-1:-1;20574:26:0;20603:33;20477:86;20603:15;:33;:::i;:::-;20574:62;-1:-1:-1;20675:21:0;20707:36;20574:62;20707:16;:36::i;:::-;20762:18;20783:41;20807:17;20783:21;:41;:::i;:::-;20762:62;;20835:23;20936:1;20917:18;;:20;;;;:::i;:::-;20896:42;;:17;:42;:::i;:::-;20874:18;;20861:31;;:10;:31;:::i;:::-;:78;;;;:::i;:::-;20835:104;;20950:17;21039:1;21020:18;;:20;;;;:::i;:::-;20999:42;;:17;:42;:::i;:::-;20983:12;;20970:25;;:10;:25;:::i;:::-;:72;;;;:::i;:::-;20950:92;-1:-1:-1;21061:23:0;20950:92;21087:28;21100:15;21087:10;:28;:::i;:::-;:40;;;;:::i;:::-;21159:1;21138:18;:22;;;21171:18;:22;;;21204:12;:16;;;21252:9;;21244:45;;21061:66;;-1:-1:-1;;;;;;21252:9:0;;21275;;21244:45;21159:1;21244:45;21275:9;21252;21244:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;21321:15:0;;21313:57;;21231:58;;-1:-1:-1;;;;;;21321:15:0;;21350;;21313:57;;;;21350:15;21321;21313:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21300:70:0;;-1:-1:-1;;21391:19:0;;;;;:42;;;21432:1;21414:15;:19;21391:42;21388:210;;;21449:46;21462:15;21479;21449:12;:46::i;:::-;21567:18;;21515:71;;;23203:25:1;;;23259:2;23244:18;;23237:34;;;23287:18;;;23280:34;;;;21515:71:0;;;;;;23191:2:1;21515:71:0;;;21388:210;20035:1570;;;;;;;;;;20007:1598::o;4044:610::-;-1:-1:-1;;;;;4184:20:0;;4176:70;;;;-1:-1:-1;;;4176:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4265:23:0;;4257:71;;;;-1:-1:-1;;;4257:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4363:17:0;;4339:21;4363:17;;;;;;;;;;;4399:23;;;;4391:74;;;;-1:-1:-1;;;4391:74:0;;23527:2:1;4391:74:0;;;23509:21:1;23566:2;23546:18;;;23539:30;23605:34;23585:18;;;23578:62;-1:-1:-1;;;23656:18:1;;;23649:36;23702:19;;4391:74:0;23325:402:1;4391:74:0;-1:-1:-1;;;;;4501:17:0;;;:9;:17;;;;;;;;;;;4521:22;;;4501:42;;4565:20;;;;;;;;:30;;4537:6;;4501:9;4565:30;;4537:6;;4565:30;:::i;:::-;;;;;;;;4628:9;-1:-1:-1;;;;;4611:35:0;4620:6;-1:-1:-1;;;;;4611:35:0;;4639:6;4611:35;;;;3331:25:1;;3319:2;3304:18;;3185:177;4611:35:0;;;;;;;;4165:489;4044:610;;;:::o;13226:130::-;-1:-1:-1;;;;;13309:31:0;;;;;;;;:25;:31;;;;;:39;;-1:-1:-1;;13309:39:0;;;;;;;;;;13226:130::o;13712:254::-;13793:7;14104:20;;14152:8;;13821:38;;-1:-1:-1;14104:20:0;;14152:8;13821:38;13813:75;;;;-1:-1:-1;;;13813:75:0;;23934:2:1;13813:75:0;;;23916:21:1;23973:2;23953:18;;;23946:30;24012:26;23992:18;;;23985:54;24056:18;;13813:75:0;23732:348:1;13813:75:0;14104:20;;14152:8;13899:59;;-1:-1:-1;13927:5:0;13920:12;;13899:59;-1:-1:-1;13955:3:0;13948:10;;18976:507;19066:16;;;19080:1;19066:16;;;;;;;;19042:21;;19066:16;;;;;;;;;;-1:-1:-1;19066:16:0;19042:40;;19111:4;19093;19098:1;19093:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;19093:23:0;;;:7;;;;;;;;;;:23;;;;19137:9;;:16;;;-1:-1:-1;;;19137:16:0;;;;:9;;;;;:14;;:16;;;;;19093:7;;19137:16;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19127:4;19132:1;19127:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;19127:26:0;;;:7;;;;;;;;;:26;19196:9;;19164:56;;19181:4;;19196:9;19208:11;19164:8;:56::i;:::-;19257:9;;:218;;-1:-1:-1;;;19257:218:0;;-1:-1:-1;;;;;19257:9:0;;;;:60;;:218;;19332:11;;19257:9;;19402:4;;19429;;19449:15;;19257:218;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19492:509;19672:9;;19640:56;;19657:4;;-1:-1:-1;;;;;19672:9:0;19684:11;19640:8;:56::i;:::-;19737:9;;19935:17;;19737:256;;-1:-1:-1;;;19737:256:0;;-1:-1:-1;;;;;19737:9:0;;;;:25;;19770:9;;19737:256;;19803:4;;19823:11;;19737:9;;;;19935:17;;19967:15;;19737:256;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;19492:509;;:::o;14:127:1:-;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:275;217:2;211:9;282:2;263:13;;-1:-1:-1;;259:27:1;247:40;;317:18;302:34;;338:22;;;299:62;296:88;;;364:18;;:::i;:::-;400:2;393:22;146:275;;-1:-1:-1;146:275:1:o;426:183::-;486:4;519:18;511:6;508:30;505:56;;;541:18;;:::i;:::-;-1:-1:-1;586:1:1;582:14;598:4;578:25;;426:183::o;614:131::-;-1:-1:-1;;;;;689:31:1;;679:42;;669:70;;735:1;732;725:12;669:70;614:131;:::o;750:737::-;804:5;857:3;850:4;842:6;838:17;834:27;824:55;;875:1;872;865:12;824:55;911:6;898:20;937:4;961:60;977:43;1017:2;977:43;:::i;:::-;961:60;:::i;:::-;1055:15;;;1141:1;1137:10;;;;1125:23;;1121:32;;;1086:12;;;;1165:15;;;1162:35;;;1193:1;1190;1183:12;1162:35;1229:2;1221:6;1217:15;1241:217;1257:6;1252:3;1249:15;1241:217;;;1337:3;1324:17;1354:31;1379:5;1354:31;:::i;:::-;1398:18;;1436:12;;;;1274;;1241:217;;;-1:-1:-1;1476:5:1;750:737;-1:-1:-1;;;;;;750:737:1:o;1492:348::-;1576:6;1629:2;1617:9;1608:7;1604:23;1600:32;1597:52;;;1645:1;1642;1635:12;1597:52;1685:9;1672:23;1718:18;1710:6;1707:30;1704:50;;;1750:1;1747;1740:12;1704:50;1773:61;1826:7;1817:6;1806:9;1802:22;1773:61;:::i;:::-;1763:71;1492:348;-1:-1:-1;;;;1492:348:1:o;1845:597::-;1957:4;1986:2;2015;2004:9;1997:21;2047:6;2041:13;2090:6;2085:2;2074:9;2070:18;2063:34;2115:1;2125:140;2139:6;2136:1;2133:13;2125:140;;;2234:14;;;2230:23;;2224:30;2200:17;;;2219:2;2196:26;2189:66;2154:10;;2125:140;;;2283:6;2280:1;2277:13;2274:91;;;2353:1;2348:2;2339:6;2328:9;2324:22;2320:31;2313:42;2274:91;-1:-1:-1;2426:2:1;2405:15;-1:-1:-1;;2401:29:1;2386:45;;;;2433:2;2382:54;;1845:597;-1:-1:-1;;;1845:597:1:o;2673:315::-;2741:6;2749;2802:2;2790:9;2781:7;2777:23;2773:32;2770:52;;;2818:1;2815;2808:12;2770:52;2857:9;2844:23;2876:31;2901:5;2876:31;:::i;:::-;2926:5;2978:2;2963:18;;;;2950:32;;-1:-1:-1;;;2673:315:1:o;3367:456::-;3444:6;3452;3460;3513:2;3501:9;3492:7;3488:23;3484:32;3481:52;;;3529:1;3526;3519:12;3481:52;3568:9;3555:23;3587:31;3612:5;3587:31;:::i;:::-;3637:5;-1:-1:-1;3694:2:1;3679:18;;3666:32;3707:33;3666:32;3707:33;:::i;:::-;3367:456;;3759:7;;-1:-1:-1;;;3813:2:1;3798:18;;;;3785:32;;3367:456::o;4225:247::-;4284:6;4337:2;4325:9;4316:7;4312:23;4308:32;4305:52;;;4353:1;4350;4343:12;4305:52;4392:9;4379:23;4411:31;4436:5;4411:31;:::i;:::-;4461:5;4225:247;-1:-1:-1;;;4225:247:1:o;4477:248::-;4545:6;4553;4606:2;4594:9;4585:7;4581:23;4577:32;4574:52;;;4622:1;4619;4612:12;4574:52;-1:-1:-1;;4645:23:1;;;4715:2;4700:18;;;4687:32;;-1:-1:-1;4477:248:1:o;4730:180::-;4789:6;4842:2;4830:9;4821:7;4817:23;4813:32;4810:52;;;4858:1;4855;4848:12;4810:52;-1:-1:-1;4881:23:1;;4730:180;-1:-1:-1;4730:180:1:o;4915:118::-;5001:5;4994:13;4987:21;4980:5;4977:32;4967:60;;5023:1;5020;5013:12;5038:382;5103:6;5111;5164:2;5152:9;5143:7;5139:23;5135:32;5132:52;;;5180:1;5177;5170:12;5132:52;5219:9;5206:23;5238:31;5263:5;5238:31;:::i;:::-;5288:5;-1:-1:-1;5345:2:1;5330:18;;5317:32;5358:30;5317:32;5358:30;:::i;:::-;5407:7;5397:17;;;5038:382;;;;;:::o;5425:241::-;5481:6;5534:2;5522:9;5513:7;5509:23;5505:32;5502:52;;;5550:1;5547;5540:12;5502:52;5589:9;5576:23;5608:28;5630:5;5608:28;:::i;5671:529::-;5748:6;5756;5764;5817:2;5805:9;5796:7;5792:23;5788:32;5785:52;;;5833:1;5830;5823:12;5785:52;5872:9;5859:23;5891:31;5916:5;5891:31;:::i;:::-;5941:5;-1:-1:-1;5998:2:1;5983:18;;5970:32;6011:33;5970:32;6011:33;:::i;:::-;6063:7;-1:-1:-1;6122:2:1;6107:18;;6094:32;6135:33;6094:32;6135:33;:::i;:::-;6187:7;6177:17;;;5671:529;;;;;:::o;6205:1273::-;6332:6;6340;6348;6401:2;6389:9;6380:7;6376:23;6372:32;6369:52;;;6417:1;6414;6407:12;6369:52;6456:9;6443:23;6475:31;6500:5;6475:31;:::i;:::-;6525:5;-1:-1:-1;6549:2:1;6587:18;;;6574:32;6625:18;6655:14;;;6652:34;;;6682:1;6679;6672:12;6652:34;6705:61;6758:7;6749:6;6738:9;6734:22;6705:61;:::i;:::-;6695:71;;6819:2;6808:9;6804:18;6791:32;6775:48;;6848:2;6838:8;6835:16;6832:36;;;6864:1;6861;6854:12;6832:36;-1:-1:-1;6887:24:1;;6942:4;6934:13;;6930:27;-1:-1:-1;6920:55:1;;6971:1;6968;6961:12;6920:55;7007:2;6994:16;7030:60;7046:43;7086:2;7046:43;:::i;7030:60::-;7124:15;;;7206:1;7202:10;;;;7194:19;;7190:28;;;7155:12;;;;7230:19;;;7227:39;;;7262:1;7259;7252:12;7227:39;7286:11;;;;7306:142;7322:6;7317:3;7314:15;7306:142;;;7388:17;;7376:30;;7339:12;;;;7426;;;;7306:142;;;7467:5;7457:15;;;;;;;6205:1273;;;;;:::o;7483:388::-;7551:6;7559;7612:2;7600:9;7591:7;7587:23;7583:32;7580:52;;;7628:1;7625;7618:12;7580:52;7667:9;7654:23;7686:31;7711:5;7686:31;:::i;:::-;7736:5;-1:-1:-1;7793:2:1;7778:18;;7765:32;7806:33;7765:32;7806:33;:::i;7876:356::-;8078:2;8060:21;;;8097:18;;;8090:30;8156:34;8151:2;8136:18;;8129:62;8223:2;8208:18;;7876:356::o;8237:127::-;8298:10;8293:3;8289:20;8286:1;8279:31;8329:4;8326:1;8319:15;8353:4;8350:1;8343:15;8726:398;8928:2;8910:21;;;8967:2;8947:18;;;8940:30;9006:34;9001:2;8986:18;;8979:62;-1:-1:-1;;;9072:2:1;9057:18;;9050:32;9114:3;9099:19;;8726:398::o;9129:127::-;9190:10;9185:3;9181:20;9178:1;9171:31;9221:4;9218:1;9211:15;9245:4;9242:1;9235:15;9261:135;9300:3;-1:-1:-1;;9321:17:1;;9318:43;;;9341:18;;:::i;:::-;-1:-1:-1;9388:1:1;9377:13;;9261:135::o;9401:380::-;9480:1;9476:12;;;;9523;;;9544:61;;9598:4;9590:6;9586:17;9576:27;;9544:61;9651:2;9643:6;9640:14;9620:18;9617:38;9614:161;;;9697:10;9692:3;9688:20;9685:1;9678:31;9732:4;9729:1;9722:15;9760:4;9757:1;9750:15;10607:128;10647:3;10678:1;10674:6;10671:1;10668:13;10665:39;;;10684:18;;:::i;:::-;-1:-1:-1;10720:9:1;;10607:128::o;11531:168::-;11571:7;11637:1;11633;11629:6;11625:14;11622:1;11619:21;11614:1;11607:9;11600:17;11596:45;11593:71;;;11644:18;;:::i;:::-;-1:-1:-1;11684:9:1;;11531:168::o;11704:217::-;11744:1;11770;11760:132;;11814:10;11809:3;11805:20;11802:1;11795:31;11849:4;11846:1;11839:15;11877:4;11874:1;11867:15;11760:132;-1:-1:-1;11906:9:1;;11704:217::o;12702:125::-;12742:4;12770:1;12767;12764:8;12761:34;;;12775:18;;:::i;:::-;-1:-1:-1;12812:9:1;;12702:125::o;12832:127::-;12893:10;12888:3;12884:20;12881:1;12874:31;12924:4;12921:1;12914:15;12948:4;12945:1;12938:15;12964:184;13034:6;13087:2;13075:9;13066:7;13062:23;13058:32;13055:52;;;13103:1;13100;13093:12;13055:52;-1:-1:-1;13126:16:1;;12964:184;-1:-1:-1;12964:184:1:o;13432:245::-;13499:6;13552:2;13540:9;13531:7;13527:23;13523:32;13520:52;;;13568:1;13565;13558:12;13520:52;13600:9;13594:16;13619:28;13641:5;13619:28;:::i;14919:251::-;14989:6;15042:2;15030:9;15021:7;15017:23;15013:32;15010:52;;;15058:1;15055;15048:12;15010:52;15090:9;15084:16;15109:31;15134:5;15109:31;:::i;16295:607::-;-1:-1:-1;;;;;16654:15:1;;;16636:34;;16701:2;16686:18;;16679:34;;;;16744:2;16729:18;;16722:34;;;;16787:2;16772:18;;16765:34;;;;16836:15;;;16830:3;16815:19;;16808:44;16616:3;16868:19;;16861:35;;;;16585:3;16570:19;;16295:607::o;16907:306::-;16995:6;17003;17011;17064:2;17052:9;17043:7;17039:23;17035:32;17032:52;;;17080:1;17077;17070:12;17032:52;17109:9;17103:16;17093:26;;17159:2;17148:9;17144:18;17138:25;17128:35;;17203:2;17192:9;17188:18;17182:25;17172:35;;16907:306;;;;;:::o;19889:401::-;20091:2;20073:21;;;20130:2;20110:18;;;20103:30;20169:34;20164:2;20149:18;;20142:62;-1:-1:-1;;;20235:2:1;20220:18;;20213:35;20280:3;20265:19;;19889:401::o;20295:399::-;20497:2;20479:21;;;20536:2;20516:18;;;20509:30;20575:34;20570:2;20555:18;;20548:62;-1:-1:-1;;;20641:2:1;20626:18;;20619:33;20684:3;20669:19;;20295:399::o;24085:980::-;24347:4;24395:3;24384:9;24380:19;24426:6;24415:9;24408:25;24452:2;24490:6;24485:2;24474:9;24470:18;24463:34;24533:3;24528:2;24517:9;24513:18;24506:31;24557:6;24592;24586:13;24623:6;24615;24608:22;24661:3;24650:9;24646:19;24639:26;;24700:2;24692:6;24688:15;24674:29;;24721:1;24731:195;24745:6;24742:1;24739:13;24731:195;;;24810:13;;-1:-1:-1;;;;;24806:39:1;24794:52;;24901:15;;;;24866:12;;;;24842:1;24760:9;24731:195;;;-1:-1:-1;;;;;;;24982:32:1;;;;24977:2;24962:18;;24955:60;-1:-1:-1;;;25046:3:1;25031:19;25024:35;24943:3;24085:980;-1:-1:-1;;;24085:980:1:o

Swarm Source

ipfs://7c9b246fb8378090691ed0c4fc9e5d6731f1147c89c74bffcdcd664436c3729c
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

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