More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 214 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Transfer | 17465874 | 565 days ago | IN | 0 ETH | 0.0031343 | ||||
Approve | 16514614 | 699 days ago | IN | 0 ETH | 0.00112349 | ||||
Approve | 15419836 | 854 days ago | IN | 0 ETH | 0.00031283 | ||||
Approve | 15366324 | 863 days ago | IN | 0 ETH | 0.00186148 | ||||
Approve | 15308738 | 872 days ago | IN | 0 ETH | 0.00173029 | ||||
Approve | 15297153 | 874 days ago | IN | 0 ETH | 0.00048204 | ||||
Approve | 15295925 | 874 days ago | IN | 0 ETH | 0.00029021 | ||||
Approve | 15265493 | 879 days ago | IN | 0 ETH | 0.00064538 | ||||
Approve | 15265440 | 879 days ago | IN | 0 ETH | 0.00054004 | ||||
Set Taxes | 15265152 | 879 days ago | IN | 0 ETH | 0.00090939 | ||||
Set Taxes | 15265146 | 879 days ago | IN | 0 ETH | 0.00114299 | ||||
Set Taxes | 15265145 | 879 days ago | IN | 0 ETH | 0.00098349 | ||||
Set Taxes | 15265144 | 879 days ago | IN | 0 ETH | 0.00120427 | ||||
Approve | 15264957 | 879 days ago | IN | 0 ETH | 0.00053186 | ||||
Approve | 15264951 | 879 days ago | IN | 0 ETH | 0.00034361 | ||||
Approve | 15264498 | 879 days ago | IN | 0 ETH | 0.00108041 | ||||
Approve | 15264496 | 879 days ago | IN | 0 ETH | 0.00115849 | ||||
Approve | 15264456 | 879 days ago | IN | 0 ETH | 0.0011397 | ||||
Approve | 15264438 | 879 days ago | IN | 0 ETH | 0.00149577 | ||||
Approve | 15264405 | 879 days ago | IN | 0 ETH | 0.00165311 | ||||
Approve | 15264401 | 879 days ago | IN | 0 ETH | 0.00108112 | ||||
Approve | 15264393 | 879 days ago | IN | 0 ETH | 0.00132439 | ||||
Approve | 15264391 | 879 days ago | IN | 0 ETH | 0.00113978 | ||||
Approve | 15264373 | 879 days ago | IN | 0 ETH | 0.00119034 | ||||
Approve | 15264313 | 879 days ago | IN | 0 ETH | 0.00124654 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
17465874 | 565 days ago | 0.00010206 ETH | ||||
17465874 | 565 days ago | 0.00010206 ETH | ||||
15393014 | 859 days ago | 0.00226147 ETH | ||||
15393014 | 859 days ago | 0.00226147 ETH | ||||
15339040 | 867 days ago | 0.00227426 ETH | ||||
15339040 | 867 days ago | 0.00227426 ETH | ||||
15290269 | 875 days ago | 0.00235435 ETH | ||||
15290269 | 875 days ago | 0.00235435 ETH | ||||
15285526 | 876 days ago | 0.00237503 ETH | ||||
15285526 | 876 days ago | 0.00237503 ETH | ||||
15269544 | 878 days ago | 0.00241718 ETH | ||||
15269544 | 878 days ago | 0.00241718 ETH | ||||
15268629 | 878 days ago | 0.0024287 ETH | ||||
15268629 | 878 days ago | 0.0024287 ETH | ||||
15268440 | 878 days ago | 0.0024727 ETH | ||||
15268440 | 878 days ago | 0.0024727 ETH | ||||
15268433 | 878 days ago | 0.00251826 ETH | ||||
15268433 | 878 days ago | 0.00251826 ETH | ||||
15267443 | 878 days ago | 0.00252456 ETH | ||||
15267443 | 878 days ago | 0.00252456 ETH | ||||
15265507 | 879 days ago | 0.00256136 ETH | ||||
15265507 | 879 days ago | 0.00256136 ETH | ||||
15265452 | 879 days ago | 0.00266291 ETH | ||||
15265452 | 879 days ago | 0.00266291 ETH | ||||
15265444 | 879 days ago | 0.0027577 ETH |
Loading...
Loading
Contract Name:
Safethereum
Compiler Version
v0.8.4+commit.c7e474f2
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-07-26 */ /** _____ ______ ______ _______ _ _ ______ _____ ______ _ _ __ __ / ____| /\ | ____| ____|__ __| | | | ____| __ \| ____| | | | \/ | | (___ / \ | |__ | |__ | | | |__| | |__ | |__) | |__ | | | | \ / | \___ \ / /\ \ | __| | __| | | | __ | __| | _ /| __| | | | | |\/| | ____) / ____ \| | | |____ | | | | | | |____| | \ \| |____| |__| | | | | |_____/_/ \_\_| |______| |_| |_| |_|______|_| \_\______|\____/|_| |_| */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.4; 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 ); } interface IPancakeFactory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IDEXRouter { function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns ( uint amountToken, uint amountETH, uint liquidity ); function swapExactTokensForETH( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function factory() external pure returns (address); function WETH() external pure returns (address); } abstract contract Ownable { address internal _owner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); constructor() { address msgSender = msg.sender; _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(owner() == msg.sender, "Ownable: caller is not the owner"); _; } function renounceOwnership() public onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public onlyOwner { require( newOwner != address(0), "Ownable: new owner is the zero address" ); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } contract Safethereum is Ownable, IBEP20 { //shares represent the token someone with reflections turned on has. //over time each share becomes worth more tokens so the tokens someone holds grow mapping(address => uint) public Shares; //exFcluded from Reflection accounts just track the exact amount of tokens mapping(address => uint) public ExcludedBalances; mapping(address => bool) public ExcludedFromReflection; mapping(address => bool) public ExcludedFromFees; mapping(address => mapping(address => uint256)) private _allowances; //Market makers have different Fees for Buy/Sell mapping(address => bool) public _isMarketMaker; uint _buyTax = 1000; uint _sellTax = 1000; uint _transferTax = 0; //The taxes are split into different uses and need to add up to "TAX_DENOMINATOR" uint _marketingTax = 3000; uint _reflectionTax = 6000; uint _liquidityTax = 2000; uint _contractTax = TAX_DENOMINATOR - _reflectionTax; //percentage of dexPair that should be swapped with each contract swap (15=0.15%) uint _swapTreshold = 15; //If liquidity is greater than treshold, stop creating AutoLP(15%) uint _liquifyTreshold = 1500; //Manual swap disables auto swap, should there be a problem bool _manualSwap; uint launchTimestamp = type(uint).max; uint _liquidityUnlockTime; uint constant AntiBotBuyTax = 9999; uint constant BotBuyTaxDuration = 1 minutes; uint constant TAX_DENOMINATOR = 10000; //DividentMagnifier to make Reflection more accurate uint constant DividentMagnifier = 2**128; uint TokensPerShare = DividentMagnifier; uint8 constant _decimals = 9; uint constant InitialSupply = 10**9 * 10**_decimals; //All non excluded tokens get tracked here as shares uint _totalShares; //All excluded tokens get tracked here as tokens uint _totalExcludedTokens; function symbol() external pure override returns (string memory) { return "SFT"; } function name() external pure override returns (string memory) { return "Safethereum"; } address public marketingWallet; uint public MaxTX = InitialSupply / 500; //0.2% of the supply max TX by default address dexPair; address private constant DEXrouter=0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; IDEXRouter pancakeRouter = IDEXRouter(DEXrouter); event onSetManualSwap(bool manual); event OnSetOverLiquifyTreshold(uint amount); event OnSetSwapTreshold(uint treshold); event OnSetAMM(address AMM, bool add); event OnSetTaxes( uint Buy, uint Sell, uint Transfer, uint Reflection, uint Liquidity, uint Marketing ); event OnSetExcludedFromFee(address account, bool exclude); event OnSetLaunchTimestamp(uint Timestamp); event OnSetExcludedFromReflection(address account, bool exclude); event OnSetMarketingWallet(address wallet); event OnProlongLPLock(uint UnlockTimestamp); event OnReleaseLP(); event OnSetMaxTX(uint MaxTX); constructor() { dexPair = IPancakeFactory(pancakeRouter.factory()).createPair( address(this), pancakeRouter.WETH() ); _isMarketMaker[dexPair] = true; addTokens(msg.sender, (InitialSupply * 999) / 1000); //Sends tokens to dead address to prevent overflows from happening- due to reflection with no receiver addTokens(address(0xdead), InitialSupply / 1000); emit Transfer(address(0), address(0xdead), InitialSupply / 1000); emit Transfer(address(0), msg.sender, (InitialSupply * 999) / 1000); //Pancake pair and contract never get reflections and can't be included _excludeFromReflection(address(this), true); _excludeFromReflection(dexPair, true); //Contract never pays fees and can't be included ExcludedFromFees[msg.sender] = true; ExcludedFromFees[address(this)] = true; //Dev and marketing wallet are by default the contract wallet and need to be set later marketingWallet = msg.sender; } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///Transfer///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// function _transfer( address sender, address recipient, uint amount ) private { require(sender != address(0), "transfer from zero"); require(recipient != address(0), "transfer to zero"); require(amount > 0, "amount zero"); if (ExcludedFromFees[sender] || ExcludedFromFees[recipient]) transferFeeless(sender, recipient, amount); else transferWithFee(sender, recipient, amount); emit Transfer(sender, recipient, amount); } function transferFeeless( address sender, address recipient, uint amount ) private { removeTokens(sender, amount); addTokens(recipient, amount); } function transferWithFee( address sender, address recipient, uint amount ) private { require(block.timestamp >= launchTimestamp); bool isBuy = _isMarketMaker[sender]; bool isSell = _isMarketMaker[recipient]; uint tax; require(amount <= MaxTX, "Exceeds MaxTX"); if (isBuy) { if (block.timestamp < launchTimestamp + BotBuyTaxDuration) tax = _getStartTax(BotBuyTaxDuration, AntiBotBuyTax, _buyTax); else tax = _buyTax; } else if (isSell) tax = _sellTax; else tax = _transferTax; if (!_isSwappingContractModifier && sender != dexPair && !_manualSwap) _swapContractToken(false); uint TaxedAmount = (amount * tax) / TAX_DENOMINATOR; uint ContractToken = (TaxedAmount * _contractTax) / TAX_DENOMINATOR; uint ReflectToken = TaxedAmount - ContractToken; removeTokens(sender, amount); addTokens(recipient, amount - TaxedAmount); if (ContractToken > 0) addTokens(address(this), ContractToken); if (ReflectToken > 0) reflectTokens(ReflectToken); } //Start tax drops depending on the time since launch, enables bot protection and Dump protection function _getStartTax( uint duration, uint maxTax, uint minTax ) private view returns (uint) { uint timeSinceLaunch = block.timestamp - launchTimestamp; return maxTax - (((maxTax - minTax) * timeSinceLaunch) / duration); } //Adds token respecting reflection function addTokens(address account, uint tokens) private { uint Balance = balanceOf(account); uint newBalance = Balance + tokens; if (ExcludedFromReflection[account]) { ExcludedBalances[account] = newBalance; _totalExcludedTokens += tokens; } else { uint oldShares = SharesFromTokens(Balance); uint newShares = SharesFromTokens(newBalance); Shares[account] = newShares; _totalShares += (newShares - oldShares); } } //Removes token respecting reflection function removeTokens(address account, uint tokens) private { uint Balance = balanceOf(account); require(tokens <= Balance, "Transfer exceeds Balance"); uint newBalance = Balance - tokens; if (ExcludedFromReflection[account]) { ExcludedBalances[account] = newBalance; _totalExcludedTokens -= (Balance - newBalance); } else { uint oldShares = SharesFromTokens(Balance); uint newShares = SharesFromTokens(newBalance); Shares[account] = newShares; _totalShares -= (oldShares - newShares); } } //Handles reflection of already substracted token function reflectTokens(uint tokens) private { if (_totalShares == 0) return; //if total shares=0 reflection dissapears into nothing TokensPerShare += (tokens * DividentMagnifier) / _totalShares; } function TokensFromShares(uint shares) public view returns (uint) { return (shares * TokensPerShare) / DividentMagnifier; } function SharesFromTokens(uint tokens) public view returns (uint) { return (tokens * DividentMagnifier) / TokensPerShare; } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///SwapContractToken//////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// bool private _isSwappingContractModifier; modifier lockTheSwap() { _isSwappingContractModifier = true; _; _isSwappingContractModifier = false; } function _swapContractToken(bool ignoreLimits) private lockTheSwap { uint256 contractBalance = ExcludedBalances[address(this)]; if (_contractTax == 0) return; uint256 tokenToSwap = (ExcludedBalances[dexPair] * _swapTreshold) / TAX_DENOMINATOR; //only swap if contractBalance is larger than tokenToSwap or ignore limits if (contractBalance < tokenToSwap) { if (ignoreLimits) tokenToSwap = contractBalance; else return; } //splits the token in TokenForLiquidity and tokenForMarketing uint256 tokenForLiquidity = isOverLiquified() ? 0 : (tokenToSwap * _liquidityTax) / _contractTax; uint256 tokenForMarketing = tokenToSwap - tokenForLiquidity; //splits tokenForLiquidity in 2 halves uint256 liqToken = tokenForLiquidity / 2; //swaps marktetingToken and the liquidity token half for BNB uint256 swapToken = liqToken + tokenForMarketing; if (swapToken == 0) return; _swapTokenForBNB(swapToken); uint256 newBNB = address(this).balance; //calculates the amount of BNB belonging to the LP-Pair and converts them to LP uint256 liqBNB = (newBNB * liqToken) / swapToken; if (liqBNB > 0) _addLiquidity(liqToken, liqBNB); (bool sent, ) = marketingWallet.call{value: address(this).balance}(""); sent = true; } function _swapTokenForBNB(uint256 tokens) private { address[] memory path = new address[](2); path[0] = address(this); path[1] = pancakeRouter.WETH(); _allowances[address(this)][address(pancakeRouter)] = tokens; pancakeRouter.swapExactTokensForETH( tokens, 0, path, address(this), block.timestamp ); } function _addLiquidity(uint256 tokenamount, uint256 bnbamount) private { _allowances[address(this)][address(pancakeRouter)] = tokenamount; try pancakeRouter.addLiquidityETH{value: bnbamount}( address(this), tokenamount, 0, 0, address(this), block.timestamp ) {} catch {} } function isOverLiquified() public view returns (bool) { return ExcludedBalances[dexPair] > (totalSupply() * _liquifyTreshold) / TAX_DENOMINATOR; } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///Settings///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// function ReflectTokens(uint amount) external { removeTokens(msg.sender, amount); reflectTokens(amount); emit Transfer(msg.sender, address(0), amount); } function setMaxTX(uint MaxTXPercentage) external onlyOwner { require(MaxTXPercentage >= TAX_DENOMINATOR / 1000); MaxTX = (InitialSupply * MaxTXPercentage) / TAX_DENOMINATOR; emit OnSetMaxTX(MaxTX); } function swapContractToken(uint treshold) external onlyOwner { uint prevTreshold = _swapTreshold; _swapTreshold = treshold; _swapContractToken(true); _swapTreshold = prevTreshold; } function setManualSwap(bool manual) external onlyOwner { _manualSwap = manual; emit onSetManualSwap(manual); } function setOverLiquifyTreshold(uint amount) external onlyOwner { require(amount < TAX_DENOMINATOR); _liquifyTreshold = amount; emit OnSetOverLiquifyTreshold(amount); } function setSwapTreshold(uint treshold) external onlyOwner { require(treshold <= TAX_DENOMINATOR / 100); _swapTreshold = treshold; emit OnSetSwapTreshold(treshold); } function setAMM(address AMM, bool add) external onlyOwner { require(AMM != dexPair); _isMarketMaker[AMM] = add; emit OnSetAMM(AMM, add); } function setTaxes( uint Buy, uint Sell, uint Transfer, uint Reflection, uint Liquidity, uint Marketing ) public onlyOwner { uint maxTax = (TAX_DENOMINATOR / 100) * 11; //11% max tax require(Buy <= maxTax && Sell <= maxTax && Transfer <= maxTax); require(Reflection + Liquidity + Marketing == TAX_DENOMINATOR); _buyTax = Buy; _sellTax = Sell; _transferTax = Transfer; _reflectionTax = Reflection; _liquidityTax = Liquidity; _marketingTax = Marketing; _contractTax = TAX_DENOMINATOR - _reflectionTax; emit OnSetTaxes(Buy, Sell, Transfer, Reflection, Liquidity, Marketing); } function setExcludedFromFee(address account, bool exclude) public onlyOwner { require(exclude || account != address(this)); ExcludedFromFees[account] = exclude; emit OnSetExcludedFromFee(account, exclude); } function setLaunchInSeconds(uint secondsUntilLaunch) public onlyOwner { setLaunchTimestamp(block.timestamp + secondsUntilLaunch); } function setLaunchTimestamp(uint Timestamp) public onlyOwner { require(block.timestamp < launchTimestamp); require(Timestamp >= block.timestamp); launchTimestamp = Timestamp; emit OnSetLaunchTimestamp(Timestamp); } function setExcludedFromReflection(address account, bool exclude) public onlyOwner { //Contract and PancakePair never can receive reflections require(account != address(this) && account != dexPair); //Burn wallet always receives reflections require(account != address(0xdead)); _excludeFromReflection(account, exclude); emit OnSetExcludedFromReflection(account, exclude); } function _excludeFromReflection(address account, bool exclude) private { require(ExcludedFromReflection[account] != exclude); uint tokens = balanceOf(account); ExcludedFromReflection[account] = exclude; if (exclude) { uint shares = Shares[account]; _totalShares -= shares; Shares[account] = 0; ExcludedBalances[account] = tokens; _totalExcludedTokens += tokens; } else { ExcludedBalances[account] = 0; _totalExcludedTokens -= tokens; uint shares = SharesFromTokens(tokens); Shares[account] = shares; _totalShares += shares; } } function SetMarketingWallet(address newMarketingWallet) public onlyOwner { marketingWallet = newMarketingWallet; emit OnSetMarketingWallet(newMarketingWallet); } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///View///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// function getTaxes() public view returns ( uint Buy, uint Sell, uint Transfer, uint Reflection, uint LP, uint Marketing ) { Buy = _buyTax; Sell = _sellTax; Transfer = _transferTax; Reflection = _reflectionTax; LP = _liquidityTax; Marketing = _marketingTax; } function getInfo() public view returns ( uint SwapTreshold, uint LiquifyTreshold, uint LaunchTimestamp, uint TotalShares, uint TotalExcluded, bool ManualSwap ) { SwapTreshold = _swapTreshold; LiquifyTreshold = _liquifyTreshold; LaunchTimestamp = launchTimestamp; TotalExcluded = _totalExcludedTokens; TotalShares = _totalShares; ManualSwap = _manualSwap; } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///Liquidity Lock/////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// function LockLiquidityForSeconds(uint secondsUntilUnlock) public onlyOwner { SetUnlockTimestamp(secondsUntilUnlock + block.timestamp); } function SetUnlockTimestamp(uint newUnlockTime) public onlyOwner { // require new unlock time to be longer than old one require(newUnlockTime > _liquidityUnlockTime); _liquidityUnlockTime = newUnlockTime; emit OnProlongLPLock(_liquidityUnlockTime); } //Release Liquidity Tokens once unlock time is over function LiquidityRelease() public onlyOwner { //Only callable if liquidity Unlock time is over require(block.timestamp >= _liquidityUnlockTime, "Not yet unlocked"); IBEP20 liquidityToken = IBEP20(dexPair); uint amount = liquidityToken.balanceOf(address(this)); liquidityToken.transfer(msg.sender, amount); emit OnReleaseLP(); } function RescueTokens(address token) public onlyOwner { require(token != address(this) && token != dexPair); IBEP20(token).transfer( msg.sender, IBEP20(token).balanceOf(address(this)) ); } function getLiquidityLockSeconds() public view returns (uint256 LockedSeconds) { if (block.timestamp < _liquidityUnlockTime) return _liquidityUnlockTime - block.timestamp; return 0; } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///BEP20 Implementation///////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// receive() external payable {} function decimals() external pure override returns (uint8) { return _decimals; } function getOwner() external view override returns (address) { return owner(); } function balanceOf(address account) public view override returns (uint256) { if (ExcludedFromReflection[account]) return ExcludedBalances[account]; return TokensFromShares(Shares[account]); } function totalSupply() public view override returns (uint256) { return _totalExcludedTokens + TokensFromShares(_totalShares); } function allowance(address _owner, address spender) external view override returns (uint256) { return _allowances[_owner][spender]; } function approve(address spender, uint256 amount) external override returns (bool) { _approve(msg.sender, spender, amount); return true; } function _approve( address owner, address spender, uint256 amount ) private { require(owner != address(0)); require(spender != address(0)); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function transfer(address recipient, uint amount) external override returns (bool) { _transfer(msg.sender, recipient, amount); return true; } function transferFrom( address sender, address recipient, uint amount ) external override returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][msg.sender]; require(currentAllowance >= amount, "Transfer exceeds allowance"); _approve(sender, msg.sender, currentAllowance - amount); return true; } function increaseAllowance(address spender, uint256 addedValue) external returns (bool) { _approve( msg.sender, spender, _allowances[msg.sender][spender] + addedValue ); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) external returns (bool) { uint256 currentAllowance = _allowances[msg.sender][spender]; require(currentAllowance >= subtractedValue); _approve(msg.sender, spender, currentAllowance - subtractedValue); return true; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"UnlockTimestamp","type":"uint256"}],"name":"OnProlongLPLock","type":"event"},{"anonymous":false,"inputs":[],"name":"OnReleaseLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"AMM","type":"address"},{"indexed":false,"internalType":"bool","name":"add","type":"bool"}],"name":"OnSetAMM","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"exclude","type":"bool"}],"name":"OnSetExcludedFromFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"exclude","type":"bool"}],"name":"OnSetExcludedFromReflection","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"Timestamp","type":"uint256"}],"name":"OnSetLaunchTimestamp","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"wallet","type":"address"}],"name":"OnSetMarketingWallet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"MaxTX","type":"uint256"}],"name":"OnSetMaxTX","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"OnSetOverLiquifyTreshold","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"treshold","type":"uint256"}],"name":"OnSetSwapTreshold","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"Buy","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"Sell","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"Transfer","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"Reflection","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"Liquidity","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"Marketing","type":"uint256"}],"name":"OnSetTaxes","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"manual","type":"bool"}],"name":"onSetManualSwap","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"ExcludedBalances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"ExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"ExcludedFromReflection","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"LiquidityRelease","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"secondsUntilUnlock","type":"uint256"}],"name":"LockLiquidityForSeconds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"MaxTX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ReflectTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"RescueTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"SetMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newUnlockTime","type":"uint256"}],"name":"SetUnlockTimestamp","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"Shares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"SharesFromTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"TokensFromShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isMarketMaker","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getInfo","outputs":[{"internalType":"uint256","name":"SwapTreshold","type":"uint256"},{"internalType":"uint256","name":"LiquifyTreshold","type":"uint256"},{"internalType":"uint256","name":"LaunchTimestamp","type":"uint256"},{"internalType":"uint256","name":"TotalShares","type":"uint256"},{"internalType":"uint256","name":"TotalExcluded","type":"uint256"},{"internalType":"bool","name":"ManualSwap","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLiquidityLockSeconds","outputs":[{"internalType":"uint256","name":"LockedSeconds","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTaxes","outputs":[{"internalType":"uint256","name":"Buy","type":"uint256"},{"internalType":"uint256","name":"Sell","type":"uint256"},{"internalType":"uint256","name":"Transfer","type":"uint256"},{"internalType":"uint256","name":"Reflection","type":"uint256"},{"internalType":"uint256","name":"LP","type":"uint256"},{"internalType":"uint256","name":"Marketing","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isOverLiquified","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"AMM","type":"address"},{"internalType":"bool","name":"add","type":"bool"}],"name":"setAMM","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"exclude","type":"bool"}],"name":"setExcludedFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"exclude","type":"bool"}],"name":"setExcludedFromReflection","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"secondsUntilLaunch","type":"uint256"}],"name":"setLaunchInSeconds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"Timestamp","type":"uint256"}],"name":"setLaunchTimestamp","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"manual","type":"bool"}],"name":"setManualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"MaxTXPercentage","type":"uint256"}],"name":"setMaxTX","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setOverLiquifyTreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"treshold","type":"uint256"}],"name":"setSwapTreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"Buy","type":"uint256"},{"internalType":"uint256","name":"Sell","type":"uint256"},{"internalType":"uint256","name":"Transfer","type":"uint256"},{"internalType":"uint256","name":"Reflection","type":"uint256"},{"internalType":"uint256","name":"Liquidity","type":"uint256"},{"internalType":"uint256","name":"Marketing","type":"uint256"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"treshold","type":"uint256"}],"name":"swapContractToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526103e86007556103e86008556000600955610bb8600a55611770600b556107d0600c55600b546127106200003991906200102f565b600d55600f600e556105dc600f557fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6011557001000000000000000000000000000000006013556101f46009600a62000093919062000e91565b633b9aca00620000a4919062000fce565b620000b0919062000dfe565b601755737a250d5630b4cf539739df2c5dacb4c659f2488d601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200011557600080fd5b506000339050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200022057600080fd5b505afa15801562000235573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200025b919062000d09565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620002e057600080fd5b505afa158015620002f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200031b919062000d09565b6040518363ffffffff1660e01b81526004016200033a92919062000d57565b602060405180830381600087803b1580156200035557600080fd5b505af11580156200036a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000390919062000d09565b601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160066000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200049a336103e86103e76009600a62000465919062000e91565b633b9aca0062000476919062000fce565b62000482919062000fce565b6200048e919062000dfe565b6200075b60201b60201c565b620004dd61dead6103e86009600a620004b4919062000e91565b633b9aca00620004c5919062000fce565b620004d1919062000dfe565b6200075b60201b60201c565b61dead73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6103e86009600a62000542919062000e91565b633b9aca0062000553919062000fce565b6200055f919062000dfe565b6040516200056e919062000d84565b60405180910390a33373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6103e86103e76009600a620005dc919062000e91565b633b9aca00620005ed919062000fce565b620005f9919062000fce565b62000605919062000dfe565b60405162000614919062000d84565b60405180910390a36200062f306001620008d960201b60201c565b62000664601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620008d960201b60201c565b6001600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555033601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200113a565b60006200076e8362000b8f60201b60201c565b90506000828262000780919062000da1565b9050600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156200083a5780600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555082601560008282546200082d919062000da1565b92505081905550620008d3565b60006200084d8362000c8460201b60201c565b90506000620008628362000c8460201b60201c565b905080600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508181620008b691906200102f565b60146000828254620008c9919062000da1565b9250508190555050505b50505050565b801515600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514156200093757600080fd5b60006200094a8362000b8f60201b60201c565b905081600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550811562000ab4576000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050806014600082825462000a0291906200102f565b925050819055506000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816015600082825462000aa6919062000da1565b925050819055505062000b8a565b6000600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550806015600082825462000b0d91906200102f565b92505081905550600062000b278262000c8460201b60201c565b905080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550806014600082825462000b81919062000da1565b92505081905550505b505050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161562000c2c57600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905062000c7f565b62000c7c600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205462000cbb60201b60201c565b90505b919050565b60006013547001000000000000000000000000000000008362000ca8919062000fce565b62000cb4919062000dfe565b9050919050565b60007001000000000000000000000000000000006013548362000cdf919062000fce565b62000ceb919062000dfe565b9050919050565b60008151905062000d038162001120565b92915050565b60006020828403121562000d1c57600080fd5b600062000d2c8482850162000cf2565b91505092915050565b62000d40816200106a565b82525050565b62000d51816200109e565b82525050565b600060408201905062000d6e600083018562000d35565b62000d7d602083018462000d35565b9392505050565b600060208201905062000d9b600083018462000d46565b92915050565b600062000dae826200109e565b915062000dbb836200109e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000df35762000df2620010b5565b5b828201905092915050565b600062000e0b826200109e565b915062000e18836200109e565b92508262000e2b5762000e2a620010e4565b5b828204905092915050565b6000808291508390505b600185111562000e885780860481111562000e605762000e5f620010b5565b5b600185161562000e705780820291505b808102905062000e808562001113565b945062000e40565b94509492505050565b600062000e9e826200109e565b915062000eab83620010a8565b925062000eda7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000ee2565b905092915050565b60008262000ef4576001905062000fc7565b8162000f04576000905062000fc7565b816001811462000f1d576002811462000f285762000f5e565b600191505062000fc7565b60ff84111562000f3d5762000f3c620010b5565b5b8360020a91508482111562000f575762000f56620010b5565b5b5062000fc7565b5060208310610133831016604e8410600b841016171562000f985782820a90508381111562000f925762000f91620010b5565b5b62000fc7565b62000fa7848484600162000e36565b9250905081840481111562000fc15762000fc0620010b5565b5b81810290505b9392505050565b600062000fdb826200109e565b915062000fe8836200109e565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620010245762001023620010b5565b5b828202905092915050565b60006200103c826200109e565b915062001049836200109e565b9250828210156200105f576200105e620010b5565b5b828203905092915050565b600062001077826200107e565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008160011c9050919050565b6200112b816200106a565b81146200113757600080fd5b50565b614b4e806200114a6000396000f3fe6080604052600436106102765760003560e01c80635a9b0b891161014f578063a457c2d7116100c1578063cafcb6791161007a578063cafcb6791461099b578063cfd1940e146109d8578063d726059f14610a01578063db2c08b414610a2a578063dd62ed3e14610a67578063f2fde38b14610aa45761027d565b8063a457c2d714610841578063a9059cbb1461087e578063a9b434d9146108bb578063a9d3cd8a146108f8578063aa45b09c14610921578063ad9200b11461095e5761027d565b806375f0a8741161011357806375f0a8741461074157806388d28b771461076c578063893d20e8146107975780638da5cb5b146107c25780639515ff2a146107ed57806395d89b41146108165761027d565b80635a9b0b891461066b5780635c1ed6061461069b5780636612e66f146106c457806370a08231146106ed578063715018a61461072a5761027d565b80632d99812a116101e85780633297acb4116101ac5780633297acb41461055d578063333c39a51461058857806339509351146105b1578063409d96ae146105ee57806346e35f03146106175780635304757b146106425761027d565b80632d99812a1461048e578063313ce567146104b75780633227925f146104e2578063324c7bdd1461050b57806332955a67146105345761027d565b806318160ddd1161023a57806318160ddd146103535780631b23f7621461037e5780631d5165cf146103bb5780631e743d18146103e457806323b872dd146104215780632973ef2d1461045e5761027d565b806304d4c990146102825780630612f39d146102ab57806306fdde03146102c25780630918992b146102ed578063095ea7b3146103165761027d565b3661027d57005b600080fd5b34801561028e57600080fd5b506102a960048036038101906102a49190613e0a565b610acd565b005b3480156102b757600080fd5b506102c0610c34565b005b3480156102ce57600080fd5b506102d7610e60565b6040516102e491906141f8565b60405180910390f35b3480156102f957600080fd5b50610314600480360381019061030f9190613d69565b610e9d565b005b34801561032257600080fd5b5061033d60048036038101906103389190613c9a565b610f6e565b60405161034a91906141dd565b60405180910390f35b34801561035f57600080fd5b50610368610f85565b604051610375919061433a565b60405180910390f35b34801561038a57600080fd5b506103a560048036038101906103a09190613b81565b610fa4565b6040516103b2919061433a565b60405180910390f35b3480156103c757600080fd5b506103e260048036038101906103dd9190613b81565b610fbc565b005b3480156103f057600080fd5b5061040b60048036038101906104069190613b81565b6110ac565b60405161041891906141dd565b60405180910390f35b34801561042d57600080fd5b5061044860048036038101906104439190613c0f565b6110cc565b60405161045591906141dd565b60405180910390f35b34801561046a57600080fd5b506104736111bf565b60405161048596959493929190614410565b60405180910390f35b34801561049a57600080fd5b506104b560048036038101906104b09190613d17565b6111ee565b005b3480156104c357600080fd5b506104cc6112b7565b6040516104d99190614471565b60405180910390f35b3480156104ee57600080fd5b5061050960048036038101906105049190613d69565b6112c0565b005b34801561051757600080fd5b50610532600480360381019061052d9190613d69565b61134c565b005b34801561054057600080fd5b5061055b60048036038101906105569190613d69565b6113d8565b005b34801561056957600080fd5b5061057261149c565b60405161057f919061433a565b60405180910390f35b34801561059457600080fd5b506105af60048036038101906105aa9190613d69565b6114a2565b005b3480156105bd57600080fd5b506105d860048036038101906105d39190613c9a565b6115aa565b6040516105e591906141dd565b60405180910390f35b3480156105fa57600080fd5b5061061560048036038101906106109190613b81565b611648565b005b34801561062357600080fd5b5061062c611869565b60405161063991906141dd565b60405180910390f35b34801561064e57600080fd5b5061066960048036038101906106649190613d69565b6118f5565b005b34801561067757600080fd5b5061068061198d565b604051610692969594939291906143af565b60405180910390f35b3480156106a757600080fd5b506106c260048036038101906106bd9190613d69565b6119c9565b005b3480156106d057600080fd5b506106eb60048036038101906106e69190613c5e565b611a45565b005b3480156106f957600080fd5b50610714600480360381019061070f9190613b81565b611b8f565b604051610721919061433a565b60405180910390f35b34801561073657600080fd5b5061073f611c7a565b005b34801561074d57600080fd5b50610756611dad565b604051610763919061410f565b60405180910390f35b34801561077857600080fd5b50610781611dd3565b60405161078e919061433a565b60405180910390f35b3480156107a357600080fd5b506107ac611dfc565b6040516107b9919061410f565b60405180910390f35b3480156107ce57600080fd5b506107d7611e0b565b6040516107e4919061410f565b60405180910390f35b3480156107f957600080fd5b50610814600480360381019061080f9190613c5e565b611e34565b005b34801561082257600080fd5b5061082b611fbe565b60405161083891906141f8565b60405180910390f35b34801561084d57600080fd5b5061086860048036038101906108639190613c9a565b611ffb565b60405161087591906141dd565b60405180910390f35b34801561088a57600080fd5b506108a560048036038101906108a09190613c9a565b6120ab565b6040516108b291906141dd565b60405180910390f35b3480156108c757600080fd5b506108e260048036038101906108dd9190613b81565b6120c2565b6040516108ef91906141dd565b60405180910390f35b34801561090457600080fd5b5061091f600480360381019061091a9190613c5e565b6120e2565b005b34801561092d57600080fd5b5061094860048036038101906109439190613d69565b612246565b604051610955919061433a565b60405180910390f35b34801561096a57600080fd5b5061098560048036038101906109809190613d69565b612279565b604051610992919061433a565b60405180910390f35b3480156109a757600080fd5b506109c260048036038101906109bd9190613b81565b6122ac565b6040516109cf91906141dd565b60405180910390f35b3480156109e457600080fd5b506109ff60048036038101906109fa9190613d69565b6122cc565b005b348015610a0d57600080fd5b50610a286004803603810190610a239190613d69565b61239d565b005b348015610a3657600080fd5b50610a516004803603810190610a4c9190613b81565b612463565b604051610a5e919061433a565b60405180910390f35b348015610a7357600080fd5b50610a8e6004803603810190610a899190613bd3565b61247b565b604051610a9b919061433a565b60405180910390f35b348015610ab057600080fd5b50610acb6004803603810190610ac69190613b81565b612502565b005b3373ffffffffffffffffffffffffffffffffffffffff16610aec611e0b565b73ffffffffffffffffffffffffffffffffffffffff1614610b42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b399061431a565b60405180910390fd5b6000600b6064612710610b559190614593565b610b5f9190614735565b9050808711158015610b715750808611155b8015610b7d5750808511155b610b8657600080fd5b612710828486610b96919061453d565b610ba0919061453d565b14610baa57600080fd5b86600781905550856008819055508460098190555083600b8190555082600c8190555081600a81905550600b54612710610be4919061478f565b600d819055507f95617e149b678679d65360792e6610c8fc9add72efd72fc3c8d94792801ca5c9878787878787604051610c2396959493929190614410565b60405180910390a150505050505050565b3373ffffffffffffffffffffffffffffffffffffffff16610c53611e0b565b73ffffffffffffffffffffffffffffffffffffffff1614610ca9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca09061431a565b60405180910390fd5b601254421015610cee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce59061421a565b60405180910390fd5b6000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610d50919061410f565b60206040518083038186803b158015610d6857600080fd5b505afa158015610d7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610da09190613d92565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401610ddd929190614153565b602060405180830381600087803b158015610df757600080fd5b505af1158015610e0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e2f9190613d40565b507f28bacca46f5c57fe13623e9d5093cb2fab892814aca9b39384ab86550d9aa67560405160405180910390a15050565b60606040518060400160405280600b81526020017f536166657468657265756d000000000000000000000000000000000000000000815250905090565b3373ffffffffffffffffffffffffffffffffffffffff16610ebc611e0b565b73ffffffffffffffffffffffffffffffffffffffff1614610f12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f099061431a565b60405180910390fd5b6011544210610f2057600080fd5b42811015610f2d57600080fd5b806011819055507f818d823b27cf035ff2e055a65b6227b854203322ac5dbd674add6aa0d9d657d181604051610f63919061433a565b60405180910390a150565b6000610f7b3384846126a4565b6001905092915050565b6000610f92601454612246565b601554610f9f919061453d565b905090565b60016020528060005260406000206000915090505481565b3373ffffffffffffffffffffffffffffffffffffffff16610fdb611e0b565b73ffffffffffffffffffffffffffffffffffffffff1614611031576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110289061431a565b60405180910390fd5b80601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fa84eeda79ee9db5fc195488a69e6981aa457299570e28a92392eb9c84e005d79816040516110a1919061410f565b60405180910390a150565b60046020528060005260406000206000915054906101000a900460ff1681565b60006110d9848484612803565b6000600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561119d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111949061425a565b60405180910390fd5b6111b3853385846111ae919061478f565b6126a4565b60019150509392505050565b600080600080600080600754955060085494506009549350600b549250600c549150600a549050909192939495565b3373ffffffffffffffffffffffffffffffffffffffff1661120d611e0b565b73ffffffffffffffffffffffffffffffffffffffff1614611263576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125a9061431a565b60405180910390fd5b80601060006101000a81548160ff0219169083151502179055507fa1334f73b4ca3b2391bae4d1db09bf2b9697a0ea492081a8a94206d8ec8384f0816040516112ac91906141dd565b60405180910390a150565b60006009905090565b3373ffffffffffffffffffffffffffffffffffffffff166112df611e0b565b73ffffffffffffffffffffffffffffffffffffffff1614611335576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132c9061431a565b60405180910390fd5b6113494282611344919061453d565b61239d565b50565b3373ffffffffffffffffffffffffffffffffffffffff1661136b611e0b565b73ffffffffffffffffffffffffffffffffffffffff16146113c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b89061431a565b60405180910390fd5b6113d581426113d0919061453d565b610e9d565b50565b3373ffffffffffffffffffffffffffffffffffffffff166113f7611e0b565b73ffffffffffffffffffffffffffffffffffffffff161461144d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114449061431a565b60405180910390fd5b612710811061145b57600080fd5b80600f819055507fb46c8769af693755739d87a719196ddb7961844f19fc54dbad7b9d97690b7b5e81604051611491919061433a565b60405180910390a150565b60175481565b3373ffffffffffffffffffffffffffffffffffffffff166114c1611e0b565b73ffffffffffffffffffffffffffffffffffffffff1614611517576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150e9061431a565b60405180910390fd5b6103e86127106115279190614593565b81101561153357600080fd5b612710816009600a6115459190614617565b633b9aca006115549190614735565b61155e9190614735565b6115689190614593565b6017819055507fda6df562a48c699134fc974ed35e1831bdbcb7e694c5925ada07754925a1051860175460405161159f919061433a565b60405180910390a150565b600061163e338484600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611639919061453d565b6126a4565b6001905092915050565b3373ffffffffffffffffffffffffffffffffffffffff16611667611e0b565b73ffffffffffffffffffffffffffffffffffffffff16146116bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b49061431a565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141580156117475750601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b61175057600080fd5b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb338373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016117a6919061410f565b60206040518083038186803b1580156117be57600080fd5b505afa1580156117d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117f69190613d92565b6040518363ffffffff1660e01b8152600401611813929190614153565b602060405180830381600087803b15801561182d57600080fd5b505af1158015611841573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118659190613d40565b5050565b6000612710600f54611879610f85565b6118839190614735565b61188d9190614593565b60026000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411905090565b3373ffffffffffffffffffffffffffffffffffffffff16611914611e0b565b73ffffffffffffffffffffffffffffffffffffffff161461196a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119619061431a565b60405180910390fd5b6000600e54905081600e819055506119826001612a52565b80600e819055505050565b600080600080600080600e549550600f549450601154935060155491506014549250601060009054906101000a900460ff169050909192939495565b6119d33382612ccf565b6119dc81612e79565b600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611a3a919061433a565b60405180910390a350565b3373ffffffffffffffffffffffffffffffffffffffff16611a64611e0b565b73ffffffffffffffffffffffffffffffffffffffff1614611aba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab19061431a565b60405180910390fd5b8080611af257503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b611afb57600080fd5b80600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507fe8b454213ef316b3de93adc4e156b9aa662bb0ab7b22bcdae2e2f95b9311da668282604051611b8392919061412a565b60405180910390a15050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611c2a57600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050611c75565b611c72600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612246565b90505b919050565b3373ffffffffffffffffffffffffffffffffffffffff16611c99611e0b565b73ffffffffffffffffffffffffffffffffffffffff1614611cef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce69061431a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601254421015611df45742601254611ded919061478f565b9050611df9565b600090505b90565b6000611e06611e0b565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b3373ffffffffffffffffffffffffffffffffffffffff16611e53611e0b565b73ffffffffffffffffffffffffffffffffffffffff1614611ea9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ea09061431a565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015611f335750601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b611f3c57600080fd5b61dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611f7757600080fd5b611f818282612ecf565b7fddf34c728783f45f37f9f67e80e1d3339edb7190424dad8a0a1604c1ed6e45498282604051611fb292919061412a565b60405180910390a15050565b60606040518060400160405280600381526020017f5346540000000000000000000000000000000000000000000000000000000000815250905090565b600080600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561208a57600080fd5b6120a03385858461209b919061478f565b6126a4565b600191505092915050565b60006120b8338484612803565b6001905092915050565b60036020528060005260406000206000915054906101000a900460ff1681565b3373ffffffffffffffffffffffffffffffffffffffff16612101611e0b565b73ffffffffffffffffffffffffffffffffffffffff1614612157576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214e9061431a565b60405180910390fd5b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156121b257600080fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f9bc33cbedb7a42664c57f18776a53a203914f24bc418ec98ff073f30cca2b785828260405161223a92919061412a565b60405180910390a15050565b6000700100000000000000000000000000000000601354836122689190614735565b6122729190614593565b9050919050565b60006013547001000000000000000000000000000000008361229b9190614735565b6122a59190614593565b9050919050565b60066020528060005260406000206000915054906101000a900460ff1681565b3373ffffffffffffffffffffffffffffffffffffffff166122eb611e0b565b73ffffffffffffffffffffffffffffffffffffffff1614612341576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123389061431a565b60405180910390fd5b60646127106123509190614593565b81111561235c57600080fd5b80600e819055507f8e6b6d7a8d988561ab8631507fccb15b88a362a07e65f58071b9feb98343680281604051612392919061433a565b60405180910390a150565b3373ffffffffffffffffffffffffffffffffffffffff166123bc611e0b565b73ffffffffffffffffffffffffffffffffffffffff1614612412576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124099061431a565b60405180910390fd5b601254811161242057600080fd5b806012819055507f8ff9dc93846a022986f54e8f219a1fa780225726858e39e850da826852b4042e601254604051612458919061433a565b60405180910390a150565b60026020528060005260406000206000915090505481565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b3373ffffffffffffffffffffffffffffffffffffffff16612521611e0b565b73ffffffffffffffffffffffffffffffffffffffff1614612577576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256e9061431a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156125e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125de9061423a565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156126de57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561271857600080fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516127f6919061433a565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612873576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161286a906142da565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156128e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128da9061427a565b60405180910390fd5b60008111612926576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161291d906142ba565b60405180910390fd5b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806129c75750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156129dc576129d783838361316a565b6129e8565b6129e7838383613183565b5b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612a45919061433a565b60405180910390a3505050565b6001601960146101000a81548160ff0219169083151502179055506000600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600d541415612ac25750612cb1565b6000612710600e5460026000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b369190614735565b612b409190614593565b905080821015612b60578215612b5857819050612b5f565b5050612cb1565b5b6000612b6a611869565b612b8e57600d54600c5483612b7f9190614735565b612b899190614593565b612b91565b60005b905060008183612ba1919061478f565b90506000600283612bb29190614593565b905060008282612bc2919061453d565b90506000811415612bd857505050505050612cb1565b612be181613401565b60004790506000828483612bf59190614735565b612bff9190614593565b90506000811115612c1557612c148482613761565b5b6000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051612c5d906140fa565b60006040518083038185875af1925050503d8060008114612c9a576040519150601f19603f3d011682016040523d82523d6000602084013e612c9f565b606091505b50509050600190505050505050505050505b6000601960146101000a81548160ff02191690831515021790555050565b6000612cda83611b8f565b905080821115612d1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d169061429a565b60405180910390fd5b60008282612d2d919061478f565b9050600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612dee5780600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508082612dd1919061478f565b60156000828254612de2919061478f565b92505081905550612e73565b6000612df983612279565b90506000612e0683612279565b905080600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508082612e58919061478f565b60146000828254612e69919061478f565b9250508190555050505b50505050565b60006014541415612e8957612ecc565b60145470010000000000000000000000000000000082612ea99190614735565b612eb39190614593565b60136000828254612ec4919061453d565b925050819055505b50565b801515600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415612f2c57600080fd5b6000612f3783611b8f565b905081600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550811561309b576000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508060146000828254612fec919061478f565b925050819055506000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816015600082825461308e919061453d565b9250508190555050613165565b6000600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080601560008282546130f2919061478f565b92505081905550600061310482612279565b905080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550806014600082825461315c919061453d565b92505081905550505b505050565b6131748382612ccf565b61317e82826138c7565b505050565b60115442101561319257600080fd5b6000600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1690506000600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050600060175484111561327b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613272906142fa565b60405180910390fd5b82156132b957603c601154613290919061453d565b4210156132ae576132a7603c61270f600754613a23565b90506132b4565b60075490505b6132d0565b81156132c95760085490506132cf565b60095490505b5b601960149054906101000a900460ff1615801561333b5750601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b80156133545750601060009054906101000a900460ff16155b15613364576133636000612a52565b5b600061271082866133759190614735565b61337f9190614593565b90506000612710600d54836133949190614735565b61339e9190614593565b9050600081836133ae919061478f565b90506133ba8988612ccf565b6133cf8884896133ca919061478f565b6138c7565b60008211156133e3576133e230836138c7565b5b60008111156133f6576133f581612e79565b5b505050505050505050565b6000600267ffffffffffffffff811115613444577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156134725781602001602082028036833780820191505090505b50905030816000815181106134b0577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561355257600080fd5b505afa158015613566573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061358a9190613baa565b816001815181106135c4577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505081600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318cbafe58360008430426040518663ffffffff1660e01b8152600401613705959493929190614355565b600060405180830381600087803b15801561371f57600080fd5b505af1158015613733573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061375c9190613cd6565b505050565b81600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008030426040518863ffffffff1660e01b815260040161386b9695949392919061417c565b6060604051808303818588803b15801561388457600080fd5b505af1935050505080156138b657506040513d601f19601f820116820180604052508101906138b39190613dbb565b60015b6138bf576138c3565b5050505b5050565b60006138d283611b8f565b9050600082826138e2919061453d565b9050600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156139985780600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550826015600082825461398c919061453d565b92505081905550613a1d565b60006139a383612279565b905060006139b083612279565b905080600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508181613a02919061478f565b60146000828254613a13919061453d565b9250508190555050505b50505050565b60008060115442613a34919061478f565b905084818486613a44919061478f565b613a4e9190614735565b613a589190614593565b84613a63919061478f565b9150509392505050565b6000613a80613a7b846144b1565b61448c565b90508083825260208201905082856020860282011115613a9f57600080fd5b60005b85811015613acf5781613ab58882613b6c565b845260208401935060208301925050600181019050613aa2565b5050509392505050565b600081359050613ae881614ad3565b92915050565b600081519050613afd81614ad3565b92915050565b600082601f830112613b1457600080fd5b8151613b24848260208601613a6d565b91505092915050565b600081359050613b3c81614aea565b92915050565b600081519050613b5181614aea565b92915050565b600081359050613b6681614b01565b92915050565b600081519050613b7b81614b01565b92915050565b600060208284031215613b9357600080fd5b6000613ba184828501613ad9565b91505092915050565b600060208284031215613bbc57600080fd5b6000613bca84828501613aee565b91505092915050565b60008060408385031215613be657600080fd5b6000613bf485828601613ad9565b9250506020613c0585828601613ad9565b9150509250929050565b600080600060608486031215613c2457600080fd5b6000613c3286828701613ad9565b9350506020613c4386828701613ad9565b9250506040613c5486828701613b57565b9150509250925092565b60008060408385031215613c7157600080fd5b6000613c7f85828601613ad9565b9250506020613c9085828601613b2d565b9150509250929050565b60008060408385031215613cad57600080fd5b6000613cbb85828601613ad9565b9250506020613ccc85828601613b57565b9150509250929050565b600060208284031215613ce857600080fd5b600082015167ffffffffffffffff811115613d0257600080fd5b613d0e84828501613b03565b91505092915050565b600060208284031215613d2957600080fd5b6000613d3784828501613b2d565b91505092915050565b600060208284031215613d5257600080fd5b6000613d6084828501613b42565b91505092915050565b600060208284031215613d7b57600080fd5b6000613d8984828501613b57565b91505092915050565b600060208284031215613da457600080fd5b6000613db284828501613b6c565b91505092915050565b600080600060608486031215613dd057600080fd5b6000613dde86828701613b6c565b9350506020613def86828701613b6c565b9250506040613e0086828701613b6c565b9150509250925092565b60008060008060008060c08789031215613e2357600080fd5b6000613e3189828a01613b57565b9650506020613e4289828a01613b57565b9550506040613e5389828a01613b57565b9450506060613e6489828a01613b57565b9350506080613e7589828a01613b57565b92505060a0613e8689828a01613b57565b9150509295509295509295565b6000613e9f8383613eab565b60208301905092915050565b613eb4816147c3565b82525050565b613ec3816147c3565b82525050565b6000613ed4826144ed565b613ede8185614510565b9350613ee9836144dd565b8060005b83811015613f1a578151613f018882613e93565b9750613f0c83614503565b925050600181019050613eed565b5085935050505092915050565b613f30816147d5565b82525050565b613f3f81614818565b82525050565b6000613f50826144f8565b613f5a818561452c565b9350613f6a81856020860161482a565b613f738161491b565b840191505092915050565b6000613f8b60108361452c565b9150613f9682614939565b602082019050919050565b6000613fae60268361452c565b9150613fb982614962565b604082019050919050565b6000613fd1601a8361452c565b9150613fdc826149b1565b602082019050919050565b6000613ff460108361452c565b9150613fff826149da565b602082019050919050565b600061401760188361452c565b915061402282614a03565b602082019050919050565b600061403a600b8361452c565b915061404582614a2c565b602082019050919050565b600061405d60128361452c565b915061406882614a55565b602082019050919050565b6000614080600d8361452c565b915061408b82614a7e565b602082019050919050565b60006140a360208361452c565b91506140ae82614aa7565b602082019050919050565b60006140c6600083614521565b91506140d182614ad0565b600082019050919050565b6140e581614801565b82525050565b6140f48161480b565b82525050565b6000614105826140b9565b9150819050919050565b60006020820190506141246000830184613eba565b92915050565b600060408201905061413f6000830185613eba565b61414c6020830184613f27565b9392505050565b60006040820190506141686000830185613eba565b61417560208301846140dc565b9392505050565b600060c0820190506141916000830189613eba565b61419e60208301886140dc565b6141ab6040830187613f36565b6141b86060830186613f36565b6141c56080830185613eba565b6141d260a08301846140dc565b979650505050505050565b60006020820190506141f26000830184613f27565b92915050565b600060208201905081810360008301526142128184613f45565b905092915050565b6000602082019050818103600083015261423381613f7e565b9050919050565b6000602082019050818103600083015261425381613fa1565b9050919050565b6000602082019050818103600083015261427381613fc4565b9050919050565b6000602082019050818103600083015261429381613fe7565b9050919050565b600060208201905081810360008301526142b38161400a565b9050919050565b600060208201905081810360008301526142d38161402d565b9050919050565b600060208201905081810360008301526142f381614050565b9050919050565b6000602082019050818103600083015261431381614073565b9050919050565b6000602082019050818103600083015261433381614096565b9050919050565b600060208201905061434f60008301846140dc565b92915050565b600060a08201905061436a60008301886140dc565b6143776020830187613f36565b81810360408301526143898186613ec9565b90506143986060830185613eba565b6143a560808301846140dc565b9695505050505050565b600060c0820190506143c460008301896140dc565b6143d160208301886140dc565b6143de60408301876140dc565b6143eb60608301866140dc565b6143f860808301856140dc565b61440560a0830184613f27565b979650505050505050565b600060c08201905061442560008301896140dc565b61443260208301886140dc565b61443f60408301876140dc565b61444c60608301866140dc565b61445960808301856140dc565b61446660a08301846140dc565b979650505050505050565b600060208201905061448660008301846140eb565b92915050565b60006144966144a7565b90506144a2828261485d565b919050565b6000604051905090565b600067ffffffffffffffff8211156144cc576144cb6148ec565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600061454882614801565b915061455383614801565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156145885761458761488e565b5b828201905092915050565b600061459e82614801565b91506145a983614801565b9250826145b9576145b86148bd565b5b828204905092915050565b6000808291508390505b600185111561460e578086048111156145ea576145e961488e565b5b60018516156145f95780820291505b80810290506146078561492c565b94506145ce565b94509492505050565b600061462282614801565b915061462d8361480b565b925061465a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484614662565b905092915050565b600082614672576001905061472e565b81614680576000905061472e565b816001811461469657600281146146a0576146cf565b600191505061472e565b60ff8411156146b2576146b161488e565b5b8360020a9150848211156146c9576146c861488e565b5b5061472e565b5060208310610133831016604e8410600b84101617156147045782820a9050838111156146ff576146fe61488e565b5b61472e565b61471184848460016145c4565b925090508184048111156147285761472761488e565b5b81810290505b9392505050565b600061474082614801565b915061474b83614801565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156147845761478361488e565b5b828202905092915050565b600061479a82614801565b91506147a583614801565b9250828210156147b8576147b761488e565b5b828203905092915050565b60006147ce826147e1565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061482382614801565b9050919050565b60005b8381101561484857808201518184015260208101905061482d565b83811115614857576000848401525b50505050565b6148668261491b565b810181811067ffffffffffffffff82111715614885576148846148ec565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b7f4e6f742079657420756e6c6f636b656400000000000000000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f5472616e73666572206578636565647320616c6c6f77616e6365000000000000600082015250565b7f7472616e7366657220746f207a65726f00000000000000000000000000000000600082015250565b7f5472616e7366657220657863656564732042616c616e63650000000000000000600082015250565b7f616d6f756e74207a65726f000000000000000000000000000000000000000000600082015250565b7f7472616e736665722066726f6d207a65726f0000000000000000000000000000600082015250565b7f45786365656473204d6178545800000000000000000000000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b50565b614adc816147c3565b8114614ae757600080fd5b50565b614af3816147d5565b8114614afe57600080fd5b50565b614b0a81614801565b8114614b1557600080fd5b5056fea2646970667358221220f35982d7ee4c17d1d8c3282c9ff55ef9c2110ace4223d69b518163c504692a7464736f6c63430008040033
Deployed Bytecode
0x6080604052600436106102765760003560e01c80635a9b0b891161014f578063a457c2d7116100c1578063cafcb6791161007a578063cafcb6791461099b578063cfd1940e146109d8578063d726059f14610a01578063db2c08b414610a2a578063dd62ed3e14610a67578063f2fde38b14610aa45761027d565b8063a457c2d714610841578063a9059cbb1461087e578063a9b434d9146108bb578063a9d3cd8a146108f8578063aa45b09c14610921578063ad9200b11461095e5761027d565b806375f0a8741161011357806375f0a8741461074157806388d28b771461076c578063893d20e8146107975780638da5cb5b146107c25780639515ff2a146107ed57806395d89b41146108165761027d565b80635a9b0b891461066b5780635c1ed6061461069b5780636612e66f146106c457806370a08231146106ed578063715018a61461072a5761027d565b80632d99812a116101e85780633297acb4116101ac5780633297acb41461055d578063333c39a51461058857806339509351146105b1578063409d96ae146105ee57806346e35f03146106175780635304757b146106425761027d565b80632d99812a1461048e578063313ce567146104b75780633227925f146104e2578063324c7bdd1461050b57806332955a67146105345761027d565b806318160ddd1161023a57806318160ddd146103535780631b23f7621461037e5780631d5165cf146103bb5780631e743d18146103e457806323b872dd146104215780632973ef2d1461045e5761027d565b806304d4c990146102825780630612f39d146102ab57806306fdde03146102c25780630918992b146102ed578063095ea7b3146103165761027d565b3661027d57005b600080fd5b34801561028e57600080fd5b506102a960048036038101906102a49190613e0a565b610acd565b005b3480156102b757600080fd5b506102c0610c34565b005b3480156102ce57600080fd5b506102d7610e60565b6040516102e491906141f8565b60405180910390f35b3480156102f957600080fd5b50610314600480360381019061030f9190613d69565b610e9d565b005b34801561032257600080fd5b5061033d60048036038101906103389190613c9a565b610f6e565b60405161034a91906141dd565b60405180910390f35b34801561035f57600080fd5b50610368610f85565b604051610375919061433a565b60405180910390f35b34801561038a57600080fd5b506103a560048036038101906103a09190613b81565b610fa4565b6040516103b2919061433a565b60405180910390f35b3480156103c757600080fd5b506103e260048036038101906103dd9190613b81565b610fbc565b005b3480156103f057600080fd5b5061040b60048036038101906104069190613b81565b6110ac565b60405161041891906141dd565b60405180910390f35b34801561042d57600080fd5b5061044860048036038101906104439190613c0f565b6110cc565b60405161045591906141dd565b60405180910390f35b34801561046a57600080fd5b506104736111bf565b60405161048596959493929190614410565b60405180910390f35b34801561049a57600080fd5b506104b560048036038101906104b09190613d17565b6111ee565b005b3480156104c357600080fd5b506104cc6112b7565b6040516104d99190614471565b60405180910390f35b3480156104ee57600080fd5b5061050960048036038101906105049190613d69565b6112c0565b005b34801561051757600080fd5b50610532600480360381019061052d9190613d69565b61134c565b005b34801561054057600080fd5b5061055b60048036038101906105569190613d69565b6113d8565b005b34801561056957600080fd5b5061057261149c565b60405161057f919061433a565b60405180910390f35b34801561059457600080fd5b506105af60048036038101906105aa9190613d69565b6114a2565b005b3480156105bd57600080fd5b506105d860048036038101906105d39190613c9a565b6115aa565b6040516105e591906141dd565b60405180910390f35b3480156105fa57600080fd5b5061061560048036038101906106109190613b81565b611648565b005b34801561062357600080fd5b5061062c611869565b60405161063991906141dd565b60405180910390f35b34801561064e57600080fd5b5061066960048036038101906106649190613d69565b6118f5565b005b34801561067757600080fd5b5061068061198d565b604051610692969594939291906143af565b60405180910390f35b3480156106a757600080fd5b506106c260048036038101906106bd9190613d69565b6119c9565b005b3480156106d057600080fd5b506106eb60048036038101906106e69190613c5e565b611a45565b005b3480156106f957600080fd5b50610714600480360381019061070f9190613b81565b611b8f565b604051610721919061433a565b60405180910390f35b34801561073657600080fd5b5061073f611c7a565b005b34801561074d57600080fd5b50610756611dad565b604051610763919061410f565b60405180910390f35b34801561077857600080fd5b50610781611dd3565b60405161078e919061433a565b60405180910390f35b3480156107a357600080fd5b506107ac611dfc565b6040516107b9919061410f565b60405180910390f35b3480156107ce57600080fd5b506107d7611e0b565b6040516107e4919061410f565b60405180910390f35b3480156107f957600080fd5b50610814600480360381019061080f9190613c5e565b611e34565b005b34801561082257600080fd5b5061082b611fbe565b60405161083891906141f8565b60405180910390f35b34801561084d57600080fd5b5061086860048036038101906108639190613c9a565b611ffb565b60405161087591906141dd565b60405180910390f35b34801561088a57600080fd5b506108a560048036038101906108a09190613c9a565b6120ab565b6040516108b291906141dd565b60405180910390f35b3480156108c757600080fd5b506108e260048036038101906108dd9190613b81565b6120c2565b6040516108ef91906141dd565b60405180910390f35b34801561090457600080fd5b5061091f600480360381019061091a9190613c5e565b6120e2565b005b34801561092d57600080fd5b5061094860048036038101906109439190613d69565b612246565b604051610955919061433a565b60405180910390f35b34801561096a57600080fd5b5061098560048036038101906109809190613d69565b612279565b604051610992919061433a565b60405180910390f35b3480156109a757600080fd5b506109c260048036038101906109bd9190613b81565b6122ac565b6040516109cf91906141dd565b60405180910390f35b3480156109e457600080fd5b506109ff60048036038101906109fa9190613d69565b6122cc565b005b348015610a0d57600080fd5b50610a286004803603810190610a239190613d69565b61239d565b005b348015610a3657600080fd5b50610a516004803603810190610a4c9190613b81565b612463565b604051610a5e919061433a565b60405180910390f35b348015610a7357600080fd5b50610a8e6004803603810190610a899190613bd3565b61247b565b604051610a9b919061433a565b60405180910390f35b348015610ab057600080fd5b50610acb6004803603810190610ac69190613b81565b612502565b005b3373ffffffffffffffffffffffffffffffffffffffff16610aec611e0b565b73ffffffffffffffffffffffffffffffffffffffff1614610b42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b399061431a565b60405180910390fd5b6000600b6064612710610b559190614593565b610b5f9190614735565b9050808711158015610b715750808611155b8015610b7d5750808511155b610b8657600080fd5b612710828486610b96919061453d565b610ba0919061453d565b14610baa57600080fd5b86600781905550856008819055508460098190555083600b8190555082600c8190555081600a81905550600b54612710610be4919061478f565b600d819055507f95617e149b678679d65360792e6610c8fc9add72efd72fc3c8d94792801ca5c9878787878787604051610c2396959493929190614410565b60405180910390a150505050505050565b3373ffffffffffffffffffffffffffffffffffffffff16610c53611e0b565b73ffffffffffffffffffffffffffffffffffffffff1614610ca9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca09061431a565b60405180910390fd5b601254421015610cee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce59061421a565b60405180910390fd5b6000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610d50919061410f565b60206040518083038186803b158015610d6857600080fd5b505afa158015610d7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610da09190613d92565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401610ddd929190614153565b602060405180830381600087803b158015610df757600080fd5b505af1158015610e0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e2f9190613d40565b507f28bacca46f5c57fe13623e9d5093cb2fab892814aca9b39384ab86550d9aa67560405160405180910390a15050565b60606040518060400160405280600b81526020017f536166657468657265756d000000000000000000000000000000000000000000815250905090565b3373ffffffffffffffffffffffffffffffffffffffff16610ebc611e0b565b73ffffffffffffffffffffffffffffffffffffffff1614610f12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f099061431a565b60405180910390fd5b6011544210610f2057600080fd5b42811015610f2d57600080fd5b806011819055507f818d823b27cf035ff2e055a65b6227b854203322ac5dbd674add6aa0d9d657d181604051610f63919061433a565b60405180910390a150565b6000610f7b3384846126a4565b6001905092915050565b6000610f92601454612246565b601554610f9f919061453d565b905090565b60016020528060005260406000206000915090505481565b3373ffffffffffffffffffffffffffffffffffffffff16610fdb611e0b565b73ffffffffffffffffffffffffffffffffffffffff1614611031576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110289061431a565b60405180910390fd5b80601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fa84eeda79ee9db5fc195488a69e6981aa457299570e28a92392eb9c84e005d79816040516110a1919061410f565b60405180910390a150565b60046020528060005260406000206000915054906101000a900460ff1681565b60006110d9848484612803565b6000600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561119d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111949061425a565b60405180910390fd5b6111b3853385846111ae919061478f565b6126a4565b60019150509392505050565b600080600080600080600754955060085494506009549350600b549250600c549150600a549050909192939495565b3373ffffffffffffffffffffffffffffffffffffffff1661120d611e0b565b73ffffffffffffffffffffffffffffffffffffffff1614611263576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125a9061431a565b60405180910390fd5b80601060006101000a81548160ff0219169083151502179055507fa1334f73b4ca3b2391bae4d1db09bf2b9697a0ea492081a8a94206d8ec8384f0816040516112ac91906141dd565b60405180910390a150565b60006009905090565b3373ffffffffffffffffffffffffffffffffffffffff166112df611e0b565b73ffffffffffffffffffffffffffffffffffffffff1614611335576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132c9061431a565b60405180910390fd5b6113494282611344919061453d565b61239d565b50565b3373ffffffffffffffffffffffffffffffffffffffff1661136b611e0b565b73ffffffffffffffffffffffffffffffffffffffff16146113c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b89061431a565b60405180910390fd5b6113d581426113d0919061453d565b610e9d565b50565b3373ffffffffffffffffffffffffffffffffffffffff166113f7611e0b565b73ffffffffffffffffffffffffffffffffffffffff161461144d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114449061431a565b60405180910390fd5b612710811061145b57600080fd5b80600f819055507fb46c8769af693755739d87a719196ddb7961844f19fc54dbad7b9d97690b7b5e81604051611491919061433a565b60405180910390a150565b60175481565b3373ffffffffffffffffffffffffffffffffffffffff166114c1611e0b565b73ffffffffffffffffffffffffffffffffffffffff1614611517576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150e9061431a565b60405180910390fd5b6103e86127106115279190614593565b81101561153357600080fd5b612710816009600a6115459190614617565b633b9aca006115549190614735565b61155e9190614735565b6115689190614593565b6017819055507fda6df562a48c699134fc974ed35e1831bdbcb7e694c5925ada07754925a1051860175460405161159f919061433a565b60405180910390a150565b600061163e338484600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611639919061453d565b6126a4565b6001905092915050565b3373ffffffffffffffffffffffffffffffffffffffff16611667611e0b565b73ffffffffffffffffffffffffffffffffffffffff16146116bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b49061431a565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141580156117475750601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b61175057600080fd5b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb338373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016117a6919061410f565b60206040518083038186803b1580156117be57600080fd5b505afa1580156117d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117f69190613d92565b6040518363ffffffff1660e01b8152600401611813929190614153565b602060405180830381600087803b15801561182d57600080fd5b505af1158015611841573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118659190613d40565b5050565b6000612710600f54611879610f85565b6118839190614735565b61188d9190614593565b60026000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411905090565b3373ffffffffffffffffffffffffffffffffffffffff16611914611e0b565b73ffffffffffffffffffffffffffffffffffffffff161461196a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119619061431a565b60405180910390fd5b6000600e54905081600e819055506119826001612a52565b80600e819055505050565b600080600080600080600e549550600f549450601154935060155491506014549250601060009054906101000a900460ff169050909192939495565b6119d33382612ccf565b6119dc81612e79565b600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611a3a919061433a565b60405180910390a350565b3373ffffffffffffffffffffffffffffffffffffffff16611a64611e0b565b73ffffffffffffffffffffffffffffffffffffffff1614611aba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab19061431a565b60405180910390fd5b8080611af257503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b611afb57600080fd5b80600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507fe8b454213ef316b3de93adc4e156b9aa662bb0ab7b22bcdae2e2f95b9311da668282604051611b8392919061412a565b60405180910390a15050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611c2a57600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050611c75565b611c72600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612246565b90505b919050565b3373ffffffffffffffffffffffffffffffffffffffff16611c99611e0b565b73ffffffffffffffffffffffffffffffffffffffff1614611cef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce69061431a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601254421015611df45742601254611ded919061478f565b9050611df9565b600090505b90565b6000611e06611e0b565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b3373ffffffffffffffffffffffffffffffffffffffff16611e53611e0b565b73ffffffffffffffffffffffffffffffffffffffff1614611ea9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ea09061431a565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015611f335750601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b611f3c57600080fd5b61dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611f7757600080fd5b611f818282612ecf565b7fddf34c728783f45f37f9f67e80e1d3339edb7190424dad8a0a1604c1ed6e45498282604051611fb292919061412a565b60405180910390a15050565b60606040518060400160405280600381526020017f5346540000000000000000000000000000000000000000000000000000000000815250905090565b600080600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561208a57600080fd5b6120a03385858461209b919061478f565b6126a4565b600191505092915050565b60006120b8338484612803565b6001905092915050565b60036020528060005260406000206000915054906101000a900460ff1681565b3373ffffffffffffffffffffffffffffffffffffffff16612101611e0b565b73ffffffffffffffffffffffffffffffffffffffff1614612157576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214e9061431a565b60405180910390fd5b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156121b257600080fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f9bc33cbedb7a42664c57f18776a53a203914f24bc418ec98ff073f30cca2b785828260405161223a92919061412a565b60405180910390a15050565b6000700100000000000000000000000000000000601354836122689190614735565b6122729190614593565b9050919050565b60006013547001000000000000000000000000000000008361229b9190614735565b6122a59190614593565b9050919050565b60066020528060005260406000206000915054906101000a900460ff1681565b3373ffffffffffffffffffffffffffffffffffffffff166122eb611e0b565b73ffffffffffffffffffffffffffffffffffffffff1614612341576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123389061431a565b60405180910390fd5b60646127106123509190614593565b81111561235c57600080fd5b80600e819055507f8e6b6d7a8d988561ab8631507fccb15b88a362a07e65f58071b9feb98343680281604051612392919061433a565b60405180910390a150565b3373ffffffffffffffffffffffffffffffffffffffff166123bc611e0b565b73ffffffffffffffffffffffffffffffffffffffff1614612412576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124099061431a565b60405180910390fd5b601254811161242057600080fd5b806012819055507f8ff9dc93846a022986f54e8f219a1fa780225726858e39e850da826852b4042e601254604051612458919061433a565b60405180910390a150565b60026020528060005260406000206000915090505481565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b3373ffffffffffffffffffffffffffffffffffffffff16612521611e0b565b73ffffffffffffffffffffffffffffffffffffffff1614612577576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256e9061431a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156125e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125de9061423a565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156126de57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561271857600080fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516127f6919061433a565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612873576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161286a906142da565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156128e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128da9061427a565b60405180910390fd5b60008111612926576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161291d906142ba565b60405180910390fd5b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806129c75750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156129dc576129d783838361316a565b6129e8565b6129e7838383613183565b5b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612a45919061433a565b60405180910390a3505050565b6001601960146101000a81548160ff0219169083151502179055506000600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600d541415612ac25750612cb1565b6000612710600e5460026000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b369190614735565b612b409190614593565b905080821015612b60578215612b5857819050612b5f565b5050612cb1565b5b6000612b6a611869565b612b8e57600d54600c5483612b7f9190614735565b612b899190614593565b612b91565b60005b905060008183612ba1919061478f565b90506000600283612bb29190614593565b905060008282612bc2919061453d565b90506000811415612bd857505050505050612cb1565b612be181613401565b60004790506000828483612bf59190614735565b612bff9190614593565b90506000811115612c1557612c148482613761565b5b6000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051612c5d906140fa565b60006040518083038185875af1925050503d8060008114612c9a576040519150601f19603f3d011682016040523d82523d6000602084013e612c9f565b606091505b50509050600190505050505050505050505b6000601960146101000a81548160ff02191690831515021790555050565b6000612cda83611b8f565b905080821115612d1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d169061429a565b60405180910390fd5b60008282612d2d919061478f565b9050600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612dee5780600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508082612dd1919061478f565b60156000828254612de2919061478f565b92505081905550612e73565b6000612df983612279565b90506000612e0683612279565b905080600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508082612e58919061478f565b60146000828254612e69919061478f565b9250508190555050505b50505050565b60006014541415612e8957612ecc565b60145470010000000000000000000000000000000082612ea99190614735565b612eb39190614593565b60136000828254612ec4919061453d565b925050819055505b50565b801515600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415612f2c57600080fd5b6000612f3783611b8f565b905081600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550811561309b576000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508060146000828254612fec919061478f565b925050819055506000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816015600082825461308e919061453d565b9250508190555050613165565b6000600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080601560008282546130f2919061478f565b92505081905550600061310482612279565b905080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550806014600082825461315c919061453d565b92505081905550505b505050565b6131748382612ccf565b61317e82826138c7565b505050565b60115442101561319257600080fd5b6000600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1690506000600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050600060175484111561327b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613272906142fa565b60405180910390fd5b82156132b957603c601154613290919061453d565b4210156132ae576132a7603c61270f600754613a23565b90506132b4565b60075490505b6132d0565b81156132c95760085490506132cf565b60095490505b5b601960149054906101000a900460ff1615801561333b5750601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b80156133545750601060009054906101000a900460ff16155b15613364576133636000612a52565b5b600061271082866133759190614735565b61337f9190614593565b90506000612710600d54836133949190614735565b61339e9190614593565b9050600081836133ae919061478f565b90506133ba8988612ccf565b6133cf8884896133ca919061478f565b6138c7565b60008211156133e3576133e230836138c7565b5b60008111156133f6576133f581612e79565b5b505050505050505050565b6000600267ffffffffffffffff811115613444577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156134725781602001602082028036833780820191505090505b50905030816000815181106134b0577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561355257600080fd5b505afa158015613566573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061358a9190613baa565b816001815181106135c4577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505081600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318cbafe58360008430426040518663ffffffff1660e01b8152600401613705959493929190614355565b600060405180830381600087803b15801561371f57600080fd5b505af1158015613733573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061375c9190613cd6565b505050565b81600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008030426040518863ffffffff1660e01b815260040161386b9695949392919061417c565b6060604051808303818588803b15801561388457600080fd5b505af1935050505080156138b657506040513d601f19601f820116820180604052508101906138b39190613dbb565b60015b6138bf576138c3565b5050505b5050565b60006138d283611b8f565b9050600082826138e2919061453d565b9050600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156139985780600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550826015600082825461398c919061453d565b92505081905550613a1d565b60006139a383612279565b905060006139b083612279565b905080600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508181613a02919061478f565b60146000828254613a13919061453d565b9250508190555050505b50505050565b60008060115442613a34919061478f565b905084818486613a44919061478f565b613a4e9190614735565b613a589190614593565b84613a63919061478f565b9150509392505050565b6000613a80613a7b846144b1565b61448c565b90508083825260208201905082856020860282011115613a9f57600080fd5b60005b85811015613acf5781613ab58882613b6c565b845260208401935060208301925050600181019050613aa2565b5050509392505050565b600081359050613ae881614ad3565b92915050565b600081519050613afd81614ad3565b92915050565b600082601f830112613b1457600080fd5b8151613b24848260208601613a6d565b91505092915050565b600081359050613b3c81614aea565b92915050565b600081519050613b5181614aea565b92915050565b600081359050613b6681614b01565b92915050565b600081519050613b7b81614b01565b92915050565b600060208284031215613b9357600080fd5b6000613ba184828501613ad9565b91505092915050565b600060208284031215613bbc57600080fd5b6000613bca84828501613aee565b91505092915050565b60008060408385031215613be657600080fd5b6000613bf485828601613ad9565b9250506020613c0585828601613ad9565b9150509250929050565b600080600060608486031215613c2457600080fd5b6000613c3286828701613ad9565b9350506020613c4386828701613ad9565b9250506040613c5486828701613b57565b9150509250925092565b60008060408385031215613c7157600080fd5b6000613c7f85828601613ad9565b9250506020613c9085828601613b2d565b9150509250929050565b60008060408385031215613cad57600080fd5b6000613cbb85828601613ad9565b9250506020613ccc85828601613b57565b9150509250929050565b600060208284031215613ce857600080fd5b600082015167ffffffffffffffff811115613d0257600080fd5b613d0e84828501613b03565b91505092915050565b600060208284031215613d2957600080fd5b6000613d3784828501613b2d565b91505092915050565b600060208284031215613d5257600080fd5b6000613d6084828501613b42565b91505092915050565b600060208284031215613d7b57600080fd5b6000613d8984828501613b57565b91505092915050565b600060208284031215613da457600080fd5b6000613db284828501613b6c565b91505092915050565b600080600060608486031215613dd057600080fd5b6000613dde86828701613b6c565b9350506020613def86828701613b6c565b9250506040613e0086828701613b6c565b9150509250925092565b60008060008060008060c08789031215613e2357600080fd5b6000613e3189828a01613b57565b9650506020613e4289828a01613b57565b9550506040613e5389828a01613b57565b9450506060613e6489828a01613b57565b9350506080613e7589828a01613b57565b92505060a0613e8689828a01613b57565b9150509295509295509295565b6000613e9f8383613eab565b60208301905092915050565b613eb4816147c3565b82525050565b613ec3816147c3565b82525050565b6000613ed4826144ed565b613ede8185614510565b9350613ee9836144dd565b8060005b83811015613f1a578151613f018882613e93565b9750613f0c83614503565b925050600181019050613eed565b5085935050505092915050565b613f30816147d5565b82525050565b613f3f81614818565b82525050565b6000613f50826144f8565b613f5a818561452c565b9350613f6a81856020860161482a565b613f738161491b565b840191505092915050565b6000613f8b60108361452c565b9150613f9682614939565b602082019050919050565b6000613fae60268361452c565b9150613fb982614962565b604082019050919050565b6000613fd1601a8361452c565b9150613fdc826149b1565b602082019050919050565b6000613ff460108361452c565b9150613fff826149da565b602082019050919050565b600061401760188361452c565b915061402282614a03565b602082019050919050565b600061403a600b8361452c565b915061404582614a2c565b602082019050919050565b600061405d60128361452c565b915061406882614a55565b602082019050919050565b6000614080600d8361452c565b915061408b82614a7e565b602082019050919050565b60006140a360208361452c565b91506140ae82614aa7565b602082019050919050565b60006140c6600083614521565b91506140d182614ad0565b600082019050919050565b6140e581614801565b82525050565b6140f48161480b565b82525050565b6000614105826140b9565b9150819050919050565b60006020820190506141246000830184613eba565b92915050565b600060408201905061413f6000830185613eba565b61414c6020830184613f27565b9392505050565b60006040820190506141686000830185613eba565b61417560208301846140dc565b9392505050565b600060c0820190506141916000830189613eba565b61419e60208301886140dc565b6141ab6040830187613f36565b6141b86060830186613f36565b6141c56080830185613eba565b6141d260a08301846140dc565b979650505050505050565b60006020820190506141f26000830184613f27565b92915050565b600060208201905081810360008301526142128184613f45565b905092915050565b6000602082019050818103600083015261423381613f7e565b9050919050565b6000602082019050818103600083015261425381613fa1565b9050919050565b6000602082019050818103600083015261427381613fc4565b9050919050565b6000602082019050818103600083015261429381613fe7565b9050919050565b600060208201905081810360008301526142b38161400a565b9050919050565b600060208201905081810360008301526142d38161402d565b9050919050565b600060208201905081810360008301526142f381614050565b9050919050565b6000602082019050818103600083015261431381614073565b9050919050565b6000602082019050818103600083015261433381614096565b9050919050565b600060208201905061434f60008301846140dc565b92915050565b600060a08201905061436a60008301886140dc565b6143776020830187613f36565b81810360408301526143898186613ec9565b90506143986060830185613eba565b6143a560808301846140dc565b9695505050505050565b600060c0820190506143c460008301896140dc565b6143d160208301886140dc565b6143de60408301876140dc565b6143eb60608301866140dc565b6143f860808301856140dc565b61440560a0830184613f27565b979650505050505050565b600060c08201905061442560008301896140dc565b61443260208301886140dc565b61443f60408301876140dc565b61444c60608301866140dc565b61445960808301856140dc565b61446660a08301846140dc565b979650505050505050565b600060208201905061448660008301846140eb565b92915050565b60006144966144a7565b90506144a2828261485d565b919050565b6000604051905090565b600067ffffffffffffffff8211156144cc576144cb6148ec565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600061454882614801565b915061455383614801565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156145885761458761488e565b5b828201905092915050565b600061459e82614801565b91506145a983614801565b9250826145b9576145b86148bd565b5b828204905092915050565b6000808291508390505b600185111561460e578086048111156145ea576145e961488e565b5b60018516156145f95780820291505b80810290506146078561492c565b94506145ce565b94509492505050565b600061462282614801565b915061462d8361480b565b925061465a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484614662565b905092915050565b600082614672576001905061472e565b81614680576000905061472e565b816001811461469657600281146146a0576146cf565b600191505061472e565b60ff8411156146b2576146b161488e565b5b8360020a9150848211156146c9576146c861488e565b5b5061472e565b5060208310610133831016604e8410600b84101617156147045782820a9050838111156146ff576146fe61488e565b5b61472e565b61471184848460016145c4565b925090508184048111156147285761472761488e565b5b81810290505b9392505050565b600061474082614801565b915061474b83614801565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156147845761478361488e565b5b828202905092915050565b600061479a82614801565b91506147a583614801565b9250828210156147b8576147b761488e565b5b828203905092915050565b60006147ce826147e1565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061482382614801565b9050919050565b60005b8381101561484857808201518184015260208101905061482d565b83811115614857576000848401525b50505050565b6148668261491b565b810181811067ffffffffffffffff82111715614885576148846148ec565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b7f4e6f742079657420756e6c6f636b656400000000000000000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f5472616e73666572206578636565647320616c6c6f77616e6365000000000000600082015250565b7f7472616e7366657220746f207a65726f00000000000000000000000000000000600082015250565b7f5472616e7366657220657863656564732042616c616e63650000000000000000600082015250565b7f616d6f756e74207a65726f000000000000000000000000000000000000000000600082015250565b7f7472616e736665722066726f6d207a65726f0000000000000000000000000000600082015250565b7f45786365656473204d6178545800000000000000000000000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b50565b614adc816147c3565b8114614ae757600080fd5b50565b614af3816147d5565b8114614afe57600080fd5b50565b614b0a81614801565b8114614b1557600080fd5b5056fea2646970667358221220f35982d7ee4c17d1d8c3282c9ff55ef9c2110ace4223d69b518163c504692a7464736f6c63430008040033
Deployed Bytecode Sourcemap
3548:23210:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17568:755;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22807:397;;;;;;;;;;;;;:::i;:::-;;5672:102;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18758:261;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24959:195;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24614:141;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3760:38;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20246:186;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4009:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25673:433;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20860:445;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;16821:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24186:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22285:150;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18605:145;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16964:204;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5821:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16344:233;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26114:280;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23212:248;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15534:186;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16585:228;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21313:544;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;16148:188;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18331:266;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24390:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3114:142;;;;;;;;;;;;;:::i;:::-;;5782:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23468:253;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24288:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2899:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19027:465;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5568:96;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26402:353;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25467:198;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3946:54;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17386:174;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12246:137;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12391;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4198:46;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17176:202;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22443:297;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3889:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24763:188;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3264:277;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17568:755;3037:10;3026:21;;:7;:5;:7::i;:::-;:21;;;3018:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;17760:11:::1;17800:2;17793:3;5124:5;17775:21;;;;:::i;:::-;17774:28;;;;:::i;:::-;17760:42;;17844:6;17837:3;:13;;:31;;;;;17862:6;17854:4;:14;;17837:31;:53;;;;;17884:6;17872:8;:18;;17837:53;17829:62;;;::::0;::::1;;5124:5;17937:9;17925;17912:10;:22;;;;:::i;:::-;:34;;;;:::i;:::-;:53;17904:62;;;::::0;::::1;;17989:3;17979:7;:13;;;;18016:4;18005:8;:15;;;;18048:8;18033:12;:23;;;;18086:10;18069:14;:27;;;;18125:9;18109:13;:25;;;;18163:9;18147:13;:25;;;;18218:14;;5124:5;18200:32;;;;:::i;:::-;18185:12;:47;;;;18250:65;18261:3;18266:4;18272:8;18282:10;18294:9;18305;18250:65;;;;;;;;;;;:::i;:::-;;;;;;;;3097:1;17568:755:::0;;;;;;:::o;22807:397::-;3037:10;3026:21;;:7;:5;:7::i;:::-;:21;;;3018:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;22950:20:::1;;22931:15;:39;;22923:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23004:21;23035:7;;;;;;;;;;;23004:39;;23056:11;23070:14;:24;;;23103:4;23070:39;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23056:53;;23122:14;:23;;;23146:10;23158:6;23122:43;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23183:13;;;;;;;;;;3097:1;;22807:397::o:0;5672:102::-;5720:13;5746:20;;;;;;;;;;;;;;;;;;;5672:102;:::o;18758:261::-;3037:10;3026:21;;:7;:5;:7::i;:::-;:21;;;3018:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;18856:15:::1;;18838;:33;18830:42;;;::::0;::::1;;18906:15;18893:9;:28;;18885:37;;;::::0;::::1;;18953:9;18935:15;:27;;;;18980:31;19001:9;18980:31;;;;;;:::i;:::-;;;;;;;;18758:261:::0;:::o;24959:195::-;25063:4;25085:37;25094:10;25106:7;25115:6;25085:8;:37::i;:::-;25142:4;25135:11;;24959:195;;;;:::o;24614:141::-;24667:7;24717:30;24734:12;;24717:16;:30::i;:::-;24694:20;;:53;;;;:::i;:::-;24687:60;;24614:141;:::o;3760:38::-;;;;;;;;;;;;;;;;;:::o;20246:186::-;3037:10;3026:21;;:7;:5;:7::i;:::-;:21;;;3018:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;20348:18:::1;20330:15;;:36;;;;;;;;;;;;;;;;;;20384:40;20405:18;20384:40;;;;;;:::i;:::-;;;;;;;;20246:186:::0;:::o;4009:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;25673:433::-;25804:4;25821:36;25831:6;25839:9;25850:6;25821:9;:36::i;:::-;25870:24;25897:11;:19;25909:6;25897:19;;;;;;;;;;;;;;;:31;25917:10;25897:31;;;;;;;;;;;;;;;;25870:58;;25969:6;25949:16;:26;;25941:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;26019:55;26028:6;26036:10;26067:6;26048:16;:25;;;;:::i;:::-;26019:8;:55::i;:::-;26094:4;26087:11;;;25673:433;;;;;:::o;20860:445::-;20942:8;20965:9;20989:13;21017:15;21047:7;21069:14;21117:7;;21111:13;;21144:8;;21137:15;;21176:12;;21165:23;;21214:14;;21201:27;;21246:13;;21241:18;;21284:13;;21272:25;;20860:445;;;;;;:::o;16821:135::-;3037:10;3026:21;;:7;:5;:7::i;:::-;:21;;;3018:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;16901:6:::1;16887:11;;:20;;;;;;;;;;;;;;;;;;16925:23;16941:6;16925:23;;;;;;:::i;:::-;;;;;;;;16821:135:::0;:::o;24186:94::-;24238:5;5322:1;24256:16;;24186:94;:::o;22285:150::-;3037:10;3026:21;;:7;:5;:7::i;:::-;:21;;;3018:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;22371:56:::1;22411:15;22390:18;:36;;;;:::i;:::-;22371:18;:56::i;:::-;22285:150:::0;:::o;18605:145::-;3037:10;3026:21;;:7;:5;:7::i;:::-;:21;;;3018:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;18686:56:::1;18723:18;18705:15;:36;;;;:::i;:::-;18686:18;:56::i;:::-;18605:145:::0;:::o;16964:204::-;3037:10;3026:21;;:7;:5;:7::i;:::-;:21;;;3018:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;5124:5:::1;17047:6;:24;17039:33;;;::::0;::::1;;17104:6;17085:16;:25;;;;17128:32;17153:6;17128:32;;;;;;:::i;:::-;;;;;;;;16964:204:::0;:::o;5821:39::-;;;;:::o;16344:233::-;3037:10;3026:21;;:7;:5;:7::i;:::-;:21;;;3018:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;16459:4:::1;5124:5;16441:22;;;;:::i;:::-;16422:15;:41;;16414:50;;;::::0;::::1;;5124:5;16500:15;5322:1;5370:2;:13;;;;:::i;:::-;5362:5;:21;;;;:::i;:::-;16484:31;;;;:::i;:::-;16483:51;;;;:::i;:::-;16475:5;:59;;;;16552:17;16563:5;;16552:17;;;;;;:::i;:::-;;;;;;;;16344:233:::0;:::o;26114:280::-;26214:4;26236:126;26259:10;26284:7;26341:10;26306:11;:23;26318:10;26306:23;;;;;;;;;;;;;;;:32;26330:7;26306:32;;;;;;;;;;;;;;;;:45;;;;:::i;:::-;26236:8;:126::i;:::-;26382:4;26375:11;;26114:280;;;;:::o;23212:248::-;3037:10;3026:21;;:7;:5;:7::i;:::-;:21;;;3018:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;23302:4:::1;23285:22;;:5;:22;;;;:42;;;;;23320:7;;;;;;;;;;;23311:16;;:5;:16;;;;23285:42;23277:51;;;::::0;::::1;;23348:5;23341:22;;;23378:10;23410:5;23403:23;;;23435:4;23403:38;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23341:111;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23212:248:::0;:::o;15534:186::-;15582:4;5124:5;15677:16;;15661:13;:11;:13::i;:::-;:32;;;;:::i;:::-;15660:52;;;;:::i;:::-;15619:16;:25;15636:7;;;;;;;;;;;15619:25;;;;;;;;;;;;;;;;:93;15599:113;;15534:186;:::o;16585:228::-;3037:10;3026:21;;:7;:5;:7::i;:::-;:21;;;3018:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;16657:17:::1;16677:13;;16657:33;;16719:8;16703:13;:24;;;;16740;16759:4;16740:18;:24::i;:::-;16793:12;16777:13;:28;;;;3097:1;16585:228:::0;:::o;21313:544::-;21394:17;21426:20;21461;21496:16;21527:18;21560:15;21618:13;;21603:28;;21662:16;;21644:34;;21709:15;;21691:33;;21753:20;;21737:36;;21800:12;;21786:26;;21838:11;;;;;;;;;;;21825:24;;21313:544;;;;;;:::o;16148:188::-;16204:32;16217:10;16229:6;16204:12;:32::i;:::-;16249:21;16263:6;16249:13;:21::i;:::-;16317:1;16288:40;;16297:10;16288:40;;;16321:6;16288:40;;;;;;:::i;:::-;;;;;;;;16148:188;:::o;18331:266::-;3037:10;3026:21;;:7;:5;:7::i;:::-;:21;;;3018:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;18449:7:::1;:35;;;;18479:4;18460:24;;:7;:24;;;;18449:35;18441:44;;;::::0;::::1;;18526:7;18498:16;:25;18515:7;18498:25;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;18551:38;18572:7;18581;18551:38;;;;;;;:::i;:::-;;;;;;;;18331:266:::0;;:::o;24390:216::-;24456:7;24480:22;:31;24503:7;24480:31;;;;;;;;;;;;;;;;;;;;;;;;;24476:69;;;24520:16;:25;24537:7;24520:25;;;;;;;;;;;;;;;;24513:32;;;;24476:69;24565:33;24582:6;:15;24589:7;24582:15;;;;;;;;;;;;;;;;24565:16;:33::i;:::-;24558:40;;24390:216;;;;:::o;3114:142::-;3037:10;3026:21;;:7;:5;:7::i;:::-;:21;;;3018:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;3213:1:::1;3176:40;;3197:6;::::0;::::1;;;;;;;;3176:40;;;;;;;;;;;;3246:1;3229:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;3114:142::o:0;5782:30::-;;;;;;;;;;;;;:::o;23468:253::-;23551:21;23612:20;;23594:15;:38;23590:102;;;23677:15;23654:20;;:38;;;;:::i;:::-;23647:45;;;;23590:102;23712:1;23705:8;;23468:253;;:::o;24288:94::-;24340:7;24367;:5;:7::i;:::-;24360:14;;24288:94;:::o;2899:79::-;2937:7;2964:6;;;;;;;;;;;2957:13;;2899:79;:::o;19027:465::-;3037:10;3026:21;;:7;:5;:7::i;:::-;:21;;;3018:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;19239:4:::1;19220:24;;:7;:24;;;;:46;;;;;19259:7;;;;;;;;;;;19248:18;;:7;:18;;;;19220:46;19212:55;;;::::0;::::1;;19360:6;19341:26;;:7;:26;;;;19333:35;;;::::0;::::1;;19381:40;19404:7;19413;19381:22;:40::i;:::-;19439:45;19467:7;19476;19439:45;;;;;;;:::i;:::-;;;;;;;;19027:465:::0;;:::o;5568:96::-;5618:13;5644:12;;;;;;;;;;;;;;;;;;;5568:96;:::o;26402:353::-;26507:4;26529:24;26556:11;:23;26568:10;26556:23;;;;;;;;;;;;;;;:32;26580:7;26556:32;;;;;;;;;;;;;;;;26529:59;;26629:15;26609:16;:35;;26601:44;;;;;;26658:65;26667:10;26679:7;26707:15;26688:16;:34;;;;:::i;:::-;26658:8;:65::i;:::-;26743:4;26736:11;;;26402:353;;;;:::o;25467:198::-;25571:4;25593:40;25603:10;25615:9;25626:6;25593:9;:40::i;:::-;25653:4;25646:11;;25467:198;;;;:::o;3946:54::-;;;;;;;;;;;;;;;;;;;;;;:::o;17386:174::-;3037:10;3026:21;;:7;:5;:7::i;:::-;:21;;;3018:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;17470:7:::1;;;;;;;;;;;17463:14;;:3;:14;;;;17455:23;;;::::0;::::1;;17513:3;17491:14;:19;17506:3;17491:19;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;17534:18;17543:3;17548;17534:18;;;;;;;:::i;:::-;;;;;;;;17386:174:::0;;:::o;12246:137::-;12306:4;5232:6;12340:14;;12331:6;:23;;;;:::i;:::-;12330:45;;;;:::i;:::-;12323:52;;12246:137;;;:::o;12391:::-;12451:4;12506:14;;5232:6;12476;:26;;;;:::i;:::-;12475:45;;;;:::i;:::-;12468:52;;12391:137;;;:::o;4198:46::-;;;;;;;;;;;;;;;;;;;;;;:::o;17176:202::-;3037:10;3026:21;;:7;:5;:7::i;:::-;:21;;;3018:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;17284:3:::1;5124:5;17266:21;;;;:::i;:::-;17254:8;:33;;17246:42;;;::::0;::::1;;17317:8;17301:13;:24;;;;17343:27;17361:8;17343:27;;;;;;:::i;:::-;;;;;;;;17176:202:::0;:::o;22443:297::-;3037:10;3026:21;;:7;:5;:7::i;:::-;:21;;;3018:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;22607:20:::1;;22591:13;:36;22583:45;;;::::0;::::1;;22664:13;22641:20;:36;;;;22695:37;22711:20;;22695:37;;;;;;:::i;:::-;;;;;;;;22443:297:::0;:::o;3889:48::-;;;;;;;;;;;;;;;;;:::o;24763:188::-;24883:7;24915:11;:19;24927:6;24915:19;;;;;;;;;;;;;;;:28;24935:7;24915:28;;;;;;;;;;;;;;;;24908:35;;24763:188;;;;:::o;3264:277::-;3037:10;3026:21;;:7;:5;:7::i;:::-;:21;;;3018:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;3379:1:::1;3359:22;;:8;:22;;;;3337:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;3494:8;3465:38;;3486:6;::::0;::::1;;;;;;;;3465:38;;;;;;;;;;;;3525:8;3516:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;3264:277:::0;:::o;25162:297::-;25306:1;25289:19;;:5;:19;;;;25281:28;;;;;;25349:1;25330:21;;:7;:21;;;;25322:30;;;;;;25395:6;25365:11;:18;25377:5;25365:18;;;;;;;;;;;;;;;:27;25384:7;25365:27;;;;;;;;;;;;;;;:36;;;;25435:7;25419:32;;25428:5;25419:32;;;25444:6;25419:32;;;;;;:::i;:::-;;;;;;;;25162:297;;;:::o;8316:531::-;8462:1;8444:20;;:6;:20;;;;8436:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;8529:1;8508:23;;:9;:23;;;;8500:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;8582:1;8573:6;:10;8565:34;;;;;;;;;;;;:::i;:::-;;;;;;;;;8616:16;:24;8633:6;8616:24;;;;;;;;;;;;;;;;;;;;;;;;;:55;;;;8644:16;:27;8661:9;8644:27;;;;;;;;;;;;;;;;;;;;;;;;;8616:55;8612:174;;;8686:42;8702:6;8710:9;8721:6;8686:15;:42::i;:::-;8612:174;;;8744:42;8760:6;8768:9;8779:6;8744:15;:42::i;:::-;8612:174;8821:9;8804:35;;8813:6;8804:35;;;8832:6;8804:35;;;;;;:::i;:::-;;;;;;;;8316:531;;;:::o;13151:1492::-;13069:4;13039:27;;:34;;;;;;;;;;;;;;;;;;13229:23:::1;13255:16;:31;13280:4;13255:31;;;;;;;;;;;;;;;;13229:57;;13319:1;13303:12;;:17;13299:30;;;13322:7;;;13299:30;13341:19;5124:5;13392:13;;13364:16;:25;13381:7;;;;;;;;;;;13364:25;;;;;;;;;;;;;;;;:41;;;;:::i;:::-;13363:74;;;;:::i;:::-;13341:96;;13558:11;13540:15;:29;13536:135;;;13590:12;13586:74;;;13618:15;13604:29;;13586:74;;;13653:7;;;;13586:74;13536:135;13756:25;13784:17;:15;:17::i;:::-;:94;;13866:12;;13849:13;;13835:11;:27;;;;:::i;:::-;13834:44;;;;:::i;:::-;13784:94;;;13817:1;13784:94;13756:122;;13891:25;13933:17;13919:11;:31;;;;:::i;:::-;13891:59;;14013:16;14052:1;14032:17;:21;;;;:::i;:::-;14013:40;;14138:17;14169;14158:8;:28;;;;:::i;:::-;14138:48;;14216:1;14203:9;:14;14199:27;;;14219:7;;;;;;;;14199:27;14238;14255:9;14238:16;:27::i;:::-;14278:14;14295:21;14278:38;;14420:14;14459:9;14447:8;14438:6;:17;;;;:::i;:::-;14437:31;;;;:::i;:::-;14420:48;;14494:1;14485:6;:10;14481:47;;;14497:31;14511:8;14521:6;14497:13;:31::i;:::-;14481:47;14542:9;14557:15;;;;;;;;;;;:20;;14585:21;14557:54;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14541:70;;;14631:4;14624:11;;13086:1;;;;;;;;;;13130:5:::0;13100:27;;:35;;;;;;;;;;;;;;;;;;13151:1492;:::o;11312:640::-;11383:12;11398:18;11408:7;11398:9;:18::i;:::-;11383:33;;11447:7;11437:6;:17;;11429:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;11496:15;11524:6;11514:7;:16;;;;:::i;:::-;11496:34;;11547:22;:31;11570:7;11547:31;;;;;;;;;;;;;;;;;;;;;;;;;11543:402;;;11623:10;11595:16;:25;11612:7;11595:25;;;;;;;;;;;;;;;:38;;;;11685:10;11675:7;:20;;;;:::i;:::-;11650;;:46;;;;;;;:::i;:::-;;;;;;;;11543:402;;;11729:14;11746:25;11763:7;11746:16;:25::i;:::-;11729:42;;11788:14;11805:28;11822:10;11805:16;:28::i;:::-;11788:45;;11868:9;11850:6;:15;11857:7;11850:15;;;;;;;;;;;;;;;:27;;;;11923:9;11911;:21;;;;:::i;:::-;11894:12;;:39;;;;;;;:::i;:::-;;;;;;;;11543:402;;;11312:640;;;;:::o;12017:221::-;12092:1;12076:12;;:17;12072:30;;;12095:7;;12072:30;12218:12;;5232:6;12188;:26;;;;:::i;:::-;12187:43;;;;:::i;:::-;12169:14;;:61;;;;;;;:::i;:::-;;;;;;;;12017:221;;:::o;19500:738::-;19625:7;19590:42;;:22;:31;19613:7;19590:31;;;;;;;;;;;;;;;;;;;;;;;;;:42;;;;19582:51;;;;;;19646:11;19660:18;19670:7;19660:9;:18::i;:::-;19646:32;;19725:7;19691:22;:31;19714:7;19691:31;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;19749:7;19745:486;;;19773:11;19787:6;:15;19794:7;19787:15;;;;;;;;;;;;;;;;19773:29;;19835:6;19819:12;;:22;;;;;;;:::i;:::-;;;;;;;;19876:1;19858:6;:15;19865:7;19858:15;;;;;;;;;;;;;;;:19;;;;19922:6;19894:16;:25;19911:7;19894:25;;;;;;;;;;;;;;;:34;;;;19969:6;19945:20;;:30;;;;;;;:::i;:::-;;;;;;;;19745:486;;;;20036:1;20008:16;:25;20025:7;20008:25;;;;;;;;;;;;;;;:29;;;;20078:6;20054:20;;:30;;;;;;;:::i;:::-;;;;;;;;20101:11;20115:24;20132:6;20115:16;:24::i;:::-;20101:38;;20174:6;20156;:15;20163:7;20156:15;;;;;;;;;;;;;;;:24;;;;20213:6;20197:12;;:22;;;;;;;:::i;:::-;;;;;;;;19745:486;;19500:738;;;:::o;8855:203::-;8981:28;8994:6;9002;8981:12;:28::i;:::-;9022;9032:9;9043:6;9022:9;:28::i;:::-;8855:203;;;:::o;9066:1198::-;9219:15;;9200;:34;;9192:43;;;;;;9248:10;9261:14;:22;9276:6;9261:22;;;;;;;;;;;;;;;;;;;;;;;;;9248:35;;9296:11;9310:14;:25;9325:9;9310:25;;;;;;;;;;;;;;;;;;;;;;;;;9296:39;;9348:8;9387:5;;9377:6;:15;;9369:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;9427:5;9423:274;;;5074:9;9471:15;;:35;;;;:::i;:::-;9453:15;:53;9449:170;;;9531:55;5074:9;5027:4;9578:7;;9531:12;:55::i;:::-;9525:61;;9449:170;;;9612:7;;9606:13;;9449:170;9423:274;;;9641:6;9637:60;;;9655:8;;9649:14;;9637:60;;;9685:12;;9679:18;;9637:60;9423:274;9715:27;;;;;;;;;;;9714:28;:49;;;;;9756:7;;;;;;;;;;;9746:17;;:6;:17;;;;9714:49;:65;;;;;9768:11;;;;;;;;;;;9767:12;9714:65;9710:109;;;9794:25;9813:5;9794:18;:25::i;:::-;9710:109;9832:16;5124:5;9861:3;9852:6;:12;;;;:::i;:::-;9851:32;;;;:::i;:::-;9832:51;;9896:18;5124:5;9932:12;;9918:11;:26;;;;:::i;:::-;9917:46;;;;:::i;:::-;9896:67;;9976:17;10010:13;9996:11;:27;;;;:::i;:::-;9976:47;;10036:28;10049:6;10057;10036:12;:28::i;:::-;10077:42;10087:9;10107:11;10098:6;:20;;;;:::i;:::-;10077:9;:42::i;:::-;10152:1;10136:13;:17;10132:62;;;10155:39;10173:4;10180:13;10155:9;:39::i;:::-;10132:62;10226:1;10211:12;:16;10207:49;;;10229:27;10243:12;10229:13;:27::i;:::-;10207:49;9066:1198;;;;;;;;;:::o;14651:433::-;14712:21;14750:1;14736:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14712:40;;14783:4;14765;14770:1;14765:7;;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;;;14811:13;;;;;;;;;;;:18;;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14801:4;14806:1;14801:7;;;;;;;;;;;;;;;;;;;;;:30;;;;;;;;;;;14897:6;14844:11;:26;14864:4;14844:26;;;;;;;;;;;;;;;:50;14879:13;;;;;;;;;;;14844:50;;;;;;;;;;;;;;;:59;;;;14916:13;;;;;;;;;;;:35;;;14966:6;14987:1;15003:4;15030;15050:15;14916:160;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14651:433;;:::o;15092:434::-;15227:11;15174;:26;15194:4;15174:26;;;;;;;;;;;;;;;:50;15209:13;;;;;;;;;;;15174:50;;;;;;;;;;;;;;;:64;;;;15268:13;;;;;;;;;;;:29;;;15305:9;15342:4;15366:11;15396:1;15416;15444:4;15468:15;15268:230;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;15251:268;;;;;;;;;15092:434;;:::o;10705:554::-;10773:12;10788:18;10798:7;10788:9;:18::i;:::-;10773:33;;10819:15;10847:6;10837:7;:16;;;;:::i;:::-;10819:34;;10870:22;:31;10893:7;10870:31;;;;;;;;;;;;;;;;;;;;;;;;;10866:386;;;10946:10;10918:16;:25;10935:7;10918:25;;;;;;;;;;;;;;;:38;;;;10997:6;10973:20;;:30;;;;;;;:::i;:::-;;;;;;;;10866:386;;;11036:14;11053:25;11070:7;11053:16;:25::i;:::-;11036:42;;11095:14;11112:28;11129:10;11112:16;:28::i;:::-;11095:45;;11175:9;11157:6;:15;11164:7;11157:15;;;;;;;;;;;;;;;:27;;;;11230:9;11218;:21;;;;:::i;:::-;11201:12;;:39;;;;;;;:::i;:::-;;;;;;;;10866:386;;;10705:554;;;;:::o;10376:279::-;10495:4;10512:20;10553:15;;10535;:33;;;;:::i;:::-;10512:56;;10638:8;10619:15;10609:6;10600;:15;;;;:::i;:::-;10599:35;;;;:::i;:::-;10598:48;;;;:::i;:::-;10588:6;:59;;;;:::i;:::-;10581:66;;;10376:279;;;;;:::o;24:677:1:-;131:5;156:81;172:64;229:6;172:64;:::i;:::-;156:81;:::i;:::-;147:90;;257:5;286:6;279:5;272:21;320:4;313:5;309:16;302:23;;346:6;396:3;388:4;380:6;376:17;371:3;367:27;364:36;361:2;;;425:1;422;415:12;361:2;461:1;446:249;471:6;468:1;465:13;446:249;;;539:3;568:48;612:3;600:10;568:48;:::i;:::-;563:3;556:61;646:4;641:3;637:14;630:21;;680:4;675:3;671:14;664:21;;506:189;493:1;490;486:9;481:14;;446:249;;;450:14;137:564;;;;;;;:::o;707:139::-;753:5;791:6;778:20;769:29;;807:33;834:5;807:33;:::i;:::-;759:87;;;;:::o;852:143::-;909:5;940:6;934:13;925:22;;956:33;983:5;956:33;:::i;:::-;915:80;;;;:::o;1018:318::-;1100:5;1149:3;1142:4;1134:6;1130:17;1126:27;1116:2;;1167:1;1164;1157:12;1116:2;1200:6;1194:13;1225:105;1326:3;1318:6;1311:4;1303:6;1299:17;1225:105;:::i;:::-;1216:114;;1106:230;;;;;:::o;1342:133::-;1385:5;1423:6;1410:20;1401:29;;1439:30;1463:5;1439:30;:::i;:::-;1391:84;;;;:::o;1481:137::-;1535:5;1566:6;1560:13;1551:22;;1582:30;1606:5;1582:30;:::i;:::-;1541:77;;;;:::o;1624:139::-;1670:5;1708:6;1695:20;1686:29;;1724:33;1751:5;1724:33;:::i;:::-;1676:87;;;;:::o;1769:143::-;1826:5;1857:6;1851:13;1842:22;;1873:33;1900:5;1873:33;:::i;:::-;1832:80;;;;:::o;1918:262::-;1977:6;2026:2;2014:9;2005:7;2001:23;1997:32;1994:2;;;2042:1;2039;2032:12;1994:2;2085:1;2110:53;2155:7;2146:6;2135:9;2131:22;2110:53;:::i;:::-;2100:63;;2056:117;1984:196;;;;:::o;2186:284::-;2256:6;2305:2;2293:9;2284:7;2280:23;2276:32;2273:2;;;2321:1;2318;2311:12;2273:2;2364:1;2389:64;2445:7;2436:6;2425:9;2421:22;2389:64;:::i;:::-;2379:74;;2335:128;2263:207;;;;:::o;2476:407::-;2544:6;2552;2601:2;2589:9;2580:7;2576:23;2572:32;2569:2;;;2617:1;2614;2607:12;2569:2;2660:1;2685:53;2730:7;2721:6;2710:9;2706:22;2685:53;:::i;:::-;2675:63;;2631:117;2787:2;2813:53;2858:7;2849:6;2838:9;2834:22;2813:53;:::i;:::-;2803:63;;2758:118;2559:324;;;;;:::o;2889:552::-;2966:6;2974;2982;3031:2;3019:9;3010:7;3006:23;3002:32;2999:2;;;3047:1;3044;3037:12;2999:2;3090:1;3115:53;3160:7;3151:6;3140:9;3136:22;3115:53;:::i;:::-;3105:63;;3061:117;3217:2;3243:53;3288:7;3279:6;3268:9;3264:22;3243:53;:::i;:::-;3233:63;;3188:118;3345:2;3371:53;3416:7;3407:6;3396:9;3392:22;3371:53;:::i;:::-;3361:63;;3316:118;2989:452;;;;;:::o;3447:401::-;3512:6;3520;3569:2;3557:9;3548:7;3544:23;3540:32;3537:2;;;3585:1;3582;3575:12;3537:2;3628:1;3653:53;3698:7;3689:6;3678:9;3674:22;3653:53;:::i;:::-;3643:63;;3599:117;3755:2;3781:50;3823:7;3814:6;3803:9;3799:22;3781:50;:::i;:::-;3771:60;;3726:115;3527:321;;;;;:::o;3854:407::-;3922:6;3930;3979:2;3967:9;3958:7;3954:23;3950:32;3947:2;;;3995:1;3992;3985:12;3947:2;4038:1;4063:53;4108:7;4099:6;4088:9;4084:22;4063:53;:::i;:::-;4053:63;;4009:117;4165:2;4191:53;4236:7;4227:6;4216:9;4212:22;4191:53;:::i;:::-;4181:63;;4136:118;3937:324;;;;;:::o;4267:420::-;4362:6;4411:2;4399:9;4390:7;4386:23;4382:32;4379:2;;;4427:1;4424;4417:12;4379:2;4491:1;4480:9;4476:17;4470:24;4521:18;4513:6;4510:30;4507:2;;;4553:1;4550;4543:12;4507:2;4581:89;4662:7;4653:6;4642:9;4638:22;4581:89;:::i;:::-;4571:99;;4441:239;4369:318;;;;:::o;4693:256::-;4749:6;4798:2;4786:9;4777:7;4773:23;4769:32;4766:2;;;4814:1;4811;4804:12;4766:2;4857:1;4882:50;4924:7;4915:6;4904:9;4900:22;4882:50;:::i;:::-;4872:60;;4828:114;4756:193;;;;:::o;4955:278::-;5022:6;5071:2;5059:9;5050:7;5046:23;5042:32;5039:2;;;5087:1;5084;5077:12;5039:2;5130:1;5155:61;5208:7;5199:6;5188:9;5184:22;5155:61;:::i;:::-;5145:71;;5101:125;5029:204;;;;:::o;5239:262::-;5298:6;5347:2;5335:9;5326:7;5322:23;5318:32;5315:2;;;5363:1;5360;5353:12;5315:2;5406:1;5431:53;5476:7;5467:6;5456:9;5452:22;5431:53;:::i;:::-;5421:63;;5377:117;5305:196;;;;:::o;5507:284::-;5577:6;5626:2;5614:9;5605:7;5601:23;5597:32;5594:2;;;5642:1;5639;5632:12;5594:2;5685:1;5710:64;5766:7;5757:6;5746:9;5742:22;5710:64;:::i;:::-;5700:74;;5656:128;5584:207;;;;:::o;5797:596::-;5885:6;5893;5901;5950:2;5938:9;5929:7;5925:23;5921:32;5918:2;;;5966:1;5963;5956:12;5918:2;6009:1;6034:64;6090:7;6081:6;6070:9;6066:22;6034:64;:::i;:::-;6024:74;;5980:128;6147:2;6173:64;6229:7;6220:6;6209:9;6205:22;6173:64;:::i;:::-;6163:74;;6118:129;6286:2;6312:64;6368:7;6359:6;6348:9;6344:22;6312:64;:::i;:::-;6302:74;;6257:129;5908:485;;;;;:::o;6399:990::-;6503:6;6511;6519;6527;6535;6543;6592:3;6580:9;6571:7;6567:23;6563:33;6560:2;;;6609:1;6606;6599:12;6560:2;6652:1;6677:53;6722:7;6713:6;6702:9;6698:22;6677:53;:::i;:::-;6667:63;;6623:117;6779:2;6805:53;6850:7;6841:6;6830:9;6826:22;6805:53;:::i;:::-;6795:63;;6750:118;6907:2;6933:53;6978:7;6969:6;6958:9;6954:22;6933:53;:::i;:::-;6923:63;;6878:118;7035:2;7061:53;7106:7;7097:6;7086:9;7082:22;7061:53;:::i;:::-;7051:63;;7006:118;7163:3;7190:53;7235:7;7226:6;7215:9;7211:22;7190:53;:::i;:::-;7180:63;;7134:119;7292:3;7319:53;7364:7;7355:6;7344:9;7340:22;7319:53;:::i;:::-;7309:63;;7263:119;6550:839;;;;;;;;:::o;7395:179::-;7464:10;7485:46;7527:3;7519:6;7485:46;:::i;:::-;7563:4;7558:3;7554:14;7540:28;;7475:99;;;;:::o;7580:108::-;7657:24;7675:5;7657:24;:::i;:::-;7652:3;7645:37;7635:53;;:::o;7694:118::-;7781:24;7799:5;7781:24;:::i;:::-;7776:3;7769:37;7759:53;;:::o;7848:732::-;7967:3;7996:54;8044:5;7996:54;:::i;:::-;8066:86;8145:6;8140:3;8066:86;:::i;:::-;8059:93;;8176:56;8226:5;8176:56;:::i;:::-;8255:7;8286:1;8271:284;8296:6;8293:1;8290:13;8271:284;;;8372:6;8366:13;8399:63;8458:3;8443:13;8399:63;:::i;:::-;8392:70;;8485:60;8538:6;8485:60;:::i;:::-;8475:70;;8331:224;8318:1;8315;8311:9;8306:14;;8271:284;;;8275:14;8571:3;8564:10;;7972:608;;;;;;;:::o;8586:109::-;8667:21;8682:5;8667:21;:::i;:::-;8662:3;8655:34;8645:50;;:::o;8701:147::-;8796:45;8835:5;8796:45;:::i;:::-;8791:3;8784:58;8774:74;;:::o;8854:364::-;8942:3;8970:39;9003:5;8970:39;:::i;:::-;9025:71;9089:6;9084:3;9025:71;:::i;:::-;9018:78;;9105:52;9150:6;9145:3;9138:4;9131:5;9127:16;9105:52;:::i;:::-;9182:29;9204:6;9182:29;:::i;:::-;9177:3;9173:39;9166:46;;8946:272;;;;;:::o;9224:366::-;9366:3;9387:67;9451:2;9446:3;9387:67;:::i;:::-;9380:74;;9463:93;9552:3;9463:93;:::i;:::-;9581:2;9576:3;9572:12;9565:19;;9370:220;;;:::o;9596:366::-;9738:3;9759:67;9823:2;9818:3;9759:67;:::i;:::-;9752:74;;9835:93;9924:3;9835:93;:::i;:::-;9953:2;9948:3;9944:12;9937:19;;9742:220;;;:::o;9968:366::-;10110:3;10131:67;10195:2;10190:3;10131:67;:::i;:::-;10124:74;;10207:93;10296:3;10207:93;:::i;:::-;10325:2;10320:3;10316:12;10309:19;;10114:220;;;:::o;10340:366::-;10482:3;10503:67;10567:2;10562:3;10503:67;:::i;:::-;10496:74;;10579:93;10668:3;10579:93;:::i;:::-;10697:2;10692:3;10688:12;10681:19;;10486:220;;;:::o;10712:366::-;10854:3;10875:67;10939:2;10934:3;10875:67;:::i;:::-;10868:74;;10951:93;11040:3;10951:93;:::i;:::-;11069:2;11064:3;11060:12;11053:19;;10858:220;;;:::o;11084:366::-;11226:3;11247:67;11311:2;11306:3;11247:67;:::i;:::-;11240:74;;11323:93;11412:3;11323:93;:::i;:::-;11441:2;11436:3;11432:12;11425:19;;11230:220;;;:::o;11456:366::-;11598:3;11619:67;11683:2;11678:3;11619:67;:::i;:::-;11612:74;;11695:93;11784:3;11695:93;:::i;:::-;11813:2;11808:3;11804:12;11797:19;;11602:220;;;:::o;11828:366::-;11970:3;11991:67;12055:2;12050:3;11991:67;:::i;:::-;11984:74;;12067:93;12156:3;12067:93;:::i;:::-;12185:2;12180:3;12176:12;12169:19;;11974:220;;;:::o;12200:366::-;12342:3;12363:67;12427:2;12422:3;12363:67;:::i;:::-;12356:74;;12439:93;12528:3;12439:93;:::i;:::-;12557:2;12552:3;12548:12;12541:19;;12346:220;;;:::o;12572:398::-;12731:3;12752:83;12833:1;12828:3;12752:83;:::i;:::-;12745:90;;12844:93;12933:3;12844:93;:::i;:::-;12962:1;12957:3;12953:11;12946:18;;12735:235;;;:::o;12976:118::-;13063:24;13081:5;13063:24;:::i;:::-;13058:3;13051:37;13041:53;;:::o;13100:112::-;13183:22;13199:5;13183:22;:::i;:::-;13178:3;13171:35;13161:51;;:::o;13218:379::-;13402:3;13424:147;13567:3;13424:147;:::i;:::-;13417:154;;13588:3;13581:10;;13406:191;;;:::o;13603:222::-;13696:4;13734:2;13723:9;13719:18;13711:26;;13747:71;13815:1;13804:9;13800:17;13791:6;13747:71;:::i;:::-;13701:124;;;;:::o;13831:320::-;13946:4;13984:2;13973:9;13969:18;13961:26;;13997:71;14065:1;14054:9;14050:17;14041:6;13997:71;:::i;:::-;14078:66;14140:2;14129:9;14125:18;14116:6;14078:66;:::i;:::-;13951:200;;;;;:::o;14157:332::-;14278:4;14316:2;14305:9;14301:18;14293:26;;14329:71;14397:1;14386:9;14382:17;14373:6;14329:71;:::i;:::-;14410:72;14478:2;14467:9;14463:18;14454:6;14410:72;:::i;:::-;14283:206;;;;;:::o;14495:807::-;14744:4;14782:3;14771:9;14767:19;14759:27;;14796:71;14864:1;14853:9;14849:17;14840:6;14796:71;:::i;:::-;14877:72;14945:2;14934:9;14930:18;14921:6;14877:72;:::i;:::-;14959:80;15035:2;15024:9;15020:18;15011:6;14959:80;:::i;:::-;15049;15125:2;15114:9;15110:18;15101:6;15049:80;:::i;:::-;15139:73;15207:3;15196:9;15192:19;15183:6;15139:73;:::i;:::-;15222;15290:3;15279:9;15275:19;15266:6;15222:73;:::i;:::-;14749:553;;;;;;;;;:::o;15308:210::-;15395:4;15433:2;15422:9;15418:18;15410:26;;15446:65;15508:1;15497:9;15493:17;15484:6;15446:65;:::i;:::-;15400:118;;;;:::o;15524:313::-;15637:4;15675:2;15664:9;15660:18;15652:26;;15724:9;15718:4;15714:20;15710:1;15699:9;15695:17;15688:47;15752:78;15825:4;15816:6;15752:78;:::i;:::-;15744:86;;15642:195;;;;:::o;15843:419::-;16009:4;16047:2;16036:9;16032:18;16024:26;;16096:9;16090:4;16086:20;16082:1;16071:9;16067:17;16060:47;16124:131;16250:4;16124:131;:::i;:::-;16116:139;;16014:248;;;:::o;16268:419::-;16434:4;16472:2;16461:9;16457:18;16449:26;;16521:9;16515:4;16511:20;16507:1;16496:9;16492:17;16485:47;16549:131;16675:4;16549:131;:::i;:::-;16541:139;;16439:248;;;:::o;16693:419::-;16859:4;16897:2;16886:9;16882:18;16874:26;;16946:9;16940:4;16936:20;16932:1;16921:9;16917:17;16910:47;16974:131;17100:4;16974:131;:::i;:::-;16966:139;;16864:248;;;:::o;17118:419::-;17284:4;17322:2;17311:9;17307:18;17299:26;;17371:9;17365:4;17361:20;17357:1;17346:9;17342:17;17335:47;17399:131;17525:4;17399:131;:::i;:::-;17391:139;;17289:248;;;:::o;17543:419::-;17709:4;17747:2;17736:9;17732:18;17724:26;;17796:9;17790:4;17786:20;17782:1;17771:9;17767:17;17760:47;17824:131;17950:4;17824:131;:::i;:::-;17816:139;;17714:248;;;:::o;17968:419::-;18134:4;18172:2;18161:9;18157:18;18149:26;;18221:9;18215:4;18211:20;18207:1;18196:9;18192:17;18185:47;18249:131;18375:4;18249:131;:::i;:::-;18241:139;;18139:248;;;:::o;18393:419::-;18559:4;18597:2;18586:9;18582:18;18574:26;;18646:9;18640:4;18636:20;18632:1;18621:9;18617:17;18610:47;18674:131;18800:4;18674:131;:::i;:::-;18666:139;;18564:248;;;:::o;18818:419::-;18984:4;19022:2;19011:9;19007:18;18999:26;;19071:9;19065:4;19061:20;19057:1;19046:9;19042:17;19035:47;19099:131;19225:4;19099:131;:::i;:::-;19091:139;;18989:248;;;:::o;19243:419::-;19409:4;19447:2;19436:9;19432:18;19424:26;;19496:9;19490:4;19486:20;19482:1;19471:9;19467:17;19460:47;19524:131;19650:4;19524:131;:::i;:::-;19516:139;;19414:248;;;:::o;19668:222::-;19761:4;19799:2;19788:9;19784:18;19776:26;;19812:71;19880:1;19869:9;19865:17;19856:6;19812:71;:::i;:::-;19766:124;;;;:::o;19896:831::-;20159:4;20197:3;20186:9;20182:19;20174:27;;20211:71;20279:1;20268:9;20264:17;20255:6;20211:71;:::i;:::-;20292:80;20368:2;20357:9;20353:18;20344:6;20292:80;:::i;:::-;20419:9;20413:4;20409:20;20404:2;20393:9;20389:18;20382:48;20447:108;20550:4;20541:6;20447:108;:::i;:::-;20439:116;;20565:72;20633:2;20622:9;20618:18;20609:6;20565:72;:::i;:::-;20647:73;20715:3;20704:9;20700:19;20691:6;20647:73;:::i;:::-;20164:563;;;;;;;;:::o;20733:763::-;20960:4;20998:3;20987:9;20983:19;20975:27;;21012:71;21080:1;21069:9;21065:17;21056:6;21012:71;:::i;:::-;21093:72;21161:2;21150:9;21146:18;21137:6;21093:72;:::i;:::-;21175;21243:2;21232:9;21228:18;21219:6;21175:72;:::i;:::-;21257;21325:2;21314:9;21310:18;21301:6;21257:72;:::i;:::-;21339:73;21407:3;21396:9;21392:19;21383:6;21339:73;:::i;:::-;21422:67;21484:3;21473:9;21469:19;21460:6;21422:67;:::i;:::-;20965:531;;;;;;;;;:::o;21502:775::-;21735:4;21773:3;21762:9;21758:19;21750:27;;21787:71;21855:1;21844:9;21840:17;21831:6;21787:71;:::i;:::-;21868:72;21936:2;21925:9;21921:18;21912:6;21868:72;:::i;:::-;21950;22018:2;22007:9;22003:18;21994:6;21950:72;:::i;:::-;22032;22100:2;22089:9;22085:18;22076:6;22032:72;:::i;:::-;22114:73;22182:3;22171:9;22167:19;22158:6;22114:73;:::i;:::-;22197;22265:3;22254:9;22250:19;22241:6;22197:73;:::i;:::-;21740:537;;;;;;;;;:::o;22283:214::-;22372:4;22410:2;22399:9;22395:18;22387:26;;22423:67;22487:1;22476:9;22472:17;22463:6;22423:67;:::i;:::-;22377:120;;;;:::o;22503:129::-;22537:6;22564:20;;:::i;:::-;22554:30;;22593:33;22621:4;22613:6;22593:33;:::i;:::-;22544:88;;;:::o;22638:75::-;22671:6;22704:2;22698:9;22688:19;;22678:35;:::o;22719:311::-;22796:4;22886:18;22878:6;22875:30;22872:2;;;22908:18;;:::i;:::-;22872:2;22958:4;22950:6;22946:17;22938:25;;23018:4;23012;23008:15;23000:23;;22801:229;;;:::o;23036:132::-;23103:4;23126:3;23118:11;;23156:4;23151:3;23147:14;23139:22;;23108:60;;;:::o;23174:114::-;23241:6;23275:5;23269:12;23259:22;;23248:40;;;:::o;23294:99::-;23346:6;23380:5;23374:12;23364:22;;23353:40;;;:::o;23399:113::-;23469:4;23501;23496:3;23492:14;23484:22;;23474:38;;;:::o;23518:184::-;23617:11;23651:6;23646:3;23639:19;23691:4;23686:3;23682:14;23667:29;;23629:73;;;;:::o;23708:147::-;23809:11;23846:3;23831:18;;23821:34;;;;:::o;23861:169::-;23945:11;23979:6;23974:3;23967:19;24019:4;24014:3;24010:14;23995:29;;23957:73;;;;:::o;24036:305::-;24076:3;24095:20;24113:1;24095:20;:::i;:::-;24090:25;;24129:20;24147:1;24129:20;:::i;:::-;24124:25;;24283:1;24215:66;24211:74;24208:1;24205:81;24202:2;;;24289:18;;:::i;:::-;24202:2;24333:1;24330;24326:9;24319:16;;24080:261;;;;:::o;24347:185::-;24387:1;24404:20;24422:1;24404:20;:::i;:::-;24399:25;;24438:20;24456:1;24438:20;:::i;:::-;24433:25;;24477:1;24467:2;;24482:18;;:::i;:::-;24467:2;24524:1;24521;24517:9;24512:14;;24389:143;;;;:::o;24538:848::-;24599:5;24606:4;24630:6;24621:15;;24654:5;24645:14;;24668:712;24689:1;24679:8;24676:15;24668:712;;;24784:4;24779:3;24775:14;24769:4;24766:24;24763:2;;;24793:18;;:::i;:::-;24763:2;24843:1;24833:8;24829:16;24826:2;;;25258:4;25251:5;25247:16;25238:25;;24826:2;25308:4;25302;25298:15;25290:23;;25338:32;25361:8;25338:32;:::i;:::-;25326:44;;24668:712;;;24611:775;;;;;;;:::o;25392:281::-;25450:5;25474:23;25492:4;25474:23;:::i;:::-;25466:31;;25518:25;25534:8;25518:25;:::i;:::-;25506:37;;25562:104;25599:66;25589:8;25583:4;25562:104;:::i;:::-;25553:113;;25456:217;;;;:::o;25679:1073::-;25733:5;25924:8;25914:2;;25945:1;25936:10;;25947:5;;25914:2;25973:4;25963:2;;25990:1;25981:10;;25992:5;;25963:2;26059:4;26107:1;26102:27;;;;26143:1;26138:191;;;;26052:277;;26102:27;26120:1;26111:10;;26122:5;;;26138:191;26183:3;26173:8;26170:17;26167:2;;;26190:18;;:::i;:::-;26167:2;26239:8;26236:1;26232:16;26223:25;;26274:3;26267:5;26264:14;26261:2;;;26281:18;;:::i;:::-;26261:2;26314:5;;;26052:277;;26438:2;26428:8;26425:16;26419:3;26413:4;26410:13;26406:36;26388:2;26378:8;26375:16;26370:2;26364:4;26361:12;26357:35;26341:111;26338:2;;;26494:8;26488:4;26484:19;26475:28;;26529:3;26522:5;26519:14;26516:2;;;26536:18;;:::i;:::-;26516:2;26569:5;;26338:2;26609:42;26647:3;26637:8;26631:4;26628:1;26609:42;:::i;:::-;26594:57;;;;26683:4;26678:3;26674:14;26667:5;26664:25;26661:2;;;26692:18;;:::i;:::-;26661:2;26741:4;26734:5;26730:16;26721:25;;25739:1013;;;;;;:::o;26758:348::-;26798:7;26821:20;26839:1;26821:20;:::i;:::-;26816:25;;26855:20;26873:1;26855:20;:::i;:::-;26850:25;;27043:1;26975:66;26971:74;26968:1;26965:81;26960:1;26953:9;26946:17;26942:105;26939:2;;;27050:18;;:::i;:::-;26939:2;27098:1;27095;27091:9;27080:20;;26806:300;;;;:::o;27112:191::-;27152:4;27172:20;27190:1;27172:20;:::i;:::-;27167:25;;27206:20;27224:1;27206:20;:::i;:::-;27201:25;;27245:1;27242;27239:8;27236:2;;;27250:18;;:::i;:::-;27236:2;27295:1;27292;27288:9;27280:17;;27157:146;;;;:::o;27309:96::-;27346:7;27375:24;27393:5;27375:24;:::i;:::-;27364:35;;27354:51;;;:::o;27411:90::-;27445:7;27488:5;27481:13;27474:21;27463:32;;27453:48;;;:::o;27507:126::-;27544:7;27584:42;27577:5;27573:54;27562:65;;27552:81;;;:::o;27639:77::-;27676:7;27705:5;27694:16;;27684:32;;;:::o;27722:86::-;27757:7;27797:4;27790:5;27786:16;27775:27;;27765:43;;;:::o;27814:121::-;27872:9;27905:24;27923:5;27905:24;:::i;:::-;27892:37;;27882:53;;;:::o;27941:307::-;28009:1;28019:113;28033:6;28030:1;28027:13;28019:113;;;28118:1;28113:3;28109:11;28103:18;28099:1;28094:3;28090:11;28083:39;28055:2;28052:1;28048:10;28043:15;;28019:113;;;28150:6;28147:1;28144:13;28141:2;;;28230:1;28221:6;28216:3;28212:16;28205:27;28141:2;27990:258;;;;:::o;28254:281::-;28337:27;28359:4;28337:27;:::i;:::-;28329:6;28325:40;28467:6;28455:10;28452:22;28431:18;28419:10;28416:34;28413:62;28410:2;;;28478:18;;:::i;:::-;28410:2;28518:10;28514:2;28507:22;28297:238;;;:::o;28541:180::-;28589:77;28586:1;28579:88;28686:4;28683:1;28676:15;28710:4;28707:1;28700:15;28727:180;28775:77;28772:1;28765:88;28872:4;28869:1;28862:15;28896:4;28893:1;28886:15;28913:180;28961:77;28958:1;28951:88;29058:4;29055:1;29048:15;29082:4;29079:1;29072:15;29099:102;29140:6;29191:2;29187:7;29182:2;29175:5;29171:14;29167:28;29157:38;;29147:54;;;:::o;29207:102::-;29249:8;29296:5;29293:1;29289:13;29268:34;;29258:51;;;:::o;29315:166::-;29455:18;29451:1;29443:6;29439:14;29432:42;29421:60;:::o;29487:225::-;29627:34;29623:1;29615:6;29611:14;29604:58;29696:8;29691:2;29683:6;29679:15;29672:33;29593:119;:::o;29718:176::-;29858:28;29854:1;29846:6;29842:14;29835:52;29824:70;:::o;29900:166::-;30040:18;30036:1;30028:6;30024:14;30017:42;30006:60;:::o;30072:174::-;30212:26;30208:1;30200:6;30196:14;30189:50;30178:68;:::o;30252:161::-;30392:13;30388:1;30380:6;30376:14;30369:37;30358:55;:::o;30419:168::-;30559:20;30555:1;30547:6;30543:14;30536:44;30525:62;:::o;30593:163::-;30733:15;30729:1;30721:6;30717:14;30710:39;30699:57;:::o;30762:182::-;30902:34;30898:1;30890:6;30886:14;30879:58;30868:76;:::o;30950:114::-;31056:8;:::o;31070:122::-;31143:24;31161:5;31143:24;:::i;:::-;31136:5;31133:35;31123:2;;31182:1;31179;31172:12;31123:2;31113:79;:::o;31198:116::-;31268:21;31283:5;31268:21;:::i;:::-;31261:5;31258:32;31248:2;;31304:1;31301;31294:12;31248:2;31238:76;:::o;31320:122::-;31393:24;31411:5;31393:24;:::i;:::-;31386:5;31383:35;31373:2;;31432:1;31429;31422:12;31373:2;31363:79;:::o
Swarm Source
ipfs://f35982d7ee4c17d1d8c3282c9ff55ef9c2110ace4223d69b518163c504692a74
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.