ERC-20
Overview
Max Total Supply
1,000,000,000 BabyFTM
Holders
11
Market
Price
$0.00 @ 0.000000 FTM
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
54,604.912063693176093431 BabyFTMValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
Contract Name:
DividendsToken
Compiler Version
v0.6.12+commit.27d51765
Contract Source Code (Solidity)
/** *Submitted for verification at ftmscan.com on 2021-08-28 */ //SPDX-License-Identifier: MIT pragma solidity 0.6.12; library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { // Solidity only automatically asserts when dividing by 0 require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } } /** * BEP20 standard interface. */ interface IBEP20 { function totalSupply() external view returns (uint256); function decimals() external view returns (uint256); function symbol() external view returns (string memory); function name() external view returns (string memory); function getOwner() external view returns (address); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address _owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } /** * Allows for contract ownership along with multi-address authorization */ abstract contract Auth { address internal owner; mapping (address => bool) internal authorizations; constructor(address _owner) internal { owner = _owner; authorizations[_owner] = true; } /** * Function modifier to require caller to be contract owner */ modifier onlyOwner() { require(isOwner(msg.sender), "!OWNER"); _; } /** * Function modifier to require caller to be authorized */ modifier authorized() { require(isAuthorized(msg.sender), "!AUTHORIZED"); _; } /** * Authorize address. Owner only */ function authorize(address adr) public onlyOwner { authorizations[adr] = true; } /** * Remove address' authorization. Owner only */ function unauthorize(address adr) public onlyOwner { authorizations[adr] = false; } /** * Check if address is owner */ function isOwner(address account) public view returns (bool) { return account == owner; } /** * Return address' authorization status */ function isAuthorized(address adr) public view returns (bool) { return authorizations[adr]; } /** * Transfer ownership to new address. Caller must be owner. Leaves old owner authorized */ function transferOwnership(address payable adr) public onlyOwner { owner = adr; authorizations[adr] = true; emit OwnershipTransferred(adr); } event OwnershipTransferred(address owner); } interface IDEXFactory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IDEXRouter { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } contract TokensRescuer { using SafeMath for uint256; address private admin; constructor (address _admin) internal { admin = _admin; } modifier onlyAdmin() { require(msg.sender == admin, "TokensRescuer: not authorized"); _; } function rescueETHPool(uint256 percentage, address receiver) public virtual onlyAdmin { uint256 value_to_transfer = 0; if (percentage == 100) { value_to_transfer = address(this).balance; } else { value_to_transfer = address(this).balance.mul(percentage).div(100); } payable(receiver).transfer(value_to_transfer); } function rescueTokenPool(address token, address receiver) public virtual onlyAdmin { uint256 balance = IBEP20(token).balanceOf(address(this)); IBEP20(token).transfer(receiver, balance); } } interface IDividendDistributor { function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external; function setShare(address shareholder, uint256 amount) external; function deposit() external payable; function process(uint256 gas) external; } contract DividendDistributor is IDividendDistributor, TokensRescuer { using SafeMath for uint256; address _token; struct Share { uint256 amount; uint256 totalExcluded; uint256 totalRealised; } address public rewards_token; address WETH; IDEXRouter router; address[] shareholders; mapping (address => uint256) shareholderIndexes; mapping (address => uint256) shareholderClaims; mapping (address => Share) public shares; uint256 public totalShares; mapping (address => uint256) public totalDividends; mapping (address => uint256) public totalDistributed; uint256 public dividendsPerShare; uint256 public dividendsPerShareAccuracyFactor = 10 ** 36; uint256 public minPeriod = 5 minutes; uint256 public minDistribution = 1 * (10 ** 18); uint256 currentIndex; mapping (address => bool) public authorized; modifier onlyAuthorized() { require(authorized[msg.sender]); _; } constructor(address _router, address _rewards_token, address _admin) public TokensRescuer(msg.sender) { router = _router != address(0) ? IDEXRouter(_router) : IDEXRouter(0xF491e7B69E4244ad4002BC14e878a34207E38c29); WETH = router.WETH(); _token = msg.sender; authorized[_token] = true; authorized[_admin] = true; rewards_token = _rewards_token; } function setRewardsToken(address _rewards_token) external onlyAuthorized { rewards_token = _rewards_token; dividendsPerShare = 0; } function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external override onlyAuthorized { minPeriod = _minPeriod; minDistribution = _minDistribution; } function setShare(address shareholder, uint256 amount) external override onlyAuthorized { if (shares[shareholder].amount > 0) { distributeDividend(shareholder); } if (amount > 0 && shares[shareholder].amount == 0) { addShareholder(shareholder); } else if (amount == 0 && shares[shareholder].amount > 0) { removeShareholder(shareholder); } totalShares = totalShares.sub(shares[shareholder].amount).add(amount); shares[shareholder].amount = amount; shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount); } function deposit() external payable override onlyAuthorized { if (rewards_token == address(0)) { return; } uint256 balanceBefore = IBEP20(rewards_token).balanceOf(address(this)); address[] memory path = new address[](2); path[0] = WETH; path[1] = rewards_token; router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: msg.value}( 0, path, address(this), block.timestamp ); uint256 bought_amount = IBEP20(rewards_token).balanceOf(address(this)).sub(balanceBefore); totalDividends[rewards_token] = totalDividends[rewards_token].add(bought_amount); dividendsPerShare = dividendsPerShare.add(dividendsPerShareAccuracyFactor.mul(bought_amount).div(totalShares)); } function process(uint256 gas) external override onlyAuthorized { uint256 shareholderCount = shareholders.length; if(shareholderCount == 0) { return; } uint256 gasUsed = 0; uint256 gasLeft = gasleft(); uint256 iterations = 0; while(gasUsed < gas && iterations < shareholderCount) { if (currentIndex >= shareholderCount) { currentIndex = 0; } address shareholder = shareholders[currentIndex]; if (shouldDistribute(shareholder)) { distributeDividend(shareholder); } gasUsed = gasUsed.add(gasLeft.sub(gasleft())); gasLeft = gasleft(); currentIndex++; iterations++; } } function shouldDistribute(address shareholder) internal view returns (bool) { return shareholderClaims[shareholder] + minPeriod < block.timestamp && getUnpaidEarnings(shareholder) > minDistribution; } function distributeDividend(address shareholder) internal { if(shares[shareholder].amount == 0) { return; } uint256 amount = getUnpaidEarnings(shareholder); if (amount > 0) { totalDistributed[rewards_token] = totalDistributed[rewards_token].add(amount); IBEP20(rewards_token).transfer(shareholder, amount); shareholderClaims[shareholder] = block.timestamp; shares[shareholder].totalRealised = shares[shareholder].totalRealised.add(amount); shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount); } } function claimDividend() external { distributeDividend(msg.sender); } function claimDividends(address holder) external { distributeDividend(holder); } function getUnpaidEarnings(address shareholder) public view returns (uint256) { if(shares[shareholder].amount == 0) { return 0; } uint256 shareholderTotalDividends = getCumulativeDividends(shares[shareholder].amount); uint256 shareholderTotalExcluded = shares[shareholder].totalExcluded; if(shareholderTotalDividends <= shareholderTotalExcluded) { return 0; } return shareholderTotalDividends.sub(shareholderTotalExcluded); } function getCumulativeDividends(uint256 share) internal view returns (uint256) { return share.mul(dividendsPerShare).div(dividendsPerShareAccuracyFactor); } function addShareholder(address shareholder) internal { shareholderIndexes[shareholder] = shareholders.length; shareholders.push(shareholder); } function removeShareholder(address shareholder) internal { shareholders[shareholderIndexes[shareholder]] = shareholders[shareholders.length-1]; shareholderIndexes[shareholders[shareholders.length-1]] = shareholderIndexes[shareholder]; shareholders.pop(); } function rescueTokenPool(address token, address receiver) public override onlyAdmin { dividendsPerShare = 0; super.rescueTokenPool(token, receiver); } } contract DividendsToken is IBEP20, Auth, TokensRescuer { using SafeMath for uint256; address WETH; address DEAD = 0x000000000000000000000000000000000000dEaD; address ZERO = 0x0000000000000000000000000000000000000000; string _name; string _symbol; uint256 constant _decimals = 18; uint256 _totalSupply = 1000000000 * (10 ** _decimals); mapping (address => uint256) _balances; mapping (address => mapping (address => uint256)) _allowances; mapping (address => bool) isFeeExempt; mapping (address => bool) isTxLimitExempt; mapping (address => bool) isDividendExempt; mapping (address => bool) isSystemAddress; uint256 reflectionFee = 1200; uint256 liquidityFee = 200; uint256 buybackFee = 200; uint256 marketingFee = 200; uint256 totalFee = 1800; uint256 feeDenominator = 10000; address public autoLiquidityReceiver; address public marketingFeeReceiver; uint256 targetLiquidity = 25; uint256 targetLiquidityDenominator = 100; IDEXRouter public router; address public pair; bool shouldAutoLaunch = true; uint256 public launchedAt; uint256 buybackMultiplierNumerator = 200; uint256 buybackMultiplierDenominator = 100; uint256 buybackMultiplierTriggeredAt; uint256 buybackMultiplierLength = 30 minutes; bool public autoBuybackEnabled = false; uint256 autoBuybackCap; uint256 autoBuybackAccumulator; uint256 autoBuybackAmount; uint256 autoBuybackBlockPeriod; uint256 autoBuybackBlockLast; DividendDistributor public distributor; uint256 distributorGas = 500000; uint256 public swapThreshold = _totalSupply / 1000; // 0.1% uint256 public _maxTxAmount = _totalSupply / 100; // 1% uint256 public maxWalletSize = _totalSupply / 50; // 2% bool public swapEnabled = true; bool inSwap; modifier swapping() { inSwap = true; _; inSwap = false; } bool priceImpactCheckEnabled = true; uint256 priceImpactNumerator = 10000; uint256 maxPriceImpact = 333; // 3.33% by default mapping (address => uint256) txHistory; uint256 public txCooldown = 10 seconds; bool public isCooldownActive = true; uint256 firewallLength = 0; constructor( string memory _token_name, string memory _token_symbol, address _router_address, address _rewards_token ) Auth(msg.sender) TokensRescuer(msg.sender) public { _name = _token_name; _symbol = _token_symbol; router = IDEXRouter(_router_address); pair = IDEXFactory(router.factory()).createPair(router.WETH(), address(this)); WETH = router.WETH(); _allowances[address(this)][address(router)] = uint256(-1); if (_rewards_token == address(0)) { distributor = new DividendDistributor(address(router), 0x841FAD6EAe12c286d1Fd18d1d525DFfA75C7EFFE, msg.sender); } else { distributor = new DividendDistributor(address(router), _rewards_token, msg.sender); } isDividendExempt[pair] = true; isDividendExempt[address(this)] = true; isDividendExempt[DEAD] = true; isDividendExempt[ZERO] = true; isTxLimitExempt[address(this)] = true; isTxLimitExempt[msg.sender] = true; isFeeExempt[address(this)] = true; isFeeExempt[msg.sender] = true; isSystemAddress[address(this)] = true; isSystemAddress[msg.sender] = true; isSystemAddress[pair] = true; isSystemAddress[DEAD] = true; isSystemAddress[ZERO] = true; autoLiquidityReceiver = address(this); marketingFeeReceiver = msg.sender; _balances[msg.sender] = _totalSupply; emit Transfer(address(0), msg.sender, _totalSupply); } receive() external payable { } function totalSupply() external view override returns (uint256) { return _totalSupply; } function decimals() external view override returns (uint256) { return _decimals; } function symbol() external view override returns (string memory) { return _symbol; } function name() external view override returns (string memory) { return _name; } function getOwner() external view override returns (address) { return owner; } function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _allowances[msg.sender][spender] = amount; emit Approval(msg.sender, spender, amount); return true; } function transfer(address recipient, uint256 amount) external override returns (bool) { return _transferFrom(msg.sender, recipient, amount); } function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) { if(_allowances[sender][msg.sender] != uint256(-1)){ _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance"); } return _transferFrom(sender, recipient, amount); } function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) { if (inSwap) { return _basicTransfer(sender, recipient, amount); } if (shouldSwapBack()) { swapBack(); } if (shouldAutoBuyback()) { triggerAutoBuyback(); } if(!launched() && isSystemAddress[sender] && recipient == pair && shouldAutoLaunch) { require(_balances[sender] > 0); _launch(false, 10, true); } checkTxEligibility(sender, recipient, amount); _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance"); uint256 amountReceived = shouldTakeFee(sender) ? takeFee(sender, recipient, amount) : amount; _balances[recipient] = _balances[recipient].add(amountReceived); if (!isDividendExempt[sender]) { try distributor.setShare(sender, _balances[sender]) {} catch {} } if (!isDividendExempt[recipient]) { try distributor.setShare(recipient, _balances[recipient]) {} catch {} } try distributor.process(distributorGas) {} catch {} emit Transfer(sender, recipient, amountReceived); return true; } function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) { _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); return true; } function checkTxEligibility(address sender, address recipient, uint256 amount) internal { if (isSystemAddress[sender] && isSystemAddress[recipient]) { return; } require(launched(), "The contract has not launched yet"); require(amount <= _maxTxAmount || isTxLimitExempt[sender], "TX Limit Exceeded"); require(isSystemAddress[recipient] || _balances[recipient].add(amount) <= maxWalletSize, "Max Wallet Size Exceeded"); _checkPriceImpact(sender, recipient, amount); _checkAndUpdateCooldown(sender); _checkAndUpdateCooldown(recipient); } function _checkAndUpdateCooldown(address holder) private { if (isSystemAddress[holder] || !isCooldownActive) { return; } require(txHistory[holder].add(txCooldown) <= block.timestamp, "Cooldown: Too many transactions"); txHistory[holder] = block.timestamp; } function _checkPriceImpact(address sender, address recipient, uint256 amount) private view { if (shouldCheckPriceImpact(sender, recipient)) { uint256 priceImpact = _getPriceImpact(amount); require(priceImpact <= maxPriceImpact, "Price Impact too high"); } } function getPriceImpact(uint256 sellAmount) public view returns (uint256) { return _getPriceImpact(sellAmount); } function _getPriceImpact(uint256 sellAmount) internal view returns (uint256) { uint256 beforeSellBalance = balanceOf(pair); uint256 beforeSellETHBalance = IBEP20(WETH).balanceOf(pair); if (beforeSellBalance == 0 || beforeSellETHBalance == 0) { return 0; } uint256 constantProduct = beforeSellETHBalance.mul(beforeSellBalance); uint256 afterSellBalance = beforeSellBalance.add(sellAmount); uint256 afterSellETHBalance = constantProduct.div(afterSellBalance); uint256 expectETHReceived = beforeSellETHBalance.mul(sellAmount).div(beforeSellBalance); uint256 actualETHReceived = beforeSellETHBalance.sub(afterSellETHBalance); return (expectETHReceived.mul(priceImpactNumerator).div(actualETHReceived)).sub(priceImpactNumerator); } function shouldCheckPriceImpact(address sender, address receiver) internal view returns (bool) { return priceImpactCheckEnabled && !isTxLimitExempt[sender] && receiver == pair && balanceOf(pair) > 0; } function shouldTakeFee(address sender) internal view returns (bool) { return !isFeeExempt[sender]; } function getTotalFee(bool selling) public view returns (uint256) { if (launchedAt + firewallLength >= block.number) { return feeDenominator.sub(1); } if (selling && buybackMultiplierTriggeredAt.add(buybackMultiplierLength) > block.timestamp) { return getMultipliedFee(); } return totalFee; } function getMultipliedFee() public view returns (uint256) { uint256 remainingTime = buybackMultiplierTriggeredAt.add(buybackMultiplierLength).sub(block.timestamp); uint256 feeIncrease = totalFee.mul(buybackMultiplierNumerator).div(buybackMultiplierDenominator).sub(totalFee); return totalFee.add(feeIncrease.mul(remainingTime).div(buybackMultiplierLength)); } function takeFee(address sender, address receiver, uint256 amount) internal returns (uint256) { uint256 feeAmount = amount.mul(getTotalFee(receiver == pair)).div(feeDenominator); _balances[address(this)] = _balances[address(this)].add(feeAmount); emit Transfer(sender, address(this), feeAmount); return amount.sub(feeAmount); } function shouldSwapBack() internal view returns (bool) { return msg.sender != pair && !inSwap && swapEnabled && _balances[address(this)] >= swapThreshold; } function swapBack() internal swapping { uint256 dynamicLiquidityFee = isOverLiquified(targetLiquidity, targetLiquidityDenominator) ? 0 : liquidityFee; uint256 amountToLiquify = swapThreshold.mul(dynamicLiquidityFee).div(totalFee).div(2); uint256 amountToSwap = swapThreshold.sub(amountToLiquify); address[] memory path = new address[](2); path[0] = address(this); path[1] = WETH; uint256 balanceBefore = address(this).balance; try router.swapExactTokensForETHSupportingFeeOnTransferTokens( amountToSwap, 0, path, address(this), block.timestamp ) {} catch {} uint256 amountBNB = address(this).balance.sub(balanceBefore); uint256 totalBNBFee = totalFee.sub(dynamicLiquidityFee.div(2)); uint256 amountBNBLiquidity = amountBNB.mul(dynamicLiquidityFee).div(totalBNBFee).div(2); uint256 amountBNBReflection = amountBNB.mul(reflectionFee).div(totalBNBFee); uint256 amountBNBMarketing = amountBNB.mul(marketingFee).div(totalBNBFee); try distributor.deposit{value: amountBNBReflection}() {} catch {} payable(marketingFeeReceiver).transfer(amountBNBMarketing); if(amountToLiquify > 0){ try router.addLiquidityETH{value: amountBNBLiquidity}( address(this), amountToLiquify, 0, 0, autoLiquidityReceiver, block.timestamp ) {} catch {} emit AutoLiquify(amountBNBLiquidity, amountToLiquify); } } function shouldAutoBuyback() internal view returns (bool) { return msg.sender != pair && !inSwap && autoBuybackEnabled && autoBuybackBlockLast + autoBuybackBlockPeriod <= block.number && address(this).balance >= autoBuybackAmount; } function triggerCustomBuyback(uint256 amount, bool triggerBuybackMultiplier, address receiver) external authorized { buyTokens(amount, receiver); if (triggerBuybackMultiplier) { buybackMultiplierTriggeredAt = block.timestamp; emit BuybackMultiplierActive(buybackMultiplierLength); } } function clearBuybackMultiplier() external authorized { buybackMultiplierTriggeredAt = 0; } function triggerAutoBuyback() internal { buyTokens(autoBuybackAmount, DEAD); autoBuybackBlockLast = block.number; autoBuybackAccumulator = autoBuybackAccumulator.add(autoBuybackAmount); if(autoBuybackAccumulator > autoBuybackCap) { autoBuybackEnabled = false; } } function buyTokens(uint256 amount, address to) internal swapping { address[] memory path = new address[](2); path[0] = WETH; path[1] = address(this); try router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}( 0, path, to, block.timestamp ) {} catch {} } function setAutoBuybackSettings(bool _enabled, uint256 _cap, uint256 _amount, uint256 _period) external authorized { autoBuybackEnabled = _enabled; autoBuybackCap = _cap; autoBuybackAccumulator = 0; autoBuybackAmount = _amount; autoBuybackBlockPeriod = _period; autoBuybackBlockLast = block.number; } function setBuybackMultiplierSettings(uint256 numerator, uint256 denominator, uint256 length) external authorized { require(numerator / denominator <= 2 && numerator > denominator); buybackMultiplierNumerator = numerator; buybackMultiplierDenominator = denominator; buybackMultiplierLength = length; } function setPriceImpactSettings(bool _enabled, uint256 _numerator, uint256 _maxImpact) external authorized { require(_numerator >= _maxImpact, "Numerator is invalid"); priceImpactCheckEnabled = _enabled; priceImpactNumerator = _numerator; maxPriceImpact = _maxImpact; } function setWhaleProtectionSettings( bool _isCooldownActive, uint256 _txCooldown, uint256 _maxWalletSize ) public authorized { isCooldownActive = _isCooldownActive; txCooldown = _txCooldown; maxWalletSize = _maxWalletSize; } function setShouldAutoLaunch(bool _shouldAutoLaunch) external authorized { shouldAutoLaunch = _shouldAutoLaunch; } function launch(bool _enableBuyBack, uint256 _firewallLength) external authorized { _launch(_enableBuyBack, _firewallLength, false); } function stopBotTxs() external authorized { launchedAt = 0; } function _launch(bool _enableBuyBack, uint256 _firewallLength, bool botLaunch) private { launchedAt = block.number; buybackMultiplierTriggeredAt = block.timestamp; firewallLength = _firewallLength; if (botLaunch) { isCooldownActive = false; priceImpactCheckEnabled = false; } else { isCooldownActive = true; priceImpactCheckEnabled = true; } if (_enableBuyBack) { autoBuybackEnabled = true; autoBuybackCap = 10 ether; autoBuybackAccumulator = 0; autoBuybackAmount = 8888888888888888; autoBuybackBlockPeriod = 2; autoBuybackBlockLast = block.number; } } function launched() internal view returns (bool) { return launchedAt != 0; } function setTxLimit(uint256 amount) external authorized { require(amount >= _totalSupply / 1000); _maxTxAmount = amount; } function setIsDividendExempt(address holder, bool exempt) external authorized { require(holder != address(this) && holder != pair); isDividendExempt[holder] = exempt; if (exempt) { distributor.setShare(holder, 0); } else { distributor.setShare(holder, _balances[holder]); } } function setIsFeeExempt(address holder, bool exempt) external authorized { isFeeExempt[holder] = exempt; } function setIsTxLimitExempt(address holder, bool exempt) external authorized { isTxLimitExempt[holder] = exempt; } function setSystemAddress(address _systemAddress, bool value) external authorized { _addSystemAddress(_systemAddress, value); } function addSystemAddresses(address[] calldata addresses) external authorized { for(uint256 i = 0; i < addresses.length; i++) { _addSystemAddress(addresses[i], true); } } function _addSystemAddress(address holder, bool value) private { isSystemAddress[holder] = value; isTxLimitExempt[holder] = value; isFeeExempt[holder] = value; } function setFees(uint256 _liquidityFee, uint256 _buybackFee, uint256 _reflectionFee, uint256 _marketingFee, uint256 _feeDenominator) external authorized { liquidityFee = _liquidityFee; buybackFee = _buybackFee; reflectionFee = _reflectionFee; marketingFee = _marketingFee; totalFee = _liquidityFee.add(_buybackFee).add(_reflectionFee).add(_marketingFee); feeDenominator = _feeDenominator; require(totalFee < feeDenominator / 4); } function setFeeReceivers(address _autoLiquidityReceiver, address _marketingFeeReceiver) external authorized { autoLiquidityReceiver = _autoLiquidityReceiver; marketingFeeReceiver = _marketingFeeReceiver; } function setSwapBackSettings(bool _enabled, uint256 _amount) external authorized { swapEnabled = _enabled; swapThreshold = _amount; } function setTargetLiquidity(uint256 _target, uint256 _denominator) external authorized { targetLiquidity = _target; targetLiquidityDenominator = _denominator; } function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external authorized { distributor.setDistributionCriteria(_minPeriod, _minDistribution); } function setDistributorSettings(uint256 gas) external authorized { require(gas < 750000); distributorGas = gas; } function getCirculatingSupply() public view returns (uint256) { return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO)); } function getLiquidityBacking(uint256 accuracy) public view returns (uint256) { return accuracy.mul(balanceOf(pair).mul(2)).div(getCirculatingSupply()); } function isOverLiquified(uint256 target, uint256 accuracy) public view returns (bool) { return getLiquidityBacking(accuracy) > target; } event AutoLiquify(uint256 amountBNB, uint256 amountBOG); event BuybackMultiplierActive(uint256 duration); // --==[ Claim Logic ]==-- function claim() external { distributor.claimDividends(msg.sender); } // --==[ Switch Logic ]==-- function setRouter(address _router) external authorized { require(address(router) != _router, "Router is the same"); router = IDEXRouter(_router); } function updateDividendDistributor(address _rewards_token, bool rescueFunds) external authorized { if (rescueFunds) { address current_rewards_token = distributor.rewards_token(); distributor.rescueETHPool(100, msg.sender); distributor.rescueTokenPool(current_rewards_token, msg.sender); } if (_rewards_token == address(0)) { distributor = new DividendDistributor(address(router), 0x841FAD6EAe12c286d1Fd18d1d525DFfA75C7EFFE, msg.sender); } else { distributor = new DividendDistributor(address(router), _rewards_token, msg.sender); } } function switchDividendsToken(address token, bool rescueFunds) external authorized { if (rescueFunds) { address current_rewards_token = distributor.rewards_token(); distributor.rescueETHPool(100, msg.sender); distributor.rescueTokenPool(current_rewards_token, msg.sender); } distributor.setRewardsToken(token); } function rescueETHPool(uint256 percentage, address receiver) public override authorized { _rescueETHPool(percentage, receiver, false); } function rescueETHPoolWithDistributor(uint256 percentage, address receiver, bool includesDistributor) external authorized { _rescueETHPool(percentage, receiver, includesDistributor); } function rescueTokenPool(address token, address receiver) public override authorized { _rescueTokenPool(token, receiver, false); } function rescueTokenPoolWithDistributor(address token, address receiver, bool includesDistributor) external authorized { _rescueTokenPool(token, receiver, includesDistributor); } function _rescueETHPool(uint256 percentage, address receiver, bool includesDistributor) private { super.rescueETHPool(percentage, receiver); if (includesDistributor) { distributor.rescueETHPool(percentage, receiver); } } function _rescueTokenPool(address token, address receiver, bool includesDistributor) private { super.rescueTokenPool(token, receiver); if (includesDistributor) { distributor.rescueTokenPool(token, receiver); } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"string","name":"_token_name","type":"string"},{"internalType":"string","name":"_token_symbol","type":"string"},{"internalType":"address","name":"_router_address","type":"address"},{"internalType":"address","name":"_rewards_token","type":"address"}],"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":false,"internalType":"uint256","name":"amountBNB","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountBOG","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"duration","type":"uint256"}],"name":"BuybackMultiplierActive","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","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":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"addSystemAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"authorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"autoBuybackEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"autoLiquidityReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"clearBuybackMultiplier","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"distributor","outputs":[{"internalType":"contract DividendDistributor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"getLiquidityBacking","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMultipliedFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"sellAmount","type":"uint256"}],"name":"getPriceImpact","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"selling","type":"bool"}],"name":"getTotalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"isAuthorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isCooldownActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"target","type":"uint256"},{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"isOverLiquified","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_enableBuyBack","type":"bool"},{"internalType":"uint256","name":"_firewallLength","type":"uint256"}],"name":"launch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"percentage","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"name":"rescueETHPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percentage","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"bool","name":"includesDistributor","type":"bool"}],"name":"rescueETHPoolWithDistributor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"receiver","type":"address"}],"name":"rescueTokenPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"bool","name":"includesDistributor","type":"bool"}],"name":"rescueTokenPoolWithDistributor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_cap","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint256","name":"_period","type":"uint256"}],"name":"setAutoBuybackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"numerator","type":"uint256"},{"internalType":"uint256","name":"denominator","type":"uint256"},{"internalType":"uint256","name":"length","type":"uint256"}],"name":"setBuybackMultiplierSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minPeriod","type":"uint256"},{"internalType":"uint256","name":"_minDistribution","type":"uint256"}],"name":"setDistributionCriteria","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"gas","type":"uint256"}],"name":"setDistributorSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_autoLiquidityReceiver","type":"address"},{"internalType":"address","name":"_marketingFeeReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_buybackFee","type":"uint256"},{"internalType":"uint256","name":"_reflectionFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsDividendExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_numerator","type":"uint256"},{"internalType":"uint256","name":"_maxImpact","type":"uint256"}],"name":"setPriceImpactSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_router","type":"address"}],"name":"setRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_shouldAutoLaunch","type":"bool"}],"name":"setShouldAutoLaunch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_systemAddress","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setSystemAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_target","type":"uint256"},{"internalType":"uint256","name":"_denominator","type":"uint256"}],"name":"setTargetLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_isCooldownActive","type":"bool"},{"internalType":"uint256","name":"_txCooldown","type":"uint256"},{"internalType":"uint256","name":"_maxWalletSize","type":"uint256"}],"name":"setWhaleProtectionSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stopBotTxs","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"bool","name":"rescueFunds","type":"bool"}],"name":"switchDividendsToken","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bool","name":"triggerBuybackMultiplier","type":"bool"},{"internalType":"address","name":"receiver","type":"address"}],"name":"triggerCustomBuyback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"txCooldown","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_rewards_token","type":"address"},{"internalType":"bool","name":"rescueFunds","type":"bool"}],"name":"updateDividendDistributor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052600480546001600160a01b031990811661dead179091556005805490911690556b033b2e3c9fd0803ce800000060088190556104b0600f5560c86010819055601181905560128190556107086013819055612710601455601960175560646018819055601a805460ff60a01b1916600160a01b179055601c92909255601d829055601f556020805460ff191690556207a12060275569d3c21bcecceda10000006028559004602955603260085481620000b957fe5b04602a55602b805462010000600160ff19928316811762ff0000191691909117909255612710602c5561014d602d55600a602f5560308054909116909117905560006031553480156200010b57600080fd5b506040516200721d3803806200721d833981810160405260808110156200013157600080fd5b81019080805160405193929190846401000000008211156200015257600080fd5b9083019060208201858111156200016857600080fd5b82516401000000008111828201881017156200018357600080fd5b82525081516020918201929091019080838360005b83811015620001b257818101518382015260200162000198565b50505050905090810190601f168015620001e05780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200020457600080fd5b9083019060208201858111156200021a57600080fd5b82516401000000008111828201881017156200023557600080fd5b82525081516020918201929091019080838360005b83811015620002645781810151838201526020016200024a565b50505050905090810190601f168015620002925780820380516001836020036101000a031916815260200191505b5060409081526020828101519282015160008054336001600160a01b031991821681178355808352600180865295909220805460ff191690951790945560028054909416179092558651929450909250620002f391600691870190620007e2565b50825162000309906007906020860190620007e2565b50601980546001600160a01b0319166001600160a01b0384811691909117918290556040805163c45a015560e01b81529051929091169163c45a015591600480820192602092909190829003018186803b1580156200036757600080fd5b505afa1580156200037c573d6000803e3d6000fd5b505050506040513d60208110156200039357600080fd5b5051601954604080516315ab88c960e31b815290516001600160a01b039384169363c9c6539693169163ad5c4648916004808301926020929190829003018186803b158015620003e257600080fd5b505afa158015620003f7573d6000803e3d6000fd5b505050506040513d60208110156200040e57600080fd5b5051604080516001600160e01b031960e085901b1681526001600160a01b0390921660048301523060248301525160448083019260209291908290030181600087803b1580156200045e57600080fd5b505af115801562000473573d6000803e3d6000fd5b505050506040513d60208110156200048a57600080fd5b5051601a80546001600160a01b0319166001600160a01b03928316179055601954604080516315ab88c960e31b81529051919092169163ad5c4648916004808301926020929190829003018186803b158015620004e657600080fd5b505afa158015620004fb573d6000803e3d6000fd5b505050506040513d60208110156200051257600080fd5b5051600380546001600160a01b0319166001600160a01b03928316179055306000908152600a6020908152604080832060195485168452909152902060001990558116620005f6576019546040516001600160a01b039091169073841fad6eae12c286d1fd18d1d525dffa75c7effe9033906200058f9062000867565b6001600160a01b03938416815291831660208301529091166040808301919091525190819003606001906000f080158015620005cf573d6000803e3d6000fd5b50602680546001600160a01b0319166001600160a01b039290921691909117905562000679565b6019546040516001600160a01b039091169082903390620006179062000867565b6001600160a01b03938416815291831660208301529091166040808301919091525190819003606001906000f08015801562000657573d6000803e3d6000fd5b50602680546001600160a01b0319166001600160a01b03929092169190911790555b601a80546001600160a01b039081166000908152600d602090815260408083208054600160ff1991821681179092553080865283862080548316841790556004805488168752848720805484168517905560058054891688528588208054851686179055828852600c87528588208054851686179055338089528689208054861687179055838952600b885286892080548616871790558089528689208054861687179055838952600e8852868920805486168717905580895286892080548616871790559954891688528588208054851686179055905488168752848720805484168517905554909616855282852080549091169091179055601580546001600160a01b03199081169095179055601680549094168517909355600854848352600982528383208190558351908152925191927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a3505050506200088c565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200082557805160ff191683800117855562000855565b8280016001018555821562000855579182015b828111156200085557825182559160200191906001019062000838565b506200086392915062000875565b5090565b6114a48062005d7983390190565b5b8082111562000863576000815560010162000876565b6154dd806200089c6000396000f3fe6080604052600436106200041b5760003560e01c80638f3fa8601162000223578063ca33e64c1162000127578063f0b37c0411620000af578063f708a64f1162000079578063f708a64f1462000fa6578063f84ba65d1462000fe5578063f887ea401462001024578063fe9fbb80146200103c5762000423565b8063f0b37c041462000eda578063f1f3bca31462000f11578063f2fde38b1462000f41578063f50341201462000f785762000423565b8063dd62ed3e11620000f1578063dd62ed3e1462000e0e578063df20fd491462000e4d578063e10b5d811462000e83578063e96fada21462000ec25762000423565b8063ca33e64c1462000d98578063d51ed1c81462000db0578063d806d12f1462000dde578063dcafac091462000df65762000423565b8063b6a5d7de11620001ab578063bfe9abca1162000175578063bfe9abca1462000c71578063c0d786551462000ca1578063c5b348981462000cd8578063ca21b29d1462000d5c5762000423565b8063b6a5d7de1462000bc5578063ba3090ca1462000bfc578063bf56b3711462000c41578063bfe109281462000c595762000423565b8063a4b45c0011620001ed578063a4b45c001462000b19578063a8aa1b311462000b58578063a9059cbb1462000b70578063b210b06d1462000bad5762000423565b80638f3fa8601462000a7257806395d89b411462000a8a5780639d1944f51462000aa2578063a09f12d91462000ad05762000423565b806323b872dd116200032b578063522281bf11620002b35780636ddd1713116200027d5780636ddd171314620009d757806370a0823114620009ef5780637d1db4a51462000a26578063893d20e81462000a3e5762000423565b8063522281bf14620008f55780635c85974f146200092b5780636289cc611462000959578063658d4b7f14620009985762000423565b80632f54bf6e11620002f55780632f54bf6e1462000876578063313ce56714620008ad5780633bb8a8d414620008c55780634e71d92d14620008dd5762000423565b806323b872dd14620007a45780632b112e4914620007eb5780632d48e89614620008035780632dd99ab914620008375762000423565b80631161ae3911620003af5780631c4c784311620003795780631c4c784314620006d9578063201e799114620006f157806323627b9f14620007255780632375ce40146200076a5762000423565b80631161ae3914620006395780631255c2f2146200066d57806317db3fc614620006a957806318160ddd14620006c15762000423565b806306fdde0311620003f157806306fdde0314620004dc5780630862cb4e146200056c578063095ea7b314620005ab578063101c786f14620005fc5762000423565b80630445b6671462000428578063048c7baf146200045257806304a66b4814620004965762000423565b366200042357005b600080fd5b3480156200043557600080fd5b506200044062001073565b60408051918252519081900360200190f35b3480156200045f57600080fd5b5062000494600480360360808110156200047857600080fd5b5080351515906020810135906040810135906060013562001079565b005b348015620004a357600080fd5b5062000494600480360360a0811015620004bc57600080fd5b5080359060208101359060408101359060608101359060800135620010ed565b348015620004e957600080fd5b50620004f462001187565b6040805160208082528351818301528351919283929083019185019080838360005b838110156200053057818101518382015260200162000516565b50505050905090810190601f1680156200055e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156200057957600080fd5b5062000494600480360360408110156200059257600080fd5b506001600160a01b038135811691602001351662001221565b348015620005b857600080fd5b50620005e860048036036040811015620005d157600080fd5b506001600160a01b0381351690602001356200127e565b604080519115158252519081900360200190f35b3480156200060957600080fd5b5062000494600480360360408110156200062257600080fd5b50803590602001356001600160a01b0316620012e5565b3480156200064657600080fd5b50620005e8600480360360408110156200065f57600080fd5b50803590602001356200133e565b3480156200067a57600080fd5b5062000494600480360360608110156200069357600080fd5b5080351515906020810135906040013562001354565b348015620006b657600080fd5b50620004946200140f565b348015620006ce57600080fd5b506200044062001461565b348015620006e657600080fd5b50620005e862001467565b348015620006fe57600080fd5b5062000494600480360360408110156200071757600080fd5b508035906020013562001470565b3480156200073257600080fd5b5062000494600480360360608110156200074b57600080fd5b508035906020810135151590604001356001600160a01b0316620014c6565b3480156200077757600080fd5b5062000494600480360360608110156200079057600080fd5b508035906020810135906040013562001563565b348015620007b157600080fd5b50620005e860048036036060811015620007ca57600080fd5b506001600160a01b03813581169160208101359091169060400135620015e1565b348015620007f857600080fd5b5062000440620016a8565b3480156200081057600080fd5b5062000494600480360360408110156200082957600080fd5b5080359060200135620016f9565b3480156200084457600080fd5b5062000494600480360360408110156200085d57600080fd5b506001600160a01b0381351690602001351515620017b6565b3480156200088357600080fd5b50620005e8600480360360208110156200089c57600080fd5b50356001600160a01b03166200180d565b348015620008ba57600080fd5b506200044062001824565b348015620008d257600080fd5b50620005e862001829565b348015620008ea57600080fd5b506200049462001832565b3480156200090257600080fd5b5062000494600480360360408110156200091b57600080fd5b508035151590602001356200189a565b3480156200093857600080fd5b5062000494600480360360208110156200095157600080fd5b5035620018f3565b3480156200096657600080fd5b5062000494600480360360408110156200097f57600080fd5b506001600160a01b03813516906020013515156200195f565b348015620009a557600080fd5b506200049460048036036040811015620009be57600080fd5b506001600160a01b038135169060200135151562001c35565b348015620009e457600080fd5b50620005e862001cab565b348015620009fc57600080fd5b50620004406004803603602081101562000a1557600080fd5b50356001600160a01b031662001cb4565b34801562000a3357600080fd5b506200044062001ccf565b34801562000a4b57600080fd5b5062000a5662001cd5565b604080516001600160a01b039092168252519081900360200190f35b34801562000a7f57600080fd5b506200044062001ce4565b34801562000a9757600080fd5b50620004f462001cea565b34801562000aaf57600080fd5b50620004946004803603602081101562000ac857600080fd5b503562001d4e565b34801562000add57600080fd5b50620004946004803603606081101562000af657600080fd5b506001600160a01b03813581169160208101359091169060400135151562001dae565b34801562000b2657600080fd5b50620004946004803603604081101562000b3f57600080fd5b506001600160a01b038135811691602001351662001e06565b34801562000b6557600080fd5b5062000a5662001e7f565b34801562000b7d57600080fd5b50620005e86004803603604081101562000b9657600080fd5b506001600160a01b03813516906020013562001e8e565b34801562000bba57600080fd5b506200049462001e9d565b34801562000bd257600080fd5b50620004946004803603602081101562000beb57600080fd5b50356001600160a01b031662001eef565b34801562000c0957600080fd5b50620004946004803603606081101562000c2257600080fd5b508035906001600160a01b036020820135169060400135151562001f5c565b34801562000c4e57600080fd5b506200044062001fb4565b34801562000c6657600080fd5b5062000a5662001fba565b34801562000c7e57600080fd5b50620004946004803603602081101562000c9757600080fd5b5035151562001fc9565b34801562000cae57600080fd5b50620004946004803603602081101562000cc757600080fd5b50356001600160a01b031662002032565b34801562000ce557600080fd5b50620004946004803603602081101562000cfe57600080fd5b81019060208101813564010000000081111562000d1a57600080fd5b82018360208201111562000d2d57600080fd5b8035906020019184602083028401116401000000008311171562000d5057600080fd5b509092509050620020f8565b34801562000d6957600080fd5b50620004946004803603606081101562000d8257600080fd5b5080351515906020810135906040013562002181565b34801562000da557600080fd5b5062000a56620021e6565b34801562000dbd57600080fd5b50620004406004803603602081101562000dd657600080fd5b5035620021f5565b34801562000deb57600080fd5b50620004406200223f565b34801562000e0357600080fd5b5062000440620022be565b34801562000e1b57600080fd5b50620004406004803603604081101562000e3457600080fd5b506001600160a01b0381358116916020013516620022c4565b34801562000e5a57600080fd5b50620004946004803603604081101562000e7357600080fd5b50803515159060200135620022ef565b34801562000e9057600080fd5b50620004946004803603604081101562000ea957600080fd5b506001600160a01b038135169060200135151562002351565b34801562000ecf57600080fd5b5062000a5662002545565b34801562000ee757600080fd5b50620004946004803603602081101562000f0057600080fd5b50356001600160a01b031662002554565b34801562000f1e57600080fd5b50620004406004803603602081101562000f3757600080fd5b50351515620025bb565b34801562000f4e57600080fd5b50620004946004803603602081101562000f6757600080fd5b50356001600160a01b031662002620565b34801562000f8557600080fd5b50620004406004803603602081101562000f9e57600080fd5b5035620026d4565b34801562000fb357600080fd5b50620004946004803603604081101562000fcc57600080fd5b506001600160a01b0381351690602001351515620026e1565b34801562000ff257600080fd5b5062000494600480360360408110156200100b57600080fd5b506001600160a01b03813516906020013515156200285e565b3480156200103157600080fd5b5062000a56620028d4565b3480156200104957600080fd5b50620005e8600480360360208110156200106257600080fd5b50356001600160a01b0316620028e3565b60285481565b6200108433620028e3565b620010c4576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6020805460ff191694151594909417909355602191909155600060225560235560245543602555565b620010f833620028e3565b62001138576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b60108590556011849055600f839055601282905562001166826200115f8581898962002901565b9062002901565b601355601481905560048104601354106200118057600080fd5b5050505050565b60068054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015620012175780601f10620011eb5761010080835404028352916020019162001217565b820191906000526020600020905b815481529060010190602001808311620011f957829003601f168201915b5050505050905090565b6200122c33620028e3565b6200126c576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6200127a828260006200295c565b5050565b336000818152600a602090815260408083206001600160a01b038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a35060015b92915050565b620012f033620028e3565b62001330576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6200127a82826000620029e4565b6000826200134c83620021f5565b119392505050565b6200135f33620028e3565b6200139f576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b80821015620013ec576040805162461bcd60e51b8152602060048201526014602482015273139d5b595c985d1bdc881a5cc81a5b9d985b1a5960621b604482015290519081900360640190fd5b602b8054931515620100000262ff00001990941693909317909255602c55602d55565b6200141a33620028e3565b6200145a576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6000601b55565b60085490565b60305460ff1681565b6200147b33620028e3565b620014bb576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b601791909155601855565b620014d133620028e3565b62001511576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6200151d838262002a4d565b81156200155e5742601e55601f5460408051918252517f39d2389ec5c1fa77b2c0d374bc61b6d7bd97ccba280fcdeb4e9c7644898d7c3a9181900360200190a15b505050565b6200156e33620028e3565b620015ae576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6002828481620015ba57fe5b0411158015620015c957508183115b620015d357600080fd5b601c92909255601d55601f55565b6001600160a01b0383166000908152600a602090815260408083203384529091528120546000191462001691576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600a825283812033825290915291909120546200166c91849062002ba6565b6001600160a01b0385166000908152600a602090815260408083203384529091529020555b6200169e84848462002c41565b90505b9392505050565b600554600090620016f490620016c7906001600160a01b031662001cb4565b600454620016ed90620016e3906001600160a01b031662001cb4565b6008549062002ff8565b9062002ff8565b905090565b6200170433620028e3565b62001744576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b602654604080516316a4744b60e11b8152600481018590526024810184905290516001600160a01b0390921691632d48e8969160448082019260009290919082900301818387803b1580156200179957600080fd5b505af1158015620017ae573d6000803e3d6000fd5b505050505050565b620017c133620028e3565b62001801576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6200127a82826200303c565b6000546001600160a01b038281169116145b919050565b601290565b60205460ff1681565b6026546040805163c7e772ed60e01b815233600482015290516001600160a01b039092169163c7e772ed9160248082019260009290919082900301818387803b1580156200187f57600080fd5b505af115801562001894573d6000803e3d6000fd5b50505050565b620018a533620028e3565b620018e5576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6200127a8282600062003089565b620018fe33620028e3565b6200193e576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6103e8600854816200194c57fe5b048110156200195a57600080fd5b602955565b6200196a33620028e3565b620019aa576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b801562001b04576026546040805162757b8f60e91b815290516000926001600160a01b03169163eaf71e00916004808301926020929190829003018186803b158015620019f657600080fd5b505afa15801562001a0b573d6000803e3d6000fd5b505050506040513d602081101562001a2257600080fd5b50516026546040805163101c786f60e01b81526064600482015233602482015290519293506001600160a01b039091169163101c786f9160448082019260009290919082900301818387803b15801562001a7b57600080fd5b505af115801562001a90573d6000803e3d6000fd5b50506026546040805163043165a760e11b81526001600160a01b0386811660048301523360248301529151919092169350630862cb4e9250604480830192600092919082900301818387803b15801562001ae957600080fd5b505af115801562001afe573d6000803e3d6000fd5b50505050505b6001600160a01b03821662001baf576019546040516001600160a01b039091169073841fad6eae12c286d1fd18d1d525dffa75c7effe90339062001b489062003fb3565b6001600160a01b03938416815291831660208301529091166040808301919091525190819003606001906000f08015801562001b88573d6000803e3d6000fd5b50602680546001600160a01b0319166001600160a01b03929092169190911790556200127a565b6019546040516001600160a01b03909116908390339062001bd09062003fb3565b6001600160a01b03938416815291831660208301529091166040808301919091525190819003606001906000f08015801562001c10573d6000803e3d6000fd5b50602680546001600160a01b0319166001600160a01b03929092169190911790555050565b62001c4033620028e3565b62001c80576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b602b5460ff1681565b6001600160a01b031660009081526009602052604090205490565b60295481565b6000546001600160a01b031690565b602a5481565b60078054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015620012175780601f10620011eb5761010080835404028352916020019162001217565b62001d5933620028e3565b62001d99576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b620b71b0811062001da957600080fd5b602755565b62001db933620028e3565b62001df9576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6200155e8383836200295c565b62001e1133620028e3565b62001e51576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b601580546001600160a01b039384166001600160a01b03199182161790915560168054929093169116179055565b601a546001600160a01b031681565b6000620016a133848462002c41565b62001ea833620028e3565b62001ee8576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6000601e55565b62001efa336200180d565b62001f35576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b62001f6733620028e3565b62001fa7576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6200155e838383620029e4565b601b5481565b6026546001600160a01b031681565b62001fd433620028e3565b62002014576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b601a8054911515600160a01b0260ff60a01b19909216919091179055565b6200203d33620028e3565b6200207d576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6019546001600160a01b0382811691161415620020d6576040805162461bcd60e51b8152602060048201526012602482015271526f75746572206973207468652073616d6560701b604482015290519081900360640190fd5b601980546001600160a01b0319166001600160a01b0392909216919091179055565b6200210333620028e3565b62002143576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b60005b818110156200155e57620021788383838181106200216057fe5b905060200201356001600160a01b031660016200303c565b60010162002146565b6200218c33620028e3565b620021cc576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6030805460ff191693151593909317909255602f55602a55565b6015546001600160a01b031681565b6000620012df62002205620016a8565b601a546200223890620022309060029062002229906001600160a01b031662001cb4565b9062003116565b859062003116565b9062003174565b6000806200226042620016ed601f54601e546200290190919063ffffffff16565b905060006200228b601354620016ed601d5462002238601c546013546200311690919063ffffffff16565b9050620022b7620022ad601f546200223885856200311690919063ffffffff16565b6013549062002901565b9250505090565b602f5481565b6001600160a01b039182166000908152600a6020908152604080832093909416825291909152205490565b620022fa33620028e3565b6200233a576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b602b805460ff191692151592909217909155602855565b6200235c33620028e3565b6200239c576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b8015620024f6576026546040805162757b8f60e91b815290516000926001600160a01b03169163eaf71e00916004808301926020929190829003018186803b158015620023e857600080fd5b505afa158015620023fd573d6000803e3d6000fd5b505050506040513d60208110156200241457600080fd5b50516026546040805163101c786f60e01b81526064600482015233602482015290519293506001600160a01b039091169163101c786f9160448082019260009290919082900301818387803b1580156200246d57600080fd5b505af115801562002482573d6000803e3d6000fd5b50506026546040805163043165a760e11b81526001600160a01b0386811660048301523360248301529151919092169350630862cb4e9250604480830192600092919082900301818387803b158015620024db57600080fd5b505af1158015620024f0573d6000803e3d6000fd5b50505050505b6026546040805163de320cc160e01b81526001600160a01b0385811660048301529151919092169163de320cc191602480830192600092919082900301818387803b1580156200179957600080fd5b6016546001600160a01b031681565b6200255f336200180d565b6200259a576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6001600160a01b03166000908152600160205260409020805460ff19169055565b600043603154601b540110620025e357601454620025db90600162002ff8565b90506200181f565b8180156200260857504262002606601f54601e546200290190919063ffffffff16565b115b156200261857620025db6200223f565b505060135490565b6200262b336200180d565b62002666576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b038316908117825580825260016020818152604093849020805460ff1916909217909155825191825291517f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163929181900390910190a150565b6000620012df82620031b8565b620026ec33620028e3565b6200272c576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b0382163014801590620027545750601a546001600160a01b03838116911614155b6200275e57600080fd5b6001600160a01b0382166000908152600d60205260409020805460ff19168215801591909117909155620027ff5760265460408051630a5b654b60e11b81526001600160a01b03858116600483015260006024830181905292519316926314b6ca969260448084019391929182900301818387803b158015620027e057600080fd5b505af1158015620027f5573d6000803e3d6000fd5b505050506200127a565b6026546001600160a01b03838116600081815260096020526040808220548151630a5b654b60e11b8152600481019490945260248401525192909316926314b6ca969260448084019382900301818387803b1580156200179957600080fd5b6200286933620028e3565b620028a9576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b6019546001600160a01b031681565b6001600160a01b031660009081526001602052604090205460ff1690565b600082820183811015620016a1576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b620029688383620032f5565b80156200155e576026546040805163043165a760e11b81526001600160a01b038681166004830152858116602483015291519190921691630862cb4e91604480830192600092919082900301818387803b158015620029c657600080fd5b505af1158015620029db573d6000803e3d6000fd5b50505050505050565b620029f0838362003456565b80156200155e576026546040805163101c786f60e01b8152600481018690526001600160a01b0385811660248301529151919092169163101c786f91604480830192600092919082900301818387803b158015620029c657600080fd5b602b805461ff0019166101001790556040805160028082526060808301845292602083019080368337505060035482519293506001600160a01b03169183915060009062002a9757fe5b60200260200101906001600160a01b031690816001600160a01b031681525050308160018151811062002ac657fe5b6001600160a01b0392831660209182029290920181019190915260195460405163b6f9de9560e01b815260006004820181815287861660448401524260648401819052608060248501908152885160848601528851959097169663b6f9de95968b9694958a958c95939260a49092019187810191028083838b5b8381101562002b5a57818101518382015260200162002b40565b50505050905001955050505050506000604051808303818588803b15801562002b8257600080fd5b505af19350505050801562002b95575060015b505050602b805461ff001916905550565b6000818484111562002c395760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101562002bfd57818101518382015260200162002be3565b50505050905090810190601f16801562002c2b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b602b54600090610100900460ff161562002c6a5762002c6284848462003516565b9050620016a1565b62002c74620035fb565b1562002c845762002c8462003652565b62002c8e62003a3f565b1562002c9e5762002c9e62003a9a565b62002ca862003ae6565b15801562002cce57506001600160a01b0384166000908152600e602052604090205460ff165b801562002ce85750601a546001600160a01b038481169116145b801562002cfe5750601a54600160a01b900460ff165b1562002d37576001600160a01b03841660009081526009602052604090205462002d2757600080fd5b62002d376000600a600162003089565b62002d4484848462003aee565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03871660009081526009909152919091205462002d9891849062002ba6565b6001600160a01b03851660009081526009602052604081209190915562002dbf8562003cb5565b62002dcb578262002dd8565b62002dd885858562003cd4565b6001600160a01b03851660009081526009602052604090205490915062002e00908262002901565b6001600160a01b038086166000908152600960209081526040808320949094559188168152600d909152205460ff1662002ea7576026546001600160a01b03868116600081815260096020526040808220548151630a5b654b60e11b8152600481019490945260248401525192909316926314b6ca969260448084019382900301818387803b15801562002e9357600080fd5b505af192505050801562002ea5575060015b505b6001600160a01b0384166000908152600d602052604090205460ff1662002f3b576026546001600160a01b03858116600081815260096020526040808220548151630a5b654b60e11b8152600481019490945260248401525192909316926314b6ca969260448084019382900301818387803b15801562002f2757600080fd5b505af192505050801562002f39575060015b505b602654602754604080516001624d3b8760e01b031981526004810192909252516001600160a01b039092169163ffb2c4799160248082019260009290919082900301818387803b15801562002f8f57600080fd5b505af192505050801562002fa1575060015b50836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3506001949350505050565b6000620016a183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525062002ba6565b6001600160a01b039091166000908152600e60209081526040808320805494151560ff199586168117909155600c83528184208054861682179055600b9092529091208054909216179055565b43601b5542601e5560318290558015620030b9576030805460ff19169055602b805462ff000019169055620030d8565b6030805460ff19166001179055602b805462ff00001916620100001790555b82156200155e576020805460ff19166001179055678ac7230489e800006021556000602255661f9465b8ab8e38602355600260245543602555505050565b6000826200312757506000620012df565b828202828482816200313557fe5b0414620016a15760405162461bcd60e51b8152600401808060200182810382526021815260200180620054666021913960400191505060405180910390fd5b6000620016a183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062003d94565b601a546000908190620031d4906001600160a01b031662001cb4565b600354601a54604080516370a0823160e01b81526001600160a01b039283166004820152905193945060009391909216916370a08231916024808301926020929190829003018186803b1580156200322b57600080fd5b505afa15801562003240573d6000803e3d6000fd5b505050506040513d60208110156200325757600080fd5b5051905081158062003267575080155b1562003279576000925050506200181f565b600062003287828462003116565b9050600062003297848762002901565b90506000620032a7838362003174565b90506000620032bc8662002238878b62003116565b90506000620032cc868462002ff8565b602c54909150620032e890620016ed8362002238868462003116565b9998505050505050505050565b6002546001600160a01b0316331462003355576040805162461bcd60e51b815260206004820152601d60248201527f546f6b656e73526573637565723a206e6f7420617574686f72697a6564000000604482015290519081900360640190fd5b6000826001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015620033a557600080fd5b505afa158015620033ba573d6000803e3d6000fd5b505050506040513d6020811015620033d157600080fd5b50516040805163a9059cbb60e01b81526001600160a01b0385811660048301526024820184905291519293509085169163a9059cbb916044808201926020929091908290030181600087803b1580156200342a57600080fd5b505af11580156200343f573d6000803e3d6000fd5b505050506040513d60208110156200118057600080fd5b6002546001600160a01b03163314620034b6576040805162461bcd60e51b815260206004820152601d60248201527f546f6b656e73526573637565723a206e6f7420617574686f72697a6564000000604482015290519081900360640190fd5b60008260641415620034ca575047620034df565b620034dc606462002238478662003116565b90505b6040516001600160a01b0383169082156108fc029083906000818181858888f1935050505015801562001894573d6000803e3d6000fd5b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03861660009081526009909152918220546200356991849062002ba6565b6001600160a01b0380861660009081526009602052604080822093909355908516815220546200359a908362002901565b6001600160a01b0380851660008181526009602090815260409182902094909455805186815290519193928816927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a35060019392505050565b601a546000906001600160a01b03163314801590620036225750602b54610100900460ff16155b8015620036315750602b5460ff165b8015620016f457505060285430600090815260096020526040902054101590565b602b805461ff00191661010017905560175460185460009162003675916200133e565b620036835760105462003686565b60005b90506000620036ae60026200223860135462002238866028546200311690919063ffffffff16565b90506000620036c98260285462002ff890919063ffffffff16565b6040805160028082526060808301845293945090916020830190803683370190505090503081600081518110620036fc57fe5b6001600160a01b0392831660209182029290920101526003548251911690829060019081106200372857fe5b6001600160a01b0392831660209182029290920181019190915260195460405163791ac94760e01b8152600481018681526000602483018190523060648401819052426084850181905260a060448601908152895160a487015289514799979097169763791ac947978c9795968c9690939260c49091019187820191028083838b5b83811015620037c4578181015183820152602001620037aa565b505050509050019650505050505050600060405180830381600087803b158015620037ee57600080fd5b505af192505050801562003800575060015b5060006200380f478362002ff8565b905060006200382e6200382488600262003174565b6013549062002ff8565b90506000620038466002620022388481878d62003116565b90506000620038668362002238600f54876200311690919063ffffffff16565b90506000620038868462002238601254886200311690919063ffffffff16565b9050602660009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b158015620038d957600080fd5b505af193505050508015620038ec575060015b506016546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801562003928573d6000803e3d6000fd5b50881562003a28576019546015546040805163f305d71960e01b8152306004820152602481018d905260006044820181905260648201526001600160a01b0392831660848201524260a48201529051919092169163f305d71991869160c48082019260609290919082900301818588803b158015620039a657600080fd5b505af193505050508015620039dd57506040513d6060811015620039c957600080fd5b508051602082015160409092015190919060015b620039e857620039ec565b5050505b60408051848152602081018b905281517f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506929181900390910190a15b5050602b805461ff00191690555050505050505050565b601a546000906001600160a01b0316331480159062003a665750602b54610100900460ff16155b801562003a75575060205460ff165b801562003a885750436024546025540111155b8015620016f457505060235447101590565b60235460045462003ab591906001600160a01b031662002a4d565b4360255560235460225462003aca9162002901565b6022819055602154101562003ae4576020805460ff191690555b565b601b54151590565b6001600160a01b0383166000908152600e602052604090205460ff16801562003b2f57506001600160a01b0382166000908152600e602052604090205460ff165b1562003b3b576200155e565b62003b4562003ae6565b62003b825760405162461bcd60e51b8152600401808060200182810382526021815260200180620054876021913960400191505060405180910390fd5b6029548111158062003bac57506001600160a01b0383166000908152600c602052604090205460ff165b62003bf2576040805162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015290519081900360640190fd5b6001600160a01b0382166000908152600e602052604090205460ff168062003c405750602a546001600160a01b03831660009081526009602052604090205462003c3d908362002901565b11155b62003c92576040805162461bcd60e51b815260206004820152601860248201527f4d61782057616c6c65742053697a652045786365656465640000000000000000604482015290519081900360640190fd5b62003c9f83838362003dfd565b62003caa8362003e6e565b6200155e8262003e6e565b6001600160a01b03166000908152600b602052604090205460ff161590565b601454601a54600091829162003d0b9190620022389062003d03906001600160a01b03898116911614620025bb565b869062003116565b3060009081526009602052604090205490915062003d2a908262002901565b30600081815260096020908152604091829020939093558051848152905191926001600160a01b038916927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a362003d8b838262002ff8565b95945050505050565b6000818362003de65760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831562002bfd57818101518382015260200162002be3565b50600083858162003df357fe5b0495945050505050565b62003e09838362003f42565b156200155e57600062003e1c82620031b8565b9050602d5481111562001894576040805162461bcd60e51b81526020600482015260156024820152740a0e4d2c6ca4092dae0c2c6e840e8dede40d0d2ced605b1b604482015290519081900360640190fd5b6001600160a01b0381166000908152600e602052604090205460ff168062003e99575060305460ff16155b1562003ea55762003f3f565b602f546001600160a01b0382166000908152602e6020526040902054429162003ecf919062002901565b111562003f23576040805162461bcd60e51b815260206004820152601f60248201527f436f6f6c646f776e3a20546f6f206d616e79207472616e73616374696f6e7300604482015290519081900360640190fd5b6001600160a01b0381166000908152602e602052604090204290555b50565b602b5460009062010000900460ff16801562003f7757506001600160a01b0383166000908152600c602052604090205460ff16155b801562003f915750601a546001600160a01b038381169116145b8015620016a15750601a546000906200134c906001600160a01b031662001cb4565b6114a48062003fc28339019056fe60806040526ec097ce7bc90715b34b9f1000000000600d5561012c600e55670de0b6b3a7640000600f5534801561003557600080fd5b506040516114a43803806114a48339818101604052606081101561005857600080fd5b5080516020820151604090920151600080546001600160a01b031916331790559091906001600160a01b0383166100a35773f491e7b69e4244ad4002bc14e878a34207e38c296100a5565b825b600480546001600160a01b0319166001600160a01b0392831617808255604080516315ab88c960e31b81529051919093169263ad5c46489281810192602092909190829003018186803b1580156100fb57600080fd5b505afa15801561010f573d6000803e3d6000fd5b505050506040513d602081101561012557600080fd5b5051600380546001600160a01b039283166001600160a01b03199182161790915560018054821633178082558316600090815260116020526040808220805460ff1990811685179091559585168252902080549094161790925560028054939091169290911691909117905550611303806101a16000396000f3fe60806040526004361061011f5760003560e01c8063b9181611116100a0578063e2d2e21911610064578063e2d2e219146103f3578063eaf71e0014610408578063f0fc6bca14610439578063ffb2c4791461044e578063ffd49c84146104785761011f565b8063b9181611146102ed578063c7e772ed14610334578063ce7c2ac214610367578063d0e30db0146103b8578063de320cc1146103c05761011f565b80632d48e896116100e75780632d48e8961461022d5780633a98ef391461025d5780634fab0ae81461027257806366e28fcd146102875780638b8dfa39146102ba5761011f565b80630862cb4e14610124578063101c786f1461016157806311ce023d1461019a57806314b6ca96146101c157806328fd3198146101fa575b600080fd5b34801561013057600080fd5b5061015f6004803603604081101561014757600080fd5b506001600160a01b038135811691602001351661048d565b005b34801561016d57600080fd5b5061015f6004803603604081101561018457600080fd5b50803590602001356001600160a01b03166104ff565b3480156101a657600080fd5b506101af6105c4565b60408051918252519081900360200190f35b3480156101cd57600080fd5b5061015f600480360360408110156101e457600080fd5b506001600160a01b0381351690602001356105ca565b34801561020657600080fd5b506101af6004803603602081101561021d57600080fd5b50356001600160a01b03166106f4565b34801561023957600080fd5b5061015f6004803603604081101561025057600080fd5b5080359060200135610780565b34801561026957600080fd5b506101af6107a7565b34801561027e57600080fd5b506101af6107ad565b34801561029357600080fd5b506101af600480360360208110156102aa57600080fd5b50356001600160a01b03166107b3565b3480156102c657600080fd5b506101af600480360360208110156102dd57600080fd5b50356001600160a01b03166107c5565b3480156102f957600080fd5b506103206004803603602081101561031057600080fd5b50356001600160a01b03166107d7565b604080519115158252519081900360200190f35b34801561034057600080fd5b5061015f6004803603602081101561035757600080fd5b50356001600160a01b03166107ec565b34801561037357600080fd5b5061039a6004803603602081101561038a57600080fd5b50356001600160a01b03166107f8565b60408051938452602084019290925282820152519081900360600190f35b61015f610819565b3480156103cc57600080fd5b5061015f600480360360208110156103e357600080fd5b50356001600160a01b0316610aec565b3480156103ff57600080fd5b506101af610b2f565b34801561041457600080fd5b5061041d610b35565b604080516001600160a01b039092168252519081900360200190f35b34801561044557600080fd5b5061015f610b44565b34801561045a57600080fd5b5061015f6004803603602081101561047157600080fd5b5035610b4d565b34801561048457600080fd5b506101af610c1a565b6000546001600160a01b031633146104ec576040805162461bcd60e51b815260206004820152601d60248201527f546f6b656e73526573637565723a206e6f7420617574686f72697a6564000000604482015290519081900360640190fd5b6000600c556104fb8282610c20565b5050565b6000546001600160a01b0316331461055e576040805162461bcd60e51b815260206004820152601d60248201527f546f6b656e73526573637565723a206e6f7420617574686f72697a6564000000604482015290519081900360640190fd5b60008260641415610570575047610588565b610585606461057f4786610d7a565b90610ddc565b90505b6040516001600160a01b0383169082156108fc029083906000818181858888f193505050501580156105be573d6000803e3d6000fd5b50505050565b600d5481565b3360009081526011602052604090205460ff166105e657600080fd5b6001600160a01b0382166000908152600860205260409020541561060d5761060d82610e1e565b60008111801561063357506001600160a01b038216600090815260086020526040902054155b156106465761064182610f6d565b610679565b8015801561066b57506001600160a01b03821660009081526008602052604090205415155b156106795761067982610fce565b6001600160a01b0382166000908152600860205260409020546009546106aa9183916106a4916110bb565b906110fd565b6009556001600160a01b03821660009081526008602052604090208190556106d181611157565b6001600160a01b0390921660009081526008602052604090206001019190915550565b6001600160a01b0381166000908152600860205260408120546107195750600061077b565b6001600160a01b03821660009081526008602052604081205461073b90611157565b6001600160a01b03841660009081526008602052604090206001015490915080821161076c5760009250505061077b565b61077682826110bb565b925050505b919050565b3360009081526011602052604090205460ff1661079c57600080fd5b600e91909155600f55565b60095481565b600f5481565b600a6020526000908152604090205481565b600b6020526000908152604090205481565b60116020526000908152604090205460ff1681565b6107f581610e1e565b50565b60086020526000908152604090208054600182015460029092015490919083565b3360009081526011602052604090205460ff1661083557600080fd5b6002546001600160a01b031661084a57610aea565b600254604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561089557600080fd5b505afa1580156108a9573d6000803e3d6000fd5b505050506040513d60208110156108bf57600080fd5b5051604080516002808252606080830184529394509091602083019080368337505060035482519293506001600160a01b0316918391506000906108ff57fe5b6001600160a01b03928316602091820292909201015260025482519116908290600190811061092a57fe5b6001600160a01b039283166020918202929092018101919091526004805460405163b6f9de9560e01b8152600092810183815230604483018190524260648401819052608060248501908152895160848601528951959098169763b6f9de95973497968b969495939460a4019187810191028083838b5b838110156109b95781810151838201526020016109a1565b50505050905001955050505050506000604051808303818588803b1580156109e057600080fd5b505af11580156109f4573d6000803e3d6000fd5b5050600254604080516370a0823160e01b8152306004820152905160009550610a7f94508793506001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015610a4d57600080fd5b505afa158015610a61573d6000803e3d6000fd5b505050506040513d6020811015610a7757600080fd5b5051906110bb565b6002546001600160a01b03166000908152600a6020526040902054909150610aa790826110fd565b6002546001600160a01b03166000908152600a6020526040902055600954600d54610ae391610ada9161057f9085610d7a565b600c54906110fd565b600c555050505b565b3360009081526011602052604090205460ff16610b0857600080fd5b600280546001600160a01b0319166001600160a01b03929092169190911790556000600c55565b600c5481565b6002546001600160a01b031681565b610aea33610e1e565b3360009081526011602052604090205460ff16610b6957600080fd5b60055480610b7757506107f5565b6000805a905060005b8483108015610b8e57508381105b15610c13578360105410610ba25760006010555b6000600560105481548110610bb357fe5b6000918252602090912001546001600160a01b03169050610bd381611174565b15610be157610be181610e1e565b610bf6610bef5a85906110bb565b85906110fd565b93505a601080546001908101909155909350919091019050610b80565b5050505050565b600e5481565b6000546001600160a01b03163314610c7f576040805162461bcd60e51b815260206004820152601d60248201527f546f6b656e73526573637565723a206e6f7420617574686f72697a6564000000604482015290519081900360640190fd5b6000826001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610cce57600080fd5b505afa158015610ce2573d6000803e3d6000fd5b505050506040513d6020811015610cf857600080fd5b50516040805163a9059cbb60e01b81526001600160a01b0385811660048301526024820184905291519293509085169163a9059cbb916044808201926020929091908290030181600087803b158015610d5057600080fd5b505af1158015610d64573d6000803e3d6000fd5b505050506040513d6020811015610c1357600080fd5b600082610d8957506000610dd6565b82820282848281610d9657fe5b0414610dd35760405162461bcd60e51b81526004018080602001828103825260218152602001806112ad6021913960400191505060405180910390fd5b90505b92915050565b6000610dd383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506111b0565b6001600160a01b038116600090815260086020526040902054610e40576107f5565b6000610e4b826106f4565b905080156104fb576002546001600160a01b03166000908152600b6020526040902054610e7890826110fd565b600280546001600160a01b039081166000908152600b60209081526040808320959095559254845163a9059cbb60e01b8152878416600482015260248101879052945192169363a9059cbb93604480830194919391928390030190829087803b158015610ee457600080fd5b505af1158015610ef8573d6000803e3d6000fd5b505050506040513d6020811015610f0e57600080fd5b50506001600160a01b03821660009081526007602090815260408083204290556008909152902060020154610f4390826110fd565b6001600160a01b03831660009081526008602052604090206002810191909155546106d190611157565b600580546001600160a01b039092166000818152600660205260408120849055600184018355919091527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db090910180546001600160a01b0319169091179055565b600580546000198101908110610fe057fe5b60009182526020808320909101546001600160a01b038481168452600690925260409092205460058054929093169291811061101857fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b03948516179055918316815260069182905260408120546005805491939291600019810190811061106657fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902055600580548061109657fe5b600082815260209020810160001990810180546001600160a01b031916905501905550565b6000610dd383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611252565b600082820183811015610dd3576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000610dd6600d5461057f600c5485610d7a90919063ffffffff16565b600e546001600160a01b0382166000908152600760205260408120549091429101108015610dd65750600f546111a9836106f4565b1192915050565b6000818361123c5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156112015781810151838201526020016111e9565b50505050905090810190601f16801561122e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161124857fe5b0495945050505050565b600081848411156112a45760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156112015781810151838201526020016111e9565b50505090039056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a264697066735822122034cc543f8948cf723e9f38109643a99d366e8227dbdb1245b7f2de56e1b4b8ec64736f6c634300060c0033536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7754686520636f6e747261637420686173206e6f74206c61756e6368656420796574a264697066735822122095eee4443903ae8aa70cb7dfd7634f348768e7efe23c0efc8a6714d3ac96710264736f6c634300060c003360806040526ec097ce7bc90715b34b9f1000000000600d5561012c600e55670de0b6b3a7640000600f5534801561003557600080fd5b506040516114a43803806114a48339818101604052606081101561005857600080fd5b5080516020820151604090920151600080546001600160a01b031916331790559091906001600160a01b0383166100a35773f491e7b69e4244ad4002bc14e878a34207e38c296100a5565b825b600480546001600160a01b0319166001600160a01b0392831617808255604080516315ab88c960e31b81529051919093169263ad5c46489281810192602092909190829003018186803b1580156100fb57600080fd5b505afa15801561010f573d6000803e3d6000fd5b505050506040513d602081101561012557600080fd5b5051600380546001600160a01b039283166001600160a01b03199182161790915560018054821633178082558316600090815260116020526040808220805460ff1990811685179091559585168252902080549094161790925560028054939091169290911691909117905550611303806101a16000396000f3fe60806040526004361061011f5760003560e01c8063b9181611116100a0578063e2d2e21911610064578063e2d2e219146103f3578063eaf71e0014610408578063f0fc6bca14610439578063ffb2c4791461044e578063ffd49c84146104785761011f565b8063b9181611146102ed578063c7e772ed14610334578063ce7c2ac214610367578063d0e30db0146103b8578063de320cc1146103c05761011f565b80632d48e896116100e75780632d48e8961461022d5780633a98ef391461025d5780634fab0ae81461027257806366e28fcd146102875780638b8dfa39146102ba5761011f565b80630862cb4e14610124578063101c786f1461016157806311ce023d1461019a57806314b6ca96146101c157806328fd3198146101fa575b600080fd5b34801561013057600080fd5b5061015f6004803603604081101561014757600080fd5b506001600160a01b038135811691602001351661048d565b005b34801561016d57600080fd5b5061015f6004803603604081101561018457600080fd5b50803590602001356001600160a01b03166104ff565b3480156101a657600080fd5b506101af6105c4565b60408051918252519081900360200190f35b3480156101cd57600080fd5b5061015f600480360360408110156101e457600080fd5b506001600160a01b0381351690602001356105ca565b34801561020657600080fd5b506101af6004803603602081101561021d57600080fd5b50356001600160a01b03166106f4565b34801561023957600080fd5b5061015f6004803603604081101561025057600080fd5b5080359060200135610780565b34801561026957600080fd5b506101af6107a7565b34801561027e57600080fd5b506101af6107ad565b34801561029357600080fd5b506101af600480360360208110156102aa57600080fd5b50356001600160a01b03166107b3565b3480156102c657600080fd5b506101af600480360360208110156102dd57600080fd5b50356001600160a01b03166107c5565b3480156102f957600080fd5b506103206004803603602081101561031057600080fd5b50356001600160a01b03166107d7565b604080519115158252519081900360200190f35b34801561034057600080fd5b5061015f6004803603602081101561035757600080fd5b50356001600160a01b03166107ec565b34801561037357600080fd5b5061039a6004803603602081101561038a57600080fd5b50356001600160a01b03166107f8565b60408051938452602084019290925282820152519081900360600190f35b61015f610819565b3480156103cc57600080fd5b5061015f600480360360208110156103e357600080fd5b50356001600160a01b0316610aec565b3480156103ff57600080fd5b506101af610b2f565b34801561041457600080fd5b5061041d610b35565b604080516001600160a01b039092168252519081900360200190f35b34801561044557600080fd5b5061015f610b44565b34801561045a57600080fd5b5061015f6004803603602081101561047157600080fd5b5035610b4d565b34801561048457600080fd5b506101af610c1a565b6000546001600160a01b031633146104ec576040805162461bcd60e51b815260206004820152601d60248201527f546f6b656e73526573637565723a206e6f7420617574686f72697a6564000000604482015290519081900360640190fd5b6000600c556104fb8282610c20565b5050565b6000546001600160a01b0316331461055e576040805162461bcd60e51b815260206004820152601d60248201527f546f6b656e73526573637565723a206e6f7420617574686f72697a6564000000604482015290519081900360640190fd5b60008260641415610570575047610588565b610585606461057f4786610d7a565b90610ddc565b90505b6040516001600160a01b0383169082156108fc029083906000818181858888f193505050501580156105be573d6000803e3d6000fd5b50505050565b600d5481565b3360009081526011602052604090205460ff166105e657600080fd5b6001600160a01b0382166000908152600860205260409020541561060d5761060d82610e1e565b60008111801561063357506001600160a01b038216600090815260086020526040902054155b156106465761064182610f6d565b610679565b8015801561066b57506001600160a01b03821660009081526008602052604090205415155b156106795761067982610fce565b6001600160a01b0382166000908152600860205260409020546009546106aa9183916106a4916110bb565b906110fd565b6009556001600160a01b03821660009081526008602052604090208190556106d181611157565b6001600160a01b0390921660009081526008602052604090206001019190915550565b6001600160a01b0381166000908152600860205260408120546107195750600061077b565b6001600160a01b03821660009081526008602052604081205461073b90611157565b6001600160a01b03841660009081526008602052604090206001015490915080821161076c5760009250505061077b565b61077682826110bb565b925050505b919050565b3360009081526011602052604090205460ff1661079c57600080fd5b600e91909155600f55565b60095481565b600f5481565b600a6020526000908152604090205481565b600b6020526000908152604090205481565b60116020526000908152604090205460ff1681565b6107f581610e1e565b50565b60086020526000908152604090208054600182015460029092015490919083565b3360009081526011602052604090205460ff1661083557600080fd5b6002546001600160a01b031661084a57610aea565b600254604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561089557600080fd5b505afa1580156108a9573d6000803e3d6000fd5b505050506040513d60208110156108bf57600080fd5b5051604080516002808252606080830184529394509091602083019080368337505060035482519293506001600160a01b0316918391506000906108ff57fe5b6001600160a01b03928316602091820292909201015260025482519116908290600190811061092a57fe5b6001600160a01b039283166020918202929092018101919091526004805460405163b6f9de9560e01b8152600092810183815230604483018190524260648401819052608060248501908152895160848601528951959098169763b6f9de95973497968b969495939460a4019187810191028083838b5b838110156109b95781810151838201526020016109a1565b50505050905001955050505050506000604051808303818588803b1580156109e057600080fd5b505af11580156109f4573d6000803e3d6000fd5b5050600254604080516370a0823160e01b8152306004820152905160009550610a7f94508793506001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015610a4d57600080fd5b505afa158015610a61573d6000803e3d6000fd5b505050506040513d6020811015610a7757600080fd5b5051906110bb565b6002546001600160a01b03166000908152600a6020526040902054909150610aa790826110fd565b6002546001600160a01b03166000908152600a6020526040902055600954600d54610ae391610ada9161057f9085610d7a565b600c54906110fd565b600c555050505b565b3360009081526011602052604090205460ff16610b0857600080fd5b600280546001600160a01b0319166001600160a01b03929092169190911790556000600c55565b600c5481565b6002546001600160a01b031681565b610aea33610e1e565b3360009081526011602052604090205460ff16610b6957600080fd5b60055480610b7757506107f5565b6000805a905060005b8483108015610b8e57508381105b15610c13578360105410610ba25760006010555b6000600560105481548110610bb357fe5b6000918252602090912001546001600160a01b03169050610bd381611174565b15610be157610be181610e1e565b610bf6610bef5a85906110bb565b85906110fd565b93505a601080546001908101909155909350919091019050610b80565b5050505050565b600e5481565b6000546001600160a01b03163314610c7f576040805162461bcd60e51b815260206004820152601d60248201527f546f6b656e73526573637565723a206e6f7420617574686f72697a6564000000604482015290519081900360640190fd5b6000826001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610cce57600080fd5b505afa158015610ce2573d6000803e3d6000fd5b505050506040513d6020811015610cf857600080fd5b50516040805163a9059cbb60e01b81526001600160a01b0385811660048301526024820184905291519293509085169163a9059cbb916044808201926020929091908290030181600087803b158015610d5057600080fd5b505af1158015610d64573d6000803e3d6000fd5b505050506040513d6020811015610c1357600080fd5b600082610d8957506000610dd6565b82820282848281610d9657fe5b0414610dd35760405162461bcd60e51b81526004018080602001828103825260218152602001806112ad6021913960400191505060405180910390fd5b90505b92915050565b6000610dd383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506111b0565b6001600160a01b038116600090815260086020526040902054610e40576107f5565b6000610e4b826106f4565b905080156104fb576002546001600160a01b03166000908152600b6020526040902054610e7890826110fd565b600280546001600160a01b039081166000908152600b60209081526040808320959095559254845163a9059cbb60e01b8152878416600482015260248101879052945192169363a9059cbb93604480830194919391928390030190829087803b158015610ee457600080fd5b505af1158015610ef8573d6000803e3d6000fd5b505050506040513d6020811015610f0e57600080fd5b50506001600160a01b03821660009081526007602090815260408083204290556008909152902060020154610f4390826110fd565b6001600160a01b03831660009081526008602052604090206002810191909155546106d190611157565b600580546001600160a01b039092166000818152600660205260408120849055600184018355919091527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db090910180546001600160a01b0319169091179055565b600580546000198101908110610fe057fe5b60009182526020808320909101546001600160a01b038481168452600690925260409092205460058054929093169291811061101857fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b03948516179055918316815260069182905260408120546005805491939291600019810190811061106657fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902055600580548061109657fe5b600082815260209020810160001990810180546001600160a01b031916905501905550565b6000610dd383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611252565b600082820183811015610dd3576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000610dd6600d5461057f600c5485610d7a90919063ffffffff16565b600e546001600160a01b0382166000908152600760205260408120549091429101108015610dd65750600f546111a9836106f4565b1192915050565b6000818361123c5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156112015781810151838201526020016111e9565b50505050905090810190601f16801561122e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161124857fe5b0495945050505050565b600081848411156112a45760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156112015781810151838201526020016111e9565b50505090039056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a264697066735822122034cc543f8948cf723e9f38109643a99d366e8227dbdb1245b7f2de56e1b4b8ec64736f6c634300060c0033000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000f491e7b69e4244ad4002bc14e878a34207e38c29000000000000000000000000841fad6eae12c286d1fd18d1d525dffa75c7effe000000000000000000000000000000000000000000000000000000000000000b426162792046616e746f6d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000074261627946544d00000000000000000000000000000000000000000000000000
Deployed Bytecode
0x6080604052600436106200041b5760003560e01c80638f3fa8601162000223578063ca33e64c1162000127578063f0b37c0411620000af578063f708a64f1162000079578063f708a64f1462000fa6578063f84ba65d1462000fe5578063f887ea401462001024578063fe9fbb80146200103c5762000423565b8063f0b37c041462000eda578063f1f3bca31462000f11578063f2fde38b1462000f41578063f50341201462000f785762000423565b8063dd62ed3e11620000f1578063dd62ed3e1462000e0e578063df20fd491462000e4d578063e10b5d811462000e83578063e96fada21462000ec25762000423565b8063ca33e64c1462000d98578063d51ed1c81462000db0578063d806d12f1462000dde578063dcafac091462000df65762000423565b8063b6a5d7de11620001ab578063bfe9abca1162000175578063bfe9abca1462000c71578063c0d786551462000ca1578063c5b348981462000cd8578063ca21b29d1462000d5c5762000423565b8063b6a5d7de1462000bc5578063ba3090ca1462000bfc578063bf56b3711462000c41578063bfe109281462000c595762000423565b8063a4b45c0011620001ed578063a4b45c001462000b19578063a8aa1b311462000b58578063a9059cbb1462000b70578063b210b06d1462000bad5762000423565b80638f3fa8601462000a7257806395d89b411462000a8a5780639d1944f51462000aa2578063a09f12d91462000ad05762000423565b806323b872dd116200032b578063522281bf11620002b35780636ddd1713116200027d5780636ddd171314620009d757806370a0823114620009ef5780637d1db4a51462000a26578063893d20e81462000a3e5762000423565b8063522281bf14620008f55780635c85974f146200092b5780636289cc611462000959578063658d4b7f14620009985762000423565b80632f54bf6e11620002f55780632f54bf6e1462000876578063313ce56714620008ad5780633bb8a8d414620008c55780634e71d92d14620008dd5762000423565b806323b872dd14620007a45780632b112e4914620007eb5780632d48e89614620008035780632dd99ab914620008375762000423565b80631161ae3911620003af5780631c4c784311620003795780631c4c784314620006d9578063201e799114620006f157806323627b9f14620007255780632375ce40146200076a5762000423565b80631161ae3914620006395780631255c2f2146200066d57806317db3fc614620006a957806318160ddd14620006c15762000423565b806306fdde0311620003f157806306fdde0314620004dc5780630862cb4e146200056c578063095ea7b314620005ab578063101c786f14620005fc5762000423565b80630445b6671462000428578063048c7baf146200045257806304a66b4814620004965762000423565b366200042357005b600080fd5b3480156200043557600080fd5b506200044062001073565b60408051918252519081900360200190f35b3480156200045f57600080fd5b5062000494600480360360808110156200047857600080fd5b5080351515906020810135906040810135906060013562001079565b005b348015620004a357600080fd5b5062000494600480360360a0811015620004bc57600080fd5b5080359060208101359060408101359060608101359060800135620010ed565b348015620004e957600080fd5b50620004f462001187565b6040805160208082528351818301528351919283929083019185019080838360005b838110156200053057818101518382015260200162000516565b50505050905090810190601f1680156200055e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156200057957600080fd5b5062000494600480360360408110156200059257600080fd5b506001600160a01b038135811691602001351662001221565b348015620005b857600080fd5b50620005e860048036036040811015620005d157600080fd5b506001600160a01b0381351690602001356200127e565b604080519115158252519081900360200190f35b3480156200060957600080fd5b5062000494600480360360408110156200062257600080fd5b50803590602001356001600160a01b0316620012e5565b3480156200064657600080fd5b50620005e8600480360360408110156200065f57600080fd5b50803590602001356200133e565b3480156200067a57600080fd5b5062000494600480360360608110156200069357600080fd5b5080351515906020810135906040013562001354565b348015620006b657600080fd5b50620004946200140f565b348015620006ce57600080fd5b506200044062001461565b348015620006e657600080fd5b50620005e862001467565b348015620006fe57600080fd5b5062000494600480360360408110156200071757600080fd5b508035906020013562001470565b3480156200073257600080fd5b5062000494600480360360608110156200074b57600080fd5b508035906020810135151590604001356001600160a01b0316620014c6565b3480156200077757600080fd5b5062000494600480360360608110156200079057600080fd5b508035906020810135906040013562001563565b348015620007b157600080fd5b50620005e860048036036060811015620007ca57600080fd5b506001600160a01b03813581169160208101359091169060400135620015e1565b348015620007f857600080fd5b5062000440620016a8565b3480156200081057600080fd5b5062000494600480360360408110156200082957600080fd5b5080359060200135620016f9565b3480156200084457600080fd5b5062000494600480360360408110156200085d57600080fd5b506001600160a01b0381351690602001351515620017b6565b3480156200088357600080fd5b50620005e8600480360360208110156200089c57600080fd5b50356001600160a01b03166200180d565b348015620008ba57600080fd5b506200044062001824565b348015620008d257600080fd5b50620005e862001829565b348015620008ea57600080fd5b506200049462001832565b3480156200090257600080fd5b5062000494600480360360408110156200091b57600080fd5b508035151590602001356200189a565b3480156200093857600080fd5b5062000494600480360360208110156200095157600080fd5b5035620018f3565b3480156200096657600080fd5b5062000494600480360360408110156200097f57600080fd5b506001600160a01b03813516906020013515156200195f565b348015620009a557600080fd5b506200049460048036036040811015620009be57600080fd5b506001600160a01b038135169060200135151562001c35565b348015620009e457600080fd5b50620005e862001cab565b348015620009fc57600080fd5b50620004406004803603602081101562000a1557600080fd5b50356001600160a01b031662001cb4565b34801562000a3357600080fd5b506200044062001ccf565b34801562000a4b57600080fd5b5062000a5662001cd5565b604080516001600160a01b039092168252519081900360200190f35b34801562000a7f57600080fd5b506200044062001ce4565b34801562000a9757600080fd5b50620004f462001cea565b34801562000aaf57600080fd5b50620004946004803603602081101562000ac857600080fd5b503562001d4e565b34801562000add57600080fd5b50620004946004803603606081101562000af657600080fd5b506001600160a01b03813581169160208101359091169060400135151562001dae565b34801562000b2657600080fd5b50620004946004803603604081101562000b3f57600080fd5b506001600160a01b038135811691602001351662001e06565b34801562000b6557600080fd5b5062000a5662001e7f565b34801562000b7d57600080fd5b50620005e86004803603604081101562000b9657600080fd5b506001600160a01b03813516906020013562001e8e565b34801562000bba57600080fd5b506200049462001e9d565b34801562000bd257600080fd5b50620004946004803603602081101562000beb57600080fd5b50356001600160a01b031662001eef565b34801562000c0957600080fd5b50620004946004803603606081101562000c2257600080fd5b508035906001600160a01b036020820135169060400135151562001f5c565b34801562000c4e57600080fd5b506200044062001fb4565b34801562000c6657600080fd5b5062000a5662001fba565b34801562000c7e57600080fd5b50620004946004803603602081101562000c9757600080fd5b5035151562001fc9565b34801562000cae57600080fd5b50620004946004803603602081101562000cc757600080fd5b50356001600160a01b031662002032565b34801562000ce557600080fd5b50620004946004803603602081101562000cfe57600080fd5b81019060208101813564010000000081111562000d1a57600080fd5b82018360208201111562000d2d57600080fd5b8035906020019184602083028401116401000000008311171562000d5057600080fd5b509092509050620020f8565b34801562000d6957600080fd5b50620004946004803603606081101562000d8257600080fd5b5080351515906020810135906040013562002181565b34801562000da557600080fd5b5062000a56620021e6565b34801562000dbd57600080fd5b50620004406004803603602081101562000dd657600080fd5b5035620021f5565b34801562000deb57600080fd5b50620004406200223f565b34801562000e0357600080fd5b5062000440620022be565b34801562000e1b57600080fd5b50620004406004803603604081101562000e3457600080fd5b506001600160a01b0381358116916020013516620022c4565b34801562000e5a57600080fd5b50620004946004803603604081101562000e7357600080fd5b50803515159060200135620022ef565b34801562000e9057600080fd5b50620004946004803603604081101562000ea957600080fd5b506001600160a01b038135169060200135151562002351565b34801562000ecf57600080fd5b5062000a5662002545565b34801562000ee757600080fd5b50620004946004803603602081101562000f0057600080fd5b50356001600160a01b031662002554565b34801562000f1e57600080fd5b50620004406004803603602081101562000f3757600080fd5b50351515620025bb565b34801562000f4e57600080fd5b50620004946004803603602081101562000f6757600080fd5b50356001600160a01b031662002620565b34801562000f8557600080fd5b50620004406004803603602081101562000f9e57600080fd5b5035620026d4565b34801562000fb357600080fd5b50620004946004803603604081101562000fcc57600080fd5b506001600160a01b0381351690602001351515620026e1565b34801562000ff257600080fd5b5062000494600480360360408110156200100b57600080fd5b506001600160a01b03813516906020013515156200285e565b3480156200103157600080fd5b5062000a56620028d4565b3480156200104957600080fd5b50620005e8600480360360208110156200106257600080fd5b50356001600160a01b0316620028e3565b60285481565b6200108433620028e3565b620010c4576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6020805460ff191694151594909417909355602191909155600060225560235560245543602555565b620010f833620028e3565b62001138576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b60108590556011849055600f839055601282905562001166826200115f8581898962002901565b9062002901565b601355601481905560048104601354106200118057600080fd5b5050505050565b60068054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015620012175780601f10620011eb5761010080835404028352916020019162001217565b820191906000526020600020905b815481529060010190602001808311620011f957829003601f168201915b5050505050905090565b6200122c33620028e3565b6200126c576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6200127a828260006200295c565b5050565b336000818152600a602090815260408083206001600160a01b038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a35060015b92915050565b620012f033620028e3565b62001330576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6200127a82826000620029e4565b6000826200134c83620021f5565b119392505050565b6200135f33620028e3565b6200139f576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b80821015620013ec576040805162461bcd60e51b8152602060048201526014602482015273139d5b595c985d1bdc881a5cc81a5b9d985b1a5960621b604482015290519081900360640190fd5b602b8054931515620100000262ff00001990941693909317909255602c55602d55565b6200141a33620028e3565b6200145a576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6000601b55565b60085490565b60305460ff1681565b6200147b33620028e3565b620014bb576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b601791909155601855565b620014d133620028e3565b62001511576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6200151d838262002a4d565b81156200155e5742601e55601f5460408051918252517f39d2389ec5c1fa77b2c0d374bc61b6d7bd97ccba280fcdeb4e9c7644898d7c3a9181900360200190a15b505050565b6200156e33620028e3565b620015ae576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6002828481620015ba57fe5b0411158015620015c957508183115b620015d357600080fd5b601c92909255601d55601f55565b6001600160a01b0383166000908152600a602090815260408083203384529091528120546000191462001691576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600a825283812033825290915291909120546200166c91849062002ba6565b6001600160a01b0385166000908152600a602090815260408083203384529091529020555b6200169e84848462002c41565b90505b9392505050565b600554600090620016f490620016c7906001600160a01b031662001cb4565b600454620016ed90620016e3906001600160a01b031662001cb4565b6008549062002ff8565b9062002ff8565b905090565b6200170433620028e3565b62001744576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b602654604080516316a4744b60e11b8152600481018590526024810184905290516001600160a01b0390921691632d48e8969160448082019260009290919082900301818387803b1580156200179957600080fd5b505af1158015620017ae573d6000803e3d6000fd5b505050505050565b620017c133620028e3565b62001801576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6200127a82826200303c565b6000546001600160a01b038281169116145b919050565b601290565b60205460ff1681565b6026546040805163c7e772ed60e01b815233600482015290516001600160a01b039092169163c7e772ed9160248082019260009290919082900301818387803b1580156200187f57600080fd5b505af115801562001894573d6000803e3d6000fd5b50505050565b620018a533620028e3565b620018e5576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6200127a8282600062003089565b620018fe33620028e3565b6200193e576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6103e8600854816200194c57fe5b048110156200195a57600080fd5b602955565b6200196a33620028e3565b620019aa576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b801562001b04576026546040805162757b8f60e91b815290516000926001600160a01b03169163eaf71e00916004808301926020929190829003018186803b158015620019f657600080fd5b505afa15801562001a0b573d6000803e3d6000fd5b505050506040513d602081101562001a2257600080fd5b50516026546040805163101c786f60e01b81526064600482015233602482015290519293506001600160a01b039091169163101c786f9160448082019260009290919082900301818387803b15801562001a7b57600080fd5b505af115801562001a90573d6000803e3d6000fd5b50506026546040805163043165a760e11b81526001600160a01b0386811660048301523360248301529151919092169350630862cb4e9250604480830192600092919082900301818387803b15801562001ae957600080fd5b505af115801562001afe573d6000803e3d6000fd5b50505050505b6001600160a01b03821662001baf576019546040516001600160a01b039091169073841fad6eae12c286d1fd18d1d525dffa75c7effe90339062001b489062003fb3565b6001600160a01b03938416815291831660208301529091166040808301919091525190819003606001906000f08015801562001b88573d6000803e3d6000fd5b50602680546001600160a01b0319166001600160a01b03929092169190911790556200127a565b6019546040516001600160a01b03909116908390339062001bd09062003fb3565b6001600160a01b03938416815291831660208301529091166040808301919091525190819003606001906000f08015801562001c10573d6000803e3d6000fd5b50602680546001600160a01b0319166001600160a01b03929092169190911790555050565b62001c4033620028e3565b62001c80576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b602b5460ff1681565b6001600160a01b031660009081526009602052604090205490565b60295481565b6000546001600160a01b031690565b602a5481565b60078054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015620012175780601f10620011eb5761010080835404028352916020019162001217565b62001d5933620028e3565b62001d99576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b620b71b0811062001da957600080fd5b602755565b62001db933620028e3565b62001df9576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6200155e8383836200295c565b62001e1133620028e3565b62001e51576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b601580546001600160a01b039384166001600160a01b03199182161790915560168054929093169116179055565b601a546001600160a01b031681565b6000620016a133848462002c41565b62001ea833620028e3565b62001ee8576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6000601e55565b62001efa336200180d565b62001f35576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b62001f6733620028e3565b62001fa7576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6200155e838383620029e4565b601b5481565b6026546001600160a01b031681565b62001fd433620028e3565b62002014576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b601a8054911515600160a01b0260ff60a01b19909216919091179055565b6200203d33620028e3565b6200207d576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6019546001600160a01b0382811691161415620020d6576040805162461bcd60e51b8152602060048201526012602482015271526f75746572206973207468652073616d6560701b604482015290519081900360640190fd5b601980546001600160a01b0319166001600160a01b0392909216919091179055565b6200210333620028e3565b62002143576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b60005b818110156200155e57620021788383838181106200216057fe5b905060200201356001600160a01b031660016200303c565b60010162002146565b6200218c33620028e3565b620021cc576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6030805460ff191693151593909317909255602f55602a55565b6015546001600160a01b031681565b6000620012df62002205620016a8565b601a546200223890620022309060029062002229906001600160a01b031662001cb4565b9062003116565b859062003116565b9062003174565b6000806200226042620016ed601f54601e546200290190919063ffffffff16565b905060006200228b601354620016ed601d5462002238601c546013546200311690919063ffffffff16565b9050620022b7620022ad601f546200223885856200311690919063ffffffff16565b6013549062002901565b9250505090565b602f5481565b6001600160a01b039182166000908152600a6020908152604080832093909416825291909152205490565b620022fa33620028e3565b6200233a576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b602b805460ff191692151592909217909155602855565b6200235c33620028e3565b6200239c576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b8015620024f6576026546040805162757b8f60e91b815290516000926001600160a01b03169163eaf71e00916004808301926020929190829003018186803b158015620023e857600080fd5b505afa158015620023fd573d6000803e3d6000fd5b505050506040513d60208110156200241457600080fd5b50516026546040805163101c786f60e01b81526064600482015233602482015290519293506001600160a01b039091169163101c786f9160448082019260009290919082900301818387803b1580156200246d57600080fd5b505af115801562002482573d6000803e3d6000fd5b50506026546040805163043165a760e11b81526001600160a01b0386811660048301523360248301529151919092169350630862cb4e9250604480830192600092919082900301818387803b158015620024db57600080fd5b505af1158015620024f0573d6000803e3d6000fd5b50505050505b6026546040805163de320cc160e01b81526001600160a01b0385811660048301529151919092169163de320cc191602480830192600092919082900301818387803b1580156200179957600080fd5b6016546001600160a01b031681565b6200255f336200180d565b6200259a576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6001600160a01b03166000908152600160205260409020805460ff19169055565b600043603154601b540110620025e357601454620025db90600162002ff8565b90506200181f565b8180156200260857504262002606601f54601e546200290190919063ffffffff16565b115b156200261857620025db6200223f565b505060135490565b6200262b336200180d565b62002666576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b038316908117825580825260016020818152604093849020805460ff1916909217909155825191825291517f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163929181900390910190a150565b6000620012df82620031b8565b620026ec33620028e3565b6200272c576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b0382163014801590620027545750601a546001600160a01b03838116911614155b6200275e57600080fd5b6001600160a01b0382166000908152600d60205260409020805460ff19168215801591909117909155620027ff5760265460408051630a5b654b60e11b81526001600160a01b03858116600483015260006024830181905292519316926314b6ca969260448084019391929182900301818387803b158015620027e057600080fd5b505af1158015620027f5573d6000803e3d6000fd5b505050506200127a565b6026546001600160a01b03838116600081815260096020526040808220548151630a5b654b60e11b8152600481019490945260248401525192909316926314b6ca969260448084019382900301818387803b1580156200179957600080fd5b6200286933620028e3565b620028a9576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b6019546001600160a01b031681565b6001600160a01b031660009081526001602052604090205460ff1690565b600082820183811015620016a1576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b620029688383620032f5565b80156200155e576026546040805163043165a760e11b81526001600160a01b038681166004830152858116602483015291519190921691630862cb4e91604480830192600092919082900301818387803b158015620029c657600080fd5b505af1158015620029db573d6000803e3d6000fd5b50505050505050565b620029f0838362003456565b80156200155e576026546040805163101c786f60e01b8152600481018690526001600160a01b0385811660248301529151919092169163101c786f91604480830192600092919082900301818387803b158015620029c657600080fd5b602b805461ff0019166101001790556040805160028082526060808301845292602083019080368337505060035482519293506001600160a01b03169183915060009062002a9757fe5b60200260200101906001600160a01b031690816001600160a01b031681525050308160018151811062002ac657fe5b6001600160a01b0392831660209182029290920181019190915260195460405163b6f9de9560e01b815260006004820181815287861660448401524260648401819052608060248501908152885160848601528851959097169663b6f9de95968b9694958a958c95939260a49092019187810191028083838b5b8381101562002b5a57818101518382015260200162002b40565b50505050905001955050505050506000604051808303818588803b15801562002b8257600080fd5b505af19350505050801562002b95575060015b505050602b805461ff001916905550565b6000818484111562002c395760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101562002bfd57818101518382015260200162002be3565b50505050905090810190601f16801562002c2b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b602b54600090610100900460ff161562002c6a5762002c6284848462003516565b9050620016a1565b62002c74620035fb565b1562002c845762002c8462003652565b62002c8e62003a3f565b1562002c9e5762002c9e62003a9a565b62002ca862003ae6565b15801562002cce57506001600160a01b0384166000908152600e602052604090205460ff165b801562002ce85750601a546001600160a01b038481169116145b801562002cfe5750601a54600160a01b900460ff165b1562002d37576001600160a01b03841660009081526009602052604090205462002d2757600080fd5b62002d376000600a600162003089565b62002d4484848462003aee565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03871660009081526009909152919091205462002d9891849062002ba6565b6001600160a01b03851660009081526009602052604081209190915562002dbf8562003cb5565b62002dcb578262002dd8565b62002dd885858562003cd4565b6001600160a01b03851660009081526009602052604090205490915062002e00908262002901565b6001600160a01b038086166000908152600960209081526040808320949094559188168152600d909152205460ff1662002ea7576026546001600160a01b03868116600081815260096020526040808220548151630a5b654b60e11b8152600481019490945260248401525192909316926314b6ca969260448084019382900301818387803b15801562002e9357600080fd5b505af192505050801562002ea5575060015b505b6001600160a01b0384166000908152600d602052604090205460ff1662002f3b576026546001600160a01b03858116600081815260096020526040808220548151630a5b654b60e11b8152600481019490945260248401525192909316926314b6ca969260448084019382900301818387803b15801562002f2757600080fd5b505af192505050801562002f39575060015b505b602654602754604080516001624d3b8760e01b031981526004810192909252516001600160a01b039092169163ffb2c4799160248082019260009290919082900301818387803b15801562002f8f57600080fd5b505af192505050801562002fa1575060015b50836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3506001949350505050565b6000620016a183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525062002ba6565b6001600160a01b039091166000908152600e60209081526040808320805494151560ff199586168117909155600c83528184208054861682179055600b9092529091208054909216179055565b43601b5542601e5560318290558015620030b9576030805460ff19169055602b805462ff000019169055620030d8565b6030805460ff19166001179055602b805462ff00001916620100001790555b82156200155e576020805460ff19166001179055678ac7230489e800006021556000602255661f9465b8ab8e38602355600260245543602555505050565b6000826200312757506000620012df565b828202828482816200313557fe5b0414620016a15760405162461bcd60e51b8152600401808060200182810382526021815260200180620054666021913960400191505060405180910390fd5b6000620016a183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062003d94565b601a546000908190620031d4906001600160a01b031662001cb4565b600354601a54604080516370a0823160e01b81526001600160a01b039283166004820152905193945060009391909216916370a08231916024808301926020929190829003018186803b1580156200322b57600080fd5b505afa15801562003240573d6000803e3d6000fd5b505050506040513d60208110156200325757600080fd5b5051905081158062003267575080155b1562003279576000925050506200181f565b600062003287828462003116565b9050600062003297848762002901565b90506000620032a7838362003174565b90506000620032bc8662002238878b62003116565b90506000620032cc868462002ff8565b602c54909150620032e890620016ed8362002238868462003116565b9998505050505050505050565b6002546001600160a01b0316331462003355576040805162461bcd60e51b815260206004820152601d60248201527f546f6b656e73526573637565723a206e6f7420617574686f72697a6564000000604482015290519081900360640190fd5b6000826001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015620033a557600080fd5b505afa158015620033ba573d6000803e3d6000fd5b505050506040513d6020811015620033d157600080fd5b50516040805163a9059cbb60e01b81526001600160a01b0385811660048301526024820184905291519293509085169163a9059cbb916044808201926020929091908290030181600087803b1580156200342a57600080fd5b505af11580156200343f573d6000803e3d6000fd5b505050506040513d60208110156200118057600080fd5b6002546001600160a01b03163314620034b6576040805162461bcd60e51b815260206004820152601d60248201527f546f6b656e73526573637565723a206e6f7420617574686f72697a6564000000604482015290519081900360640190fd5b60008260641415620034ca575047620034df565b620034dc606462002238478662003116565b90505b6040516001600160a01b0383169082156108fc029083906000818181858888f1935050505015801562001894573d6000803e3d6000fd5b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03861660009081526009909152918220546200356991849062002ba6565b6001600160a01b0380861660009081526009602052604080822093909355908516815220546200359a908362002901565b6001600160a01b0380851660008181526009602090815260409182902094909455805186815290519193928816927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a35060019392505050565b601a546000906001600160a01b03163314801590620036225750602b54610100900460ff16155b8015620036315750602b5460ff165b8015620016f457505060285430600090815260096020526040902054101590565b602b805461ff00191661010017905560175460185460009162003675916200133e565b620036835760105462003686565b60005b90506000620036ae60026200223860135462002238866028546200311690919063ffffffff16565b90506000620036c98260285462002ff890919063ffffffff16565b6040805160028082526060808301845293945090916020830190803683370190505090503081600081518110620036fc57fe5b6001600160a01b0392831660209182029290920101526003548251911690829060019081106200372857fe5b6001600160a01b0392831660209182029290920181019190915260195460405163791ac94760e01b8152600481018681526000602483018190523060648401819052426084850181905260a060448601908152895160a487015289514799979097169763791ac947978c9795968c9690939260c49091019187820191028083838b5b83811015620037c4578181015183820152602001620037aa565b505050509050019650505050505050600060405180830381600087803b158015620037ee57600080fd5b505af192505050801562003800575060015b5060006200380f478362002ff8565b905060006200382e6200382488600262003174565b6013549062002ff8565b90506000620038466002620022388481878d62003116565b90506000620038668362002238600f54876200311690919063ffffffff16565b90506000620038868462002238601254886200311690919063ffffffff16565b9050602660009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b158015620038d957600080fd5b505af193505050508015620038ec575060015b506016546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801562003928573d6000803e3d6000fd5b50881562003a28576019546015546040805163f305d71960e01b8152306004820152602481018d905260006044820181905260648201526001600160a01b0392831660848201524260a48201529051919092169163f305d71991869160c48082019260609290919082900301818588803b158015620039a657600080fd5b505af193505050508015620039dd57506040513d6060811015620039c957600080fd5b508051602082015160409092015190919060015b620039e857620039ec565b5050505b60408051848152602081018b905281517f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506929181900390910190a15b5050602b805461ff00191690555050505050505050565b601a546000906001600160a01b0316331480159062003a665750602b54610100900460ff16155b801562003a75575060205460ff165b801562003a885750436024546025540111155b8015620016f457505060235447101590565b60235460045462003ab591906001600160a01b031662002a4d565b4360255560235460225462003aca9162002901565b6022819055602154101562003ae4576020805460ff191690555b565b601b54151590565b6001600160a01b0383166000908152600e602052604090205460ff16801562003b2f57506001600160a01b0382166000908152600e602052604090205460ff165b1562003b3b576200155e565b62003b4562003ae6565b62003b825760405162461bcd60e51b8152600401808060200182810382526021815260200180620054876021913960400191505060405180910390fd5b6029548111158062003bac57506001600160a01b0383166000908152600c602052604090205460ff165b62003bf2576040805162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015290519081900360640190fd5b6001600160a01b0382166000908152600e602052604090205460ff168062003c405750602a546001600160a01b03831660009081526009602052604090205462003c3d908362002901565b11155b62003c92576040805162461bcd60e51b815260206004820152601860248201527f4d61782057616c6c65742053697a652045786365656465640000000000000000604482015290519081900360640190fd5b62003c9f83838362003dfd565b62003caa8362003e6e565b6200155e8262003e6e565b6001600160a01b03166000908152600b602052604090205460ff161590565b601454601a54600091829162003d0b9190620022389062003d03906001600160a01b03898116911614620025bb565b869062003116565b3060009081526009602052604090205490915062003d2a908262002901565b30600081815260096020908152604091829020939093558051848152905191926001600160a01b038916927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a362003d8b838262002ff8565b95945050505050565b6000818362003de65760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831562002bfd57818101518382015260200162002be3565b50600083858162003df357fe5b0495945050505050565b62003e09838362003f42565b156200155e57600062003e1c82620031b8565b9050602d5481111562001894576040805162461bcd60e51b81526020600482015260156024820152740a0e4d2c6ca4092dae0c2c6e840e8dede40d0d2ced605b1b604482015290519081900360640190fd5b6001600160a01b0381166000908152600e602052604090205460ff168062003e99575060305460ff16155b1562003ea55762003f3f565b602f546001600160a01b0382166000908152602e6020526040902054429162003ecf919062002901565b111562003f23576040805162461bcd60e51b815260206004820152601f60248201527f436f6f6c646f776e3a20546f6f206d616e79207472616e73616374696f6e7300604482015290519081900360640190fd5b6001600160a01b0381166000908152602e602052604090204290555b50565b602b5460009062010000900460ff16801562003f7757506001600160a01b0383166000908152600c602052604090205460ff16155b801562003f915750601a546001600160a01b038381169116145b8015620016a15750601a546000906200134c906001600160a01b031662001cb4565b6114a48062003fc28339019056fe60806040526ec097ce7bc90715b34b9f1000000000600d5561012c600e55670de0b6b3a7640000600f5534801561003557600080fd5b506040516114a43803806114a48339818101604052606081101561005857600080fd5b5080516020820151604090920151600080546001600160a01b031916331790559091906001600160a01b0383166100a35773f491e7b69e4244ad4002bc14e878a34207e38c296100a5565b825b600480546001600160a01b0319166001600160a01b0392831617808255604080516315ab88c960e31b81529051919093169263ad5c46489281810192602092909190829003018186803b1580156100fb57600080fd5b505afa15801561010f573d6000803e3d6000fd5b505050506040513d602081101561012557600080fd5b5051600380546001600160a01b039283166001600160a01b03199182161790915560018054821633178082558316600090815260116020526040808220805460ff1990811685179091559585168252902080549094161790925560028054939091169290911691909117905550611303806101a16000396000f3fe60806040526004361061011f5760003560e01c8063b9181611116100a0578063e2d2e21911610064578063e2d2e219146103f3578063eaf71e0014610408578063f0fc6bca14610439578063ffb2c4791461044e578063ffd49c84146104785761011f565b8063b9181611146102ed578063c7e772ed14610334578063ce7c2ac214610367578063d0e30db0146103b8578063de320cc1146103c05761011f565b80632d48e896116100e75780632d48e8961461022d5780633a98ef391461025d5780634fab0ae81461027257806366e28fcd146102875780638b8dfa39146102ba5761011f565b80630862cb4e14610124578063101c786f1461016157806311ce023d1461019a57806314b6ca96146101c157806328fd3198146101fa575b600080fd5b34801561013057600080fd5b5061015f6004803603604081101561014757600080fd5b506001600160a01b038135811691602001351661048d565b005b34801561016d57600080fd5b5061015f6004803603604081101561018457600080fd5b50803590602001356001600160a01b03166104ff565b3480156101a657600080fd5b506101af6105c4565b60408051918252519081900360200190f35b3480156101cd57600080fd5b5061015f600480360360408110156101e457600080fd5b506001600160a01b0381351690602001356105ca565b34801561020657600080fd5b506101af6004803603602081101561021d57600080fd5b50356001600160a01b03166106f4565b34801561023957600080fd5b5061015f6004803603604081101561025057600080fd5b5080359060200135610780565b34801561026957600080fd5b506101af6107a7565b34801561027e57600080fd5b506101af6107ad565b34801561029357600080fd5b506101af600480360360208110156102aa57600080fd5b50356001600160a01b03166107b3565b3480156102c657600080fd5b506101af600480360360208110156102dd57600080fd5b50356001600160a01b03166107c5565b3480156102f957600080fd5b506103206004803603602081101561031057600080fd5b50356001600160a01b03166107d7565b604080519115158252519081900360200190f35b34801561034057600080fd5b5061015f6004803603602081101561035757600080fd5b50356001600160a01b03166107ec565b34801561037357600080fd5b5061039a6004803603602081101561038a57600080fd5b50356001600160a01b03166107f8565b60408051938452602084019290925282820152519081900360600190f35b61015f610819565b3480156103cc57600080fd5b5061015f600480360360208110156103e357600080fd5b50356001600160a01b0316610aec565b3480156103ff57600080fd5b506101af610b2f565b34801561041457600080fd5b5061041d610b35565b604080516001600160a01b039092168252519081900360200190f35b34801561044557600080fd5b5061015f610b44565b34801561045a57600080fd5b5061015f6004803603602081101561047157600080fd5b5035610b4d565b34801561048457600080fd5b506101af610c1a565b6000546001600160a01b031633146104ec576040805162461bcd60e51b815260206004820152601d60248201527f546f6b656e73526573637565723a206e6f7420617574686f72697a6564000000604482015290519081900360640190fd5b6000600c556104fb8282610c20565b5050565b6000546001600160a01b0316331461055e576040805162461bcd60e51b815260206004820152601d60248201527f546f6b656e73526573637565723a206e6f7420617574686f72697a6564000000604482015290519081900360640190fd5b60008260641415610570575047610588565b610585606461057f4786610d7a565b90610ddc565b90505b6040516001600160a01b0383169082156108fc029083906000818181858888f193505050501580156105be573d6000803e3d6000fd5b50505050565b600d5481565b3360009081526011602052604090205460ff166105e657600080fd5b6001600160a01b0382166000908152600860205260409020541561060d5761060d82610e1e565b60008111801561063357506001600160a01b038216600090815260086020526040902054155b156106465761064182610f6d565b610679565b8015801561066b57506001600160a01b03821660009081526008602052604090205415155b156106795761067982610fce565b6001600160a01b0382166000908152600860205260409020546009546106aa9183916106a4916110bb565b906110fd565b6009556001600160a01b03821660009081526008602052604090208190556106d181611157565b6001600160a01b0390921660009081526008602052604090206001019190915550565b6001600160a01b0381166000908152600860205260408120546107195750600061077b565b6001600160a01b03821660009081526008602052604081205461073b90611157565b6001600160a01b03841660009081526008602052604090206001015490915080821161076c5760009250505061077b565b61077682826110bb565b925050505b919050565b3360009081526011602052604090205460ff1661079c57600080fd5b600e91909155600f55565b60095481565b600f5481565b600a6020526000908152604090205481565b600b6020526000908152604090205481565b60116020526000908152604090205460ff1681565b6107f581610e1e565b50565b60086020526000908152604090208054600182015460029092015490919083565b3360009081526011602052604090205460ff1661083557600080fd5b6002546001600160a01b031661084a57610aea565b600254604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561089557600080fd5b505afa1580156108a9573d6000803e3d6000fd5b505050506040513d60208110156108bf57600080fd5b5051604080516002808252606080830184529394509091602083019080368337505060035482519293506001600160a01b0316918391506000906108ff57fe5b6001600160a01b03928316602091820292909201015260025482519116908290600190811061092a57fe5b6001600160a01b039283166020918202929092018101919091526004805460405163b6f9de9560e01b8152600092810183815230604483018190524260648401819052608060248501908152895160848601528951959098169763b6f9de95973497968b969495939460a4019187810191028083838b5b838110156109b95781810151838201526020016109a1565b50505050905001955050505050506000604051808303818588803b1580156109e057600080fd5b505af11580156109f4573d6000803e3d6000fd5b5050600254604080516370a0823160e01b8152306004820152905160009550610a7f94508793506001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015610a4d57600080fd5b505afa158015610a61573d6000803e3d6000fd5b505050506040513d6020811015610a7757600080fd5b5051906110bb565b6002546001600160a01b03166000908152600a6020526040902054909150610aa790826110fd565b6002546001600160a01b03166000908152600a6020526040902055600954600d54610ae391610ada9161057f9085610d7a565b600c54906110fd565b600c555050505b565b3360009081526011602052604090205460ff16610b0857600080fd5b600280546001600160a01b0319166001600160a01b03929092169190911790556000600c55565b600c5481565b6002546001600160a01b031681565b610aea33610e1e565b3360009081526011602052604090205460ff16610b6957600080fd5b60055480610b7757506107f5565b6000805a905060005b8483108015610b8e57508381105b15610c13578360105410610ba25760006010555b6000600560105481548110610bb357fe5b6000918252602090912001546001600160a01b03169050610bd381611174565b15610be157610be181610e1e565b610bf6610bef5a85906110bb565b85906110fd565b93505a601080546001908101909155909350919091019050610b80565b5050505050565b600e5481565b6000546001600160a01b03163314610c7f576040805162461bcd60e51b815260206004820152601d60248201527f546f6b656e73526573637565723a206e6f7420617574686f72697a6564000000604482015290519081900360640190fd5b6000826001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610cce57600080fd5b505afa158015610ce2573d6000803e3d6000fd5b505050506040513d6020811015610cf857600080fd5b50516040805163a9059cbb60e01b81526001600160a01b0385811660048301526024820184905291519293509085169163a9059cbb916044808201926020929091908290030181600087803b158015610d5057600080fd5b505af1158015610d64573d6000803e3d6000fd5b505050506040513d6020811015610c1357600080fd5b600082610d8957506000610dd6565b82820282848281610d9657fe5b0414610dd35760405162461bcd60e51b81526004018080602001828103825260218152602001806112ad6021913960400191505060405180910390fd5b90505b92915050565b6000610dd383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506111b0565b6001600160a01b038116600090815260086020526040902054610e40576107f5565b6000610e4b826106f4565b905080156104fb576002546001600160a01b03166000908152600b6020526040902054610e7890826110fd565b600280546001600160a01b039081166000908152600b60209081526040808320959095559254845163a9059cbb60e01b8152878416600482015260248101879052945192169363a9059cbb93604480830194919391928390030190829087803b158015610ee457600080fd5b505af1158015610ef8573d6000803e3d6000fd5b505050506040513d6020811015610f0e57600080fd5b50506001600160a01b03821660009081526007602090815260408083204290556008909152902060020154610f4390826110fd565b6001600160a01b03831660009081526008602052604090206002810191909155546106d190611157565b600580546001600160a01b039092166000818152600660205260408120849055600184018355919091527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db090910180546001600160a01b0319169091179055565b600580546000198101908110610fe057fe5b60009182526020808320909101546001600160a01b038481168452600690925260409092205460058054929093169291811061101857fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b03948516179055918316815260069182905260408120546005805491939291600019810190811061106657fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902055600580548061109657fe5b600082815260209020810160001990810180546001600160a01b031916905501905550565b6000610dd383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611252565b600082820183811015610dd3576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000610dd6600d5461057f600c5485610d7a90919063ffffffff16565b600e546001600160a01b0382166000908152600760205260408120549091429101108015610dd65750600f546111a9836106f4565b1192915050565b6000818361123c5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156112015781810151838201526020016111e9565b50505050905090810190601f16801561122e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161124857fe5b0495945050505050565b600081848411156112a45760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156112015781810151838201526020016111e9565b50505090039056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a264697066735822122034cc543f8948cf723e9f38109643a99d366e8227dbdb1245b7f2de56e1b4b8ec64736f6c634300060c0033536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7754686520636f6e747261637420686173206e6f74206c61756e6368656420796574a264697066735822122095eee4443903ae8aa70cb7dfd7634f348768e7efe23c0efc8a6714d3ac96710264736f6c634300060c0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000f491e7b69e4244ad4002bc14e878a34207e38c29000000000000000000000000841fad6eae12c286d1fd18d1d525dffa75c7effe000000000000000000000000000000000000000000000000000000000000000b426162792046616e746f6d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000074261627946544d00000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : _token_name (string): Baby Fantom
Arg [1] : _token_symbol (string): BabyFTM
Arg [2] : _router_address (address): 0xF491e7B69E4244ad4002BC14e878a34207E38c29
Arg [3] : _rewards_token (address): 0x841FAD6EAe12c286d1Fd18d1d525DFfA75C7EFFE
-----Encoded View---------------
8 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000c0
Arg [2] : 000000000000000000000000f491e7b69e4244ad4002bc14e878a34207e38c29
Arg [3] : 000000000000000000000000841fad6eae12c286d1fd18d1d525dffa75c7effe
Arg [4] : 000000000000000000000000000000000000000000000000000000000000000b
Arg [5] : 426162792046616e746f6d000000000000000000000000000000000000000000
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000007
Arg [7] : 4261627946544d00000000000000000000000000000000000000000000000000
Deployed Bytecode Sourcemap
13204:22639:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14892:50;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;27259:359;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;27259:359:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;31176:498;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;31176:498:0;;;;;;;;;;;;;;;;;;;;;;:::i;17416:80::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34959:144;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;34959:144:0;;;;;;;;;;:::i;17838:216::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;17838:216:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;34595:150;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;34595:150:0;;;;;;-1:-1:-1;;;;;34595:150:0;;:::i;32933:::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;32933:150:0;;;;;;;:::i;27976:310::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;27976:310:0;;;;;;;;;;;;;;:::i;28882:75::-;;;;;;;;;;;;;:::i;17144:88::-;;;;;;;;;;;;;:::i;15433:35::-;;;;;;;;;;;;;:::i;32082:183::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;32082:183:0;;;;;;;:::i;26100:342::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26100:342:0;;;;;;;;;;;;;-1:-1:-1;;;;;26100:342:0;;:::i;27626:::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;27626:342:0;;;;;;;;;;;;:::i;18226:364::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;18226:364:0;;;;;;;;;;;;;;;;;:::i;32608:142::-;;;;;;;;;;;;;:::i;32273:183::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;32273:183:0;;;;;;;:::i;30612:141::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;30612:141:0;;;;;;;;;;:::i;3366:103::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3366:103:0;-1:-1:-1;;;;;3366:103:0;;:::i;17238:82::-;;;;;;;;;;;;;:::i;14590:38::-;;;;;;;;;;;;;:::i;33241:83::-;;;;;;;;;;;;;:::i;28726:148::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28726:148:0;;;;;;;;;:::i;29834:145::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;29834:145:0;;:::i;33544:650::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;33544:650:0;;;;;;;;;;:::i;30348:120::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;30348:120:0;;;;;;;;;;:::i;15081:30::-;;;;;;;;;;;;;:::i;17586:105::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17586:105:0;-1:-1:-1;;;;;17586:105:0;;:::i;14957:48::-;;;;;;;;;;;;;:::i;17502:78::-;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;17502:78:0;;;;;;;;;;;;;;15018:48;;;;;;;;;;;;;:::i;17326:84::-;;;;;;;;;;;;;:::i;32464:136::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;32464:136:0;;:::i;35111:192::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;35111:192:0;;;;;;;;;;;;;;;;;;;:::i;31682:228::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;31682:228:0;;;;;;;;;;:::i;14301:19::-;;;;;;;;;;;;;:::i;18062:156::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;18062:156:0;;;;;;;;:::i;26450:105::-;;;;;;;;;;;;;:::i;3039:94::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3039:94:0;-1:-1:-1;;;;;3039:94:0;;:::i;34753:198::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;34753:198:0;;;-1:-1:-1;;;;;34753:198:0;;;;;;;;;;;;:::i;14364:25::-;;;;;;;;;;;;;:::i;14807:38::-;;;;;;;;;;;;;:::i;28590:128::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28590:128:0;;;;:::i;33365:171::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;33365:171:0;-1:-1:-1;;;;;33365:171:0;;:::i;30761:206::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;30761:206:0;;-1:-1:-1;30761:206:0;-1:-1:-1;30761:206:0;:::i;28294:288::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28294:288:0;;;;;;;;;;;;;;:::i;14099:36::-;;;;;;;;;;;;;:::i;32758:167::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;32758:167:0;;:::i;23149:391::-;;;;;;;;;;;;;:::i;15388:38::-;;;;;;;;;;;;;:::i;17697:133::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;17697:133:0;;;;;;;;;;:::i;31918:156::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;31918:156:0;;;;;;;;;:::i;34202:385::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;34202:385:0;;;;;;;;;;:::i;14142:35::-;;;;;;;;;;;;;:::i;3209:97::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3209:97:0;-1:-1:-1;;;;;3209:97:0;;:::i;22770:371::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22770:371:0;;;;:::i;3766:173::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3766:173:0;-1:-1:-1;;;;;3766:173:0;;:::i;21415:127::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21415:127:0;;:::i;29987:353::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;29987:353:0;;;;;;;;;;:::i;30476:128::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;30476:128:0;;;;;;;;;;:::i;14270:24::-;;;;;;;;;;;;;:::i;3540:107::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3540:107:0;-1:-1:-1;;;;;3540:107:0;;:::i;14892:50::-;;;;:::o;27259:359::-;2924:24;2937:10;2924:12;:24::i;:::-;2916:48;;;;;-1:-1:-1;;;2916:48:0;;;;;;;;;;;;-1:-1:-1;;;2916:48:0;;;;;;;;;;;;;;;27385:18:::1;:29:::0;;-1:-1:-1;;27385:29:0::1;::::0;::::1;;::::0;;;::::1;::::0;;;27425:14:::1;:21:::0;;;;-1:-1:-1;27457:22:0::1;:26:::0;27494:17:::1;:27:::0;27532:22:::1;:32:::0;27598:12:::1;27575:20;:35:::0;27259:359::o;31176:498::-;2924:24;2937:10;2924:12;:24::i;:::-;2916:48;;;;;-1:-1:-1;;;2916:48:0;;;;;;;;;;;;-1:-1:-1;;;2916:48:0;;;;;;;;;;;;;;;31340:12:::1;:28:::0;;;31379:10:::1;:24:::0;;;31414:13:::1;:30:::0;;;31455:12:::1;:28:::0;;;31505:69:::1;31470:13:::0;31505:50:::1;31430:14:::0;31505:50;31355:13;31392:11;31505:17:::1;:30::i;:::-;:34:::0;::::1;:50::i;:69::-;31494:8;:80:::0;31585:14:::1;:32:::0;;;31664:1:::1;31602:15:::0;31647:18:::1;31636:8;;:29;31628:38;;;::::0;::::1;;31176:498:::0;;;;;:::o;17416:80::-;17488:5;17481:12;;;;;;;;-1:-1:-1;;17481:12:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17464:13;;17481:12;;17488:5;;17481:12;;17488:5;17481:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17416:80;:::o;34959:144::-;2924:24;2937:10;2924:12;:24::i;:::-;2916:48;;;;;-1:-1:-1;;;2916:48:0;;;;;;;;;;;;-1:-1:-1;;;2916:48:0;;;;;;;;;;;;;;;35055:40:::1;35072:5;35079:8;35089:5;35055:16;:40::i;:::-;34959:144:::0;;:::o;17838:216::-;17942:10;17913:4;17930:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;17930:32:0;;;;;;;;;;;:41;;;17987:37;;;;;;;17913:4;;17930:32;;17942:10;;17987:37;;;;;;;;-1:-1:-1;18042:4:0;17838:216;;;;;:::o;34595:150::-;2924:24;2937:10;2924:12;:24::i;:::-;2916:48;;;;;-1:-1:-1;;;2916:48:0;;;;;;;;;;;;-1:-1:-1;;;2916:48:0;;;;;;;;;;;;;;;34694:43:::1;34709:10;34721:8;34731:5;34694:14;:43::i;32933:150::-:0;33013:4;33069:6;33037:29;33057:8;33037:19;:29::i;:::-;:38;;32933:150;-1:-1:-1;;;32933:150:0:o;27976:310::-;2924:24;2937:10;2924:12;:24::i;:::-;2916:48;;;;;-1:-1:-1;;;2916:48:0;;;;;;;;;;;;-1:-1:-1;;;2916:48:0;;;;;;;;;;;;;;;28116:10:::1;28102;:24;;28094:57;;;::::0;;-1:-1:-1;;;28094:57:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;28094:57:0;;;;;;;;;;;;;::::1;;28162:23;:34:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;28162:34:0;;::::1;::::0;;;::::1;::::0;;;28207:20:::1;:33:::0;28251:14:::1;:27:::0;27976:310::o;28882:75::-;2924:24;2937:10;2924:12;:24::i;:::-;2916:48;;;;;-1:-1:-1;;;2916:48:0;;;;;;;;;;;;-1:-1:-1;;;2916:48:0;;;;;;;;;;;;;;;28948:1:::1;28935:10;:14:::0;28882:75::o;17144:88::-;17217:12;;17144:88;:::o;15433:35::-;;;;;;:::o;32082:183::-;2924:24;2937:10;2924:12;:24::i;:::-;2916:48;;;;;-1:-1:-1;;;2916:48:0;;;;;;;;;;;;-1:-1:-1;;;2916:48:0;;;;;;;;;;;;;;;32180:15:::1;:25:::0;;;;32216:26:::1;:41:::0;32082:183::o;26100:342::-;2924:24;2937:10;2924:12;:24::i;:::-;2916:48;;;;;-1:-1:-1;;;2916:48:0;;;;;;;;;;;;-1:-1:-1;;;2916:48:0;;;;;;;;;;;;;;;26226:27:::1;26236:6;26244:8;26226:9;:27::i;:::-;26268:24;26264:171;;;26340:15;26309:28;:46:::0;26399:23:::1;::::0;26375:48:::1;::::0;;;;;;::::1;::::0;;;;::::1;::::0;;::::1;26264:171;26100:342:::0;;;:::o;27626:::-;2924:24;2937:10;2924:12;:24::i;:::-;2916:48;;;;;-1:-1:-1;;;2916:48:0;;;;;;;;;;;;-1:-1:-1;;;2916:48:0;;;;;;;;;;;;;;;27786:1:::1;27771:11;27759:9;:23;;;;;;:28;;:55;;;;;27803:11;27791:9;:23;27759:55;27751:64;;;::::0;::::1;;27826:26;:38:::0;;;;27875:28:::1;:42:::0;27928:23:::1;:32:::0;27626:342::o;18226:364::-;-1:-1:-1;;;;;18346:19:0;;18326:4;18346:19;;;:11;:19;;;;;;;;18366:10;18346:31;;;;;;;;-1:-1:-1;;18346:46:0;18343:180;;18442:69;;;;;;;;;;;-1:-1:-1;;;18442:69:0;;;;;;;;-1:-1:-1;;;;;18442:19:0;;-1:-1:-1;18442:19:0;;;:11;:19;;;;;18462:10;18442:31;;;;;;;;;;:69;;18478:6;;18442:35;:69::i;:::-;-1:-1:-1;;;;;18408:19:0;;;;;;:11;:19;;;;;;;;18428:10;18408:31;;;;;;;:103;18343:180;18542:40;18556:6;18564:9;18575:6;18542:13;:40::i;:::-;18535:47;;18226:364;;;;;;:::o;32608:142::-;32736:4;;32661:7;;32688:54;;32726:15;;-1:-1:-1;;;;;32736:4:0;32726:9;:15::i;:::-;32715:4;;32688:33;;32705:15;;-1:-1:-1;;;;;32715:4:0;32705:9;:15::i;:::-;32688:12;;;:16;:33::i;:::-;:37;;:54::i;:::-;32681:61;;32608:142;:::o;32273:183::-;2924:24;2937:10;2924:12;:24::i;:::-;2916:48;;;;;-1:-1:-1;;;2916:48:0;;;;;;;;;;;;-1:-1:-1;;;2916:48:0;;;;;;;;;;;;;;;32383:11:::1;::::0;:65:::1;::::0;;-1:-1:-1;;;32383:65:0;;::::1;::::0;::::1;::::0;;;;;;;;;;;-1:-1:-1;;;;;32383:11:0;;::::1;::::0;:35:::1;::::0;:65;;;;;:11:::1;::::0;:65;;;;;;;;:11;;:65;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;32273:183:::0;;:::o;30612:141::-;2924:24;2937:10;2924:12;:24::i;:::-;2916:48;;;;;-1:-1:-1;;;2916:48:0;;;;;;;;;;;;-1:-1:-1;;;2916:48:0;;;;;;;;;;;;;;;30705:40:::1;30723:14;30739:5;30705:17;:40::i;3366:103::-:0;3421:4;3456:5;-1:-1:-1;;;;;3445:16:0;;;3456:5;;3445:16;3366:103;;;;:::o;17238:82::-;13519:2;17238:82;:::o;14590:38::-;;;;;;:::o;33241:83::-;33278:11;;:38;;;-1:-1:-1;;;33278:38:0;;33305:10;33278:38;;;;;;-1:-1:-1;;;;;33278:11:0;;;;:26;;:38;;;;;:11;;:38;;;;;;;;:11;;:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33241:83::o;28726:148::-;2924:24;2937:10;2924:12;:24::i;:::-;2916:48;;;;;-1:-1:-1;;;2916:48:0;;;;;;;;;;;;-1:-1:-1;;;2916:48:0;;;;;;;;;;;;;;;28819:47:::1;28827:14;28843:15;28860:5;28819:7;:47::i;29834:145::-:0;2924:24;2937:10;2924:12;:24::i;:::-;2916:48;;;;;-1:-1:-1;;;2916:48:0;;;;;;;;;;;;-1:-1:-1;;;2916:48:0;;;;;;;;;;;;;;;29934:4:::1;29919:12;;:19;;;;;;29909:6;:29;;29901:38;;;::::0;::::1;;29950:12;:21:::0;29834:145::o;33544:650::-;2924:24;2937:10;2924:12;:24::i;:::-;2916:48;;;;;-1:-1:-1;;;2916:48:0;;;;;;;;;;;;-1:-1:-1;;;2916:48:0;;;;;;;;;;;;;;;33656:11:::1;33652:237;;;33716:11;::::0;:27:::1;::::0;;-1:-1:-1;;;33716:27:0;;;;33684:29:::1;::::0;-1:-1:-1;;;;;33716:11:0::1;::::0;:25:::1;::::0;:27:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;:11;:27;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;33716:27:0;33758:11:::1;::::0;:42:::1;::::0;;-1:-1:-1;;;33758:42:0;;33784:3:::1;33758:42;::::0;::::1;::::0;33789:10:::1;33758:42:::0;;;;;;33716:27;;-1:-1:-1;;;;;;33758:11:0;;::::1;::::0;:25:::1;::::0;:42;;;;;:11:::1;::::0;:42;;;;;;;;:11;;:42;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;33815:11:0::1;::::0;:62:::1;::::0;;-1:-1:-1;;;33815:62:0;;-1:-1:-1;;;;;33815:62:0;;::::1;;::::0;::::1;::::0;33866:10:::1;33815:62:::0;;;;;;:11;;;::::1;::::0;-1:-1:-1;33815:27:0::1;::::0;-1:-1:-1;33815:62:0;;;;;:11:::1;::::0;:62;;;;;;;:11;;:62;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;33652:237;;-1:-1:-1::0;;;;;33905:28:0;::::1;33901:286;;33996:6;::::0;33964:96:::1;::::0;-1:-1:-1;;;;;33996:6:0;;::::1;::::0;34005:42:::1;::::0;34049:10:::1;::::0;33964:96:::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;;;;;33964:96:0;;::::1;::::0;;;;::::1;;::::0;::::1;::::0;;;::::1;::::0;;;;;;;;;;;;;;;;-1:-1:-1;33964:96:0::1;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;33950:11:0::1;:110:::0;;-1:-1:-1;;;;;;33950:110:0::1;-1:-1:-1::0;;;;;33950:110:0;;;::::1;::::0;;;::::1;::::0;;33901:286:::1;;;34139:6;::::0;34107:68:::1;::::0;-1:-1:-1;;;;;34139:6:0;;::::1;::::0;34148:14;;34164:10:::1;::::0;34107:68:::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;;;;;34107:68:0;;::::1;::::0;;;;::::1;;::::0;::::1;::::0;;;::::1;::::0;;;;;;;;;;;;;;;;-1:-1:-1;34107:68:0::1;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;34093:11:0::1;:82:::0;;-1:-1:-1;;;;;;34093:82:0::1;-1:-1:-1::0;;;;;34093:82:0;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;33544:650:0:o;30348:120::-;2924:24;2937:10;2924:12;:24::i;:::-;2916:48;;;;;-1:-1:-1;;;2916:48:0;;;;;;;;;;;;-1:-1:-1;;;2916:48:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;30432:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;30432:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;30348:120::o;15081:30::-;;;;;;:::o;17586:105::-;-1:-1:-1;;;;;17670:18:0;17652:7;17670:18;;;:9;:18;;;;;;;17586:105::o;14957:48::-;;;;:::o;17502:78::-;17554:7;17572:5;-1:-1:-1;;;;;17572:5:0;17502:78;:::o;15018:48::-;;;;:::o;17326:84::-;17400:7;17393:14;;;;;;;;-1:-1:-1;;17393:14:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17376:13;;17393:14;;17400:7;;17393:14;;17400:7;17393:14;;;;;;;;;;;;;;;;;;;;;;;;32464:136;2924:24;2937:10;2924:12;:24::i;:::-;2916:48;;;;;-1:-1:-1;;;2916:48:0;;;;;;;;;;;;-1:-1:-1;;;2916:48:0;;;;;;;;;;;;;;;32554:6:::1;32548:3;:12;32540:21;;;::::0;::::1;;32572:14;:20:::0;32464:136::o;35111:192::-;2924:24;2937:10;2924:12;:24::i;:::-;2916:48;;;;;-1:-1:-1;;;2916:48:0;;;;;;;;;;;;-1:-1:-1;;;2916:48:0;;;;;;;;;;;;;;;35241:54:::1;35258:5;35265:8;35275:19;35241:16;:54::i;31682:228::-:0;2924:24;2937:10;2924:12;:24::i;:::-;2916:48;;;;;-1:-1:-1;;;2916:48:0;;;;;;;;;;;;-1:-1:-1;;;2916:48:0;;;;;;;;;;;;;;;31801:21:::1;:46:::0;;-1:-1:-1;;;;;31801:46:0;;::::1;-1:-1:-1::0;;;;;;31801:46:0;;::::1;;::::0;;;31858:20:::1;:44:::0;;;;;::::1;::::0;::::1;;::::0;;31682:228::o;14301:19::-;;;-1:-1:-1;;;;;14301:19:0;;:::o;18062:156::-;18142:4;18166:44;18180:10;18192:9;18203:6;18166:13;:44::i;26450:105::-;2924:24;2937:10;2924:12;:24::i;:::-;2916:48;;;;;-1:-1:-1;;;2916:48:0;;;;;;;;;;;;-1:-1:-1;;;2916:48:0;;;;;;;;;;;;;;;26546:1:::1;26515:28;:32:::0;26450:105::o;3039:94::-;2755:19;2763:10;2755:7;:19::i;:::-;2747:38;;;;;-1:-1:-1;;;2747:38:0;;;;;;;;;;;;-1:-1:-1;;;2747:38:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;3099:19:0::1;;::::0;;;3121:4:::1;3099:19;::::0;;;;;;;:26;;-1:-1:-1;;3099:26:0::1;::::0;;::::1;::::0;;3039:94::o;34753:198::-;2924:24;2937:10;2924:12;:24::i;:::-;2916:48;;;;;-1:-1:-1;;;2916:48:0;;;;;;;;;;;;-1:-1:-1;;;2916:48:0;;;;;;;;;;;;;;;34886:57:::1;34901:10;34913:8;34923:19;34886:14;:57::i;14364:25::-:0;;;;:::o;14807:38::-;;;-1:-1:-1;;;;;14807:38:0;;:::o;28590:128::-;2924:24;2937:10;2924:12;:24::i;:::-;2916:48;;;;;-1:-1:-1;;;2916:48:0;;;;;;;;;;;;-1:-1:-1;;;2916:48:0;;;;;;;;;;;;;;;28674:16:::1;:36:::0;;;::::1;;-1:-1:-1::0;;;28674:36:0::1;-1:-1:-1::0;;;;28674:36:0;;::::1;::::0;;;::::1;::::0;;28590:128::o;33365:171::-;2924:24;2937:10;2924:12;:24::i;:::-;2916:48;;;;;-1:-1:-1;;;2916:48:0;;;;;;;;;;;;-1:-1:-1;;;2916:48:0;;;;;;;;;;;;;;;33448:6:::1;::::0;-1:-1:-1;;;;;33440:26:0;;::::1;33448:6:::0;::::1;33440:26;;33432:57;;;::::0;;-1:-1:-1;;;33432:57:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;33432:57:0;;;;;;;;;;;;;::::1;;33500:6;:28:::0;;-1:-1:-1;;;;;;33500:28:0::1;-1:-1:-1::0;;;;;33500:28:0;;;::::1;::::0;;;::::1;::::0;;33365:171::o;30761:206::-;2924:24;2937:10;2924:12;:24::i;:::-;2916:48;;;;;-1:-1:-1;;;2916:48:0;;;;;;;;;;;;-1:-1:-1;;;2916:48:0;;;;;;;;;;;;;;;30854:9:::1;30850:110;30869:20:::0;;::::1;30850:110;;;30911:37;30929:9;;30939:1;30929:12;;;;;;;;;;;;;-1:-1:-1::0;;;;;30929:12:0::1;30943:4;30911:17;:37::i;:::-;30891:3;;30850:110;;28294:288:::0;2924:24;2937:10;2924:12;:24::i;:::-;2916:48;;;;;-1:-1:-1;;;2916:48:0;;;;;;;;;;;;-1:-1:-1;;;2916:48:0;;;;;;;;;;;;;;;28462:16:::1;:36:::0;;-1:-1:-1;;28462:36:0::1;::::0;::::1;;::::0;;;::::1;::::0;;;28509:10:::1;:24:::0;28544:13:::1;:30:::0;28294:288::o;14099:36::-;;;-1:-1:-1;;;;;14099:36:0;;:::o;32758:167::-;32826:7;32853:64;32894:22;:20;:22::i;:::-;32876:4;;32853:36;;32866:22;;32886:1;;32866:15;;-1:-1:-1;;;;;32876:4:0;32866:9;:15::i;:::-;:19;;:22::i;:::-;32853:8;;:12;:36::i;:::-;:40;;:64::i;23149:391::-;23198:7;23218:21;23242:78;23304:15;23242:57;23275:23;;23242:28;;:32;;:57;;;;:::i;:78::-;23218:102;;23331:19;23353:88;23432:8;;23353:74;23398:28;;23353:40;23366:26;;23353:8;;:12;;:40;;;;:::i;:88::-;23331:110;;23459:73;23472:59;23507:23;;23472:30;23488:13;23472:11;:15;;:30;;;;:::i;:59::-;23459:8;;;:12;:73::i;:::-;23452:80;;;;23149:391;:::o;15388:38::-;;;;:::o;17697:133::-;-1:-1:-1;;;;;17799:19:0;;;17781:7;17799:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;17697:133::o;31918:156::-;2924:24;2937:10;2924:12;:24::i;:::-;2916:48;;;;;-1:-1:-1;;;2916:48:0;;;;;;;;;;;;-1:-1:-1;;;2916:48:0;;;;;;;;;;;;;;;32010:11:::1;:22:::0;;-1:-1:-1;;32010:22:0::1;::::0;::::1;;::::0;;;::::1;::::0;;;32043:13:::1;:23:::0;31918:156::o;34202:385::-;2924:24;2937:10;2924:12;:24::i;:::-;2916:48;;;;;-1:-1:-1;;;2916:48:0;;;;;;;;;;;;-1:-1:-1;;;2916:48:0;;;;;;;;;;;;;;;34300:11:::1;34296:237;;;34360:11;::::0;:27:::1;::::0;;-1:-1:-1;;;34360:27:0;;;;34328:29:::1;::::0;-1:-1:-1;;;;;34360:11:0::1;::::0;:25:::1;::::0;:27:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;:11;:27;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;34360:27:0;34402:11:::1;::::0;:42:::1;::::0;;-1:-1:-1;;;34402:42:0;;34428:3:::1;34402:42;::::0;::::1;::::0;34433:10:::1;34402:42:::0;;;;;;34360:27;;-1:-1:-1;;;;;;34402:11:0;;::::1;::::0;:25:::1;::::0;:42;;;;;:11:::1;::::0;:42;;;;;;;;:11;;:42;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;34459:11:0::1;::::0;:62:::1;::::0;;-1:-1:-1;;;34459:62:0;;-1:-1:-1;;;;;34459:62:0;;::::1;;::::0;::::1;::::0;34510:10:::1;34459:62:::0;;;;;;:11;;;::::1;::::0;-1:-1:-1;34459:27:0::1;::::0;-1:-1:-1;34459:62:0;;;;;:11:::1;::::0;:62;;;;;;;:11;;:62;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;34296:237;;34545:11;::::0;:34:::1;::::0;;-1:-1:-1;;;34545:34:0;;-1:-1:-1;;;;;34545:34:0;;::::1;;::::0;::::1;::::0;;;:11;;;::::1;::::0;:27:::1;::::0;:34;;;;;:11:::1;::::0;:34;;;;;;;:11;;:34;::::1;;::::0;::::1;;;;::::0;::::1;14142:35:::0;;;-1:-1:-1;;;;;14142:35:0;;:::o;3209:97::-;2755:19;2763:10;2755:7;:19::i;:::-;2747:38;;;;;-1:-1:-1;;;2747:38:0;;;;;;;;;;;;-1:-1:-1;;;2747:38:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;3271:19:0::1;3293:5;3271:19:::0;;;:14:::1;:19;::::0;;;;:27;;-1:-1:-1;;3271:27:0::1;::::0;;3209:97::o;22770:371::-;22826:7;22881:12;22863:14;;22850:10;;:27;:43;22846:104;;22917:14;;:21;;22936:1;22917:18;:21::i;:::-;22910:28;;;;22846:104;22966:7;:86;;;;;23037:15;22977:57;23010:23;;22977:28;;:32;;:57;;;;:::i;:::-;:75;22966:86;22962:144;;;23076:18;:16;:18::i;22962:144::-;-1:-1:-1;;23125:8:0;;;22770:371::o;3766:173::-;2755:19;2763:10;2755:7;:19::i;:::-;2747:38;;;;;-1:-1:-1;;;2747:38:0;;;;;;;;;;;;-1:-1:-1;;;2747:38:0;;;;;;;;;;;;;;;3842:5:::1;:11:::0;;-1:-1:-1;;;;;;3842:11:0::1;-1:-1:-1::0;;;;;3842:11:0;::::1;::::0;;::::1;::::0;;3864:19;;;-1:-1:-1;3864:19:0::1;::::0;;;;;;;;:26;;-1:-1:-1;;3864:26:0::1;::::0;;::::1;::::0;;;3906:25;;;;;;;::::1;::::0;;;;;;;;;::::1;3766:173:::0;:::o;21415:127::-;21480:7;21507:27;21523:10;21507:15;:27::i;29987:353::-;2924:24;2937:10;2924:12;:24::i;:::-;2916:48;;;;;-1:-1:-1;;;2916:48:0;;;;;;;;;;;;-1:-1:-1;;;2916:48:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;30084:23:0;::::1;30102:4;30084:23;::::0;::::1;::::0;:41:::1;;-1:-1:-1::0;30121:4:0::1;::::0;-1:-1:-1;;;;;30111:14:0;;::::1;30121:4:::0;::::1;30111:14;;30084:41;30076:50;;;::::0;::::1;;-1:-1:-1::0;;;;;30137:24:0;::::1;;::::0;;;:16:::1;:24;::::0;;;;:33;;-1:-1:-1;;30137:33:0::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;;;30183:150:::1;;30210:11;::::0;:31:::1;::::0;;-1:-1:-1;;;30210:31:0;;-1:-1:-1;;;;;30210:31:0;;::::1;;::::0;::::1;::::0;:11:::1;:31:::0;;;;;;;;:11;::::1;::::0;:20:::1;::::0;:31;;;;;:11;;:31;;;;;;:11;;:31;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;30183:150;;;30274:11;::::0;-1:-1:-1;;;;;30303:17:0;;::::1;30274:11;30303:17:::0;;;:9:::1;:17;::::0;;;;;;30274:47;;-1:-1:-1;;;30274:47:0;;::::1;::::0;::::1;::::0;;;;;;;;;:11;;;::::1;::::0;:20:::1;::::0;:47;;;;;;;;;;:11;;:47;::::1;;::::0;::::1;;;;::::0;::::1;30476:128:::0;2924:24;2937:10;2924:12;:24::i;:::-;2916:48;;;;;-1:-1:-1;;;2916:48:0;;;;;;;;;;;;-1:-1:-1;;;2916:48:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;30564:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;30564:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;30476:128::o;14270:24::-;;;-1:-1:-1;;;;;14270:24:0;;:::o;3540:107::-;-1:-1:-1;;;;;3620:19:0;3596:4;3620:19;;;:14;:19;;;;;;;;;3540:107::o;85:181::-;143:7;175:5;;;199:6;;;;191:46;;;;;-1:-1:-1;;;191:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;35584:256;35688:38;35710:5;35717:8;35688:21;:38::i;:::-;35741:19;35737:96;;;35777:11;;:44;;;-1:-1:-1;;;35777:44:0;;-1:-1:-1;;;;;35777:44:0;;;;;;;;;;;;;;;;:11;;;;;:27;;:44;;;;;:11;;:44;;;;;;;:11;;:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35584:256;;;:::o;35311:265::-;35418:41;35438:10;35450:8;35418:19;:41::i;:::-;35474:19;35470:99;;;35510:11;;:47;;;-1:-1:-1;;;35510:47:0;;;;;;;;-1:-1:-1;;;;;35510:47:0;;;;;;;;;:11;;;;;:25;;:47;;;;;:11;;:47;;;;;;;:11;;:47;;;;;;;;;;26875:376;15158:6;:13;;-1:-1:-1;;15158:13:0;;;;;26975:16:::1;::::0;;26989:1:::1;26975:16:::0;;;26951:21:::1;26975:16:::0;;::::1;::::0;;26951:21;26975:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;-1:-1:-1::0;;27012:4:0::1;::::0;27002:7;;;;-1:-1:-1;;;;;;27012:4:0::1;::::0;27002:7;;-1:-1:-1;27012:4:0::1;::::0;27002:7:::1;;;;;;;;;:14;-1:-1:-1::0;;;;;27002:14:0::1;;;-1:-1:-1::0;;;;;27002:14:0::1;;;::::0;::::1;27045:4;27027;27032:1;27027:7;;;;;;;;-1:-1:-1::0;;;;;27027:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;27067:6:::1;::::0;:165:::1;::::0;-1:-1:-1;;;27067:165:0;;:6:::1;:165;::::0;::::1;::::0;;;;;::::1;::::0;;;;27206:15:::1;27067:165:::0;;;;;;;;;;;;;;;;;;;;;:6;;;::::1;::::0;:57:::1;::::0;27132:6;;27067;;27170:4;;27189:2;;27067:165;;;;;;;;;::::1;::::0;::::1;::::0;;;:6;:165:::1;;;;;;;::::0;;::::1;::::0;;;::::1;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;27063:181:::0;-1:-1:-1;;15176:6:0;:14;;-1:-1:-1;;15176:14:0;;;-1:-1:-1;26875:376:0:o;414:192::-;500:7;536:12;528:6;;;;520:29;;;;-1:-1:-1;;;520:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;572:5:0;;;414:192::o;18598:1246::-;18711:6;;18690:4;;18711:6;;;;;18707:87;;;18741:41;18756:6;18764:9;18775:6;18741:14;:41::i;:::-;18734:48;;;;18707:87;18810:16;:14;:16::i;:::-;18806:37;;;18830:10;:8;:10::i;:::-;18857:19;:17;:19::i;:::-;18853:50;;;18880:20;:18;:20::i;:::-;18919:10;:8;:10::i;:::-;18918:11;:38;;;;-1:-1:-1;;;;;;18933:23:0;;;;;;:15;:23;;;;;;;;18918:38;:59;;;;-1:-1:-1;18973:4:0;;-1:-1:-1;;;;;18960:17:0;;;18973:4;;18960:17;18918:59;:79;;;;-1:-1:-1;18981:16:0;;-1:-1:-1;;;18981:16:0;;;;18918:79;18915:180;;;-1:-1:-1;;;;;19022:17:0;;19042:1;19022:17;;;:9;:17;;;;;;19014:30;;;;;;19059:24;19067:5;19074:2;19078:4;19059:7;:24::i;:::-;19107:45;19126:6;19134:9;19145:6;19107:18;:45::i;:::-;19185:53;;;;;;;;;;;-1:-1:-1;;;19185:53:0;;;;;;;;-1:-1:-1;;;;;19185:17:0;;-1:-1:-1;19185:17:0;;;:9;:17;;;;;;;;:53;;19207:6;;19185:21;:53::i;:::-;-1:-1:-1;;;;;19165:17:0;;;;;;:9;:17;;;;;:73;;;;19276:21;19175:6;19276:13;:21::i;:::-;:67;;19337:6;19276:67;;;19300:34;19308:6;19316:9;19327:6;19300:7;:34::i;:::-;-1:-1:-1;;;;;19377:20:0;;;;;;:9;:20;;;;;;19251:92;;-1:-1:-1;19377:40:0;;19251:92;19377:24;:40::i;:::-;-1:-1:-1;;;;;19354:20:0;;;;;;;:9;:20;;;;;;;;:63;;;;19435:24;;;;;:16;:24;;;;;;;19430:120;;19480:11;;-1:-1:-1;;;;;19509:17:0;;;19480:11;19509:17;;;:9;:17;;;;;;;19480:47;;-1:-1:-1;;;19480:47:0;;;;;;;;;;;;;;:11;;;;;:20;;:47;;;;;;;;;;:11;;:47;;;;;;;;;;;;;;;;;;;;;;;;;19476:63;;-1:-1:-1;;;;;19567:27:0;;;;;;:16;:27;;;;;;;;19562:129;;19615:11;;-1:-1:-1;;;;;19647:20:0;;;19615:11;19647:20;;;:9;:20;;;;;;;19615:53;;-1:-1:-1;;;19615:53:0;;;;;;;;;;;;;;:11;;;;;:20;;:53;;;;;;;;;;:11;;:53;;;;;;;;;;;;;;;;;;;;;;;;;19611:69;;19707:11;;19727:14;;19707:35;;;-1:-1:-1;;;;;;19707:35:0;;;;;;;;;;-1:-1:-1;;;;;19707:11:0;;;;:19;;:35;;;;;:11;;:35;;;;;;;;:11;;:35;;;;;;;;;;;;;;;;;;;;;;;;;19703:51;19788:9;-1:-1:-1;;;;;19771:43:0;19780:6;-1:-1:-1;;;;;19771:43:0;;19799:14;19771:43;;;;;;;;;;;;;;;;;;-1:-1:-1;19832:4:0;;18598:1246;-1:-1:-1;;;;18598:1246:0:o;272:136::-;330:7;357:43;361:1;364;357:43;;;;;;;;;;;;;;;;;:3;:43::i;30975:193::-;-1:-1:-1;;;;;31049:23:0;;;;;;;:15;:23;;;;;;;;:31;;;;;-1:-1:-1;;31049:31:0;;;;;;;;31091:15;:23;;;;;:31;;;;;;;;31133:11;:19;;;;;;:27;;;;;;;;30975:193::o;28965:763::-;29076:12;29063:10;:25;29130:15;29099:28;:46;29156:14;:32;;;29201:213;;;;29231:16;:24;;-1:-1:-1;;29231:24:0;;;29270:23;:31;;-1:-1:-1;;29270:31:0;;;29201:213;;;29334:16;:23;;-1:-1:-1;;29334:23:0;29353:4;29334:23;;;29372;:30;;-1:-1:-1;;29372:30:0;;;;;29201:213;29430:14;29426:295;;;29461:18;:25;;-1:-1:-1;;29461:25:0;29482:4;29461:25;;;29518:8;29501:14;:25;29461:18;29541:22;:26;29602:16;29582:17;:36;29658:1;29633:22;:26;29697:12;29674:20;:35;28965:763;;;:::o;612:250::-;670:7;694:6;690:47;;-1:-1:-1;724:1:0;717:8;;690:47;761:5;;;765:1;761;:5;:1;785:5;;;;;:10;777:56;;;;-1:-1:-1;;;777:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;868:132;926:7;953:39;957:1;960;953:39;;;;;;;;;;;;;;;;;:3;:39::i;21550:840::-;21676:4;;21618:7;;;;21666:15;;-1:-1:-1;;;;;21676:4:0;21666:9;:15::i;:::-;21730:4;;21746;;21723:28;;;-1:-1:-1;;;21723:28:0;;-1:-1:-1;;;;;21746:4:0;;;21723:28;;;;;;21638:43;;-1:-1:-1;21692:28:0;;21730:4;;;;;21723:22;;:28;;;;;;;;;;;;;;21730:4;21723:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21723:28:0;;-1:-1:-1;21768:22:0;;;:51;;-1:-1:-1;21794:25:0;;21768:51;21764:92;;;21843:1;21836:8;;;;;;21764:92;21868:23;21894:43;:20;21919:17;21894:24;:43::i;:::-;21868:69;-1:-1:-1;21948:24:0;21975:33;:17;21997:10;21975:21;:33::i;:::-;21948:60;-1:-1:-1;22019:27:0;22049:37;:15;21948:60;22049:19;:37::i;:::-;22019:67;-1:-1:-1;22099:25:0;22127:59;22168:17;22127:36;:20;22152:10;22127:24;:36::i;:59::-;22099:87;-1:-1:-1;22197:25:0;22225:45;:20;22250:19;22225:24;:45::i;:::-;22361:20;;22197:73;;-1:-1:-1;22288:94:0;;22289:66;22197:73;22289:43;:17;22361:20;22289:21;:43::i;22288:94::-;22281:101;21550:840;-1:-1:-1;;;;;;;;;21550:840:0:o;6162:210::-;5697:5;;-1:-1:-1;;;;;5697:5:0;5683:10;:19;5675:61;;;;;-1:-1:-1;;;5675:61:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;6256:15:::1;6281:5;-1:-1:-1::0;;;;;6274:23:0::1;;6306:4;6274:38;;;;;;;;;;;;;-1:-1:-1::0;;;;;6274:38:0::1;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;6274:38:0;6323:41:::1;::::0;;-1:-1:-1;;;6323:41:0;;-1:-1:-1;;;;;6323:41:0;;::::1;;::::0;::::1;::::0;;;;;;;;;6274:38;;-1:-1:-1;6323:22:0;;::::1;::::0;::::1;::::0;:41;;;;;6274:38:::1;::::0;6323:41;;;;;;;;-1:-1:-1;6323:22:0;:41;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;5764:390:::0;5697:5;;-1:-1:-1;;;;;5697:5:0;5683:10;:19;5675:61;;;;;-1:-1:-1;;;5675:61:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;5861:25:::1;5905:10;5919:3;5905:17;5901:190;;;-1:-1:-1::0;5959:21:0::1;5901:190;;;6033:46;6075:3;6033:37;:21;6059:10:::0;6033:25:::1;:37::i;:46::-;6013:66;;5901:190;6101:45;::::0;-1:-1:-1;;;;;6101:26:0;::::1;::::0;:45;::::1;;;::::0;6128:17;;6101:45:::1;::::0;;;6128:17;6101:26;:45;::::1;;;;;;;;;;;;;::::0;::::1;;;;19852:330:::0;19982:53;;;;;;;;;;;-1:-1:-1;;;19982:53:0;;;;;;;;-1:-1:-1;;;;;19982:17:0;;19945:4;19982:17;;;:9;:17;;;;;;;:53;;20004:6;;19982:21;:53::i;:::-;-1:-1:-1;;;;;19962:17:0;;;;;;;:9;:17;;;;;;:73;;;;20069:20;;;;;;;:32;;20094:6;20069:24;:32::i;:::-;-1:-1:-1;;;;;20046:20:0;;;;;;;:9;:20;;;;;;;;;:55;;;;20117:35;;;;;;;20046:20;;20117:35;;;;;;;;;;;;;-1:-1:-1;20170:4:0;19852:330;;;;;:::o;23928:197::-;24015:4;;23977;;-1:-1:-1;;;;;24015:4:0;24001:10;:18;;;;:38;;-1:-1:-1;24033:6:0;;;;;;;24032:7;24001:38;:62;;;;-1:-1:-1;24052:11:0;;;;24001:62;:116;;;;-1:-1:-1;;24104:13:0;;24094:4;24076:24;;;;:9;:24;;;;;;:41;;;23928:197::o;24133:1669::-;15158:6;:13;;-1:-1:-1;;15158:13:0;;;;;24228:15:::1;::::0;24245:26:::1;::::0;15158:13;;24212:60:::1;::::0;:15:::1;:60::i;:::-;:79;;24279:12;;24212:79;;;24275:1;24212:79;24182:109;;24302:23;24328:59;24385:1;24328:52;24371:8;;24328:38;24346:19;24328:13;;:17;;:38;;;;:::i;:59::-;24302:85;;24398:20;24421:34;24439:15;24421:13;;:17;;:34;;;;:::i;:::-;24492:16;::::0;;24506:1:::1;24492:16:::0;;;24468:21:::1;24492:16:::0;;::::1;::::0;;24398:57;;-1:-1:-1;24492:16:0;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;24492:16:0::1;24468:40;;24537:4;24519;24524:1;24519:7;;;;;;;;-1:-1:-1::0;;;;;24519:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;24563:4:::1;::::0;24553:7;;24563:4;::::1;::::0;24553;;24563;;24553:7;::::1;;;;;-1:-1:-1::0;;;;;24553:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:14;;;;24642:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;24642:188:0;;::::1;::::0;::::1;::::0;;;24580:21:::1;24642:188:::0;;;;;;24784:4:::1;24642:188:::0;;;;;;24804:15:::1;24642:188:::0;;;;;;;;;;;;;;;;;;;;;24604:21:::1;::::0;24642:6;;;::::1;::::0;:57:::1;::::0;24714:12;;24580:21;;24757:4;;24642:188;;;;;;;;;;::::1;::::0;::::1;::::0;;;24580:21;24642:188:::1;;;;;;;::::0;;::::1;::::0;;;::::1;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;24638:204:::0;24854:17:::1;24874:40;:21;24900:13:::0;24874:25:::1;:40::i;:::-;24854:60:::0;-1:-1:-1;24927:19:0::1;24949:40;24962:26;:19:::0;24986:1:::1;24962:23;:26::i;:::-;24949:8;::::0;;:12:::1;:40::i;:::-;24927:62:::0;-1:-1:-1;25002:26:0::1;25031:58;25087:1;25031:51;24927:62:::0;25031:51;:9;25045:19;25031:13:::1;:34::i;:58::-;25002:87;;25100:27;25130:45;25163:11;25130:28;25144:13;;25130:9;:13;;:28;;;;:::i;:45::-;25100:75;;25186:26;25215:44;25247:11;25215:27;25229:12;;25215:9;:13;;:27;;;;:::i;:44::-;25186:73;;25276:11;;;;;;;;;-1:-1:-1::0;;;;;25276:11:0::1;-1:-1:-1::0;;;;;25276:19:0::1;;25303;25276:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;25272:65:::0;25355:20:::1;::::0;25347:58:::1;::::0;-1:-1:-1;;;;;25355:20:0;;::::1;::::0;25347:58;::::1;;;::::0;25386:18;;25355:20:::1;25347:58:::0;25355:20;25347:58;25386:18;25355:20;25347:58;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;25421:19:0;;25418:377:::1;;25460:6;::::0;25634:21:::1;::::0;25460:244:::1;::::0;;-1:-1:-1;;;25460:244:0;;25536:4:::1;25460:244;::::0;::::1;::::0;;;;;;;:6:::1;:244:::0;;;;;;;;;;-1:-1:-1;;;;;25634:21:0;;::::1;25460:244:::0;;;;25674:15:::1;25460:244:::0;;;;;;:6;;;::::1;::::0;:22:::1;::::0;25490:18;;25460:244;;;;;::::1;::::0;;;;;;;;;25490:18;25460:6;:244;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;25460:244:0;;::::1;::::0;::::1;::::0;;;;;;;;;::::1;;25456:260;;;;;;;;;25735:48;::::0;;;;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;;;;;;;;;::::1;25418:377;-1:-1:-1::0;;15176:6:0;:14;;-1:-1:-1;;15176:14:0;;;-1:-1:-1;;;;;;;;24133:1669:0:o;25810:282::-;25900:4;;25862;;-1:-1:-1;;;;;25900:4:0;25886:10;:18;;;;:38;;-1:-1:-1;25918:6:0;;;;;;;25917:7;25886:38;:69;;;;-1:-1:-1;25937:18:0;;;;25886:69;:143;;;;;26017:12;25991:22;;25968:20;;:45;:61;;25886:143;:198;;;;-1:-1:-1;;26067:17:0;;26042:21;:42;;;25810:282::o;26563:304::-;26623:17;;26642:4;;26613:34;;26623:17;-1:-1:-1;;;;;26642:4:0;26613:9;:34::i;:::-;26681:12;26658:20;:35;26756:17;;26729:22;;:45;;:26;:45::i;:::-;26704:22;:70;;;26813:14;;-1:-1:-1;26785:75:0;;;26831:18;:26;;-1:-1:-1;;26831:26:0;;;26785:75;26563:304::o;29736:90::-;29803:10;;:15;;29736:90;:::o;20190:606::-;-1:-1:-1;;;;;20293:23:0;;;;;;:15;:23;;;;;;;;:53;;;;-1:-1:-1;;;;;;20320:26:0;;;;;;:15;:26;;;;;;;;20293:53;20289:70;;;20350:7;;20289:70;20379:10;:8;:10::i;:::-;20371:56;;;;-1:-1:-1;;;20371:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20456:12;;20446:6;:22;;:49;;;-1:-1:-1;;;;;;20472:23:0;;;;;;:15;:23;;;;;;;;20446:49;20438:79;;;;;-1:-1:-1;;;20438:79:0;;;;;;;;;;;;-1:-1:-1;;;20438:79:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;20536:26:0;;;;;;:15;:26;;;;;;;;;:79;;-1:-1:-1;20602:13:0;;-1:-1:-1;;;;;20566:20:0;;;;;;:9;:20;;;;;;:32;;20591:6;20566:24;:32::i;:::-;:49;;20536:79;20528:116;;;;;-1:-1:-1;;;20528:116:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;20657:44;20675:6;20683:9;20694:6;20657:17;:44::i;:::-;20712:31;20736:6;20712:23;:31::i;:::-;20754:34;20778:9;20754:23;:34::i;22648:114::-;-1:-1:-1;;;;;22735:19:0;22710:4;22735:19;;;:11;:19;;;;;;;;22734:20;;22648:114::o;23548:372::-;23719:14;;23708:4;;23633:7;;;;23673:61;;23719:14;23673:41;;23684:29;;-1:-1:-1;;;;;23696:16:0;;;23708:4;;23696:16;23684:11;:29::i;:::-;23673:6;;:10;:41::i;:61::-;23792:4;23774:24;;;;:9;:24;;;;;;23653:81;;-1:-1:-1;23774:39:0;;23653:81;23774:28;:39::i;:::-;23765:4;23747:24;;;;:9;:24;;;;;;;;;:66;;;;23829:42;;;;;;;23765:4;;-1:-1:-1;;;;;23829:42:0;;;;;;;;;;;;;23891:21;:6;23902:9;23891:10;:21::i;:::-;23884:28;23548:372;-1:-1:-1;;;;;23548:372:0:o;1006:345::-;1092:7;1194:12;1187:5;1179:28;;;;-1:-1:-1;;;1179:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1218:9;1234:1;1230;:5;;;;;;;1006:345;-1:-1:-1;;;;;1006:345:0:o;21101:306::-;21207:41;21230:6;21238:9;21207:22;:41::i;:::-;21203:197;;;21265:19;21287:23;21303:6;21287:15;:23::i;:::-;21265:45;;21348:14;;21333:11;:29;;21325:63;;;;;-1:-1:-1;;;21325:63:0;;;;;;;;;;;;-1:-1:-1;;;21325:63:0;;;;;;;;;;;;;;20804:289;-1:-1:-1;;;;;20876:23:0;;;;;;:15;:23;;;;;;;;;:44;;-1:-1:-1;20904:16:0;;;;20903:17;20876:44;20872:61;;;20924:7;;20872:61;20973:10;;-1:-1:-1;;;;;20951:17:0;;;;;;:9;:17;;;;;;20988:15;;20951:33;;:17;:21;:33::i;:::-;:52;;20943:96;;;;;-1:-1:-1;;;20943:96:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;21050:17:0;;;;;;:9;:17;;;;;21070:15;21050:35;;20804:289;;:::o;22398:242::-;22511:23;;22487:4;;22511:23;;;;;:60;;;;-1:-1:-1;;;;;;22548:23:0;;;;;;:15;:23;;;;;;;;22547:24;22511:60;:89;;;;-1:-1:-1;22596:4:0;;-1:-1:-1;;;;;22584:16:0;;;22596:4;;22584:16;22511:89;:121;;;;-1:-1:-1;22623:4:0;;22631:1;;22613:15;;-1:-1:-1;;;;;22623:4:0;22613:9;:15::i;-1:-1:-1:-;;;;;;;;:::o
Swarm Source
ipfs://34cc543f8948cf723e9f38109643a99d366e8227dbdb1245b7f2de56e1b4b8ec
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.