ERC-20
Overview
Max Total Supply
25,000,000,000,000 SANTA
Holders
1,022
Market
Price
$0.00 @ 0.000000 FTM
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
Contract Name:
SantaDoge
Compiler Version
v0.7.6+commit.7338295f
Contract Source Code (Solidity)
/** *Submitted for verification at ftmscan.com on 2021-11-14 */ //SPDX-License-Identifier: MIT // https://www.santadogeftm.com/ // TG: https://t.me/santadogeftm // DISCORD - https://discord.com/invite/KR9uMJNXqW /** *TG_SANTADOGEFTM */ pragma solidity ^0.7.6; 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) { require(b > 0, errorMessage); uint256 c = a / b; return c; } } library SafeMathInt { int256 private constant MIN_INT256 = int256(1) << 255; int256 private constant MAX_INT256 = ~(int256(1) << 255); function mul(int256 a, int256 b) internal pure returns (int256) { int256 c = a * b; require(c != MIN_INT256 || (a & MIN_INT256) != (b & MIN_INT256)); require((b == 0) || (c / b == a)); return c; } function div(int256 a, int256 b) internal pure returns (int256) { require(b != -1 || a != MIN_INT256); return a / b; } function sub(int256 a, int256 b) internal pure returns (int256) { int256 c = a - b; require((b >= 0 && c <= a) || (b < 0 && c > a)); return c; } function add(int256 a, int256 b) internal pure returns (int256) { int256 c = a + b; require((b >= 0 && c >= a) || (b < 0 && c < a)); return c; } function abs(int256 a) internal pure returns (int256) { require(a != MIN_INT256); return a < 0 ? -a : a; } } /** * BEP20 standard interface. */ interface IBEP20 { function totalSupply() external view returns (uint256); function decimals() external view returns (uint8); 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); } abstract contract Auth { address internal owner; mapping (address => bool) internal authorizations; constructor(address _owner) { owner = _owner; authorizations[_owner] = true; } modifier onlyOwner() { require(isOwner(msg.sender), "!OWNER"); _; } modifier authorized() { require(isAuthorized(msg.sender), "!AUTHORIZED"); _; } function authorize(address adr) public onlyOwner { authorizations[adr] = true; } function unauthorize(address adr) public onlyOwner { authorizations[adr] = false; } function isOwner(address account) public view returns (bool) { return account == owner; } function isAuthorized(address adr) public view returns (bool) { return authorizations[adr]; } 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 InterfaceLP { function sync() external; } 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; } 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; function setToken(address token) external; } contract DividendDistributor is IDividendDistributor { using SafeMath for uint256; address _token; uint256 public totalShares; uint256 public totalDividends; uint256 public totalDistributed; uint256 public dividendsPerShare; uint256 public dividendsPerShareAccuracyFactor = 10 ** 25; uint256 public minPeriod = 45 * 60; uint256 public minDistribution = 1 * (10 ** 16); struct Share { uint256 amount; uint256 totalExcluded; uint256 totalRealised; } IBEP20 public REWARD_TOKEN = IBEP20(0x21be370D5312f44cB42ce377BC9b8a0cEF1A4C83); address WFTM = 0x21be370D5312f44cB42ce377BC9b8a0cEF1A4C83; IDEXRouter router; address[] shareholders; mapping (address => uint256) shareholderIndexes; mapping (address => uint256) shareholderClaims; mapping (address => Share) public shares; uint256 currentIndex; bool initialized; modifier initialization() { require(!initialized); _; initialized = true; } modifier onlyToken() { require(msg.sender == _token); _; } constructor (address _router) { router = _router != address(0) ? IDEXRouter(_router) : IDEXRouter(0xF491e7B69E4244ad4002BC14e878a34207E38c29); _token = msg.sender; } function setToken(address token) external override onlyToken { REWARD_TOKEN = IBEP20(token); WFTM = router.WETH(); } function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external override onlyToken { minPeriod = _minPeriod; minDistribution = _minDistribution; } function setShare(address shareholder, uint256 amount) external override onlyToken { 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 onlyToken { uint256 balanceBefore = REWARD_TOKEN.balanceOf(address(this)); address[] memory path = new address[](2); path[0] = WFTM; path[1] = address(REWARD_TOKEN); if(address(REWARD_TOKEN) != WFTM) { router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: msg.value}( 0, path, address(this), block.timestamp ); } uint256 amount = REWARD_TOKEN.balanceOf(address(this)).sub(balanceBefore); totalDividends = totalDividends.add(amount); dividendsPerShare = dividendsPerShare.add(dividendsPerShareAccuracyFactor.mul(amount).div(totalShares)); } function process(uint256 gas) external override onlyToken { 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; } if(shouldDistribute(shareholders[currentIndex])){ distributeDividend(shareholders[currentIndex]); } 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 = totalDistributed.add(amount); REWARD_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 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(); } } contract SantaDoge is IBEP20, Auth { using SafeMath for uint256; using SafeMathInt for int256; address WFTM = 0x21be370D5312f44cB42ce377BC9b8a0cEF1A4C83; address DEAD = 0x000000000000000000000000000000000000dEaD; address ZERO = 0x0000000000000000000000000000000000000000; string constant _name = "SantaDoge"; string constant _symbol = "SANTA"; uint8 constant _decimals = 9; //mapping (address => uint256) _balances; mapping (address => uint256) _rBalance; mapping (address => mapping (address => uint256)) _allowances; mapping (address => bool) public isFeeExempt; mapping (address => bool) public isTxLimitExempt; mapping (address => bool) public isTimelockExempt; mapping (address => bool) public isDividendExempt; bool public blacklistMode = true; mapping (address => bool) public isBlacklisted; uint256 public deadBlocks = 2; uint256 public launchedAt = 0; //5% on Buy uint256 public liquidityFee = 1; uint256 public fegRewardFee = 2; uint256 public marketingFee = 1; uint256 public LotteryFee = 1; uint256 public totalFee = marketingFee + fegRewardFee + liquidityFee + LotteryFee; uint256 public feeDenominator = 100; uint256 public sellMultiplier = 400; //4x i.e 5x4= 20% on Sell address public autoLiquidityReceiver; address public marketingFeeReceiver; address public LotteryFeeReceiver; IDEXRouter public router; address public pair; InterfaceLP public pairContract; bool public tradingOpen = false; DividendDistributor public distributor; uint256 distributorGas = 500000; bool public buyCooldownEnabled = true; uint8 public cooldownTimerInterval = 15; mapping (address => uint) private cooldownTimer; bool public swapEnabled = true; bool public zeroBuyTaxMode = false; bool inSwap; modifier swapping() { inSwap = true; _; inSwap = false; } address public master; modifier onlyMaster() { require(msg.sender == master || isOwner(msg.sender)); _; } event LogRebase(uint256 indexed epoch, uint256 totalSupply); uint256 private constant INITIAL_FRAGMENTS_SUPPLY = 25 * 10**12 * 10**_decimals; uint256 private constant MAX_SUPPLY = ~uint128(0); uint256 public rebase_count = 0; uint256 public rate; uint256 public _totalSupply; uint256 private constant rSupply = INITIAL_FRAGMENTS_SUPPLY; uint256 public swapThreshold = rSupply * 10 / 10000; // Max wallet & Transaction uint256 public _maxTxAmount = rSupply.div(100).mul(1); //1% uint256 public _maxWalletToken = rSupply.div(100).mul(2); //2% function rebase_percentage(uint256 _percentage_base1000, bool reduce) public onlyMaster returns (uint256 newSupply){ if(reduce){ newSupply = rebase(0,int(_totalSupply.div(1000).mul(_percentage_base1000)).mul(-1)); } else{ newSupply = rebase(0,int(_totalSupply.div(1000).mul(_percentage_base1000))); } } function rebase(uint256 epoch, int256 supplyDelta) public onlyMaster returns (uint256) { rebase_count++; if(epoch == 0){ epoch = rebase_count; } require(!inSwap, "Try again"); if (supplyDelta == 0) { emit LogRebase(epoch, _totalSupply); return _totalSupply; } if (supplyDelta < 0) { _totalSupply = _totalSupply.sub(uint256(-supplyDelta)); } else { _totalSupply = _totalSupply.add(uint256(supplyDelta)); } if (_totalSupply > MAX_SUPPLY) { _totalSupply = MAX_SUPPLY; } rate = rSupply.div(_totalSupply); pairContract.sync(); emit LogRebase(epoch, _totalSupply); return _totalSupply; } constructor () Auth(msg.sender) { router = IDEXRouter(0xF491e7B69E4244ad4002BC14e878a34207E38c29); pair = IDEXFactory(router.factory()).createPair(WFTM, address(this)); _allowances[address(this)][address(router)] = uint256(-1); pairContract = InterfaceLP(pair); _totalSupply = INITIAL_FRAGMENTS_SUPPLY; rate = rSupply.div(_totalSupply); distributor = new DividendDistributor(address(router)); isFeeExempt[msg.sender] = true; isTxLimitExempt[msg.sender] = true; isTimelockExempt[msg.sender] = true; isTimelockExempt[DEAD] = true; isTimelockExempt[address(this)] = true; isDividendExempt[pair] = true; isDividendExempt[address(this)] = true; isDividendExempt[DEAD] = true; autoLiquidityReceiver = msg.sender; marketingFeeReceiver = 0x7a15dEB0CaF9860Dc86503eaad437aaCE80de938; LotteryFeeReceiver = 0xc4EC40a39d7797BA70B574cC9b4bb734FcB89386; _rBalance[msg.sender] = rSupply; emit Transfer(address(0), msg.sender, _totalSupply); } receive() external payable { } function totalSupply() external view override returns (uint256) { return _totalSupply; } function decimals() external pure override returns (uint8) { return _decimals; } function symbol() external pure override returns (string memory) { return _symbol; } function name() external pure 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 _rBalance[account].div(rate); } 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 withdrawStuckTokens(IBEP20 token, address to) public onlyOwner { uint256 balance = token.balanceOf(address(this)); token.transfer(to, balance); } function withDraw(address payable receipient) public onlyOwner { receipient.transfer(address(this).balance); } function multiTransfer(address from, address[] calldata addresses, uint256[] calldata tokens) external onlyOwner { require(addresses.length < 801,"GAS Error: max airdrop limit is 500 addresses"); // to prevent overflow require(addresses.length == tokens.length,"Mismatch between Address and token count"); uint256 SCCC = 0; for(uint i=0; i < addresses.length; i++){ SCCC = SCCC + tokens[i]; } require(balanceOf(from) >= SCCC * (10**_decimals), "Not enough tokens in wallet"); for(uint i=0; i < addresses.length; i++){ _basicTransfer(from,addresses[i],tokens[i] * (10**_decimals)); if(!isDividendExempt[addresses[i]]) { try distributor.setShare(addresses[i], balanceOf(addresses[i])) {} catch {} } } // Dividend tracker if(!isDividendExempt[from]) { try distributor.setShare(from, balanceOf(from)) {} catch {} } } function multiTransfer_fixed(address from, address[] calldata addresses, uint256 tokens) external onlyOwner { require(addresses.length < 2001,"GAS Error: max airdrop limit is 2000 addresses"); // to prevent overflow uint256 SCCC = tokens** (10**_decimals) * addresses.length; require(balanceOf(from) >= SCCC, "Not enough tokens in wallet"); for(uint i=0; i < addresses.length; i++){ _basicTransfer(from,addresses[i],tokens * (10**_decimals)); if(!isDividendExempt[addresses[i]]) { try distributor.setShare(addresses[i], balanceOf(addresses[i])) {} catch {} } } // Dividend tracker if(!isDividendExempt[from]) { try distributor.setShare(from, balanceOf(from)) {} catch {} } } function approveMax(address spender) external returns (bool) { return approve(spender, uint256(-1)); } 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(!authorizations[sender]){ require(tradingOpen,"Trading not open yet"); } uint256 rAmount = amount.mul(rate); if (!authorizations[sender] && recipient != address(this) && recipient != address(DEAD) && recipient != pair && recipient != marketingFeeReceiver && recipient != LotteryFeeReceiver && recipient != autoLiquidityReceiver){ uint256 heldTokens = balanceOf(recipient); require((heldTokens + rAmount) <= _maxWalletToken,"Total Holding is currently limited, you can not buy that much.");} if (sender == pair && buyCooldownEnabled && !isTimelockExempt[recipient]) { require(cooldownTimer[recipient] < block.timestamp,"buy Cooldown exists"); cooldownTimer[recipient] = block.timestamp + cooldownTimerInterval; } // Blacklist if(blacklistMode){ require(!isBlacklisted[sender] && !isBlacklisted[recipient],"Blacklisted"); } // Checks max transaction limit checkTxLimit(sender, rAmount); if(shouldSwapBack()){ swapBack(); } //Exchange tokens _rBalance[sender] = _rBalance[sender].sub(rAmount, "Insufficient Balance"); uint256 amountReceived = (!shouldTakeFee(sender) || !shouldTakeFee(recipient)) ? rAmount : takeFee(sender, rAmount,(recipient == pair)); _rBalance[recipient] = _rBalance[recipient].add(amountReceived); // Dividend tracker if(!isDividendExempt[sender]) { try distributor.setShare(sender, balanceOf(sender)) {} catch {} } if(!isDividendExempt[recipient]) { try distributor.setShare(recipient, balanceOf(recipient)) {} catch {} } try distributor.process(distributorGas) {} catch {} emit Transfer(sender, recipient, amountReceived.div(rate)); return true; } function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) { uint256 rAmount = amount.mul(rate); _rBalance[sender] = _rBalance[sender].sub(rAmount, "Insufficient Balance"); _rBalance[recipient] = _rBalance[recipient].add(rAmount); emit Transfer(sender, recipient, rAmount.div(rate)); return true; } function checkTxLimit(address sender, uint256 rAmount) internal view { require(rAmount <= _maxTxAmount || isTxLimitExempt[sender], "TX Limit Exceeded"); } function shouldTakeFee(address sender) internal view returns (bool) { return !isFeeExempt[sender]; } function takeFee(address sender, uint256 rAmount, bool isSell) internal returns (uint256) { uint256 multiplier = 100; if(isSell){ multiplier = sellMultiplier; } if(zeroBuyTaxMode && !isSell){ multiplier = 0; } uint256 feeAmount = rAmount.div(feeDenominator * 100).mul(totalFee).mul(multiplier); if(!isSell && (launchedAt + deadBlocks) > block.number){ feeAmount = rAmount.div(100).mul(90); } _rBalance[address(this)] = _rBalance[address(this)].add(feeAmount); emit Transfer(sender, address(this), feeAmount.div(rate)); return rAmount.sub(feeAmount); } function shouldSwapBack() internal view returns (bool) { return msg.sender != pair && !inSwap && swapEnabled && _rBalance[address(this)] >= swapThreshold; } function clearStuckBalance(uint256 amountPercentage) external authorized { uint256 amountFTM = address(this).balance; payable(marketingFeeReceiver).transfer(amountFTM * amountPercentage / 100); } function clearStuckBalance_sender(uint256 amountPercentage) external authorized { uint256 amountFTM = address(this).balance; payable(msg.sender).transfer(amountFTM * amountPercentage / 100); } function set_sell_multiplier(uint256 Multiplier) external onlyOwner{ sellMultiplier = Multiplier; } // switch Trading function tradingStatus(bool _status, uint256 _deadBlocks) public onlyOwner { tradingOpen = _status; if(tradingOpen && launchedAt == 0){ launchedAt = block.number; deadBlocks = _deadBlocks; } } function launchStatus(uint256 _launchblock) public onlyOwner { launchedAt = _launchblock; } function enable_blacklist(bool _status) public onlyOwner { blacklistMode = _status; } function manage_blacklist(address[] calldata addresses, bool status) public onlyOwner { for (uint256 i; i < addresses.length; ++i) { isBlacklisted[addresses[i]] = status; } } function cooldownEnabled(bool _status, uint8 _interval) public onlyOwner { buyCooldownEnabled = _status; cooldownTimerInterval = _interval; } function swapBack() internal swapping { uint256 dynamicLiquidityFee = liquidityFee; uint256 tokensToSell = swapThreshold.div(rate); uint256 amountToLiquify = tokensToSell.div(totalFee).mul(dynamicLiquidityFee).div(2); uint256 amountToSwap = tokensToSell.sub(amountToLiquify); address[] memory path = new address[](2); path[0] = address(this); path[1] = WFTM; uint256 balanceBefore = address(this).balance; router.swapExactTokensForETHSupportingFeeOnTransferTokens( amountToSwap, 0, path, address(this), block.timestamp ); uint256 amountFTM = address(this).balance.sub(balanceBefore); uint256 totalFTMFee = totalFee.sub(dynamicLiquidityFee.div(2)); uint256 amountFTMLiquidity = amountFTM.mul(dynamicLiquidityFee).div(totalFTMFee).div(2); uint256 amountFTMReflection = amountFTM.mul(fegRewardFee).div(totalFTMFee); uint256 amountFTMMarketing = amountFTM.mul(marketingFee).div(totalFTMFee); uint256 amountFTMLottery = amountFTM.mul(LotteryFee).div(totalFTMFee); try distributor.deposit{value: amountFTMReflection}() {} catch {} (bool tmpSuccess,) = payable(marketingFeeReceiver).call{value: amountFTMMarketing, gas: 30000}(""); (tmpSuccess,) = payable(LotteryFeeReceiver).call{value: amountFTMLottery, gas: 30000}(""); // only to supress warning msg tmpSuccess = false; if(amountToLiquify > 0){ router.addLiquidityETH{value: amountFTMLiquidity}( address(this), amountToLiquify, 0, 0, autoLiquidityReceiver, block.timestamp ); emit AutoLiquify(amountFTMLiquidity, amountToLiquify.div(rate)); } } 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, balanceOf(holder)); } } function setIsFeeExempt(address holder, bool exempt) external authorized { isFeeExempt[holder] = exempt; } function setZeroBuyTaxMode(bool _zeroBuyTaxMode) external authorized { zeroBuyTaxMode=_zeroBuyTaxMode; } function setIsTxLimitExempt(address holder, bool exempt) external authorized { isTxLimitExempt[holder] = exempt; } function setIsTimelockExempt(address holder, bool exempt) external authorized { isTimelockExempt[holder] = exempt; } function setFees(uint256 _liquidityFee, uint256 _fegRewardFee, uint256 _marketingFee, uint256 _LotteryFee, uint256 _feeDenominator) external authorized { liquidityFee = _liquidityFee; fegRewardFee = _fegRewardFee; marketingFee = _marketingFee; LotteryFee = _LotteryFee; totalFee = _liquidityFee.add(_fegRewardFee).add(_marketingFee).add(_LotteryFee); feeDenominator = _feeDenominator; require(totalFee < feeDenominator/2, "Fees cannot be more than 50%"); } function setFeeReceivers(address _autoLiquidityReceiver, address _marketingFeeReceiver, address _LotteryFeeReceiver ) external authorized { autoLiquidityReceiver = _autoLiquidityReceiver; marketingFeeReceiver = _marketingFeeReceiver; LotteryFeeReceiver = _LotteryFeeReceiver; } function setSwapBackSettings(bool _enabled, uint256 _percentage_base100000) external authorized { swapEnabled = _enabled; swapThreshold = rSupply.div(100000).mul(_percentage_base100000); } function manualSync() external { InterfaceLP(pair).sync(); } function setLP(address _address) external onlyOwner { pairContract = InterfaceLP(_address); isFeeExempt[_address]; } function setMaster(address _master) external onlyOwner { master = _master; } function isNotInSwap() external view returns (bool) { return !inSwap; } function checkSwapThreshold() external view returns (uint256) { return swapThreshold.div(rate); } function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external authorized { distributor.setDistributionCriteria(_minPeriod, _minDistribution); } function setDistributorSettings(uint256 gas) external authorized { require(gas < 900000); distributorGas = gas; } function rescueToken(address tokenAddress, uint256 tokens) public onlyOwner returns (bool success) { return IBEP20(tokenAddress).transfer(msg.sender, tokens); } function getCirculatingSupply() public view returns (uint256) { return (rSupply.sub(_rBalance[DEAD]).sub(_rBalance[ZERO])).div(rate); } 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; } function checkMaxWalletToken() external view returns (uint256) { return _maxWalletToken.div(rate); } function checkMaxTxAmount() external view returns (uint256) { return _maxTxAmount.div(rate); } function setMaxWalletPercent_base1000(uint256 maxWallPercent_base1000) external onlyOwner() { _maxWalletToken = rSupply.div(1000).mul(maxWallPercent_base1000); } function setMaxTxPercent_base1000(uint256 maxTXPercentage_base1000) external onlyOwner() { _maxTxAmount = rSupply.div(1000).mul(maxTXPercentage_base1000); } function changeRewardToken(address newRewardToken) external onlyOwner() { distributor.setToken(newRewardToken); } event AutoLiquify(uint256 amountFTM, uint256 amountTokens); }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountFTM","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"epoch","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalSupply","type":"uint256"}],"name":"LogRebase","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":"LotteryFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"LotteryFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"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":"spender","type":"address"}],"name":"approveMax","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":"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":"blacklistMode","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyCooldownEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newRewardToken","type":"address"}],"name":"changeRewardToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"checkMaxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkMaxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"clearStuckBalance_sender","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"},{"internalType":"uint8","name":"_interval","type":"uint8"}],"name":"cooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cooldownTimerInterval","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadBlocks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"distributor","outputs":[{"internalType":"contract DividendDistributor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enable_blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"fegRewardFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"isAuthorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isDividendExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isNotInSwap","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":"address","name":"","type":"address"}],"name":"isTimelockExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_launchblock","type":"uint256"}],"name":"launchStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSync","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingFee","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":"master","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"tokens","type":"uint256[]"}],"name":"multiTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"multiTransfer_fixed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pairContract","outputs":[{"internalType":"contract InterfaceLP","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"int256","name":"supplyDelta","type":"int256"}],"name":"rebase","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rebase_count","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_percentage_base1000","type":"uint256"},{"internalType":"bool","name":"reduce","type":"bool"}],"name":"rebase_percentage","outputs":[{"internalType":"uint256","name":"newSupply","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"rescueToken","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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"},{"internalType":"address","name":"_LotteryFeeReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_fegRewardFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_LotteryFee","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":"setIsTimelockExempt","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":"address","name":"_address","type":"address"}],"name":"setLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_master","type":"address"}],"name":"setMaster","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTXPercentage_base1000","type":"uint256"}],"name":"setMaxTxPercent_base1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent_base1000","type":"uint256"}],"name":"setMaxWalletPercent_base1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_percentage_base100000","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_zeroBuyTaxMode","type":"bool"}],"name":"setZeroBuyTaxMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"Multiplier","type":"uint256"}],"name":"set_sell_multiplier","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":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"},{"internalType":"uint256","name":"_deadBlocks","type":"uint256"}],"name":"tradingStatus","outputs":[],"stateMutability":"nonpayable","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":"address","name":"adr","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"receipient","type":"address"}],"name":"withDraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IBEP20","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"}],"name":"withdrawStuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"zeroBuyTaxMode","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052600280546001600160a01b03199081167321be370d5312f44cb42ce377bc9b8a0cef1a4c8317825560038054821661dead179055600480549091169055600b805460ff199081166001908117909255600d8390556000600e819055600f8390556010939093556011829055601282905560056013556064601455610190601555601b805460ff60a01b191690556207a120601d55601e8054610f0061ff001991841685178216179091556020805490921690921790911690556021556127106934f086f3b33b68400000046024556200010f6001620000fb69054b40b1f852bda000006064620004a5602090811b620030d917901c565b620004f860201b6200311b1790919060201c565b6025556200013b6002620000fb69054b40b1f852bda000006064620004a5602090811b620030d917901c565b6026553480156200014b57600080fd5b50600080546001600160a01b0319908116339081178355825260016020818152604093849020805460ff19169092179091556019805490921673f491e7b69e4244ad4002bc14e878a34207e38c291791829055825163c45a015560e01b815292516001600160a01b03929092169263c45a01559260048083019392829003018186803b158015620001db57600080fd5b505afa158015620001f0573d6000803e3d6000fd5b505050506040513d60208110156200020757600080fd5b5051600254604080516364e329cb60e11b81526001600160a01b0392831660048201523060248201529051919092169163c9c653969160448083019260209291908290030181600087803b1580156200025f57600080fd5b505af115801562000274573d6000803e3d6000fd5b505050506040513d60208110156200028b57600080fd5b5051601a80546001600160a01b03199081166001600160a01b0393841617825530600090815260066020908152604080832060195487168452825290912060001990559154601b80549190941691161790915569054b40b1f852bda00000602381905562000304918190620004a5811b620030d917901c565b6022556019546040516001600160a01b03909116906200032490620005fd565b6001600160a01b03909116815260405190819003602001906000f08015801562000352573d6000803e3d6000fd5b50601c80546001600160a01b039283166001600160a01b031991821617909155336000818152600760209081526040808320805460ff19908116600190811790925560088452828520805482168317905560098452828520805482168317905560038054891686528386208054831684179055308087528487208054841685179055601a548a168752600a865284872080548416851790558652838620805483168417905554909716845281842080549097161790955560168054851684179055601780548516737a15deb0caf9860dc86503eaad437aace80de9381790556018805490941673c4ec40a39d7797ba70b574cc9b4bb734fcb89386179093558181526005835283812069054b40b1f852bda00000905560235484519081529351919390927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a36200060b565b6000620004ef83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200055660201b60201c565b90505b92915050565b6000826200050957506000620004f2565b828202828482816200051757fe5b0414620004ef5760405162461bcd60e51b8152600401808060200182810382526021815260200180620058126021913960400191505060405180910390fd5b60008183620005e65760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015620005aa57818101518382015260200162000590565b50505050905090810190601f168015620005d85780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581620005f357fe5b0495945050505050565b61100b806200480783390190565b6141ec806200061b6000396000f3fe6080604052600436106104cf5760003560e01c8063722b62ad11610276578063bf56b3711161014f578063ee97f7f3116100c1578063f887ea4011610085578063f887ea4014611325578063fabb0b4f1461133a578063fe575a871461134f578063fe9fbb8014611382578063fed0d2a1146113b5578063ffb54a99146113ca576104d6565b8063ee97f7f314611234578063f0b37c0414611249578063f2fde38b1461127c578063f708a64f146112af578063f84ba65d146112ea576104d6565b8063d7b1531e11610113578063d7b1531e1461112e578063d7c0103214611143578063dd62ed3e14611188578063df20fd49146111c3578063e96fada2146111f5578063ec72d65f1461120a576104d6565b8063bf56b37114611099578063bfe10928146110ae578063c4862276146110c3578063ca33e64c146110ef578063d51ed1c814611104576104d6565b806393028afd116101e8578063a8aa1b31116101ac578063a8aa1b3114610fc4578063a9059cbb14610fd9578063b3ff8a5b14611012578063b43b783514611027578063b6a5d7de1461103c578063bd9ab5371461106f576104d6565b806393028afd14610f1457806395d89b4114610f4657806398118cb414610f5b5780639ba1fc4c14610f705780639d1944f514610f9a576104d6565b80637d1db4a51161023a5780637d1db4a514610e1057806383b4ac6814610e25578063893d20e814610e3a578063896648c114610e4f5780638b42507f14610e645780638e2eee8414610e97576104d6565b8063722b62ad14610d8c578063753d02a114610da157806378109e5414610db65780637a43e23f14610dcb5780637b7099b714610dfb576104d6565b80632f34d282116103a857806350db71fb1161031a578063617fe0ed116102de578063617fe0ed14610cca578063658d4b7f14610cdf5780636b67c4df14610d1a5780636d351d1a14610d2f5780636ddd171314610d4457806370a0823114610d59576104d6565b806350db71fb14610c06578063571ac8b014610c415780635e322d4614610c745780635e562f3b14610c895780636149a20a14610cb5576104d6565b80633eaaf86b1161036c5780633eaaf86b14610afd5780633f4218e014610b125780634355855a14610b4557806344a33fd214610b785780634d709adf14610ba257806350af449e14610bd3576104d6565b80632f34d282146109a85780632f54bf6e146109db578063313ce56714610a0e578063335f6a4314610a3957806333f3d62814610ac4576104d6565b80631ca0a28d1161044157806326e353b81161040557806326e353b8146108b457806326fae0d3146108e65780632b112e49146109195780632c4e722e1461092e5780632d48e896146109435780632d59456714610973576104d6565b80631ca0a28d1461071c5780631da1db5e146107f75780631df4ccfc1461082157806323b872dd1461083657806325b86edf14610879576104d6565b8063095ea7b311610493578063095ea7b31461062d5780630a67d2c71461067a5780630a92570f146106ad5780631161ae39146106c2578063180b0d7e146106f257806318160ddd14610707576104d6565b80630445b667146104db57806304a66b481461050257806306fdde0314610546578063088ab8ce146105d057806309302dc614610603576104d6565b366104d657005b600080fd5b3480156104e757600080fd5b506104f06113df565b60408051918252519081900360200190f35b34801561050e57600080fd5b50610544600480360360a081101561052557600080fd5b50803590602081013590604081013590606081013590608001356113e5565b005b34801561055257600080fd5b5061055b6114bf565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561059557818101518382015260200161057d565b50505050905090810190601f1680156105c25780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156105dc57600080fd5b50610544600480360360208110156105f357600080fd5b50356001600160a01b03166114e2565b34801561060f57600080fd5b506105446004803603602081101561062657600080fd5b5035611587565b34801561063957600080fd5b506106666004803603604081101561065057600080fd5b506001600160a01b0381351690602001356115f0565b604080519115158252519081900360200190f35b34801561068657600080fd5b506105446004803603602081101561069d57600080fd5b50356001600160a01b0316611657565b3480156106b957600080fd5b506104f06116d3565b3480156106ce57600080fd5b50610666600480360360408110156106e557600080fd5b50803590602001356116d9565b3480156106fe57600080fd5b506104f06116ed565b34801561071357600080fd5b506104f06116f3565b34801561072857600080fd5b506105446004803603606081101561073f57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561076957600080fd5b82018360208201111561077b57600080fd5b803590602001918460208302840111600160201b8311171561079c57600080fd5b919390929091602081019035600160201b8111156107b957600080fd5b8201836020820111156107cb57600080fd5b803590602001918460208302840111600160201b831117156107ec57600080fd5b5090925090506116f9565b34801561080357600080fd5b506105446004803603602081101561081a57600080fd5b5035611a22565b34801561082d57600080fd5b506104f0611ab2565b34801561084257600080fd5b506106666004803603606081101561085957600080fd5b506001600160a01b03813581169160208101359091169060400135611ab8565b34801561088557600080fd5b506105446004803603604081101561089c57600080fd5b506001600160a01b0381358116916020013516611b7a565b3480156108c057600080fd5b50610544600480360360408110156108d757600080fd5b50803515159060200135611cb8565b3480156108f257600080fd5b506105446004803603602081101561090957600080fd5b50356001600160a01b0316611d38565b34801561092557600080fd5b506104f0611da7565b34801561093a57600080fd5b506104f0611e06565b34801561094f57600080fd5b506105446004803603604081101561096657600080fd5b5080359060200135611e0c565b34801561097f57600080fd5b506105446004803603604081101561099657600080fd5b5080351515906020013560ff16611ebc565b3480156109b457600080fd5b50610544600480360360208110156109cb57600080fd5b50356001600160a01b0316611f25565b3480156109e757600080fd5b50610666600480360360208110156109fe57600080fd5b50356001600160a01b0316611f91565b348015610a1a57600080fd5b50610a23611fa5565b6040805160ff9092168252519081900360200190f35b348015610a4557600080fd5b5061054460048036036060811015610a5c57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b811115610a8657600080fd5b820183602082011115610a9857600080fd5b803590602001918460208302840111600160201b83111715610ab957600080fd5b919350915035611faa565b348015610ad057600080fd5b5061066660048036036040811015610ae757600080fd5b506001600160a01b038135169060200135612241565b348015610b0957600080fd5b506104f0612308565b348015610b1e57600080fd5b5061066660048036036020811015610b3557600080fd5b50356001600160a01b031661230e565b348015610b5157600080fd5b5061066660048036036020811015610b6857600080fd5b50356001600160a01b0316612323565b348015610b8457600080fd5b5061054460048036036020811015610b9b57600080fd5b5035612338565b348015610bae57600080fd5b50610bb761238f565b604080516001600160a01b039092168252519081900360200190f35b348015610bdf57600080fd5b5061066660048036036020811015610bf657600080fd5b50356001600160a01b031661239e565b348015610c1257600080fd5b5061054460048036036040811015610c2957600080fd5b506001600160a01b03813516906020013515156123b3565b348015610c4d57600080fd5b5061066660048036036020811015610c6457600080fd5b50356001600160a01b0316612426565b348015610c8057600080fd5b50610666612434565b348015610c9557600080fd5b5061054460048036036020811015610cac57600080fd5b50351515612442565b348015610cc157600080fd5b506104f0612498565b348015610cd657600080fd5b506106666124b1565b348015610ceb57600080fd5b5061054460048036036040811015610d0257600080fd5b506001600160a01b03813516906020013515156124ba565b348015610d2657600080fd5b506104f061252d565b348015610d3b57600080fd5b506104f0612533565b348015610d5057600080fd5b5061066661254c565b348015610d6557600080fd5b506104f060048036036020811015610d7c57600080fd5b50356001600160a01b0316612555565b348015610d9857600080fd5b50610a2361257d565b348015610dad57600080fd5b5061054461258b565b348015610dc257600080fd5b506104f06125f5565b348015610dd757600080fd5b506104f060048036036040811015610dee57600080fd5b50803590602001356125fb565b348015610e0757600080fd5b506104f06127dd565b348015610e1c57600080fd5b506104f06127e3565b348015610e3157600080fd5b506106666127e9565b348015610e4657600080fd5b50610bb76127f9565b348015610e5b57600080fd5b50610666612808565b348015610e7057600080fd5b5061066660048036036020811015610e8757600080fd5b50356001600160a01b0316612811565b348015610ea357600080fd5b5061054460048036036040811015610eba57600080fd5b810190602081018135600160201b811115610ed457600080fd5b820183602082011115610ee657600080fd5b803590602001918460208302840111600160201b83111715610f0757600080fd5b9193509150351515612826565b348015610f2057600080fd5b506104f060048036036040811015610f3757600080fd5b508035906020013515156128be565b348015610f5257600080fd5b5061055b61294c565b348015610f6757600080fd5b506104f061296b565b348015610f7c57600080fd5b5061054460048036036020811015610f9357600080fd5b5035612971565b348015610fa657600080fd5b5061054460048036036020811015610fbd57600080fd5b50356129b9565b348015610fd057600080fd5b50610bb7612a15565b348015610fe557600080fd5b5061066660048036036040811015610ffc57600080fd5b506001600160a01b038135169060200135612a24565b34801561101e57600080fd5b506104f0612a31565b34801561103357600080fd5b506104f0612a37565b34801561104857600080fd5b506105446004803603602081101561105f57600080fd5b50356001600160a01b0316612a50565b34801561107b57600080fd5b506105446004803603602081101561109257600080fd5b5035612aba565b3480156110a557600080fd5b506104f0612b1d565b3480156110ba57600080fd5b50610bb7612b23565b3480156110cf57600080fd5b50610544600480360360208110156110e657600080fd5b50351515612b32565b3480156110fb57600080fd5b50610bb7612b94565b34801561111057600080fd5b506104f06004803603602081101561112757600080fd5b5035612ba3565b34801561113a57600080fd5b50610bb7612bd7565b34801561114f57600080fd5b506105446004803603606081101561116657600080fd5b506001600160a01b038135811691602081013582169160409091013516612be6565b34801561119457600080fd5b506104f0600480360360408110156111ab57600080fd5b506001600160a01b0381358116916020013516612c6d565b3480156111cf57600080fd5b50610544600480360360408110156111e657600080fd5b50803515159060200135612c98565b34801561120157600080fd5b50610bb7612d10565b34801561121657600080fd5b506105446004803603602081101561122d57600080fd5b5035612d1f565b34801561124057600080fd5b50610bb7612d67565b34801561125557600080fd5b506105446004803603602081101561126c57600080fd5b50356001600160a01b0316612d7d565b34801561128857600080fd5b506105446004803603602081101561129f57600080fd5b50356001600160a01b0316612de1565b3480156112bb57600080fd5b50610544600480360360408110156112d257600080fd5b506001600160a01b0381351690602001351515612e92565b3480156112f657600080fd5b506105446004803603604081101561130d57600080fd5b506001600160a01b0381351690602001351515613008565b34801561133157600080fd5b50610bb761307b565b34801561134657600080fd5b506104f061308a565b34801561135b57600080fd5b506106666004803603602081101561137257600080fd5b50356001600160a01b0316613090565b34801561138e57600080fd5b50610666600480360360208110156113a557600080fd5b50356001600160a01b03166130a5565b3480156113c157600080fd5b506104f06130c3565b3480156113d657600080fd5b506106666130c9565b60245481565b6113ee336130a5565b61142d576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b600f8590556010849055601183905560128290556114578261145185818989613174565b90613174565b601355601481905560028104601354106114b8576040805162461bcd60e51b815260206004820152601c60248201527f466565732063616e6e6f74206265206d6f7265207468616e2035302500000000604482015290519081900360640190fd5b5050505050565b60408051808201909152600981526853616e7461446f676560b81b602082015290565b6114eb33611f91565b611525576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b601c546040805163144fa6d760e01b81526001600160a01b0384811660048301529151919092169163144fa6d791602480830192600092919082900301818387803b15801561157357600080fd5b505af11580156114b8573d6000803e3d6000fd5b61159033611f91565b6115ca576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6115ea816115e469054b40b1f852bda000006103e86130d9565b9061311b565b60265550565b3360008181526006602090815260408083206001600160a01b038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a35060015b92915050565b61166033611f91565b61169a576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6040516001600160a01b038216904780156108fc02916000818181858888f193505050501580156116cf573d6000803e3d6000fd5b5050565b60215481565b6000826116e583612ba3565b119392505050565b60145481565b60235490565b61170233611f91565b61173c576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b610321831061177c5760405162461bcd60e51b815260040180806020018281038252602d81526020018061418a602d913960400191505060405180910390fd5b8281146117ba5760405162461bcd60e51b81526004018080602001828103825260288152602001806140d56028913960400191505060405180910390fd5b6000805b848110156117e8578383828181106117d257fe5b60200291909101359290920191506001016117be565b50633b9aca0081026117f987612555565b101561184c576040805162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c65740000000000604482015290519081900360640190fd5b60005b84811015611985576118988787878481811061186757fe5b905060200201356001600160a01b0316600960ff16600a0a87878681811061188b57fe5b90506020020135026131ce565b50600a60008787848181106118a957fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff1661197d57601c546001600160a01b03166314b6ca968787848181106118f057fe5b905060200201356001600160a01b031661192489898681811061190f57fe5b905060200201356001600160a01b0316612555565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561196a57600080fd5b505af192505050801561197b575060015b505b60010161184f565b506001600160a01b0386166000908152600a602052604090205460ff16611a1a57601c546001600160a01b03166314b6ca96876119c181612555565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b158015611a0757600080fd5b505af1925050508015611a18575060015b505b505050505050565b611a2b336130a5565b611a6a576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b60175447906001600160a01b03166108fc60648484025b049081150290604051600060405180830381858888f19350505050158015611aad573d6000803e3d6000fd5b505050565b60135481565b6001600160a01b038316600090815260066020908152604080832033845290915281205460001914611b65576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600682528381203382529091529190912054611b409184906132ea565b6001600160a01b03851660009081526006602090815260408083203384529091529020555b611b70848484613381565b90505b9392505050565b611b8333611f91565b611bbd576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6000826001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015611c0c57600080fd5b505afa158015611c20573d6000803e3d6000fd5b505050506040513d6020811015611c3657600080fd5b50516040805163a9059cbb60e01b81526001600160a01b0385811660048301526024820184905291519293509085169163a9059cbb916044808201926020929091908290030181600087803b158015611c8e57600080fd5b505af1158015611ca2573d6000803e3d6000fd5b505050506040513d60208110156114b857600080fd5b611cc133611f91565b611cfb576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b601b805460ff60a01b1916600160a01b8415158102919091179182905560ff9104168015611d295750600e54155b156116cf5743600e55600d5550565b611d4133611f91565b611d7b576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b602080546001600160a01b039092166301000000026301000000600160b81b0319909216919091179055565b6022546004546001600160a01b039081166000908152600560205260408082205460035490931682528120549092611e01929091611dfb9190611df59069054b40b1f852bda000009061399f565b9061399f565b906130d9565b905090565b60225481565b611e15336130a5565b611e54576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b601c54604080516316a4744b60e11b8152600481018590526024810184905290516001600160a01b0390921691632d48e8969160448082019260009290919082900301818387803b158015611ea857600080fd5b505af1158015611a1a573d6000803e3d6000fd5b611ec533611f91565b611eff576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b601e805460ff19169215159290921761ff00191661010060ff9290921691909102179055565b611f2e33611f91565b611f68576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b601b80546001600160a01b039092166001600160a01b0319909216821790556000526007602052565b6000546001600160a01b0390811691161490565b600990565b611fb333611f91565b611fed576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6107d1821061202d5760405162461bcd60e51b815260040180806020018281038252602e8152602001806140fd602e913960400191505060405180910390fd5b633b9aca00810a82028061204086612555565b1015612093576040805162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c65740000000000604482015290519081900360640190fd5b60005b838110156121a5576120cd868686848181106120ae57fe5b905060200201356001600160a01b0316600960ff16600a0a86026131ce565b50600a60008686848181106120de57fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff1661219d57601c546001600160a01b03166314b6ca9686868481811061212557fe5b905060200201356001600160a01b031661214488888681811061190f57fe5b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561218a57600080fd5b505af192505050801561219b575060015b505b600101612096565b506001600160a01b0385166000908152600a602052604090205460ff166114b857601c546001600160a01b03166314b6ca96866121e181612555565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561222757600080fd5b505af1925050508015612238575060015b6114b8576114b8565b600061224c33611f91565b612286576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6040805163a9059cbb60e01b81523360048201526024810184905290516001600160a01b0385169163a9059cbb9160448083019260209291908290030181600087803b1580156122d557600080fd5b505af11580156122e9573d6000803e3d6000fd5b505050506040513d60208110156122ff57600080fd5b50519392505050565b60235481565b60076020526000908152604090205460ff1681565b600a6020526000908152604090205460ff1681565b612341336130a5565b612380576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b47336108fc6064848402611a81565b601b546001600160a01b031681565b60096020526000908152604090205460ff1681565b6123bc336130a5565b6123fb576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6000611651826000196115f0565b602054610100900460ff1681565b61244b33611f91565b612485576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b600b805460ff1916911515919091179055565b6000611e016022546025546130d990919063ffffffff16565b601e5460ff1681565b6124c3336130a5565b612502576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b60115481565b6000611e016022546024546130d990919063ffffffff16565b60205460ff1681565b6022546001600160a01b038216600090815260056020526040812054909161165191906130d9565b601e54610100900460ff1681565b601a60009054906101000a90046001600160a01b03166001600160a01b031663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156125db57600080fd5b505af11580156125ef573d6000803e3d6000fd5b50505050565b60265481565b602054600090630100000090046001600160a01b0316331480612622575061262233611f91565b61262b57600080fd5b6021805460010190558261263f5760215492505b60205462010000900460ff1615612689576040805162461bcd60e51b81526020600482015260096024820152682a393c9030b3b0b4b760b91b604482015290519081900360640190fd5b816126cf57602354604080519182525184917f72725a3b1e5bd622d6bcd1339bb31279c351abe8f541ac7fd320f24e1b1641f2919081900360200190a250602354611651565b60008212156126f1576023546126e990600084900361399f565b602355612702565b6023546126fe9083613174565b6023555b6023546001600160801b03101561271f576001600160801b036023555b6023546127379069054b40b1f852bda00000906130d9565b602255601b546040805160016209351760e01b0319815290516001600160a01b039092169163fff6cae99160048082019260009290919082900301818387803b15801561278357600080fd5b505af1158015612797573d6000803e3d6000fd5b505060235460408051918252518693507f72725a3b1e5bd622d6bcd1339bb31279c351abe8f541ac7fd320f24e1b1641f292509081900360200190a25060235492915050565b60125481565b60255481565b60205462010000900460ff161590565b6000546001600160a01b031690565b600b5460ff1681565b60086020526000908152604090205460ff1681565b61282f33611f91565b612869576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b60005b828110156125ef5781600c600086868581811061288557fe5b602090810292909201356001600160a01b0316835250810191909152604001600020805460ff191691151591909117905560010161286c565b602054600090630100000090046001600160a01b03163314806128e557506128e533611f91565b6128ee57600080fd5b811561292c57612925600061292060001961291a876115e46103e86023546130d990919063ffffffff16565b906139e1565b6125fb565b9050611651565b611b736000612920856115e46103e86023546130d990919063ffffffff16565b60408051808201909152600581526453414e544160d81b602082015290565b600f5481565b61297a33611f91565b6129b4576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b600e55565b6129c2336130a5565b612a01576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b620dbba08110612a1057600080fd5b601d55565b601a546001600160a01b031681565b6000611b73338484613381565b60105481565b6000611e016022546026546130d990919063ffffffff16565b612a5933611f91565b612a93576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b612ac333611f91565b612afd576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b612b17816115e469054b40b1f852bda000006103e86130d9565b60255550565b600e5481565b601c546001600160a01b031681565b612b3b336130a5565b612b7a576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b602080549115156101000261ff0019909216919091179055565b6016546001600160a01b031681565b6000611651612bb0611da7565b601a54611dfb90612bd0906002906115e4906001600160a01b0316612555565b859061311b565b6018546001600160a01b031681565b612bef336130a5565b612c2e576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b601680546001600160a01b039485166001600160a01b031991821617909155601780549385169382169390931790925560188054919093169116179055565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b612ca1336130a5565b612ce0576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6020805460ff1916831515179055612d09816115e469054b40b1f852bda00000620186a06130d9565b6024555050565b6017546001600160a01b031681565b612d2833611f91565b612d62576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b601555565b602054630100000090046001600160a01b031681565b612d8633611f91565b612dc0576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6001600160a01b03166000908152600160205260409020805460ff19169055565b612dea33611f91565b612e24576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b038316908117825580825260016020818152604093849020805460ff1916909217909155825191825291517f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163929181900390910190a150565b612e9b336130a5565b612eda576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b0382163014801590612f015750601a546001600160a01b03838116911614155b612f0a57600080fd5b6001600160a01b0382166000908152600a60205260409020805460ff19168215801591909117909155612fa757601c5460408051630a5b654b60e11b81526001600160a01b03858116600483015260006024830181905292519316926314b6ca969260448084019391929182900301818387803b158015612f8a57600080fd5b505af1158015612f9e573d6000803e3d6000fd5b505050506116cf565b601c546001600160a01b03166314b6ca9683612fc281612555565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b158015611ea857600080fd5b613011336130a5565b613050576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6019546001600160a01b031681565b600d5481565b600c6020526000908152604090205460ff1681565b6001600160a01b031660009081526001602052604090205460ff1690565b60155481565b601b54600160a01b900460ff1681565b6000611b7383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613a29565b60008261312a57506000611651565b8282028284828161313757fe5b0414611b735760405162461bcd60e51b815260040180806020018281038252602181526020018061412b6021913960400191505060405180910390fd5b600082820183811015611b73576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000806131e66022548461311b90919063ffffffff16565b905061324e8160405180604001604052806014815260200173496e73756666696369656e742042616c616e636560601b81525060056000896001600160a01b03166001600160a01b03168152602001908152602001600020546132ea9092919063ffffffff16565b6001600160a01b03808716600090815260056020526040808220939093559086168152205461327d9082613174565b6001600160a01b03808616600081815260056020526040902092909255602254908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906132ce9085906130d9565b60408051918252519081900360200190a3506001949350505050565b600081848411156133795760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561333e578181015183820152602001613326565b50505050905090810190601f16801561336b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60205460009062010000900460ff16156133a7576133a08484846131ce565b9050611b73565b6001600160a01b03841660009081526001602052604090205460ff1661341c57601b54600160a01b900460ff1661341c576040805162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b604482015290519081900360640190fd5b60006134336022548461311b90919063ffffffff16565b6001600160a01b03861660009081526001602052604090205490915060ff1615801561346857506001600160a01b0384163014155b801561348257506003546001600160a01b03858116911614155b801561349c5750601a546001600160a01b03858116911614155b80156134b657506017546001600160a01b03858116911614155b80156134d057506018546001600160a01b03858116911614155b80156134ea57506016546001600160a01b03858116911614155b156135415760006134fa85612555565b9050602654828201111561353f5760405162461bcd60e51b815260040180806020018281038252603e81526020018061414c603e913960400191505060405180910390fd5b505b601a546001600160a01b0386811691161480156135605750601e5460ff165b801561358557506001600160a01b03841660009081526009602052604090205460ff16155b15613615576001600160a01b0384166000908152601f602052604090205442116135ec576040805162461bcd60e51b815260206004820152601360248201527262757920436f6f6c646f776e2065786973747360681b604482015290519081900360640190fd5b601e546001600160a01b0385166000908152601f6020526040902061010090910460ff16420190555b600b5460ff16156136a1576001600160a01b0385166000908152600c602052604090205460ff1615801561366257506001600160a01b0384166000908152600c602052604090205460ff16155b6136a1576040805162461bcd60e51b815260206004820152600b60248201526a109b1858dadb1a5cdd195960aa1b604482015290519081900360640190fd5b6136ab8582613a8e565b6136b3613afc565b156136c0576136c0613b51565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0388166000908152600590915291909120546137129183906132ea565b6001600160a01b03861660009081526005602052604081209190915561373786613faa565b1580613749575061374785613faa565b155b61377057601a5461376b90879084906001600160a01b03898116911614613fc9565b613772565b815b6001600160a01b0386166000908152600560205260409020549091506137989082613174565b6001600160a01b038087166000908152600560209081526040808320949094559189168152600a909152205460ff1661383f57601c546001600160a01b03166314b6ca96876137e681612555565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561382c57600080fd5b505af192505050801561383d575060015b505b6001600160a01b0385166000908152600a602052604090205460ff166138d357601c546001600160a01b03166314b6ca968661387a81612555565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156138c057600080fd5b505af19250505080156138d1575060015b505b601c54601d54604080516001624d3b8760e01b031981526004810192909252516001600160a01b039092169163ffb2c4799160248082019260009290919082900301818387803b15801561392657600080fd5b505af1925050508015613937575060015b50846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef613982602254856130d990919063ffffffff16565b60408051918252519081900360200190a350600195945050505050565b6000611b7383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506132ea565b6000828202600160ff1b81141580613a025750600160ff1b84811690841614155b613a0b57600080fd5b821580613a20575083838281613a1d57fe5b05145b611b7357600080fd5b60008183613a785760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561333e578181015183820152602001613326565b506000838581613a8457fe5b0495945050505050565b60255481111580613ab757506001600160a01b03821660009081526008602052604090205460ff165b6116cf576040805162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015290519081900360640190fd5b601a546000906001600160a01b03163314801590613b23575060205462010000900460ff16155b8015613b31575060205460ff165b8015611e0157505060245430600090815260056020526040902054101590565b6020805462ff0000191662010000179055600f54602254602454600091613b7891906130d9565b90506000613b9a6002611dfb856115e4601354876130d990919063ffffffff16565b90506000613ba8838361399f565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110613bdc57fe5b6001600160a01b039283166020918202929092010152600254825191169082906001908110613c0757fe5b6001600160a01b0392831660209182029290920181019190915260195460405163791ac94760e01b8152600481018681526000602483018190523060648401819052426084850181905260a060448601908152895160a487015289514799979097169763791ac947978c9795968c9690939260c49091019187820191028083838b5b83811015613ca1578181015183820152602001613c89565b505050509050019650505050505050600060405180830381600087803b158015613cca57600080fd5b505af1158015613cde573d6000803e3d6000fd5b505050506000613cf7824761399f90919063ffffffff16565b90506000613d12613d098960026130d9565b6013549061399f565b90506000613d276002611dfb8481878e61311b565b90506000613d4483611dfb6010548761311b90919063ffffffff16565b90506000613d6184611dfb6011548861311b90919063ffffffff16565b90506000613d7e85611dfb6012548961311b90919063ffffffff16565b9050601c60009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0846040518263ffffffff1660e01b81526004016000604051808303818588803b158015613dd057600080fd5b505af193505050508015613de2575060015b506017546040516000916001600160a01b03169061753090859084818181858888f193505050503d8060008114613e35576040519150601f19603f3d011682016040523d82523d6000602084013e613e3a565b606091505b50506018546040519192506001600160a01b0316906175309084906000818181858888f193505050503d8060008114613e8f576040519150601f19603f3d011682016040523d82523d6000602084013e613e94565b606091505b5060009250508b159050613f8f576019546016546040805163f305d71960e01b8152306004820152602481018f905260006044820181905260648201526001600160a01b0392831660848201524260a48201529051919092169163f305d71991889160c48082019260609290919082900301818588803b158015613f1757600080fd5b505af1158015613f2b573d6000803e3d6000fd5b50505050506040513d6060811015613f4257600080fd5b50506022547f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506908690613f76908e906130d9565b6040805192835260208301919091528051918290030190a15b50506020805462ff0000191690555050505050505050505050565b6001600160a01b031660009081526007602052604090205460ff161590565b600060648215613fd857506015545b602054610100900460ff168015613fed575082155b15613ff6575060005b600061401a826115e46013546115e46014546064028a6130d990919063ffffffff16565b90508315801561402f575043600d54600e5401115b1561404757614044605a6115e48760646130d9565b90505b306000908152600560205260409020546140619082613174565b306000818152600560205260409020919091556022546001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906140af9085906130d9565b60408051918252519081900360200190a36140ca858261399f565b969550505050505056fe4d69736d61746368206265747765656e204164647265737320616e6420746f6b656e20636f756e74474153204572726f723a206d61782061697264726f70206c696d6974206973203230303020616464726573736573536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77546f74616c20486f6c64696e672069732063757272656e746c79206c696d697465642c20796f752063616e206e6f74206275792074686174206d7563682e474153204572726f723a206d61782061697264726f70206c696d69742069732035303020616464726573736573a26469706673582212208f7a7dd392943c2344b5fd3f40bc6ec5681e7a4b1bf3a1e5a3fadcf3bcad2b7b64736f6c6343000706003360806040526a084595161401484a000000600555610a8c600655662386f26fc10000600755600880547321be370d5312f44cb42ce377bc9b8a0cef1a4c836001600160a01b0319918216811790925560098054909116909117905534801561006657600080fd5b5060405161100b38038061100b8339818101604052602081101561008957600080fd5b50516001600160a01b0381166100b35773f491e7b69e4244ad4002bc14e878a34207e38c296100b5565b805b600a80546001600160a01b03929092166001600160a01b0319928316179055600080549091163317905550610f1c806100ef6000396000f3fe6080604052600436106100f35760003560e01c8063997664d71161008a578063efca2eed11610059578063efca2eed146102ce578063f0fc6bca146102e3578063ffb2c479146102f8578063ffd49c8414610322576100f3565b8063997664d71461024b578063ce7c2ac214610260578063d0e30db0146102b1578063e2d2e219146102b9576100f3565b80632d48e896116100c65780632d48e896146101c05780633a98ef39146101f05780634fab0ae81461020557806399248ea71461021a576100f3565b806311ce023d146100f8578063144fa6d71461011f57806314b6ca961461015457806328fd31981461018d575b600080fd5b34801561010457600080fd5b5061010d610337565b60408051918252519081900360200190f35b34801561012b57600080fd5b506101526004803603602081101561014257600080fd5b50356001600160a01b031661033d565b005b34801561016057600080fd5b506101526004803603604081101561017757600080fd5b506001600160a01b0381351690602001356103ff565b34801561019957600080fd5b5061010d600480360360208110156101b057600080fd5b50356001600160a01b0316610524565b3480156101cc57600080fd5b50610152600480360360408110156101e357600080fd5b50803590602001356105b0565b3480156101fc57600080fd5b5061010d6105d2565b34801561021157600080fd5b5061010d6105d8565b34801561022657600080fd5b5061022f6105de565b604080516001600160a01b039092168252519081900360200190f35b34801561025757600080fd5b5061010d6105ed565b34801561026c57600080fd5b506102936004803603602081101561028357600080fd5b50356001600160a01b03166105f3565b60408051938452602084019290925282820152519081900360600190f35b610152610614565b3480156102c557600080fd5b5061010d6108bb565b3480156102da57600080fd5b5061010d6108c1565b3480156102ef57600080fd5b506101526108c7565b34801561030457600080fd5b506101526004803603602081101561031b57600080fd5b50356108d2565b34801561032e57600080fd5b5061010d6109b4565b60055481565b6000546001600160a01b0316331461035457600080fd5b600880546001600160a01b0319166001600160a01b0383811691909117909155600a54604080516315ab88c960e31b81529051919092169163ad5c4648916004808301926020929190829003018186803b1580156103b157600080fd5b505afa1580156103c5573d6000803e3d6000fd5b505050506040513d60208110156103db57600080fd5b5051600980546001600160a01b0319166001600160a01b0390921691909117905550565b6000546001600160a01b0316331461041657600080fd5b6001600160a01b0382166000908152600e60205260409020541561043d5761043d826109ba565b60008111801561046357506001600160a01b0382166000908152600e6020526040902054155b156104765761047182610ae2565b6104a9565b8015801561049b57506001600160a01b0382166000908152600e602052604090205415155b156104a9576104a982610b43565b6001600160a01b0382166000908152600e60205260409020546001546104da9183916104d491610c30565b90610c7b565b6001556001600160a01b0382166000908152600e6020526040902081905561050181610cd5565b6001600160a01b039092166000908152600e602052604090206001019190915550565b6001600160a01b0381166000908152600e6020526040812054610549575060006105ab565b6001600160a01b0382166000908152600e602052604081205461056b90610cd5565b6001600160a01b0384166000908152600e602052604090206001015490915080821161059c576000925050506105ab565b6105a68282610c30565b925050505b919050565b6000546001600160a01b031633146105c757600080fd5b600691909155600755565b60015481565b60075481565b6008546001600160a01b031681565b60025481565b600e6020526000908152604090208054600182015460029092015490919083565b6000546001600160a01b0316331461062b57600080fd5b600854604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561067657600080fd5b505afa15801561068a573d6000803e3d6000fd5b505050506040513d60208110156106a057600080fd5b50516040805160028082526060820183529293506000929091602083019080368337505060095482519293506001600160a01b0316918391506000906106e257fe5b6001600160a01b03928316602091820292909201015260085482519116908290600190811061070d57fe5b6001600160a01b03928316602091820292909201015260095460085482169116146107f357600a5460405163b6f9de9560e01b8152600060048201818152306044840181905242606485018190526080602486019081528751608487015287516001600160a01b039097169663b6f9de95963496958a9594939092909160a40190602080880191028083838b5b838110156107b257818101518382015260200161079a565b50505050905001955050505050506000604051808303818588803b1580156107d957600080fd5b505af11580156107ed573d6000803e3d6000fd5b50505050505b600854604080516370a0823160e01b815230600482015290516000926108799286926001600160a01b03909216916370a0823191602480820192602092909190829003018186803b15801561084757600080fd5b505afa15801561085b573d6000803e3d6000fd5b505050506040513d602081101561087157600080fd5b505190610c30565b6002549091506108899082610c7b565b6002556001546005546108b3916108aa916108a49085610cf2565b90610d4b565b60045490610c7b565b600455505050565b60045481565b60035481565b6108d0336109ba565b565b6000546001600160a01b031633146108e957600080fd5b600b54806108f757506109b1565b6000805a905060005b848310801561090e57508381105b156109ac5783600f5410610922576000600f555b61094e600b600f548154811061093457fe5b6000918252602090912001546001600160a01b0316610d8d565b1561097f5761097f600b600f548154811061096557fe5b6000918252602090912001546001600160a01b03166109ba565b61099461098d5a8490610c30565b8490610c7b565b92505a600f8054600190810190915590925001610900565b505050505b50565b60065481565b6001600160a01b0381166000908152600e60205260409020546109dc576109b1565b60006109e782610524565b90508015610ade576003546109fc9082610c7b565b6003556008546040805163a9059cbb60e01b81526001600160a01b038581166004830152602482018590529151919092169163a9059cbb9160448083019260209291908290030181600087803b158015610a5557600080fd5b505af1158015610a69573d6000803e3d6000fd5b505050506040513d6020811015610a7f57600080fd5b50506001600160a01b0382166000908152600d60209081526040808320429055600e909152902060020154610ab49082610c7b565b6001600160a01b0383166000908152600e6020526040902060028101919091555461050190610cd5565b5050565b600b80546001600160a01b039092166000818152600c60205260408120849055600184018355919091527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db990910180546001600160a01b0319169091179055565b600b80546000198101908110610b5557fe5b60009182526020808320909101546001600160a01b038481168452600c909252604090922054600b80549290931692918110610b8d57fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559183168152600c918290526040812054600b8054919392916000198101908110610bdb57fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902055600b805480610c0b57fe5b600082815260209020810160001990810180546001600160a01b031916905501905550565b6000610c7283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610dc9565b90505b92915050565b600082820183811015610c72576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000610c756005546108a460045485610cf290919063ffffffff16565b600082610d0157506000610c75565b82820282848281610d0e57fe5b0414610c725760405162461bcd60e51b8152600401808060200182810382526021815260200180610ec66021913960400191505060405180910390fd5b6000610c7283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610e60565b6006546001600160a01b0382166000908152600d60205260408120549091429101108015610c755750600754610dc283610524565b1192915050565b60008184841115610e585760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610e1d578181015183820152602001610e05565b50505050905090810190601f168015610e4a5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60008183610eaf5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610e1d578181015183820152602001610e05565b506000838581610ebb57fe5b049594505050505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a26469706673582212207535dc4d89b65116738e05c4d547fb791cb2ba2e5b57665ea52cee83fd8b4a3b64736f6c63430007060033536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77
Deployed Bytecode
0x6080604052600436106104cf5760003560e01c8063722b62ad11610276578063bf56b3711161014f578063ee97f7f3116100c1578063f887ea4011610085578063f887ea4014611325578063fabb0b4f1461133a578063fe575a871461134f578063fe9fbb8014611382578063fed0d2a1146113b5578063ffb54a99146113ca576104d6565b8063ee97f7f314611234578063f0b37c0414611249578063f2fde38b1461127c578063f708a64f146112af578063f84ba65d146112ea576104d6565b8063d7b1531e11610113578063d7b1531e1461112e578063d7c0103214611143578063dd62ed3e14611188578063df20fd49146111c3578063e96fada2146111f5578063ec72d65f1461120a576104d6565b8063bf56b37114611099578063bfe10928146110ae578063c4862276146110c3578063ca33e64c146110ef578063d51ed1c814611104576104d6565b806393028afd116101e8578063a8aa1b31116101ac578063a8aa1b3114610fc4578063a9059cbb14610fd9578063b3ff8a5b14611012578063b43b783514611027578063b6a5d7de1461103c578063bd9ab5371461106f576104d6565b806393028afd14610f1457806395d89b4114610f4657806398118cb414610f5b5780639ba1fc4c14610f705780639d1944f514610f9a576104d6565b80637d1db4a51161023a5780637d1db4a514610e1057806383b4ac6814610e25578063893d20e814610e3a578063896648c114610e4f5780638b42507f14610e645780638e2eee8414610e97576104d6565b8063722b62ad14610d8c578063753d02a114610da157806378109e5414610db65780637a43e23f14610dcb5780637b7099b714610dfb576104d6565b80632f34d282116103a857806350db71fb1161031a578063617fe0ed116102de578063617fe0ed14610cca578063658d4b7f14610cdf5780636b67c4df14610d1a5780636d351d1a14610d2f5780636ddd171314610d4457806370a0823114610d59576104d6565b806350db71fb14610c06578063571ac8b014610c415780635e322d4614610c745780635e562f3b14610c895780636149a20a14610cb5576104d6565b80633eaaf86b1161036c5780633eaaf86b14610afd5780633f4218e014610b125780634355855a14610b4557806344a33fd214610b785780634d709adf14610ba257806350af449e14610bd3576104d6565b80632f34d282146109a85780632f54bf6e146109db578063313ce56714610a0e578063335f6a4314610a3957806333f3d62814610ac4576104d6565b80631ca0a28d1161044157806326e353b81161040557806326e353b8146108b457806326fae0d3146108e65780632b112e49146109195780632c4e722e1461092e5780632d48e896146109435780632d59456714610973576104d6565b80631ca0a28d1461071c5780631da1db5e146107f75780631df4ccfc1461082157806323b872dd1461083657806325b86edf14610879576104d6565b8063095ea7b311610493578063095ea7b31461062d5780630a67d2c71461067a5780630a92570f146106ad5780631161ae39146106c2578063180b0d7e146106f257806318160ddd14610707576104d6565b80630445b667146104db57806304a66b481461050257806306fdde0314610546578063088ab8ce146105d057806309302dc614610603576104d6565b366104d657005b600080fd5b3480156104e757600080fd5b506104f06113df565b60408051918252519081900360200190f35b34801561050e57600080fd5b50610544600480360360a081101561052557600080fd5b50803590602081013590604081013590606081013590608001356113e5565b005b34801561055257600080fd5b5061055b6114bf565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561059557818101518382015260200161057d565b50505050905090810190601f1680156105c25780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156105dc57600080fd5b50610544600480360360208110156105f357600080fd5b50356001600160a01b03166114e2565b34801561060f57600080fd5b506105446004803603602081101561062657600080fd5b5035611587565b34801561063957600080fd5b506106666004803603604081101561065057600080fd5b506001600160a01b0381351690602001356115f0565b604080519115158252519081900360200190f35b34801561068657600080fd5b506105446004803603602081101561069d57600080fd5b50356001600160a01b0316611657565b3480156106b957600080fd5b506104f06116d3565b3480156106ce57600080fd5b50610666600480360360408110156106e557600080fd5b50803590602001356116d9565b3480156106fe57600080fd5b506104f06116ed565b34801561071357600080fd5b506104f06116f3565b34801561072857600080fd5b506105446004803603606081101561073f57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561076957600080fd5b82018360208201111561077b57600080fd5b803590602001918460208302840111600160201b8311171561079c57600080fd5b919390929091602081019035600160201b8111156107b957600080fd5b8201836020820111156107cb57600080fd5b803590602001918460208302840111600160201b831117156107ec57600080fd5b5090925090506116f9565b34801561080357600080fd5b506105446004803603602081101561081a57600080fd5b5035611a22565b34801561082d57600080fd5b506104f0611ab2565b34801561084257600080fd5b506106666004803603606081101561085957600080fd5b506001600160a01b03813581169160208101359091169060400135611ab8565b34801561088557600080fd5b506105446004803603604081101561089c57600080fd5b506001600160a01b0381358116916020013516611b7a565b3480156108c057600080fd5b50610544600480360360408110156108d757600080fd5b50803515159060200135611cb8565b3480156108f257600080fd5b506105446004803603602081101561090957600080fd5b50356001600160a01b0316611d38565b34801561092557600080fd5b506104f0611da7565b34801561093a57600080fd5b506104f0611e06565b34801561094f57600080fd5b506105446004803603604081101561096657600080fd5b5080359060200135611e0c565b34801561097f57600080fd5b506105446004803603604081101561099657600080fd5b5080351515906020013560ff16611ebc565b3480156109b457600080fd5b50610544600480360360208110156109cb57600080fd5b50356001600160a01b0316611f25565b3480156109e757600080fd5b50610666600480360360208110156109fe57600080fd5b50356001600160a01b0316611f91565b348015610a1a57600080fd5b50610a23611fa5565b6040805160ff9092168252519081900360200190f35b348015610a4557600080fd5b5061054460048036036060811015610a5c57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b811115610a8657600080fd5b820183602082011115610a9857600080fd5b803590602001918460208302840111600160201b83111715610ab957600080fd5b919350915035611faa565b348015610ad057600080fd5b5061066660048036036040811015610ae757600080fd5b506001600160a01b038135169060200135612241565b348015610b0957600080fd5b506104f0612308565b348015610b1e57600080fd5b5061066660048036036020811015610b3557600080fd5b50356001600160a01b031661230e565b348015610b5157600080fd5b5061066660048036036020811015610b6857600080fd5b50356001600160a01b0316612323565b348015610b8457600080fd5b5061054460048036036020811015610b9b57600080fd5b5035612338565b348015610bae57600080fd5b50610bb761238f565b604080516001600160a01b039092168252519081900360200190f35b348015610bdf57600080fd5b5061066660048036036020811015610bf657600080fd5b50356001600160a01b031661239e565b348015610c1257600080fd5b5061054460048036036040811015610c2957600080fd5b506001600160a01b03813516906020013515156123b3565b348015610c4d57600080fd5b5061066660048036036020811015610c6457600080fd5b50356001600160a01b0316612426565b348015610c8057600080fd5b50610666612434565b348015610c9557600080fd5b5061054460048036036020811015610cac57600080fd5b50351515612442565b348015610cc157600080fd5b506104f0612498565b348015610cd657600080fd5b506106666124b1565b348015610ceb57600080fd5b5061054460048036036040811015610d0257600080fd5b506001600160a01b03813516906020013515156124ba565b348015610d2657600080fd5b506104f061252d565b348015610d3b57600080fd5b506104f0612533565b348015610d5057600080fd5b5061066661254c565b348015610d6557600080fd5b506104f060048036036020811015610d7c57600080fd5b50356001600160a01b0316612555565b348015610d9857600080fd5b50610a2361257d565b348015610dad57600080fd5b5061054461258b565b348015610dc257600080fd5b506104f06125f5565b348015610dd757600080fd5b506104f060048036036040811015610dee57600080fd5b50803590602001356125fb565b348015610e0757600080fd5b506104f06127dd565b348015610e1c57600080fd5b506104f06127e3565b348015610e3157600080fd5b506106666127e9565b348015610e4657600080fd5b50610bb76127f9565b348015610e5b57600080fd5b50610666612808565b348015610e7057600080fd5b5061066660048036036020811015610e8757600080fd5b50356001600160a01b0316612811565b348015610ea357600080fd5b5061054460048036036040811015610eba57600080fd5b810190602081018135600160201b811115610ed457600080fd5b820183602082011115610ee657600080fd5b803590602001918460208302840111600160201b83111715610f0757600080fd5b9193509150351515612826565b348015610f2057600080fd5b506104f060048036036040811015610f3757600080fd5b508035906020013515156128be565b348015610f5257600080fd5b5061055b61294c565b348015610f6757600080fd5b506104f061296b565b348015610f7c57600080fd5b5061054460048036036020811015610f9357600080fd5b5035612971565b348015610fa657600080fd5b5061054460048036036020811015610fbd57600080fd5b50356129b9565b348015610fd057600080fd5b50610bb7612a15565b348015610fe557600080fd5b5061066660048036036040811015610ffc57600080fd5b506001600160a01b038135169060200135612a24565b34801561101e57600080fd5b506104f0612a31565b34801561103357600080fd5b506104f0612a37565b34801561104857600080fd5b506105446004803603602081101561105f57600080fd5b50356001600160a01b0316612a50565b34801561107b57600080fd5b506105446004803603602081101561109257600080fd5b5035612aba565b3480156110a557600080fd5b506104f0612b1d565b3480156110ba57600080fd5b50610bb7612b23565b3480156110cf57600080fd5b50610544600480360360208110156110e657600080fd5b50351515612b32565b3480156110fb57600080fd5b50610bb7612b94565b34801561111057600080fd5b506104f06004803603602081101561112757600080fd5b5035612ba3565b34801561113a57600080fd5b50610bb7612bd7565b34801561114f57600080fd5b506105446004803603606081101561116657600080fd5b506001600160a01b038135811691602081013582169160409091013516612be6565b34801561119457600080fd5b506104f0600480360360408110156111ab57600080fd5b506001600160a01b0381358116916020013516612c6d565b3480156111cf57600080fd5b50610544600480360360408110156111e657600080fd5b50803515159060200135612c98565b34801561120157600080fd5b50610bb7612d10565b34801561121657600080fd5b506105446004803603602081101561122d57600080fd5b5035612d1f565b34801561124057600080fd5b50610bb7612d67565b34801561125557600080fd5b506105446004803603602081101561126c57600080fd5b50356001600160a01b0316612d7d565b34801561128857600080fd5b506105446004803603602081101561129f57600080fd5b50356001600160a01b0316612de1565b3480156112bb57600080fd5b50610544600480360360408110156112d257600080fd5b506001600160a01b0381351690602001351515612e92565b3480156112f657600080fd5b506105446004803603604081101561130d57600080fd5b506001600160a01b0381351690602001351515613008565b34801561133157600080fd5b50610bb761307b565b34801561134657600080fd5b506104f061308a565b34801561135b57600080fd5b506106666004803603602081101561137257600080fd5b50356001600160a01b0316613090565b34801561138e57600080fd5b50610666600480360360208110156113a557600080fd5b50356001600160a01b03166130a5565b3480156113c157600080fd5b506104f06130c3565b3480156113d657600080fd5b506106666130c9565b60245481565b6113ee336130a5565b61142d576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b600f8590556010849055601183905560128290556114578261145185818989613174565b90613174565b601355601481905560028104601354106114b8576040805162461bcd60e51b815260206004820152601c60248201527f466565732063616e6e6f74206265206d6f7265207468616e2035302500000000604482015290519081900360640190fd5b5050505050565b60408051808201909152600981526853616e7461446f676560b81b602082015290565b6114eb33611f91565b611525576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b601c546040805163144fa6d760e01b81526001600160a01b0384811660048301529151919092169163144fa6d791602480830192600092919082900301818387803b15801561157357600080fd5b505af11580156114b8573d6000803e3d6000fd5b61159033611f91565b6115ca576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6115ea816115e469054b40b1f852bda000006103e86130d9565b9061311b565b60265550565b3360008181526006602090815260408083206001600160a01b038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a35060015b92915050565b61166033611f91565b61169a576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6040516001600160a01b038216904780156108fc02916000818181858888f193505050501580156116cf573d6000803e3d6000fd5b5050565b60215481565b6000826116e583612ba3565b119392505050565b60145481565b60235490565b61170233611f91565b61173c576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b610321831061177c5760405162461bcd60e51b815260040180806020018281038252602d81526020018061418a602d913960400191505060405180910390fd5b8281146117ba5760405162461bcd60e51b81526004018080602001828103825260288152602001806140d56028913960400191505060405180910390fd5b6000805b848110156117e8578383828181106117d257fe5b60200291909101359290920191506001016117be565b50633b9aca0081026117f987612555565b101561184c576040805162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c65740000000000604482015290519081900360640190fd5b60005b84811015611985576118988787878481811061186757fe5b905060200201356001600160a01b0316600960ff16600a0a87878681811061188b57fe5b90506020020135026131ce565b50600a60008787848181106118a957fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff1661197d57601c546001600160a01b03166314b6ca968787848181106118f057fe5b905060200201356001600160a01b031661192489898681811061190f57fe5b905060200201356001600160a01b0316612555565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561196a57600080fd5b505af192505050801561197b575060015b505b60010161184f565b506001600160a01b0386166000908152600a602052604090205460ff16611a1a57601c546001600160a01b03166314b6ca96876119c181612555565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b158015611a0757600080fd5b505af1925050508015611a18575060015b505b505050505050565b611a2b336130a5565b611a6a576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b60175447906001600160a01b03166108fc60648484025b049081150290604051600060405180830381858888f19350505050158015611aad573d6000803e3d6000fd5b505050565b60135481565b6001600160a01b038316600090815260066020908152604080832033845290915281205460001914611b65576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600682528381203382529091529190912054611b409184906132ea565b6001600160a01b03851660009081526006602090815260408083203384529091529020555b611b70848484613381565b90505b9392505050565b611b8333611f91565b611bbd576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6000826001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015611c0c57600080fd5b505afa158015611c20573d6000803e3d6000fd5b505050506040513d6020811015611c3657600080fd5b50516040805163a9059cbb60e01b81526001600160a01b0385811660048301526024820184905291519293509085169163a9059cbb916044808201926020929091908290030181600087803b158015611c8e57600080fd5b505af1158015611ca2573d6000803e3d6000fd5b505050506040513d60208110156114b857600080fd5b611cc133611f91565b611cfb576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b601b805460ff60a01b1916600160a01b8415158102919091179182905560ff9104168015611d295750600e54155b156116cf5743600e55600d5550565b611d4133611f91565b611d7b576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b602080546001600160a01b039092166301000000026301000000600160b81b0319909216919091179055565b6022546004546001600160a01b039081166000908152600560205260408082205460035490931682528120549092611e01929091611dfb9190611df59069054b40b1f852bda000009061399f565b9061399f565b906130d9565b905090565b60225481565b611e15336130a5565b611e54576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b601c54604080516316a4744b60e11b8152600481018590526024810184905290516001600160a01b0390921691632d48e8969160448082019260009290919082900301818387803b158015611ea857600080fd5b505af1158015611a1a573d6000803e3d6000fd5b611ec533611f91565b611eff576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b601e805460ff19169215159290921761ff00191661010060ff9290921691909102179055565b611f2e33611f91565b611f68576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b601b80546001600160a01b039092166001600160a01b0319909216821790556000526007602052565b6000546001600160a01b0390811691161490565b600990565b611fb333611f91565b611fed576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6107d1821061202d5760405162461bcd60e51b815260040180806020018281038252602e8152602001806140fd602e913960400191505060405180910390fd5b633b9aca00810a82028061204086612555565b1015612093576040805162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c65740000000000604482015290519081900360640190fd5b60005b838110156121a5576120cd868686848181106120ae57fe5b905060200201356001600160a01b0316600960ff16600a0a86026131ce565b50600a60008686848181106120de57fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff1661219d57601c546001600160a01b03166314b6ca9686868481811061212557fe5b905060200201356001600160a01b031661214488888681811061190f57fe5b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561218a57600080fd5b505af192505050801561219b575060015b505b600101612096565b506001600160a01b0385166000908152600a602052604090205460ff166114b857601c546001600160a01b03166314b6ca96866121e181612555565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561222757600080fd5b505af1925050508015612238575060015b6114b8576114b8565b600061224c33611f91565b612286576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6040805163a9059cbb60e01b81523360048201526024810184905290516001600160a01b0385169163a9059cbb9160448083019260209291908290030181600087803b1580156122d557600080fd5b505af11580156122e9573d6000803e3d6000fd5b505050506040513d60208110156122ff57600080fd5b50519392505050565b60235481565b60076020526000908152604090205460ff1681565b600a6020526000908152604090205460ff1681565b612341336130a5565b612380576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b47336108fc6064848402611a81565b601b546001600160a01b031681565b60096020526000908152604090205460ff1681565b6123bc336130a5565b6123fb576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6000611651826000196115f0565b602054610100900460ff1681565b61244b33611f91565b612485576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b600b805460ff1916911515919091179055565b6000611e016022546025546130d990919063ffffffff16565b601e5460ff1681565b6124c3336130a5565b612502576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b60115481565b6000611e016022546024546130d990919063ffffffff16565b60205460ff1681565b6022546001600160a01b038216600090815260056020526040812054909161165191906130d9565b601e54610100900460ff1681565b601a60009054906101000a90046001600160a01b03166001600160a01b031663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156125db57600080fd5b505af11580156125ef573d6000803e3d6000fd5b50505050565b60265481565b602054600090630100000090046001600160a01b0316331480612622575061262233611f91565b61262b57600080fd5b6021805460010190558261263f5760215492505b60205462010000900460ff1615612689576040805162461bcd60e51b81526020600482015260096024820152682a393c9030b3b0b4b760b91b604482015290519081900360640190fd5b816126cf57602354604080519182525184917f72725a3b1e5bd622d6bcd1339bb31279c351abe8f541ac7fd320f24e1b1641f2919081900360200190a250602354611651565b60008212156126f1576023546126e990600084900361399f565b602355612702565b6023546126fe9083613174565b6023555b6023546001600160801b03101561271f576001600160801b036023555b6023546127379069054b40b1f852bda00000906130d9565b602255601b546040805160016209351760e01b0319815290516001600160a01b039092169163fff6cae99160048082019260009290919082900301818387803b15801561278357600080fd5b505af1158015612797573d6000803e3d6000fd5b505060235460408051918252518693507f72725a3b1e5bd622d6bcd1339bb31279c351abe8f541ac7fd320f24e1b1641f292509081900360200190a25060235492915050565b60125481565b60255481565b60205462010000900460ff161590565b6000546001600160a01b031690565b600b5460ff1681565b60086020526000908152604090205460ff1681565b61282f33611f91565b612869576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b60005b828110156125ef5781600c600086868581811061288557fe5b602090810292909201356001600160a01b0316835250810191909152604001600020805460ff191691151591909117905560010161286c565b602054600090630100000090046001600160a01b03163314806128e557506128e533611f91565b6128ee57600080fd5b811561292c57612925600061292060001961291a876115e46103e86023546130d990919063ffffffff16565b906139e1565b6125fb565b9050611651565b611b736000612920856115e46103e86023546130d990919063ffffffff16565b60408051808201909152600581526453414e544160d81b602082015290565b600f5481565b61297a33611f91565b6129b4576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b600e55565b6129c2336130a5565b612a01576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b620dbba08110612a1057600080fd5b601d55565b601a546001600160a01b031681565b6000611b73338484613381565b60105481565b6000611e016022546026546130d990919063ffffffff16565b612a5933611f91565b612a93576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b612ac333611f91565b612afd576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b612b17816115e469054b40b1f852bda000006103e86130d9565b60255550565b600e5481565b601c546001600160a01b031681565b612b3b336130a5565b612b7a576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b602080549115156101000261ff0019909216919091179055565b6016546001600160a01b031681565b6000611651612bb0611da7565b601a54611dfb90612bd0906002906115e4906001600160a01b0316612555565b859061311b565b6018546001600160a01b031681565b612bef336130a5565b612c2e576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b601680546001600160a01b039485166001600160a01b031991821617909155601780549385169382169390931790925560188054919093169116179055565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b612ca1336130a5565b612ce0576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6020805460ff1916831515179055612d09816115e469054b40b1f852bda00000620186a06130d9565b6024555050565b6017546001600160a01b031681565b612d2833611f91565b612d62576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b601555565b602054630100000090046001600160a01b031681565b612d8633611f91565b612dc0576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6001600160a01b03166000908152600160205260409020805460ff19169055565b612dea33611f91565b612e24576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b038316908117825580825260016020818152604093849020805460ff1916909217909155825191825291517f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163929181900390910190a150565b612e9b336130a5565b612eda576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b0382163014801590612f015750601a546001600160a01b03838116911614155b612f0a57600080fd5b6001600160a01b0382166000908152600a60205260409020805460ff19168215801591909117909155612fa757601c5460408051630a5b654b60e11b81526001600160a01b03858116600483015260006024830181905292519316926314b6ca969260448084019391929182900301818387803b158015612f8a57600080fd5b505af1158015612f9e573d6000803e3d6000fd5b505050506116cf565b601c546001600160a01b03166314b6ca9683612fc281612555565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b158015611ea857600080fd5b613011336130a5565b613050576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6019546001600160a01b031681565b600d5481565b600c6020526000908152604090205460ff1681565b6001600160a01b031660009081526001602052604090205460ff1690565b60155481565b601b54600160a01b900460ff1681565b6000611b7383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613a29565b60008261312a57506000611651565b8282028284828161313757fe5b0414611b735760405162461bcd60e51b815260040180806020018281038252602181526020018061412b6021913960400191505060405180910390fd5b600082820183811015611b73576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000806131e66022548461311b90919063ffffffff16565b905061324e8160405180604001604052806014815260200173496e73756666696369656e742042616c616e636560601b81525060056000896001600160a01b03166001600160a01b03168152602001908152602001600020546132ea9092919063ffffffff16565b6001600160a01b03808716600090815260056020526040808220939093559086168152205461327d9082613174565b6001600160a01b03808616600081815260056020526040902092909255602254908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906132ce9085906130d9565b60408051918252519081900360200190a3506001949350505050565b600081848411156133795760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561333e578181015183820152602001613326565b50505050905090810190601f16801561336b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60205460009062010000900460ff16156133a7576133a08484846131ce565b9050611b73565b6001600160a01b03841660009081526001602052604090205460ff1661341c57601b54600160a01b900460ff1661341c576040805162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b604482015290519081900360640190fd5b60006134336022548461311b90919063ffffffff16565b6001600160a01b03861660009081526001602052604090205490915060ff1615801561346857506001600160a01b0384163014155b801561348257506003546001600160a01b03858116911614155b801561349c5750601a546001600160a01b03858116911614155b80156134b657506017546001600160a01b03858116911614155b80156134d057506018546001600160a01b03858116911614155b80156134ea57506016546001600160a01b03858116911614155b156135415760006134fa85612555565b9050602654828201111561353f5760405162461bcd60e51b815260040180806020018281038252603e81526020018061414c603e913960400191505060405180910390fd5b505b601a546001600160a01b0386811691161480156135605750601e5460ff165b801561358557506001600160a01b03841660009081526009602052604090205460ff16155b15613615576001600160a01b0384166000908152601f602052604090205442116135ec576040805162461bcd60e51b815260206004820152601360248201527262757920436f6f6c646f776e2065786973747360681b604482015290519081900360640190fd5b601e546001600160a01b0385166000908152601f6020526040902061010090910460ff16420190555b600b5460ff16156136a1576001600160a01b0385166000908152600c602052604090205460ff1615801561366257506001600160a01b0384166000908152600c602052604090205460ff16155b6136a1576040805162461bcd60e51b815260206004820152600b60248201526a109b1858dadb1a5cdd195960aa1b604482015290519081900360640190fd5b6136ab8582613a8e565b6136b3613afc565b156136c0576136c0613b51565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0388166000908152600590915291909120546137129183906132ea565b6001600160a01b03861660009081526005602052604081209190915561373786613faa565b1580613749575061374785613faa565b155b61377057601a5461376b90879084906001600160a01b03898116911614613fc9565b613772565b815b6001600160a01b0386166000908152600560205260409020549091506137989082613174565b6001600160a01b038087166000908152600560209081526040808320949094559189168152600a909152205460ff1661383f57601c546001600160a01b03166314b6ca96876137e681612555565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561382c57600080fd5b505af192505050801561383d575060015b505b6001600160a01b0385166000908152600a602052604090205460ff166138d357601c546001600160a01b03166314b6ca968661387a81612555565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156138c057600080fd5b505af19250505080156138d1575060015b505b601c54601d54604080516001624d3b8760e01b031981526004810192909252516001600160a01b039092169163ffb2c4799160248082019260009290919082900301818387803b15801561392657600080fd5b505af1925050508015613937575060015b50846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef613982602254856130d990919063ffffffff16565b60408051918252519081900360200190a350600195945050505050565b6000611b7383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506132ea565b6000828202600160ff1b81141580613a025750600160ff1b84811690841614155b613a0b57600080fd5b821580613a20575083838281613a1d57fe5b05145b611b7357600080fd5b60008183613a785760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561333e578181015183820152602001613326565b506000838581613a8457fe5b0495945050505050565b60255481111580613ab757506001600160a01b03821660009081526008602052604090205460ff165b6116cf576040805162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015290519081900360640190fd5b601a546000906001600160a01b03163314801590613b23575060205462010000900460ff16155b8015613b31575060205460ff165b8015611e0157505060245430600090815260056020526040902054101590565b6020805462ff0000191662010000179055600f54602254602454600091613b7891906130d9565b90506000613b9a6002611dfb856115e4601354876130d990919063ffffffff16565b90506000613ba8838361399f565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110613bdc57fe5b6001600160a01b039283166020918202929092010152600254825191169082906001908110613c0757fe5b6001600160a01b0392831660209182029290920181019190915260195460405163791ac94760e01b8152600481018681526000602483018190523060648401819052426084850181905260a060448601908152895160a487015289514799979097169763791ac947978c9795968c9690939260c49091019187820191028083838b5b83811015613ca1578181015183820152602001613c89565b505050509050019650505050505050600060405180830381600087803b158015613cca57600080fd5b505af1158015613cde573d6000803e3d6000fd5b505050506000613cf7824761399f90919063ffffffff16565b90506000613d12613d098960026130d9565b6013549061399f565b90506000613d276002611dfb8481878e61311b565b90506000613d4483611dfb6010548761311b90919063ffffffff16565b90506000613d6184611dfb6011548861311b90919063ffffffff16565b90506000613d7e85611dfb6012548961311b90919063ffffffff16565b9050601c60009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0846040518263ffffffff1660e01b81526004016000604051808303818588803b158015613dd057600080fd5b505af193505050508015613de2575060015b506017546040516000916001600160a01b03169061753090859084818181858888f193505050503d8060008114613e35576040519150601f19603f3d011682016040523d82523d6000602084013e613e3a565b606091505b50506018546040519192506001600160a01b0316906175309084906000818181858888f193505050503d8060008114613e8f576040519150601f19603f3d011682016040523d82523d6000602084013e613e94565b606091505b5060009250508b159050613f8f576019546016546040805163f305d71960e01b8152306004820152602481018f905260006044820181905260648201526001600160a01b0392831660848201524260a48201529051919092169163f305d71991889160c48082019260609290919082900301818588803b158015613f1757600080fd5b505af1158015613f2b573d6000803e3d6000fd5b50505050506040513d6060811015613f4257600080fd5b50506022547f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506908690613f76908e906130d9565b6040805192835260208301919091528051918290030190a15b50506020805462ff0000191690555050505050505050505050565b6001600160a01b031660009081526007602052604090205460ff161590565b600060648215613fd857506015545b602054610100900460ff168015613fed575082155b15613ff6575060005b600061401a826115e46013546115e46014546064028a6130d990919063ffffffff16565b90508315801561402f575043600d54600e5401115b1561404757614044605a6115e48760646130d9565b90505b306000908152600560205260409020546140619082613174565b306000818152600560205260409020919091556022546001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906140af9085906130d9565b60408051918252519081900360200190a36140ca858261399f565b969550505050505056fe4d69736d61746368206265747765656e204164647265737320616e6420746f6b656e20636f756e74474153204572726f723a206d61782061697264726f70206c696d6974206973203230303020616464726573736573536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77546f74616c20486f6c64696e672069732063757272656e746c79206c696d697465642c20796f752063616e206e6f74206275792074686174206d7563682e474153204572726f723a206d61782061697264726f70206c696d69742069732035303020616464726573736573a26469706673582212208f7a7dd392943c2344b5fd3f40bc6ec5681e7a4b1bf3a1e5a3fadcf3bcad2b7b64736f6c63430007060033
Deployed Bytecode Sourcemap
12337:20450:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14888:51;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;29280:524;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;29280:524:0;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17777:80;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32587:128;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;32587:128:0;-1:-1:-1;;;;;32587:128:0;;:::i;32226:175::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;32226:175:0;;:::i;18231:216::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;18231:216:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;18628:120;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18628:120:0;-1:-1:-1;;;;;18628:120:0;;:::i;14724:31::-;;;;;;;;;;;;;:::i;31824:150::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;31824:150:0;;;;;;;:::i;13592:36::-;;;;;;;;;;;;;:::i;17507:88::-;;;;;;;;;;;;;:::i;18752:939::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18752:939:0;;;;;;;;;;;;;;;-1:-1:-1;;;18752:939:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;18752:939:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;18752:939:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;18752:939:0;;;;;;;;;;-1:-1:-1;18752:939:0;;-1:-1:-1;18752:939:0;-1:-1:-1;18752:939:0;:::i;24927:218::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24927:218:0;;:::i;13504:81::-;;;;;;;;;;;;;:::i;20772:364::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;20772:364:0;;;;;;;;;;;;;;;;;:::i;18451:173::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;18451:173:0;;;;;;;;;;:::i;25558:250::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25558:250:0;;;;;;;;;:::i;30605:90::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;30605:90:0;-1:-1:-1;;;;;30605:90:0;;:::i;31488:149::-;;;;;;;;;;;;;:::i;14762:19::-;;;;;;;;;;;;;:::i;30941:183::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;30941:183:0;;;;;;;:::i;26256:164::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26256:164:0;;;;;;;;;;;:::i;30446:139::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;30446:139:0;-1:-1:-1;;;;;30446:139:0;;:::i;3976:103::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3976:103:0;-1:-1:-1;;;;;3976:103:0;;:::i;17601:80::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;19695:775;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;19695:775:0;;;;;;;;;;;;;;;-1:-1:-1;;;19695:775:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;19695:775:0;;;;;;;;;;;;-1:-1:-1;19695:775:0;-1:-1:-1;19695:775:0;;:::i;31304:174::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;31304:174:0;;;;;;;;:::i;14788:27::-;;;;;;;;;;;;;:::i;12932:44::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12932:44:0;-1:-1:-1;;;;;12932:44:0;;:::i;13094:49::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13094:49:0;-1:-1:-1;;;;;13094:49:0;;:::i;25165:215::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25165:215:0;;:::i;13894:31::-;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;13894:31:0;;;;;;;;;;;;;;13038:49;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13038:49:0;-1:-1:-1;;;;;13038:49:0;;:::i;29142:130::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;29142:130:0;;;;;;;;;;:::i;20484:116::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20484:116:0;-1:-1:-1;;;;;20484:116:0;;:::i;14243:34::-;;;;;;;;;;;;;:::i;25929:99::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25929:99:0;;;;:::i;32110:108::-;;;;;;;;;;;;;:::i;14060:37::-;;;;;;;;;;;;;:::i;28752:120::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;28752:120:0;;;;;;;;;;:::i;13422:34::-;;;;;;;;;;;;;:::i;30814:111::-;;;;;;;;;;;;;:::i;14206:30::-;;;;;;;;;;;;;:::i;17949:129::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17949:129:0;-1:-1:-1;;;;;17949:129:0;;:::i;14104:39::-;;;;;;;;;;;;;:::i;30360:74::-;;;;;;;;;;;;;:::i;15051:56::-;;;;;;;;;;;;;:::i;15501:811::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15501:811:0;;;;;;;:::i;13463:34::-;;;;;;;;;;;;;:::i;14981:53::-;;;;;;;;;;;;;:::i;30709:85::-;;;;;;;;;;;;;:::i;17863:78::-;;;;;;;;;;;;;:::i;13156:32::-;;;;;;;;;;;;;:::i;12983:48::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12983:48:0;-1:-1:-1;;;;;12983:48:0;;:::i;26036:210::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;26036:210:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;26036:210:0;;;;;;;;;;;;-1:-1:-1;26036:210:0;-1:-1:-1;26036:210:0;;;;:::i;15121:372::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15121:372:0;;;;;;;;;:::i;17687:84::-;;;;;;;;;;;;;:::i;13341:34::-;;;;;;;;;;;;;:::i;25816:105::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25816:105:0;;:::i;31144:136::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;31144:136:0;;:::i;13866:19::-;;;;;;;;;;;;;:::i;20608:156::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;20608:156:0;;;;;;;;:::i;13382:33::-;;;;;;;;;;;;;:::i;31982:114::-;;;;;;;;;;;;;:::i;3769:94::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3769:94:0;-1:-1:-1;;;;;3769:94:0;;:::i;32409:170::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;32409:170:0;;:::i;13286:29::-;;;;;;;;;;;;;:::i;13975:38::-;;;;;;;;;;;;;:::i;28880:118::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28880:118:0;;;;:::i;13708:36::-;;;;;;;;;;;;;:::i;31647:167::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;31647:167:0;;:::i;13793:33::-;;;;;;;;;;;;;:::i;29818:309::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;29818:309:0;;;;;;;;;;;;;;;;;;;:::i;18090:133::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;18090:133:0;;;;;;;;;;:::i;30137:211::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;30137:211:0;;;;;;;;;:::i;13751:35::-;;;;;;;;;;;;;:::i;25400:121::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25400:121:0;;:::i;14373:21::-;;;;;;;;;;;;;:::i;3871:97::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3871:97:0;-1:-1:-1;;;;;3871:97:0;;:::i;4202:173::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4202:173:0;-1:-1:-1;;;;;4202:173:0;;:::i;28393:347::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;28393:347:0;;;;;;;;;;:::i;29006:128::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;29006:128:0;;;;;;;;;;:::i;13835:24::-;;;;;;;;;;;;;:::i;13250:29::-;;;;;;;;;;;;;:::i;13195:46::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13195:46:0;-1:-1:-1;;;;;13195:46:0;;:::i;4087:107::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4087:107:0;-1:-1:-1;;;;;4087:107:0;;:::i;13637:36::-;;;;;;;;;;;;;:::i;13935:31::-;;;;;;;;;;;;;:::i;14888:51::-;;;;:::o;29280:524::-;3710:24;3723:10;3710:12;:24::i;:::-;3702:48;;;;;-1:-1:-1;;;3702:48:0;;;;;;;;;;;;-1:-1:-1;;;3702:48:0;;;;;;;;;;;;;;;29443:12:::1;:28:::0;;;29482:12:::1;:28:::0;;;29521:12:::1;:28:::0;;;29560:10:::1;:24:::0;;;29606:68:::1;29573:11:::0;29606:51:::1;29536:13:::0;29606:51;29458:13;29497;29606:17:::1;:32::i;:::-;:36:::0;::::1;:51::i;:68::-;29595:8;:79:::0;29685:14:::1;:32:::0;;;29762:1:::1;29702:15:::0;29747:16:::1;29736:8;;:27;29728:68;;;::::0;;-1:-1:-1;;;29728:68:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;29280:524:::0;;;;;:::o;17777:80::-;17849:5;;;;;;;;;;;;-1:-1:-1;;;17849:5:0;;;;17777:80;:::o;32587:128::-;3620:19;3628:10;3620:7;:19::i;:::-;3612:38;;;;;-1:-1:-1;;;3612:38:0;;;;;;;;;;;;-1:-1:-1;;;3612:38:0;;;;;;;;;;;;;;;32671:11:::1;::::0;:36:::1;::::0;;-1:-1:-1;;;32671:36:0;;-1:-1:-1;;;;;32671:36:0;;::::1;;::::0;::::1;::::0;;;:11;;;::::1;::::0;:20:::1;::::0;:36;;;;;:11:::1;::::0;:36;;;;;;;:11;;:36;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;32226:175:::0;3620:19;3628:10;3620:7;:19::i;:::-;3612:38;;;;;-1:-1:-1;;;3612:38:0;;;;;;;;;;;;-1:-1:-1;;;3612:38:0;;;;;;;;;;;;;;;32347:46:::1;32369:23:::0;32347:17:::1;14634:27:::0;32359:4:::1;32347:11;:17::i;:::-;:21:::0;::::1;:46::i;:::-;32329:15;:64:::0;-1:-1:-1;32226:175:0:o;18231:216::-;18335:10;18306:4;18323:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;18323:32:0;;;;;;;;;;;:41;;;18380:37;;;;;;;18306:4;;18323:32;;18335:10;;18380:37;;;;;;;;-1:-1:-1;18435:4:0;18231:216;;;;;:::o;18628:120::-;3620:19;3628:10;3620:7;:19::i;:::-;3612:38;;;;;-1:-1:-1;;;3612:38:0;;;;;;;;;;;;-1:-1:-1;;;3612:38:0;;;;;;;;;;;;;;;18702:42:::1;::::0;-1:-1:-1;;;;;18702:19:0;::::1;::::0;18722:21:::1;18702:42:::0;::::1;;;::::0;::::1;::::0;;;18722:21;18702:19;:42;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;18628:120:::0;:::o;14724:31::-;;;;:::o;31824:150::-;31904:4;31960:6;31928:29;31948:8;31928:19;:29::i;:::-;:38;;31824:150;-1:-1:-1;;;31824:150:0:o;13592:36::-;;;;:::o;17507:88::-;17580:12;;17507:88;:::o;18752:939::-;3620:19;3628:10;3620:7;:19::i;:::-;3612:38;;;;;-1:-1:-1;;;3612:38:0;;;;;;;;;;;;-1:-1:-1;;;3612:38:0;;;;;;;;;;;;;;;18901:3:::1;18882:22:::0;::::1;18874:79;;;;-1:-1:-1::0;;;18874:79:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18991:33:::0;;::::1;18983:85;;;;-1:-1:-1::0;;;18983:85:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19077:12;19106:6:::0;19102:82:::1;19116:20:::0;;::::1;19102:82;;;19167:6;;19174:1;19167:9;;;;;;;;;::::0;;;::::1;;19160:16:::0;;;::::1;::::0;-1:-1:-1;19138:3:0::1;;19102:82;;;-1:-1:-1::0;19227:13:0;19219:22;::::1;19200:15;19210:4:::0;19200:9:::1;:15::i;:::-;:41;;19192:81;;;::::0;;-1:-1:-1;;;19192:81:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;19286:6;19282:268;19296:20:::0;;::::1;19282:268;;;19333:61;19348:4;19353:9;;19363:1;19353:12;;;;;;;;;;;;;-1:-1:-1::0;;;;;19353:12:0::1;12758:1;19379:13;;:2;:13;19366:6;;19373:1;19366:9;;;;;;;;;;;;;:27;19333:14;:61::i;:::-;;19409:16;:30;19426:9;;19436:1;19426:12;;;;;;;;::::0;;::::1;::::0;;;::::1;;-1:-1:-1::0;;;;;19426:12:0::1;19409:30:::0;;-1:-1:-1;19409:30:0;::::1;::::0;;;;;;-1:-1:-1;19409:30:0;;::::1;;19405:138;;19460:11;::::0;-1:-1:-1;;;;;19460:11:0::1;:20;19481:9:::0;;19491:1;19481:12;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;19481:12:0::1;19495:23;19505:9;;19515:1;19505:12;;;;;;;;;;;;;-1:-1:-1::0;;;;;19505:12:0::1;19495:9;:23::i;:::-;19460:59;;;;;;;;;;;;;-1:-1:-1::0;;;;;19460:59:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;19456:75:::0;::::1;19318:3;;19282:268;;;-1:-1:-1::0;;;;;;19587:22:0;::::1;;::::0;;;:16:::1;:22;::::0;;;;;::::1;;19583:105;;19626:11;::::0;-1:-1:-1;;;;;19626:11:0::1;:20;19647:4:::0;19653:15:::1;19647:4:::0;19653:9:::1;:15::i;:::-;19626:43;;;;;;;;;;;;;-1:-1:-1::0;;;;;19626:43:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;19622:59:::0;::::1;3652:1;18752:939:::0;;;;;:::o;24927:218::-;3710:24;3723:10;3710:12;:24::i;:::-;3702:48;;;;;-1:-1:-1;;;3702:48:0;;;;;;;;;;;;-1:-1:-1;;;3702:48:0;;;;;;;;;;;;;;;25071:20:::1;::::0;25031:21:::1;::::0;-1:-1:-1;;;;;25071:20:0::1;25063:74;25133:3;25102:28:::0;;::::1;:34;;25063:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;3752:1;24927:218:::0;:::o;13504:81::-;;;;:::o;20772:364::-;-1:-1:-1;;;;;20892:19:0;;20872:4;20892:19;;;:11;:19;;;;;;;;20912:10;20892:31;;;;;;;;-1:-1:-1;;20892:46:0;20889:180;;20988:69;;;;;;;;;;;-1:-1:-1;;;20988:69:0;;;;;;;;-1:-1:-1;;;;;20988:19:0;;-1:-1:-1;20988:19:0;;;:11;:19;;;;;21008:10;20988:31;;;;;;;;;;:69;;21024:6;;20988:35;:69::i;:::-;-1:-1:-1;;;;;20954:19:0;;;;;;:11;:19;;;;;;;;20974:10;20954:31;;;;;;;:103;20889:180;21088:40;21102:6;21110:9;21121:6;21088:13;:40::i;:::-;21081:47;;20772:364;;;;;;:::o;18451:173::-;3620:19;3628:10;3620:7;:19::i;:::-;3612:38;;;;;-1:-1:-1;;;3612:38:0;;;;;;;;;;;;-1:-1:-1;;;3612:38:0;;;;;;;;;;;;;;;18534:15:::1;18552:5;-1:-1:-1::0;;;;;18552:15:0::1;;18576:4;18552:30;;;;;;;;;;;;;-1:-1:-1::0;;;;;18552:30:0::1;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;18552:30:0;18593:27:::1;::::0;;-1:-1:-1;;;18593:27:0;;-1:-1:-1;;;;;18593:27:0;;::::1;;::::0;::::1;::::0;;;;;;;;;18552:30;;-1:-1:-1;18593:14:0;;::::1;::::0;::::1;::::0;:27;;;;;18552:30:::1;::::0;18593:27;;;;;;;;-1:-1:-1;18593:14:0;:27;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;25558:250:::0;3620:19;3628:10;3620:7;:19::i;:::-;3612:38;;;;;-1:-1:-1;;;3612:38:0;;;;;;;;;;;;-1:-1:-1;;;3612:38:0;;;;;;;;;;;;;;;25644:11:::1;:21:::0;;-1:-1:-1;;;;25644:21:0::1;-1:-1:-1::0;;;25644:21:0;::::1;;::::0;::::1;::::0;;;::::1;::::0;;;;::::1;25679:11:::0;::::1;;:30:::0;::::1;;;-1:-1:-1::0;25694:10:0::1;::::0;:15;25679:30:::1;25676:125;;;25738:12;25725:10;:25:::0;25765:10:::1;:24:::0;-1:-1:-1;25558:250:0:o;30605:90::-;3620:19;3628:10;3620:7;:19::i;:::-;3612:38;;;;;-1:-1:-1;;;3612:38:0;;;;;;;;;;;;-1:-1:-1;;;3612:38:0;;;;;;;;;;;;;;;30671:6:::1;:16:::0;;-1:-1:-1;;;;;30671:16:0;;::::1;::::0;::::1;-1:-1:-1::0;;;;;;30671:16:0;;::::1;::::0;;;::::1;::::0;;30605:90::o;31488:149::-;31624:4;;31612;;-1:-1:-1;;;;;31612:4:0;;;31541:7;31602:15;;;:9;:15;;;;;;;31591:4;;;;;31581:15;;;;;31541:7;;31568:61;;31624:4;;31569:49;;31602:15;31569:28;;14634:27;;31569:11;:28::i;:::-;:32;;:49::i;:::-;31568:55;;:61::i;:::-;31561:68;;31488:149;:::o;14762:19::-;;;;:::o;30941:183::-;3710:24;3723:10;3710:12;:24::i;:::-;3702:48;;;;;-1:-1:-1;;;3702:48:0;;;;;;;;;;;;-1:-1:-1;;;3702:48:0;;;;;;;;;;;;;;;31051:11:::1;::::0;:65:::1;::::0;;-1:-1:-1;;;31051:65:0;;::::1;::::0;::::1;::::0;;;;;;;;;;;-1:-1:-1;;;;;31051:11:0;;::::1;::::0;:35:::1;::::0;:65;;;;;:11:::1;::::0;:65;;;;;;;;:11;;:65;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;26256:164:::0;3620:19;3628:10;3620:7;:19::i;:::-;3612:38;;;;;-1:-1:-1;;;3612:38:0;;;;;;;;;;;;-1:-1:-1;;;3612:38:0;;;;;;;;;;;;;;;26340:18:::1;:28:::0;;-1:-1:-1;;26340:28:0::1;::::0;::::1;;::::0;;;::::1;-1:-1:-1::0;;26379:33:0::1;26340:28;;26379:33:::0;;;::::1;::::0;;;::::1;;::::0;;26256:164::o;30446:139::-;3620:19;3628:10;3620:7;:19::i;:::-;3612:38;;;;;-1:-1:-1;;;3612:38:0;;;;;;;;;;;;-1:-1:-1;;;3612:38:0;;;;;;;;;;;;;;;30509:12:::1;:36:::0;;-1:-1:-1;;;;;30509:36:0;;::::1;-1:-1:-1::0;;;;;;30509:36:0;;::::1;::::0;::::1;::::0;;:12:::1;30556:21:::0;:11:::1;:21;::::0;30446:139::o;3976:103::-;4031:4;4066:5;-1:-1:-1;;;;;4066:5:0;;;4055:16;;;;3976:103::o;17601:80::-;12758:1;17601:80;:::o;19695:775::-;3620:19;3628:10;3620:7;:19::i;:::-;3612:38;;;;;-1:-1:-1;;;3612:38:0;;;;;;;;;;;;-1:-1:-1;;;3612:38:0;;;;;;;;;;;;;;;19839:4:::1;19820:23:::0;::::1;19812:81;;;;-1:-1:-1::0;;;19812:81:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19950:13:::0;19940:24;::::1;:43:::0;::::1;::::0;20000:15:::1;20010:4:::0;20000:9:::1;:15::i;:::-;:23;;19992:63;;;::::0;;-1:-1:-1;;;19992:63:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;20068:6;20064:265;20078:20:::0;;::::1;20064:265;;;20115:58;20130:4;20135:9;;20145:1;20135:12;;;;;;;;;;;;;-1:-1:-1::0;;;;;20135:12:0::1;12758:1;20158:13;;:2;:13;20148:6;:24;20115:14;:58::i;:::-;;20188:16;:30;20205:9;;20215:1;20205:12;;;;;;;;::::0;;::::1;::::0;;;::::1;;-1:-1:-1::0;;;;;20205:12:0::1;20188:30:::0;;-1:-1:-1;20188:30:0;::::1;::::0;;;;;;-1:-1:-1;20188:30:0;;::::1;;20184:138;;20239:11;::::0;-1:-1:-1;;;;;20239:11:0::1;:20;20260:9:::0;;20270:1;20260:12;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;20260:12:0::1;20274:23;20284:9;;20294:1;20284:12;;;;;;20274:23;20239:59;;;;;;;;;;;;;-1:-1:-1::0;;;;;20239:59:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;20235:75:::0;::::1;20100:3;;20064:265;;;-1:-1:-1::0;;;;;;20366:22:0;::::1;;::::0;;;:16:::1;:22;::::0;;;;;::::1;;20362:105;;20405:11;::::0;-1:-1:-1;;;;;20405:11:0::1;:20;20426:4:::0;20432:15:::1;20426:4:::0;20432:9:::1;:15::i;:::-;20405:43;;;;;;;;;;;;;-1:-1:-1::0;;;;;20405:43:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;20401:59;;;;31304:174:::0;31389:12;3620:19;3628:10;3620:7;:19::i;:::-;3612:38;;;;;-1:-1:-1;;;3612:38:0;;;;;;;;;;;;-1:-1:-1;;;3612:38:0;;;;;;;;;;;;;;;31421:49:::1;::::0;;-1:-1:-1;;;31421:49:0;;31451:10:::1;31421:49;::::0;::::1;::::0;;;;;;;;;-1:-1:-1;;;;;31421:29:0;::::1;::::0;::::1;::::0;:49;;;;;::::1;::::0;;;;;;;;-1:-1:-1;31421:29:0;:49;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;31421:49:0;;31304:174;-1:-1:-1;;;31304:174:0:o;14788:27::-;;;;:::o;12932:44::-;;;;;;;;;;;;;;;:::o;13094:49::-;;;;;;;;;;;;;;;:::o;25165:215::-;3710:24;3723:10;3710:12;:24::i;:::-;3702:48;;;;;-1:-1:-1;;;3702:48:0;;;;;;;;;;;;-1:-1:-1;;;3702:48:0;;;;;;;;;;;;;;;25276:21:::1;25316:10;25308:64;25368:3;25337:28:::0;;::::1;:34;::::0;13894:31;;;-1:-1:-1;;;;;13894:31:0;;:::o;13038:49::-;;;;;;;;;;;;;;;:::o;29142:130::-;3710:24;3723:10;3710:12;:24::i;:::-;3702:48;;;;;-1:-1:-1;;;3702:48:0;;;;;;;;;;;;-1:-1:-1;;;3702:48:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;29231:24:0;;;::::1;;::::0;;;:16:::1;:24;::::0;;;;:33;;-1:-1:-1;;29231:33:0::1;::::0;::::1;;::::0;;;::::1;::::0;;29142:130::o;20484:116::-;20539:4;20563:29;20571:7;-1:-1:-1;;20563:7:0;:29::i;14243:34::-;;;;;;;;;:::o;25929:99::-;3620:19;3628:10;3620:7;:19::i;:::-;3612:38;;;;;-1:-1:-1;;;3612:38:0;;;;;;;;;;;;-1:-1:-1;;;3612:38:0;;;;;;;;;;;;;;;25997:13:::1;:23:::0;;-1:-1:-1;;25997:23:0::1;::::0;::::1;;::::0;;;::::1;::::0;;25929:99::o;32110:108::-;32161:7;32188:22;32205:4;;32188:12;;:16;;:22;;;;:::i;14060:37::-;;;;;;:::o;28752:120::-;3710:24;3723:10;3710:12;:24::i;:::-;3702:48;;;;;-1:-1:-1;;;3702:48:0;;;;;;;;;;;;-1:-1:-1;;;3702:48:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;28836:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;28836:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;28752:120::o;13422:34::-;;;;:::o;30814:111::-;30867:7;30894:23;30912:4;;30894:13;;:17;;:23;;;;:::i;14206:30::-;;;;;;:::o;17949:129::-;18065:4;;-1:-1:-1;;;;;18042:18:0;;18015:7;18042:18;;;:9;:18;;;;;;18015:7;;18042:28;;:18;:22;:28::i;14104:39::-;;;;;;;;;:::o;30360:74::-;30414:4;;;;;;;;;-1:-1:-1;;;;;30414:4:0;-1:-1:-1;;;;;30402:22:0;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30360:74::o;15051:56::-;;;;:::o;15501:811::-;14456:6;;15579:7;;14456:6;;;-1:-1:-1;;;;;14456:6:0;14442:10;:20;;:43;;;14466:19;14474:10;14466:7;:19::i;:::-;14434:52;;;;;;15599:12:::1;:14:::0;;::::1;;::::0;;15627:10;15624:61:::1;;15661:12;;15653:20;;15624:61;15706:6;::::0;;;::::1;;;15705:7;15697:29;;;::::0;;-1:-1:-1;;;15697:29:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;15697:29:0;;;;;;;;;;;;;::::1;;15743:16:::0;15739:118:::1;;15798:12;::::0;15781:30:::1;::::0;;;;;;15791:5;;15781:30:::1;::::0;;;;;::::1;::::0;;::::1;-1:-1:-1::0;15833:12:0::1;::::0;15826:19:::1;;15739:118;15887:1;15873:11;:15;15869:188;;;15920:12;::::0;:39:::1;::::0;15945:12:::1;::::0;;::::1;15920:16;:39::i;:::-;15905:12;:54:::0;15869:188:::1;;;16007:12;::::0;:38:::1;::::0;16032:11;16007:16:::1;:38::i;:::-;15992:12;:53:::0;15869:188:::1;16073:12;::::0;-1:-1:-1;;;;;;16069:83:0::1;;;-1:-1:-1::0;;;;;16115:12:0::1;:25:::0;16069:83:::1;16183:12;::::0;16171:25:::1;::::0;14634:27;;16171:11:::1;:25::i;:::-;16164:4;:32:::0;16207:12:::1;::::0;:19:::1;::::0;;-1:-1:-1;;;;;;16207:19:0;;;;-1:-1:-1;;;;;16207:12:0;;::::1;::::0;:17:::1;::::0;:19:::1;::::0;;::::1;::::0;:12:::1;::::0;:19;;;;;;;;:12;;:19;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;16261:12:0::1;::::0;16244:30:::1;::::0;;;;;;16254:5;;-1:-1:-1;16244:30:0::1;::::0;-1:-1:-1;16244:30:0;;;;::::1;::::0;;::::1;-1:-1:-1::0;16292:12:0::1;::::0;15501:811;;;;:::o;13463:34::-;;;;:::o;14981:53::-;;;;:::o;30709:85::-;30780:6;;;;;;;30779:7;;30709:85::o;17863:78::-;17915:7;17933:5;-1:-1:-1;;;;;17933:5:0;17863:78;:::o;13156:32::-;;;;;;:::o;12983:48::-;;;;;;;;;;;;;;;:::o;26036:210::-;3620:19;3628:10;3620:7;:19::i;:::-;3612:38;;;;;-1:-1:-1;;;3612:38:0;;;;;;;;;;;;-1:-1:-1;;;3612:38:0;;;;;;;;;;;;;;;26138:9:::1;26133:106;26149:20:::0;;::::1;26133:106;;;26221:6;26191:13;:27;26205:9;;26215:1;26205:12;;;;;;;;::::0;;::::1;::::0;;;::::1;;-1:-1:-1::0;;;;;26205:12:0::1;26191:27:::0;;-1:-1:-1;26191:27:0;::::1;::::0;;;;;;-1:-1:-1;26191:27:0;:36;;-1:-1:-1;;26191:36:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;26171:3:0::1;26133:106;;15121:372:::0;14456:6;;15218:17;;14456:6;;;-1:-1:-1;;;;;14456:6:0;14442:10;:20;;:43;;;14466:19;14474:10;14466:7;:19::i;:::-;14434:52;;;;;;15252:6:::1;15249:227;;;15286:71;15293:1;15295:61;-1:-1:-1::0;;15299:48:0::1;15326:20;15299:22;15316:4;15299:12;;:16;;:22;;;;:::i;:48::-;15295:57:::0;::::1;:61::i;:::-;15286:6;:71::i;:::-;15274:83;;15249:227;;;15401:63;15408:1;15414:48;15441:20;15414:22;15431:4;15414:12;;:16;;:22;;;;:::i;17687:84::-:0;17761:7;;;;;;;;;;;;-1:-1:-1;;;17761:7:0;;;;17687:84;:::o;13341:34::-;;;;:::o;25816:105::-;3620:19;3628:10;3620:7;:19::i;:::-;3612:38;;;;;-1:-1:-1;;;3612:38:0;;;;;;;;;;;;-1:-1:-1;;;3612:38:0;;;;;;;;;;;;;;;25888:10:::1;:25:::0;25816:105::o;31144:136::-;3710:24;3723:10;3710:12;:24::i;:::-;3702:48;;;;;-1:-1:-1;;;3702:48:0;;;;;;;;;;;;-1:-1:-1;;;3702:48:0;;;;;;;;;;;;;;;31234:6:::1;31228:3;:12;31220:21;;;::::0;::::1;;31252:14;:20:::0;31144:136::o;13866:19::-;;;-1:-1:-1;;;;;13866:19:0;;:::o;20608:156::-;20688:4;20712:44;20726:10;20738:9;20749:6;20712:13;:44::i;13382:33::-;;;;:::o;31982:114::-;32036:7;32063:25;32083:4;;32063:15;;:19;;:25;;;;:::i;3769:94::-;3620:19;3628:10;3620:7;:19::i;:::-;3612:38;;;;;-1:-1:-1;;;3612:38:0;;;;;;;;;;;;-1:-1:-1;;;3612:38:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;3829:19:0::1;;::::0;;;3851:4:::1;3829:19;::::0;;;;;;;:26;;-1:-1:-1;;3829:26:0::1;::::0;;::::1;::::0;;3769:94::o;32409:170::-;3620:19;3628:10;3620:7;:19::i;:::-;3612:38;;;;;-1:-1:-1;;;3612:38:0;;;;;;;;;;;;-1:-1:-1;;;3612:38:0;;;;;;;;;;;;;;;32524:47:::1;32546:24:::0;32524:17:::1;14634:27:::0;32536:4:::1;32524:11;:17::i;:47::-;32509:12;:62:::0;-1:-1:-1;32409:170:0:o;13286:29::-;;;;:::o;13975:38::-;;;-1:-1:-1;;;;;13975:38:0;;:::o;28880:118::-;3710:24;3723:10;3710:12;:24::i;:::-;3702:48;;;;;-1:-1:-1;;;3702:48:0;;;;;;;;;;;;-1:-1:-1;;;3702:48:0;;;;;;;;;;;;;;;28960:14:::1;:30:::0;;;::::1;;;;-1:-1:-1::0;;28960:30:0;;::::1;::::0;;;::::1;::::0;;28880:118::o;13708:36::-;;;-1:-1:-1;;;;;13708:36:0;;:::o;31647:167::-;31715:7;31742:64;31783:22;:20;:22::i;:::-;31765:4;;31742:36;;31755:22;;31775:1;;31755:15;;-1:-1:-1;;;;;31765:4:0;31755:9;:15::i;:22::-;31742:8;;:12;:36::i;13793:33::-;;;-1:-1:-1;;;;;13793:33:0;;:::o;29818:309::-;3710:24;3723:10;3710:12;:24::i;:::-;3702:48;;;;;-1:-1:-1;;;3702:48:0;;;;;;;;;;;;-1:-1:-1;;;3702:48:0;;;;;;;;;;;;;;;29967:21:::1;:46:::0;;-1:-1:-1;;;;;29967:46:0;;::::1;-1:-1:-1::0;;;;;;29967:46:0;;::::1;;::::0;;;30024:20:::1;:44:::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;30079:18:::1;:40:::0;;;;;::::1;::::0;::::1;;::::0;;29818:309::o;18090:133::-;-1:-1:-1;;;;;18192:19:0;;;18174:7;18192:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;18090:133::o;30137:211::-;3710:24;3723:10;3710:12;:24::i;:::-;3702:48;;;;;-1:-1:-1;;;3702:48:0;;;;;;;;;;;;-1:-1:-1;;;3702:48:0;;;;;;;;;;;;;;;30244:11:::1;:22:::0;;-1:-1:-1;;30244:22:0::1;::::0;::::1;;;::::0;;30293:47:::1;30317:22:::0;30293:19:::1;14634:27:::0;30305:6:::1;30293:11;:19::i;:47::-;30277:13;:63:::0;-1:-1:-1;;30137:211:0:o;13751:35::-;;;-1:-1:-1;;;;;13751:35:0;;:::o;25400:121::-;3620:19;3628:10;3620:7;:19::i;:::-;3612:38;;;;;-1:-1:-1;;;3612:38:0;;;;;;;;;;;;-1:-1:-1;;;3612:38:0;;;;;;;;;;;;;;;25478:14:::1;:27:::0;25400:121::o;14373:21::-;;;;;;-1:-1:-1;;;;;14373:21:0;;:::o;3871:97::-;3620:19;3628:10;3620:7;:19::i;:::-;3612:38;;;;;-1:-1:-1;;;3612:38:0;;;;;;;;;;;;-1:-1:-1;;;3612:38:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;3933:19:0::1;3955:5;3933:19:::0;;;:14:::1;:19;::::0;;;;:27;;-1:-1:-1;;3933:27:0::1;::::0;;3871:97::o;4202:173::-;3620:19;3628:10;3620:7;:19::i;:::-;3612:38;;;;;-1:-1:-1;;;3612:38:0;;;;;;;;;;;;-1:-1:-1;;;3612:38:0;;;;;;;;;;;;;;;4278:5:::1;:11:::0;;-1:-1:-1;;;;;;4278:11:0::1;-1:-1:-1::0;;;;;4278:11:0;::::1;::::0;;::::1;::::0;;4300:19;;;-1:-1:-1;4300:19:0::1;::::0;;;;;;;;:26;;-1:-1:-1;;4300:26:0::1;::::0;;::::1;::::0;;;4342:25;;;;;;;::::1;::::0;;;;;;;;;::::1;4202:173:::0;:::o;28393:347::-;3710:24;3723:10;3710:12;:24::i;:::-;3702:48;;;;;-1:-1:-1;;;3702:48:0;;;;;;;;;;;;-1:-1:-1;;;3702:48:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;28490:23:0;::::1;28508:4;28490:23;::::0;::::1;::::0;:41:::1;;-1:-1:-1::0;28527:4:0::1;::::0;-1:-1:-1;;;;;28517:14:0;;::::1;28527:4:::0;::::1;28517:14;;28490:41;28482:50;;;::::0;::::1;;-1:-1:-1::0;;;;;28543:24:0;::::1;;::::0;;;:16:::1;:24;::::0;;;;:33;;-1:-1:-1;;28543:33:0::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;;;28587:146:::1;;28612:11;::::0;:31:::1;::::0;;-1:-1:-1;;;28612:31:0;;-1:-1:-1;;;;;28612: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;;;;;;;;;28587:146;;;28674:11;::::0;-1:-1:-1;;;;;28674:11:0::1;:20;28695:6:::0;28703:17:::1;28695:6:::0;28703:9:::1;:17::i;:::-;28674:47;;;;;;;;;;;;;-1:-1:-1::0;;;;;28674:47:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;29006:128:::0;3710:24;3723:10;3710:12;:24::i;:::-;3702:48;;;;;-1:-1:-1;;;3702:48:0;;;;;;;;;;;;-1:-1:-1;;;3702:48:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;29094:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;29094:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;29006:128::o;13835:24::-;;;-1:-1:-1;;;;;13835:24:0;;:::o;13250:29::-;;;;:::o;13195:46::-;;;;;;;;;;;;;;;:::o;4087:107::-;-1:-1:-1;;;;;4167:19:0;4143:4;4167:19;;;:14;:19;;;;;;;;;4087:107::o;13637:36::-;;;;:::o;13935:31::-;;;-1:-1:-1;;;13935:31:0;;;;;:::o;1012:132::-;1070:7;1097:39;1101:1;1104;1097:39;;;;;;;;;;;;;;;;;:3;:39::i;756:250::-;814:7;838:6;834:47;;-1:-1:-1;868:1:0;861:8;;834:47;905:5;;;909:1;905;:5;:1;929:5;;;;;:10;921:56;;;;-1:-1:-1;;;921:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;231:179;289:7;321:5;;;345:6;;;;337:46;;;;;-1:-1:-1;;;337:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;23296:388;23389:4;23406:15;23424:16;23435:4;;23424:6;:10;;:16;;;;:::i;:::-;23406:34;;23471:54;23493:7;23471:54;;;;;;;;;;;;;-1:-1:-1;;;23471:54:0;;;:9;:17;23481:6;-1:-1:-1;;;;;23471:17:0;-1:-1:-1;;;;;23471:17:0;;;;;;;;;;;;;:21;;:54;;;;;:::i;:::-;-1:-1:-1;;;;;23451:17:0;;;;;;;:9;:17;;;;;;:74;;;;23559:20;;;;;;;:33;;23584:7;23559:24;:33::i;:::-;-1:-1:-1;;;;;23536:20:0;;;;;;;:9;:20;;;;;:56;;;;23648:4;;23608:46;;;;;;23636:17;;:7;;:11;:17::i;:::-;23608:46;;;;;;;;;;;;;;;-1:-1:-1;23672:4:0;;23296:388;-1:-1:-1;;;;23296:388:0:o;558:192::-;644:7;680:12;672:6;;;;664:29;;;;-1:-1:-1;;;664:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;716:5:0;;;558:192::o;21144:2136::-;21256:6;;21236:4;;21256:6;;;;;21253:63;;;21272:41;21287:6;21295:9;21306:6;21272:14;:41::i;:::-;21265:48;;;;21253:63;-1:-1:-1;;;;;21332:22:0;;;;;;:14;:22;;;;;;;;21328:97;;21378:11;;-1:-1:-1;;;21378:11:0;;;;21370:43;;;;;-1:-1:-1;;;21370:43:0;;;;;;;;;;;;-1:-1:-1;;;21370:43:0;;;;;;;;;;;;;;;21437:15;21455:16;21466:4;;21455:6;:10;;:16;;;;:::i;:::-;-1:-1:-1;;;;;21489:22:0;;;;;;:14;:22;;;;;;21437:34;;-1:-1:-1;21489:22:0;;21488:23;:53;;;;-1:-1:-1;;;;;;21515:26:0;;21536:4;21515:26;;21488:53;:84;;;;-1:-1:-1;21567:4:0;;-1:-1:-1;;;;;21546:26:0;;;21567:4;;21546:26;;21488:84;:105;;;;-1:-1:-1;21589:4:0;;-1:-1:-1;;;;;21576:17:0;;;21589:4;;21576:17;;21488:105;:142;;;;-1:-1:-1;21610:20:0;;-1:-1:-1;;;;;21597:33:0;;;21610:20;;21597:33;;21488:142;:177;;;;-1:-1:-1;21647:18:0;;-1:-1:-1;;;;;21634:31:0;;;21647:18;;21634:31;;21488:177;:216;;;;-1:-1:-1;21683:21:0;;-1:-1:-1;;;;;21670:34:0;;;21683:21;;21670:34;;21488:216;21484:409;;;21720:18;21741:20;21751:9;21741;:20::i;:::-;21720:41;;21810:15;;21798:7;21785:10;:20;21784:41;;21776:115;;;;-1:-1:-1;;;21776:115:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21484:409;;21927:4;;-1:-1:-1;;;;;21917:14:0;;;21927:4;;21917:14;:49;;;;-1:-1:-1;21948:18:0;;;;21917:49;:94;;;;-1:-1:-1;;;;;;21984:27:0;;;;;;:16;:27;;;;;;;;21983:28;21917:94;21913:281;;;-1:-1:-1;;;;;22036:24:0;;;;;;:13;:24;;;;;;22063:15;-1:-1:-1;22028:73:0;;;;;-1:-1:-1;;;22028:73:0;;;;;;;;;;;;-1:-1:-1;;;22028:73:0;;;;;;;;;;;;;;;22161:21;;-1:-1:-1;;;;;22116:24:0;;;;;;:13;:24;;;;;22161:21;;;;;;22143:15;:39;22116:66;;21913:281;22231:13;;;;22228:122;;;-1:-1:-1;;;;;22269:21:0;;;;;;:13;:21;;;;;;;;22268:22;:51;;;;-1:-1:-1;;;;;;22295:24:0;;;;;;:13;:24;;;;;;;;22294:25;22268:51;22260:74;;;;;-1:-1:-1;;;22260:74:0;;;;;;;;;;;;-1:-1:-1;;;22260:74:0;;;;;;;;;;;;;;;22403:29;22416:6;22424:7;22403:12;:29::i;:::-;22448:16;:14;:16::i;:::-;22445:35;;;22467:10;:8;:10::i;:::-;22539:54;;;;;;;;;;;-1:-1:-1;;;22539:54:0;;;;;;;;-1:-1:-1;;;;;22539:17:0;;-1:-1:-1;22539:17:0;;;:9;:17;;;;;;;;:54;;22561:7;;22539:21;:54::i;:::-;-1:-1:-1;;;;;22519:17:0;;;;;;:9;:17;;;;;:74;;;;22633:21;22529:6;22633:13;:21::i;:::-;22632:22;:51;;;;22659:24;22673:9;22659:13;:24::i;:::-;22658:25;22632:51;22631:110;;22735:4;;22697:44;;22705:6;;22713:7;;-1:-1:-1;;;;;22722:17:0;;;22735:4;;22722:17;22697:7;:44::i;:::-;22631:110;;;22687:7;22631:110;-1:-1:-1;;;;;22775:20:0;;;;;;:9;:20;;;;;;22606:135;;-1:-1:-1;22775:40:0;;22606:135;22775:24;:40::i;:::-;-1:-1:-1;;;;;22752:20:0;;;;;;;:9;:20;;;;;;;;:63;;;;22861:24;;;;;:16;:24;;;;;;;22857:119;;22906:11;;-1:-1:-1;;;;;22906:11:0;:20;22927:6;22935:17;22927:6;22935:9;:17::i;:::-;22906:47;;;;;;;;;;;;;-1:-1:-1;;;;;22906:47:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22902:63;;-1:-1:-1;;;;;22992:27:0;;;;;;:16;:27;;;;;;;;22988:129;;23040:11;;-1:-1:-1;;;;;23040:11:0;:20;23061:9;23072:20;23061:9;23072;:20::i;:::-;23040:53;;;;;;;;;;;;;-1:-1:-1;;;;;23040:53:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23036:69;;23133:11;;23153:14;;23133:35;;;-1:-1:-1;;;;;;23133:35:0;;;;;;;;;;-1:-1:-1;;;;;23133:11:0;;;;:19;;:35;;;;;:11;;:35;;;;;;;;:11;;:35;;;;;;;;;;;;;;;;;;;;;;;;;23129:51;23214:9;-1:-1:-1;;;;;23197:53:0;23206:6;-1:-1:-1;;;;;23197:53:0;;23225:24;23244:4;;23225:14;:18;;:24;;;;:::i;:::-;23197:53;;;;;;;;;;;;;;;-1:-1:-1;23268:4:0;;21144:2136;-1:-1:-1;;;;;21144:2136:0:o;416:136::-;474:7;501:43;505:1;508;501:43;;;;;;;;;;;;;;;;;:3;:43::i;1498:239::-;1554:6;1584:5;;;-1:-1:-1;;;1610:15:0;;;;:55;;-1:-1:-1;;;;1630:14:0;;;1650;;;1629:36;;1610:55;1602:64;;;;;;1686:6;;;1685:24;;;1707:1;1702;1698;:5;;;;;;:10;1685:24;1677:33;;;;;1150:189;1236:7;1271:12;1264:5;1256:28;;;;-1:-1:-1;;;1256:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1295:9;1311:1;1307;:5;;;;;;;1150:189;-1:-1:-1;;;;;1150:189:0:o;23692:168::-;23791:12;;23780:7;:23;;:50;;;-1:-1:-1;;;;;;23807:23:0;;;;;;:15;:23;;;;;;;;23780:50;23772:80;;;;;-1:-1:-1;;;23772:80:0;;;;;;;;;;;;-1:-1:-1;;;23772:80:0;;;;;;;;;;;;;;24720:197;24807:4;;24769;;-1:-1:-1;;;;;24807:4:0;24793:10;:18;;;;:38;;-1:-1:-1;24825:6:0;;;;;;;24824:7;24793:38;:62;;;;-1:-1:-1;24844:11:0;;;;24793:62;:116;;;;-1:-1:-1;;24896:13:0;;24886:4;24868:24;;;;:9;:24;;;;;;:41;;;24720:197::o;26428:1945::-;14330:6;:13;;-1:-1:-1;;14330:13:0;;;;;26507:12:::1;::::0;26571:4:::1;::::0;26553:13:::1;::::0;14330;;26553:23:::1;::::0;:13;:17:::1;:23::i;:::-;26530:46;;26589:23;26615:58;26671:1;26615:51;26646:19;26615:26;26632:8;;26615:12;:16;;:26;;;;:::i;:58::-;26589:84:::0;-1:-1:-1;26684:20:0::1;26707:33;:12:::0;26589:84;26707:16:::1;:33::i;:::-;26777:16;::::0;;26791:1:::1;26777:16:::0;;;;;::::1;::::0;;26684:56;;-1:-1:-1;26753:21:0::1;::::0;26777:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;26777:16:0::1;26753:40;;26822:4;26804;26809:1;26804:7;;;;;;;;-1:-1:-1::0;;;;;26804:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;26848:4:::1;::::0;26838:7;;26848:4;::::1;::::0;26838;;26848;;26838:7;::::1;;;;;-1:-1:-1::0;;;;;26838:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:14;;;;26923:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;26923:188:0;;::::1;::::0;::::1;::::0;;;26865:21:::1;26923:188:::0;;;;;;27065:4:::1;26923:188:::0;;;;;;27085:15:::1;26923:188:::0;;;;;;;;;;;;;;;;;;;;;26889:21:::1;::::0;26923:6;;;::::1;::::0;:57:::1;::::0;26995:12;;26865:21;;27038:4;;26923:188;;;;;;;;;;::::1;::::0;::::1;::::0;;;26865:21;26923:188:::1;;;;;;;::::0;;::::1;::::0;;;::::1;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;27124:17;27144:40;27170:13;27144:21;:25;;:40;;;;:::i;:::-;27124:60:::0;-1:-1:-1;27197:19:0::1;27219:40;27232:26;:19:::0;27256:1:::1;27232:23;:26::i;:::-;27219:8;::::0;;:12:::1;:40::i;:::-;27197:62:::0;-1:-1:-1;27280:26:0::1;27309:58;27365:1;27309:51;27197:62:::0;27309:51;:9;27323:19;27309:13:::1;:34::i;:58::-;27280:87;;27378:27;27408:44;27440:11;27408:27;27422:12;;27408:9;:13;;:27;;;;:::i;:44::-;27378:74;;27463:26;27492:44;27524:11;27492:27;27506:12;;27492:9;:13;;:27;;;;:::i;:44::-;27463:73;;27547:24;27574:42;27604:11;27574:25;27588:10;;27574:9;:13;;:25;;;;:::i;:42::-;27547:69;;27633:11;;;;;;;;;-1:-1:-1::0;;;;;27633:11:0::1;-1:-1:-1::0;;;;;27633:19:0::1;;27660;27633:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;27629:65:::0;27733:20:::1;::::0;27725:77:::1;::::0;27705:15:::1;::::0;-1:-1:-1;;;;;27733:20:0::1;::::0;27792:5:::1;::::0;27767:18;;27705:15;27725:77;27705:15;27725:77;27767:18;27733:20;27792:5;27725:77:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;27837:18:0::1;::::0;27829:73:::1;::::0;27704:98;;-1:-1:-1;;;;;;27837:18:0::1;::::0;27892:5:::1;::::0;27869:16;;27837:18:::1;27829:73:::0;27837:18;27829:73;27869:16;27837:18;27892:5;27829:73:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;27976:5:0::1;::::0;-1:-1:-1;;27997:19:0;;;-1:-1:-1;27994:372:0::1;;28032:6;::::0;28206:21:::1;::::0;28032:244:::1;::::0;;-1:-1:-1;;;28032:244:0;;28108:4:::1;28032:244;::::0;::::1;::::0;;;;;;;:6:::1;:244:::0;;;;;;;;;;-1:-1:-1;;;;;28206:21:0;;::::1;28032:244:::0;;;;28246:15:::1;28032:244:::0;;;;;;:6;;;::::1;::::0;:22:::1;::::0;28062:18;;28032:244;;;;;::::1;::::0;;;;;;;;;28062:18;28032:6;:244;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;;28348:4:0::1;::::0;28296:58:::1;::::0;28308:18;;28328:25:::1;::::0;:15;;:19:::1;:25::i;:::-;28296:58;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;;;;;;::::1;27994:372;-1:-1:-1::0;;14348:6:0;:14;;-1:-1:-1;;14348:14:0;;;-1:-1:-1;;;;;;;;;;;26428:1945:0:o;23868:114::-;-1:-1:-1;;;;;23955:19:0;23930:4;23955:19;;;:11;:19;;;;;;;;23954:20;;23868:114::o;23992:716::-;24073:7;24124:3;24138:64;;;;-1:-1:-1;24176:14:0;;24138:64;24217:14;;;;;;;:25;;;;;24236:6;24235:7;24217:25;24214:72;;;-1:-1:-1;24273:1:0;24214:72;24298:17;24318:63;24370:10;24318:47;24356:8;;24318:33;24330:14;;24347:3;24330:20;24318:7;:11;;:33;;;;:::i;:63::-;24298:83;;24398:6;24397:7;:51;;;;;24436:12;24422:10;;24409;;:23;24408:40;24397:51;24394:118;;;24476:24;24497:2;24476:16;:7;24488:3;24476:11;:16::i;:24::-;24464:36;;24394:118;24569:4;24551:24;;;;:9;:24;;;;;;:39;;24580:9;24551:28;:39::i;:::-;24542:4;24524:24;;;;:9;:24;;;;;:66;;;;24652:4;;-1:-1:-1;;;;;24606:52:0;;;;;24638:19;;:9;;:13;:19::i;:::-;24606:52;;;;;;;;;;;;;;;24678:22;:7;24690:9;24678:11;:22::i;:::-;24671:29;23992:716;-1:-1:-1;;;;;;23992:716:0:o
Swarm Source
ipfs://7535dc4d89b65116738e05c4d547fb791cb2ba2e5b57665ea52cee83fd8b4a3b
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.