Contract Overview
[ Download CSV Export ]
Latest 25 internal transaction
[ Download CSV Export ]
Contract Name:
CRONOSBOSS
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at cronoscan.com on 2022-09-26 */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.7; library Address { function isContract(address account) internal view returns (bool) { uint256 size; assembly { size := extcodesize(account) } return size > 0; } function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{value: value}(data); return _verifyCallResult(success, returndata, errorMessage); } function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return _verifyCallResult(success, returndata, errorMessage); } function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return _verifyCallResult(success, returndata, errorMessage); } function _verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) private pure returns (bytes memory) { if (success) { return returndata; } else { if (returndata.length > 0) { assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } interface IUniRouterV1 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } interface IUniRouterV2 is IUniRouterV1 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } interface IERC20 { function totalSupply() external view returns (uint256); 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); } library SafeERC20 { using Address for address; function safeTransfer( IERC20 token, address to, uint256 value ) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value)); } function safeTransferFrom( IERC20 token, address from, address to, uint256 value ) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value)); } function safeApprove( IERC20 token, address spender, uint256 value ) internal { require( (value == 0) || (token.allowance(address(this), spender) == 0), "SafeERC20: approve from non-zero to non-zero allowance" ); _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value)); } function safeIncreaseAllowance( IERC20 token, address spender, uint256 value ) internal { uint256 newAllowance = token.allowance(address(this), spender) + value; _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } function safeDecreaseAllowance( IERC20 token, address spender, uint256 value ) internal { unchecked { uint256 oldAllowance = token.allowance(address(this), spender); require(oldAllowance >= value, "SafeERC20: decreased allowance below zero"); uint256 newAllowance = oldAllowance - value; _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } } function _callOptionalReturn(IERC20 token, bytes memory data) private { bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed"); if (returndata.length > 0) { require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed"); } } } library SafeMath { function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } interface IDEXFactory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IDividendDistributor { function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external; function setShare(address shareholder, uint256 amount) external; function deposit() external payable; function process(uint256 gas) external; } contract DividendDistributor is IDividendDistributor { using SafeMath for uint256; address _token; struct Share { uint256 amount; uint256 totalExcluded; uint256 totalRealised; } IUniRouterV2 router; address[] shareholders; mapping (address => uint256) shareholderIndexes; mapping (address => uint256) shareholderClaims; mapping (address => Share) public shares; uint256 public totalShares; uint256 public totalDividends; uint256 public totalDistributed; uint256 public dividendsPerShare; uint256 public dividendsPerShareAccuracyFactor = 10 ** 36; uint256 public minPeriod = 1 hours; uint256 public minDistribution = 1; uint256 currentIndex; bool initialized; modifier initialization() { require(!initialized); _; initialized = true; } modifier onlyToken() { require(msg.sender == _token); _; } constructor (IUniRouterV2 _router) { router = _router; _token = msg.sender; } function setDistributionCriteria(uint256 newMinPeriod, uint256 newMinDistribution) external override onlyToken { minPeriod = newMinPeriod; minDistribution = newMinDistribution; } function setShare(address shareholder, uint256 amount) external override onlyToken { if(shares[shareholder].amount > 0){ distributeDividend(shareholder); } if(amount > 0 && shares[shareholder].amount == 0){ addShareholder(shareholder); }else if(amount == 0 && shares[shareholder].amount > 0){ removeShareholder(shareholder); } totalShares = totalShares.sub(shares[shareholder].amount).add(amount); shares[shareholder].amount = amount; shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount); } function deposit() external payable override onlyToken { totalDividends = totalDividends.add(msg.value); dividendsPerShare = dividendsPerShare.add(dividendsPerShareAccuracyFactor.mul(msg.value).div(totalShares)); } function process(uint256 gas) external override onlyToken { uint256 shareholderCount = shareholders.length; if(shareholderCount == 0) { return; } uint256 iterations = 0; uint256 gasUsed = 0; uint256 gasLeft = gasleft(); while(gasUsed < gas && iterations < shareholderCount) { if(currentIndex >= shareholderCount){ currentIndex = 0; } if(shouldDistribute(shareholders[currentIndex])){ distributeDividend(shareholders[currentIndex]); } gasUsed = gasUsed.add(gasLeft.sub(gasleft())); gasLeft = gasleft(); currentIndex++; iterations++; } } function shouldDistribute(address shareholder) internal view returns (bool) { return shareholderClaims[shareholder] + minPeriod < block.timestamp && getUnpaidEarnings(shareholder) > minDistribution; } function distributeDividend(address shareholder) internal { if(shares[shareholder].amount == 0){ return; } uint256 amount = getUnpaidEarnings(shareholder); if(amount > 0){ totalDistributed = totalDistributed.add(amount); (bool success, ) = payable(shareholder).call{value: amount, gas: 30000}(""); success = false; shareholderClaims[shareholder] = block.timestamp; shares[shareholder].totalRealised = shares[shareholder].totalRealised.add(amount); shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount); } } function claimDividend() external { require(shouldDistribute(msg.sender), "Too soon. Need to wait!"); distributeDividend(msg.sender); } function getUnpaidEarnings(address shareholder) public view returns (uint256) { if(shares[shareholder].amount == 0){ return 0; } uint256 shareholderTotalDividends = getCumulativeDividends(shares[shareholder].amount); uint256 shareholderTotalExcluded = shares[shareholder].totalExcluded; if(shareholderTotalDividends <= shareholderTotalExcluded){ return 0; } return shareholderTotalDividends.sub(shareholderTotalExcluded); } function getCumulativeDividends(uint256 share) internal view returns (uint256) { return share.mul(dividendsPerShare).div(dividendsPerShareAccuracyFactor); } function addShareholder(address shareholder) internal { shareholderIndexes[shareholder] = shareholders.length; shareholders.push(shareholder); } function removeShareholder(address shareholder) internal { shareholders[shareholderIndexes[shareholder]] = shareholders[shareholders.length-1]; shareholderIndexes[shareholders[shareholders.length-1]] = shareholderIndexes[shareholder]; shareholders.pop(); } } abstract contract Auth { address internal owner; mapping (address => bool) internal authorizations; constructor(address _owner) { owner = _owner; authorizations[_owner] = true; } modifier onlyOwner() { require(isOwner(msg.sender), "!OWNER"); _; } modifier authorized() { require(isAuthorized(msg.sender), "!AUTHORIZED"); _; } function authorize(address adr) public onlyOwner { authorizations[adr] = true; } function unauthorize(address adr) public onlyOwner { authorizations[adr] = false; } function isOwner(address account) public view returns (bool) { return account == owner; } function isAuthorized(address adr) public view returns (bool) { return authorizations[adr]; } function transferOwnership(address payable adr) public onlyOwner { owner = adr; authorizations[adr] = true; emit OwnershipTransferred(adr); } event OwnershipTransferred(address owner); } contract CRONOSBOSS is IERC20, Auth { using SafeMath for uint256; using SafeERC20 for IERC20; string constant _name = "CRONOS BOSS"; string constant _symbol = "CBOSS"; uint8 constant _decimals = 9; address DEAD = 0x000000000000000000000000000000000000dEaD; address ZERO = 0x0000000000000000000000000000000000000000; uint256 _totalSupply = 100000000000 * (10 ** _decimals); uint256 public _maxTxAmount = 2000000000 * (10 ** _decimals); uint256 public _walletMax = 2000000000 * (10 ** _decimals); bool public restrictWhales = true; mapping (address => uint256) _balances; mapping (address => mapping (address => uint256)) _allowances; mapping (address => bool) public isFeeExempt; mapping (address => bool) public isTxLimitExempt; mapping (address => bool) public isDividendExempt; mapping(address => bool) public isBot; uint256 public liquidityFee = 2; uint256 public liquidityFeeSell = 2; uint256 public marketingFee = 5; uint256 public marketingFeeSell = 6; uint256 public rewardsFee = 3; uint256 public rewardsFeeSell = 4; uint256 public teamFee = 0; uint256 public teamFeeSell = 0; uint256 public totalFee = 10; uint256 public totalFeeSell = 12; address public autoLiquidityReceiver = address(this); address public marketingWallet = 0xB16815663Ec1817868706fbCD58262bB1254179a; address public teamWallet = 0xB16815663Ec1817868706fbCD58262bB1254179a; IUniRouterV2 public router; address public pair; uint256 public launchedAt; bool public tradingOpen = false; DividendDistributor public dividendDistributor; uint256 distributorGas = 500000; bool inSwapAndLiquify; bool public swapAndLiquifyEnabled = true; bool public swapAndLiquifyByLimitOnly = false; uint256 public swapThreshold = 10 * (10 ** _decimals); uint256 public timeToWait = 6; event BlacklistedUser(address botAddress, bool indexed value); modifier lockTheSwap { inSwapAndLiquify = true; _; inSwapAndLiquify = false; } constructor () Auth(msg.sender) { IUniRouterV2 _router = IUniRouterV2(0x145677FC4d9b8F19B5D56d1820c48e0443049a30); router = _router; pair = IDEXFactory(router.factory()).createPair(router.WETH(), address(this)); _allowances[address(this)][address(router)] = type(uint256).max; dividendDistributor = new DividendDistributor(router); isFeeExempt[msg.sender] = true; isFeeExempt[address(this)] = true; isFeeExempt[marketingWallet] = true; isFeeExempt[teamWallet] = true; isTxLimitExempt[msg.sender] = true; isTxLimitExempt[marketingWallet] = true; isTxLimitExempt[pair] = true; isDividendExempt[pair] = true; isDividendExempt[msg.sender] = true; isDividendExempt[address(this)] = true; isDividendExempt[DEAD] = true; isDividendExempt[ZERO] = true; isDividendExempt[teamWallet] = true; autoLiquidityReceiver = address(this); _balances[msg.sender] = _totalSupply; emit Transfer(address(0), msg.sender, _totalSupply); } receive() external payable { } function name() external pure returns (string memory) { return _name; } function symbol() external pure returns (string memory) { return _symbol; } function decimals() external pure returns (uint8) { return _decimals; } function totalSupply() external view override returns (uint256) { return _totalSupply; } function getOwner() external view returns (address) { return owner; } function getCirculatingSupply() public view returns (uint256) { return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO)); } function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _allowances[msg.sender][spender] = amount; emit Approval(msg.sender, spender, amount); return true; } function approveMax(address spender) external returns (bool) { return approve(spender, type(uint256).max); } function launched() internal view returns (bool) { return launchedAt != 0; } function launch() internal { launchedAt = block.timestamp; } function changeTxLimit(uint256 newLimit) external authorized { _maxTxAmount = newLimit; } function changeWalletLimit(uint256 newLimit) external authorized { _walletMax = newLimit; } function changeNoBigGuys(bool newValue) external authorized { restrictWhales = newValue; } function changeIsNoTax(address holder, bool exempt) external authorized { isFeeExempt[holder] = exempt; } function changeIsTxLimitExempt(address holder, bool exempt) external authorized { isTxLimitExempt[holder] = exempt; } function changeIsDividendExempt(address holder, bool exempt) external authorized { require(holder != address(this) && holder != pair); isDividendExempt[holder] = exempt; if(exempt){ dividendDistributor.setShare(holder, 0); }else{ dividendDistributor.setShare(holder, _balances[holder]); } } function changeFees(uint256 newLiqFee, uint256 newRewardFee, uint256 newMarketingFee, uint256 newteamFee) external authorized { require(newLiqFee <= 10, "LP Tax on buys can not be higher than 10%"); require(newMarketingFee <= 10, "Marketing Tax on buys can not be higher than 10%"); require(newteamFee <= 0, "Team Tax on buys can not be higher than 0%"); require(newRewardFee >= 2, "Rewards Tax on buys can not be lower than 2%"); liquidityFee = newLiqFee; rewardsFee = newRewardFee; marketingFee = newMarketingFee; teamFee = newteamFee; totalFee = liquidityFee.add(marketingFee).add(teamFee).add(rewardsFee); } function changeFeesSell(uint256 newLiqFeeSell, uint256 newRewardFeeSell, uint256 newMarketingFeeSell, uint256 newteamFeeSell) external authorized { require(newLiqFeeSell <= 10, "LP Tax on sells can not be higher than 10%"); require(newMarketingFeeSell <= 10, "Marketing Tax on sells can not be higher than 10%"); require(newteamFeeSell <= 0, "Team Tax on sells can not be higher than 0%"); require(newRewardFeeSell >= 2, "Rewards Tax on sells can not be lower than 2%"); liquidityFeeSell = newLiqFeeSell; rewardsFeeSell = newRewardFeeSell; marketingFeeSell = newMarketingFeeSell; teamFeeSell = newteamFeeSell; totalFeeSell = liquidityFeeSell.add(marketingFeeSell).add(teamFeeSell).add(rewardsFeeSell); } function changeFeeReceivers(address newLiquidityReceiver, address newMarketingWallet, address newteamWallet) external authorized { autoLiquidityReceiver = newLiquidityReceiver; marketingWallet = newMarketingWallet; teamWallet = newteamWallet; } function changeSwapBackSettings(bool enableSwapBack, uint256 newSwapBackLimit, bool swapByLimitOnly) external authorized { swapAndLiquifyEnabled = enableSwapBack; swapThreshold = newSwapBackLimit; swapAndLiquifyByLimitOnly = swapByLimitOnly; } function changeDistributionCriteria(uint256 newinPeriod, uint256 newMinDistribution) external authorized { dividendDistributor.setDistributionCriteria(newinPeriod, newMinDistribution); } function changeDistributorSettings(uint256 gas) external authorized { require(gas < 750000); distributorGas = gas; } function transfer(address recipient, uint256 amount) external override returns (bool) { return _transferFrom(msg.sender, recipient, amount); } function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) { if(_allowances[sender][msg.sender] != type(uint256).max){ _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance"); } return _transferFrom(sender, recipient, amount); } function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) { if(inSwapAndLiquify){ return _basicTransfer(sender, recipient, amount); } if(!authorizations[sender] && !authorizations[recipient]){ require(tradingOpen, "Trading not open yet"); } require(amount <= _maxTxAmount || isTxLimitExempt[recipient], "TX Limit Exceeded"); if(msg.sender != pair && !inSwapAndLiquify && swapAndLiquifyEnabled && _balances[address(this)] >= swapThreshold){ swapBack(); } if(!launched() && recipient == pair) { require(_balances[sender] > 0); } if ((block.timestamp < launchedAt + timeToWait) && recipient != pair) { isBot[recipient] = true; emit BlacklistedUser(recipient, true); } //Exchange tokens _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance"); if(!isTxLimitExempt[recipient] && restrictWhales) { require(_balances[recipient].add(amount) <= _walletMax); } uint256 finalAmount = !isFeeExempt[sender] && !isFeeExempt[recipient] ? takeFee(sender, recipient, amount) : amount; _balances[recipient] = _balances[recipient].add(finalAmount); // Dividend tracker if(!isDividendExempt[sender]) { try dividendDistributor.setShare(sender, _balances[sender]) {} catch {} } if(!isDividendExempt[recipient]) { try dividendDistributor.setShare(recipient, _balances[recipient]) {} catch {} } try dividendDistributor.process(distributorGas) {} catch {} emit Transfer(sender, recipient, finalAmount); return true; } function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) { _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); return true; } function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) { uint256 feeApplicable = pair == recipient ? totalFeeSell : totalFee; if(isBot[recipient] == true) { feeApplicable = 99; } else if(isBot[sender] == true) { feeApplicable = 99; } uint256 feeAmount = amount.mul(feeApplicable).div(100); _balances[address(this)] = _balances[address(this)].add(feeAmount); emit Transfer(sender, address(this), feeAmount); return amount.sub(feeAmount); } function tradingStatus(bool newStatus) public onlyOwner { tradingOpen = newStatus; launch(); } // Blacklist or Unblacklist bots or sniper function blacklistSniper(address botAddress, bool isban) external onlyOwner { isBot[botAddress] = isban; } function swapBack() internal lockTheSwap { uint256 tokensToLiquify = _balances[address(this)]; uint256 amountToLiquify = tokensToLiquify.mul(liquidityFee).div(totalFee).div(2); uint256 amountToSwap = tokensToLiquify.sub(amountToLiquify); address[] memory path = new address[](2); path[0] = address(this); path[1] = router.WETH(); router.swapExactTokensForETHSupportingFeeOnTransferTokens( amountToSwap, 0, path, address(this), block.timestamp ); uint256 amountCRO = address(this).balance; uint256 totalCROFee = totalFee.sub(liquidityFee.div(2)); uint256 amountCROLiquidity = amountCRO.mul(liquidityFee).div(totalCROFee).div(2); uint256 amountCROReflection = amountCRO.mul(rewardsFee).div(totalCROFee); uint256 amountCROMarketing = amountCRO.sub(amountCROLiquidity).sub(amountCROReflection); try dividendDistributor.deposit{value: amountCROReflection}() {} catch {} uint256 teamShare = amountCRO.mul(teamFee).div(totalCROFee); uint256 marketingShare = amountCROMarketing.sub(teamShare); (bool tmpSuccess,) = payable(marketingWallet).call{value: marketingShare, gas: 30000}(""); (bool tmpSuccess1,) = payable(teamWallet).call{value: teamShare, gas: 30000}(""); // only to supress warning msg tmpSuccess = false; tmpSuccess1 = false; if(amountToLiquify > 0){ router.addLiquidityETH{value: amountCROLiquidity}( address(this), amountToLiquify, 0, 0, autoLiquidityReceiver, block.timestamp ); emit AutoLiquify(amountCROLiquidity, amountToLiquify); } } function RescueTokens(uint256 amount, address payable receiver) external onlyOwner { uint256 contractBalance = address(this).balance; require(contractBalance > amount,"Insufficient CRO"); receiver.transfer(amount); } event AutoLiquify(uint256 amountCRO, uint256 amountBOG); }
[{"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":"amountCRO","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountBOG","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"botAddress","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"BlacklistedUser","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address payable","name":"receiver","type":"address"}],"name":"RescueTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"authorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"autoLiquidityReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"botAddress","type":"address"},{"internalType":"bool","name":"isban","type":"bool"}],"name":"blacklistSniper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newinPeriod","type":"uint256"},{"internalType":"uint256","name":"newMinDistribution","type":"uint256"}],"name":"changeDistributionCriteria","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"gas","type":"uint256"}],"name":"changeDistributorSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newLiquidityReceiver","type":"address"},{"internalType":"address","name":"newMarketingWallet","type":"address"},{"internalType":"address","name":"newteamWallet","type":"address"}],"name":"changeFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiqFee","type":"uint256"},{"internalType":"uint256","name":"newRewardFee","type":"uint256"},{"internalType":"uint256","name":"newMarketingFee","type":"uint256"},{"internalType":"uint256","name":"newteamFee","type":"uint256"}],"name":"changeFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiqFeeSell","type":"uint256"},{"internalType":"uint256","name":"newRewardFeeSell","type":"uint256"},{"internalType":"uint256","name":"newMarketingFeeSell","type":"uint256"},{"internalType":"uint256","name":"newteamFeeSell","type":"uint256"}],"name":"changeFeesSell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"changeIsDividendExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"changeIsNoTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"changeIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"changeNoBigGuys","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enableSwapBack","type":"bool"},{"internalType":"uint256","name":"newSwapBackLimit","type":"uint256"},{"internalType":"bool","name":"swapByLimitOnly","type":"bool"}],"name":"changeSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"changeTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"changeWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"dividendDistributor","outputs":[{"internalType":"contract DividendDistributor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"isAuthorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isDividendExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFeeSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"restrictWhales","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardsFeeSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IUniRouterV2","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyByLimitOnly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"teamFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"teamFeeSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"teamWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"timeToWait","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFeeSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"newStatus","type":"bool"}],"name":"tradingStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
608060405261dead600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a62000099919062000ef0565b64174876e800620000ab91906200102d565b6004556009600a620000be919062000ef0565b6377359400620000cf91906200102d565b6005556009600a620000e2919062000ef0565b6377359400620000f391906200102d565b6006556001600760006101000a81548160ff0219169083151502179055506002600e556002600f55600560105560066011556003601255600460135560006014556000601555600a601655600c60175530601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073b16815663ec1817868706fbcd58262bb1254179a601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073b16815663ec1817868706fbcd58262bb1254179a601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601e60006101000a81548160ff0219169083151502179055506207a120601f556001602060016101000a81548160ff0219169083151502179055506000602060026101000a81548160ff0219169083151502179055506009600a62000296919062000ef0565b600a620002a491906200102d565b6021556006602255348015620002b957600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050600073145677fc4d9b8f19b5d56d1820c48e0443049a30905080601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200041657600080fd5b505afa1580156200042b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000451919062000dc9565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620004d557600080fd5b505afa158015620004ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000510919062000dc9565b306040518363ffffffff1660e01b81526004016200053092919062000e2e565b602060405180830381600087803b1580156200054b57600080fd5b505af115801562000560573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000586919062000dc9565b601c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051620006ba9062000da4565b620006c6919062000e5b565b604051809103906000f080158015620006e3573d6000803e3d6000fd5b50601e60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555030601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600454600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60045460405162000d95919062000e78565b60405180910390a35062001170565b6116fb806200607083390190565b60008151905062000dc38162001156565b92915050565b60006020828403121562000de25762000de162001144565b5b600062000df28482850162000db2565b91505092915050565b62000e06816200108e565b82525050565b62000e1781620010d9565b82525050565b62000e2881620010c2565b82525050565b600060408201905062000e45600083018562000dfb565b62000e54602083018462000dfb565b9392505050565b600060208201905062000e72600083018462000e0c565b92915050565b600060208201905062000e8f600083018462000e1d565b92915050565b6000808291508390505b600185111562000ee75780860481111562000ebf5762000ebe62001115565b5b600185161562000ecf5780820291505b808102905062000edf8562001149565b945062000e9f565b94509492505050565b600062000efd82620010c2565b915062000f0a83620010cc565b925062000f397fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000f41565b905092915050565b60008262000f53576001905062001026565b8162000f63576000905062001026565b816001811462000f7c576002811462000f875762000fbd565b600191505062001026565b60ff84111562000f9c5762000f9b62001115565b5b8360020a91508482111562000fb65762000fb562001115565b5b5062001026565b5060208310610133831016604e8410600b841016171562000ff75782820a90508381111562000ff15762000ff062001115565b5b62001026565b62001006848484600162000e95565b9250905081840481111562001020576200101f62001115565b5b81810290505b9392505050565b60006200103a82620010c2565b91506200104783620010c2565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562001083576200108262001115565b5b828202905092915050565b60006200109b82620010a2565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000620010e682620010ed565b9050919050565b6000620010fa8262001101565b9050919050565b60006200110e82620010a2565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600080fd5b60008160011c9050919050565b62001161816200108e565b81146200116d57600080fd5b50565b614ef080620011806000396000f3fe6080604052600436106103a65760003560e01c806375f0a874116101e7578063bad3ea6a1161010d578063dd62ed3e116100a0578063f887ea401161006f578063f887ea4014610de9578063fabe628314610e14578063fe9fbb8014610e3d578063ffb54a9914610e7a576103ad565b8063dd62ed3e14610d31578063e2dd8ca014610d6e578063f0b37c0414610d97578063f2fde38b14610dc0576103ad565b8063d829d3f8116100dc578063d829d3f814610c89578063d920334e14610cb2578063da00097d14610cdb578063dbe1c4d514610d06576103ad565b8063bad3ea6a14610bdd578063bf56b37114610c08578063ca33e64c14610c33578063d7c94efd14610c5e576103ad565b80638b42507f11610185578063a9059cbb11610154578063a9059cbb14610b25578063a9f7864b14610b62578063b0a616a914610b8b578063b6a5d7de14610bb4576103ad565b80638b42507f14610a6757806395d89b4114610aa457806398118cb414610acf578063a8aa1b3114610afa576103ad565b80637db1342c116101c15780637db1342c146109bd578063807c2d9c146109e657806384f6820a14610a11578063893d20e814610a3c576103ad565b806375f0a8741461093e578063773fcb5c146109695780637d1db4a514610992576103ad565b8063315dca29116102cc578063479f66d81161026a57806359927044116102395780635992704414610882578063650c4226146108ad5780636b67c4df146108d657806370a0823114610901576103ad565b8063479f66d8146107c65780634a74bb02146107ef578063531484161461081a578063571ac8b014610845576103ad565b80633f4218e0116102a65780633f4218e0146106f85780634102eedc146107355780634355855a1461075e57806344de2e4c1461079b576103ad565b8063315dca291461066957806334c70889146106925780633bbac579146106bb576103ad565b806313374e7a116103445780632b112e49116103135780632b112e49146105ab5780632bb14e1d146105d65780632f54bf6e14610601578063313ce5671461063e576103ad565b806313374e7a146104ed57806318160ddd146105185780631df4ccfc1461054357806323b872dd1461056e576103ad565b8063095ea7b311610380578063095ea7b31461043357806309ad803d146104705780630d295980146104995780631107b3a5146104c2576103ad565b806303898c17146103b25780630445b667146103dd57806306fdde0314610408576103ad565b366103ad57005b600080fd5b3480156103be57600080fd5b506103c7610ea5565b6040516103d49190614710565b60405180910390f35b3480156103e957600080fd5b506103f2610eab565b6040516103ff9190614710565b60405180910390f35b34801561041457600080fd5b5061041d610eb1565b60405161042a919061454e565b60405180910390f35b34801561043f57600080fd5b5061045a60048036038101906104559190613eb8565b610eee565b60405161046791906144fd565b60405180910390f35b34801561047c57600080fd5b5061049760048036038101906104929190614078565b610fe0565b005b3480156104a557600080fd5b506104c060048036038101906104bb9190613ef8565b61119f565b005b3480156104ce57600080fd5b506104d761120c565b6040516104e49190614710565b60405180910390f35b3480156104f957600080fd5b50610502611212565b60405161050f9190614710565b60405180910390f35b34801561052457600080fd5b5061052d611218565b60405161053a9190614710565b60405180910390f35b34801561054f57600080fd5b50610558611222565b6040516105659190614710565b60405180910390f35b34801561057a57600080fd5b5061059560048036038101906105909190613e25565b611228565b6040516105a291906144fd565b60405180910390f35b3480156105b757600080fd5b506105c0611428565b6040516105cd9190614710565b60405180910390f35b3480156105e257600080fd5b506105eb6114aa565b6040516105f89190614710565b60405180910390f35b34801561060d57600080fd5b5061062860048036038101906106239190613d0b565b6114b0565b60405161063591906144fd565b60405180910390f35b34801561064a57600080fd5b50610653611509565b60405161066091906147ae565b60405180910390f35b34801561067557600080fd5b50610690600480360381019061068b9190613dd2565b611512565b005b34801561069e57600080fd5b506106b960048036038101906106b49190613f25565b611622565b005b3480156106c757600080fd5b506106e260048036038101906106dd9190613d0b565b6116aa565b6040516106ef91906144fd565b60405180910390f35b34801561070457600080fd5b5061071f600480360381019061071a9190613d0b565b6116ca565b60405161072c91906144fd565b60405180910390f35b34801561074157600080fd5b5061075c60048036038101906107579190613e78565b6116ea565b005b34801561076a57600080fd5b5061078560048036038101906107809190613d0b565b61178d565b60405161079291906144fd565b60405180910390f35b3480156107a757600080fd5b506107b06117ad565b6040516107bd91906144fd565b60405180910390f35b3480156107d257600080fd5b506107ed60048036038101906107e89190613f78565b6117c0565b005b3480156107fb57600080fd5b50610804611821565b60405161081191906144fd565b60405180910390f35b34801561082657600080fd5b5061082f611834565b60405161083c9190614710565b60405180910390f35b34801561085157600080fd5b5061086c60048036038101906108679190613d0b565b61183a565b60405161087991906144fd565b60405180910390f35b34801561088e57600080fd5b5061089761186d565b6040516108a49190614414565b60405180910390f35b3480156108b957600080fd5b506108d460048036038101906108cf9190614078565b611893565b005b3480156108e257600080fd5b506108eb611a52565b6040516108f89190614710565b60405180910390f35b34801561090d57600080fd5b5061092860048036038101906109239190613d0b565b611a58565b6040516109359190614710565b60405180910390f35b34801561094a57600080fd5b50610953611aa1565b6040516109609190614414565b60405180910390f35b34801561097557600080fd5b50610990600480360381019061098b9190613e78565b611ac7565b005b34801561099e57600080fd5b506109a7611d67565b6040516109b49190614710565b60405180910390f35b3480156109c957600080fd5b506109e460048036038101906109df9190613f78565b611d6d565b005b3480156109f257600080fd5b506109fb611dbf565b604051610a089190614710565b60405180910390f35b348015610a1d57600080fd5b50610a26611dc5565b604051610a339190614710565b60405180910390f35b348015610a4857600080fd5b50610a51611dcb565b604051610a5e9190614414565b60405180910390f35b348015610a7357600080fd5b50610a8e6004803603810190610a899190613d0b565b611df4565b604051610a9b91906144fd565b60405180910390f35b348015610ab057600080fd5b50610ab9611e14565b604051610ac6919061454e565b60405180910390f35b348015610adb57600080fd5b50610ae4611e51565b604051610af19190614710565b60405180910390f35b348015610b0657600080fd5b50610b0f611e57565b604051610b1c9190614414565b60405180910390f35b348015610b3157600080fd5b50610b4c6004803603810190610b479190613eb8565b611e7d565b604051610b5991906144fd565b60405180910390f35b348015610b6e57600080fd5b50610b896004803603810190610b849190613fe5565b611e92565b005b348015610b9757600080fd5b50610bb26004803603810190610bad9190613fa5565b611f6d565b005b348015610bc057600080fd5b50610bdb6004803603810190610bd69190613d0b565b612048565b005b348015610be957600080fd5b50610bf26120ea565b604051610bff9190614518565b60405180910390f35b348015610c1457600080fd5b50610c1d612110565b604051610c2a9190614710565b60405180910390f35b348015610c3f57600080fd5b50610c48612116565b604051610c559190614414565b60405180910390f35b348015610c6a57600080fd5b50610c7361213c565b604051610c809190614710565b60405180910390f35b348015610c9557600080fd5b50610cb06004803603810190610cab9190613ef8565b612142565b005b348015610cbe57600080fd5b50610cd96004803603810190610cd49190613f78565b6121a7565b005b348015610ce757600080fd5b50610cf06121f9565b604051610cfd91906144fd565b60405180910390f35b348015610d1257600080fd5b50610d1b61220c565b604051610d289190614710565b60405180910390f35b348015610d3d57600080fd5b50610d586004803603810190610d539190613d92565b612212565b604051610d659190614710565b60405180910390f35b348015610d7a57600080fd5b50610d956004803603810190610d909190613e78565b612299565b005b348015610da357600080fd5b50610dbe6004803603810190610db99190613d0b565b61233c565b005b348015610dcc57600080fd5b50610de76004803603810190610de29190613d65565b6123df565b005b348015610df557600080fd5b50610dfe6124f8565b604051610e0b9190614533565b60405180910390f35b348015610e2057600080fd5b50610e3b6004803603810190610e369190613e78565b61251e565b005b348015610e4957600080fd5b50610e646004803603810190610e5f9190613d0b565b6125c1565b604051610e7191906144fd565b60405180910390f35b348015610e8657600080fd5b50610e8f612617565b604051610e9c91906144fd565b60405180910390f35b60135481565b60215481565b60606040518060400160405280600b81526020017f43524f4e4f5320424f5353000000000000000000000000000000000000000000815250905090565b600081600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610fce9190614710565b60405180910390a36001905092915050565b610fe9336125c1565b611028576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101f906146f0565b60405180910390fd5b600a84111561106c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611063906145f0565b60405180910390fd5b600a8211156110b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a790614630565b60405180910390fd5b60008111156110f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110eb906146b0565b60405180910390fd5b6002831015611138576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112f90614670565b60405180910390fd5b83600f81905550826013819055508160118190555080601581905550611193601354611185601554611177601154600f5461262a90919063ffffffff16565b61262a90919063ffffffff16565b61262a90919063ffffffff16565b60178190555050505050565b6111a8336114b0565b6111e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111de90614690565b60405180910390fd5b80601e60006101000a81548160ff021916908315150217905550611209612640565b50565b600f5481565b60115481565b6000600454905090565b60165481565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461141457611393826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126499092919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b61141f84848461269e565b90509392505050565b60006114a5611458600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611a58565b611497611486600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611a58565b60045461312590919063ffffffff16565b61312590919063ffffffff16565b905090565b60125481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b61151b336125c1565b61155a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611551906146f0565b60405180910390fd5b82601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b61162b336125c1565b61166a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611661906146f0565b60405180910390fd5b82602060016101000a81548160ff0219169083151502179055508160218190555080602060026101000a81548160ff021916908315150217905550505050565b600d6020528060005260406000206000915054906101000a900460ff1681565b600a6020528060005260406000206000915054906101000a900460ff1681565b6116f3336125c1565b611732576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611729906146f0565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600c6020528060005260406000206000915054906101000a900460ff1681565b600760009054906101000a900460ff1681565b6117c9336125c1565b611808576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ff906146f0565b60405180910390fd5b620b71b0811061181757600080fd5b80601f8190555050565b602060019054906101000a900460ff1681565b60175481565b6000611866827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610eee565b9050919050565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61189c336125c1565b6118db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d2906146f0565b60405180910390fd5b600a84111561191f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191690614650565b60405180910390fd5b600a821115611963576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195a906146d0565b60405180910390fd5b60008111156119a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199e906145d0565b60405180910390fd5b60028310156119eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e2906145b0565b60405180910390fd5b83600e81905550826012819055508160108190555080601481905550611a46601254611a38601454611a2a601054600e5461262a90919063ffffffff16565b61262a90919063ffffffff16565b61262a90919063ffffffff16565b60168190555050505050565b60105481565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611ad0336125c1565b611b0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b06906146f0565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015611b995750601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b611ba257600080fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015611c9457601e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968360006040518363ffffffff1660e01b8152600401611c5d92919061444a565b600060405180830381600087803b158015611c7757600080fd5b505af1158015611c8b573d6000803e3d6000fd5b50505050611d63565b601e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9683600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401611d30929190614473565b600060405180830381600087803b158015611d4a57600080fd5b505af1158015611d5e573d6000803e3d6000fd5b505050505b5050565b60055481565b611d76336125c1565b611db5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dac906146f0565b60405180910390fd5b8060068190555050565b60065481565b60155481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600b6020528060005260406000206000915054906101000a900460ff1681565b60606040518060400160405280600581526020017f43424f5353000000000000000000000000000000000000000000000000000000815250905090565b600e5481565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611e8a33848461269e565b905092915050565b611e9b336125c1565b611eda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed1906146f0565b60405180910390fd5b601e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632d48e89683836040518363ffffffff1660e01b8152600401611f37929190614785565b600060405180830381600087803b158015611f5157600080fd5b505af1158015611f65573d6000803e3d6000fd5b505050505050565b611f76336114b0565b611fb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fac90614690565b60405180910390fd5b6000479050828111611ffc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff390614590565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f19350505050158015612042573d6000803e3d6000fd5b50505050565b612051336114b0565b612090576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208790614690565b60405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b601e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601d5481565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60145481565b61214b336125c1565b61218a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612181906146f0565b60405180910390fd5b80600760006101000a81548160ff02191690831515021790555050565b6121b0336125c1565b6121ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121e6906146f0565b60405180910390fd5b8060058190555050565b602060029054906101000a900460ff1681565b60225481565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6122a2336114b0565b6122e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122d890614690565b60405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b612345336114b0565b612384576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161237b90614690565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6123e8336114b0565b612427576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161241e90614690565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516124ed919061442f565b60405180910390a150565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612527336125c1565b612566576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161255d906146f0565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b601e60009054906101000a900460ff1681565b600081836126389190614829565b905092915050565b42601d81905550565b6000838311158290612691576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612688919061454e565b60405180910390fd5b5082840390509392505050565b6000602060009054906101000a900460ff16156126c7576126c084848461313b565b905061311e565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561276b5750600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156127c057601e60009054906101000a900460ff166127bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127b690614610565b60405180910390fd5b5b6005548211158061281a5750600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612859576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161285090614570565b60405180910390fd5b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156128c45750602060009054906101000a900460ff16155b80156128dc5750602060019054906101000a900460ff165b80156129295750602154600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b156129375761293661330e565b5b61293f6139eb565b1580156129995750601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b156129eb576000600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054116129ea57600080fd5b5b602254601d546129fb9190614829565b42108015612a575750601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15612af0576001600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600115157f3159dadbd8e2d720a851b412e3358e7e44bb11734c9bfd5715340e21798e8b2584604051612ae79190614414565b60405180910390a25b612b79826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126499092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612c225750600760009054906101000a900460ff165b15612c8857600654612c7c83600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461262a90919063ffffffff16565b1115612c8757600080fd5b5b6000600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612d2e5750600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612d385782612d44565b612d438585856139f8565b5b9050612d9881600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461262a90919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612efe57601e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9686600860008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401612ec8929190614473565b600060405180830381600087803b158015612ee257600080fd5b505af1925050508015612ef3575060015b612efc57612efd565b5b5b600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661302157601e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9685600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401612feb929190614473565b600060405180830381600087803b15801561300557600080fd5b505af1925050508015613016575060015b61301f57613020565b5b5b601e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ffb2c479601f546040518263ffffffff1660e01b815260040161307e9190614710565b600060405180830381600087803b15801561309857600080fd5b505af19250505080156130a9575060015b6130b2576130b3565b5b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516131109190614710565b60405180910390a360019150505b9392505050565b60008183613133919061490a565b905092915050565b60006131c6826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126499092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061325b82600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461262a90919063ffffffff16565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516132fb9190614710565b60405180910390a3600190509392505050565b6001602060006101000a81548160ff0219169083151502179055506000600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060006133ab600261339d60165461338f600e5487613c6190919063ffffffff16565b613c7790919063ffffffff16565b613c7790919063ffffffff16565b905060006133c2828461312590919063ffffffff16565b90506000600267ffffffffffffffff8111156133e1576133e0614ad1565b5b60405190808252806020026020018201604052801561340f5781602001602082028036833780820191505090505b509050308160008151811061342757613426614aa2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156134c957600080fd5b505afa1580156134dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135019190613d38565b8160018151811061351557613514614aa2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016135b395949392919061472b565b600060405180830381600087803b1580156135cd57600080fd5b505af11580156135e1573d6000803e3d6000fd5b50505050600047905060006136166136056002600e54613c7790919063ffffffff16565b60165461312590919063ffffffff16565b90506000613654600261364684613638600e5488613c6190919063ffffffff16565b613c7790919063ffffffff16565b613c7790919063ffffffff16565b9050600061367f8361367160125487613c6190919063ffffffff16565b613c7790919063ffffffff16565b905060006136a88261369a858861312590919063ffffffff16565b61312590919063ffffffff16565b9050601e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b15801561371457600080fd5b505af193505050508015613726575060015b61372f57613730565b5b60006137598561374b60145489613c6190919063ffffffff16565b613c7790919063ffffffff16565b90506000613770828461312590919063ffffffff16565b90506000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682617530906040516137be906143ff565b600060405180830381858888f193505050503d80600081146137fc576040519150601f19603f3d011682016040523d82523d6000602084013e613801565b606091505b505090506000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168461753090604051613851906143ff565b600060405180830381858888f193505050503d806000811461388f576040519150601f19603f3d011682016040523d82523d6000602084013e613894565b606091505b50509050600091506000905060008c11156139c157601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71988308f600080601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016139329695949392919061449c565b6060604051808303818588803b15801561394b57600080fd5b505af115801561395f573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906139849190614025565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506878d6040516139b8929190614785565b60405180910390a15b505050505050505050505050506000602060006101000a81548160ff021916908315150217905550565b600080601d541415905090565b6000808373ffffffffffffffffffffffffffffffffffffffff16601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613a5857601654613a5c565b6017545b905060011515600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415613ac05760639050613b1f565b60011515600d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415613b1e57606390505b5b6000613b476064613b398487613c6190919063ffffffff16565b613c7790919063ffffffff16565b9050613b9b81600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461262a90919063ffffffff16565b600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613c3b9190614710565b60405180910390a3613c56818561312590919063ffffffff16565b925050509392505050565b60008183613c6f91906148b0565b905092915050565b60008183613c85919061487f565b905092915050565b600081359050613c9c81614e5e565b92915050565b600081519050613cb181614e5e565b92915050565b600081359050613cc681614e75565b92915050565b600081359050613cdb81614e8c565b92915050565b600081359050613cf081614ea3565b92915050565b600081519050613d0581614ea3565b92915050565b600060208284031215613d2157613d20614b00565b5b6000613d2f84828501613c8d565b91505092915050565b600060208284031215613d4e57613d4d614b00565b5b6000613d5c84828501613ca2565b91505092915050565b600060208284031215613d7b57613d7a614b00565b5b6000613d8984828501613cb7565b91505092915050565b60008060408385031215613da957613da8614b00565b5b6000613db785828601613c8d565b9250506020613dc885828601613c8d565b9150509250929050565b600080600060608486031215613deb57613dea614b00565b5b6000613df986828701613c8d565b9350506020613e0a86828701613c8d565b9250506040613e1b86828701613c8d565b9150509250925092565b600080600060608486031215613e3e57613e3d614b00565b5b6000613e4c86828701613c8d565b9350506020613e5d86828701613c8d565b9250506040613e6e86828701613ce1565b9150509250925092565b60008060408385031215613e8f57613e8e614b00565b5b6000613e9d85828601613c8d565b9250506020613eae85828601613ccc565b9150509250929050565b60008060408385031215613ecf57613ece614b00565b5b6000613edd85828601613c8d565b9250506020613eee85828601613ce1565b9150509250929050565b600060208284031215613f0e57613f0d614b00565b5b6000613f1c84828501613ccc565b91505092915050565b600080600060608486031215613f3e57613f3d614b00565b5b6000613f4c86828701613ccc565b9350506020613f5d86828701613ce1565b9250506040613f6e86828701613ccc565b9150509250925092565b600060208284031215613f8e57613f8d614b00565b5b6000613f9c84828501613ce1565b91505092915050565b60008060408385031215613fbc57613fbb614b00565b5b6000613fca85828601613ce1565b9250506020613fdb85828601613cb7565b9150509250929050565b60008060408385031215613ffc57613ffb614b00565b5b600061400a85828601613ce1565b925050602061401b85828601613ce1565b9150509250929050565b60008060006060848603121561403e5761403d614b00565b5b600061404c86828701613cf6565b935050602061405d86828701613cf6565b925050604061406e86828701613cf6565b9150509250925092565b6000806000806080858703121561409257614091614b00565b5b60006140a087828801613ce1565b94505060206140b187828801613ce1565b93505060406140c287828801613ce1565b92505060606140d387828801613ce1565b91505092959194509250565b60006140eb8383614106565b60208301905092915050565b614100816149a5565b82525050565b61410f8161493e565b82525050565b61411e8161493e565b82525050565b600061412f826147d9565b61413981856147fc565b9350614144836147c9565b8060005b8381101561417557815161415c88826140df565b9750614167836147ef565b925050600181019050614148565b5085935050505092915050565b61418b81614962565b82525050565b61419a816149b7565b82525050565b6141a9816149c9565b82525050565b6141b8816149db565b82525050565b60006141c9826147e4565b6141d38185614818565b93506141e3818560208601614a11565b6141ec81614b05565b840191505092915050565b6000614204601183614818565b915061420f82614b16565b602082019050919050565b6000614227601083614818565b915061423282614b3f565b602082019050919050565b600061424a602c83614818565b915061425582614b68565b604082019050919050565b600061426d602a83614818565b915061427882614bb7565b604082019050919050565b6000614290602a83614818565b915061429b82614c06565b604082019050919050565b60006142b3601483614818565b91506142be82614c55565b602082019050919050565b60006142d6603183614818565b91506142e182614c7e565b604082019050919050565b60006142f9602983614818565b915061430482614ccd565b604082019050919050565b600061431c602d83614818565b915061432782614d1c565b604082019050919050565b600061433f600683614818565b915061434a82614d6b565b602082019050919050565b600061436260008361480d565b915061436d82614d94565b600082019050919050565b6000614385602b83614818565b915061439082614d97565b604082019050919050565b60006143a8603083614818565b91506143b382614de6565b604082019050919050565b60006143cb600b83614818565b91506143d682614e35565b602082019050919050565b6143ea8161498e565b82525050565b6143f981614998565b82525050565b600061440a82614355565b9150819050919050565b60006020820190506144296000830184614115565b92915050565b600060208201905061444460008301846140f7565b92915050565b600060408201905061445f6000830185614115565b61446c60208301846141af565b9392505050565b60006040820190506144886000830185614115565b61449560208301846143e1565b9392505050565b600060c0820190506144b16000830189614115565b6144be60208301886143e1565b6144cb60408301876141af565b6144d860608301866141af565b6144e56080830185614115565b6144f260a08301846143e1565b979650505050505050565b60006020820190506145126000830184614182565b92915050565b600060208201905061452d6000830184614191565b92915050565b600060208201905061454860008301846141a0565b92915050565b6000602082019050818103600083015261456881846141be565b905092915050565b60006020820190508181036000830152614589816141f7565b9050919050565b600060208201905081810360008301526145a98161421a565b9050919050565b600060208201905081810360008301526145c98161423d565b9050919050565b600060208201905081810360008301526145e981614260565b9050919050565b6000602082019050818103600083015261460981614283565b9050919050565b60006020820190508181036000830152614629816142a6565b9050919050565b60006020820190508181036000830152614649816142c9565b9050919050565b60006020820190508181036000830152614669816142ec565b9050919050565b600060208201905081810360008301526146898161430f565b9050919050565b600060208201905081810360008301526146a981614332565b9050919050565b600060208201905081810360008301526146c981614378565b9050919050565b600060208201905081810360008301526146e98161439b565b9050919050565b60006020820190508181036000830152614709816143be565b9050919050565b600060208201905061472560008301846143e1565b92915050565b600060a08201905061474060008301886143e1565b61474d60208301876141af565b818103604083015261475f8186614124565b905061476e6060830185614115565b61477b60808301846143e1565b9695505050505050565b600060408201905061479a60008301856143e1565b6147a760208301846143e1565b9392505050565b60006020820190506147c360008301846143f0565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006148348261498e565b915061483f8361498e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561487457614873614a44565b5b828201905092915050565b600061488a8261498e565b91506148958361498e565b9250826148a5576148a4614a73565b5b828204905092915050565b60006148bb8261498e565b91506148c68361498e565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156148ff576148fe614a44565b5b828202905092915050565b60006149158261498e565b91506149208361498e565b92508282101561493357614932614a44565b5b828203905092915050565b60006149498261496e565b9050919050565b600061495b8261496e565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006149b0826149ed565b9050919050565b60006149c2826149ed565b9050919050565b60006149d4826149ed565b9050919050565b60006149e68261498e565b9050919050565b60006149f8826149ff565b9050919050565b6000614a0a8261496e565b9050919050565b60005b83811015614a2f578082015181840152602081019050614a14565b83811115614a3e576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b7f496e73756666696369656e742043524f00000000000000000000000000000000600082015250565b7f5265776172647320546178206f6e20627579732063616e206e6f74206265206c60008201527f6f776572207468616e2032250000000000000000000000000000000000000000602082015250565b7f5465616d20546178206f6e20627579732063616e206e6f74206265206869676860008201527f6572207468616e20302500000000000000000000000000000000000000000000602082015250565b7f4c5020546178206f6e2073656c6c732063616e206e6f7420626520686967686560008201527f72207468616e2031302500000000000000000000000000000000000000000000602082015250565b7f54726164696e67206e6f74206f70656e20796574000000000000000000000000600082015250565b7f4d61726b6574696e6720546178206f6e2073656c6c732063616e206e6f74206260008201527f6520686967686572207468616e20313025000000000000000000000000000000602082015250565b7f4c5020546178206f6e20627579732063616e206e6f742062652068696768657260008201527f207468616e203130250000000000000000000000000000000000000000000000602082015250565b7f5265776172647320546178206f6e2073656c6c732063616e206e6f742062652060008201527f6c6f776572207468616e20322500000000000000000000000000000000000000602082015250565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b50565b7f5465616d20546178206f6e2073656c6c732063616e206e6f742062652068696760008201527f686572207468616e203025000000000000000000000000000000000000000000602082015250565b7f4d61726b6574696e6720546178206f6e20627579732063616e206e6f7420626560008201527f20686967686572207468616e2031302500000000000000000000000000000000602082015250565b7f21415554484f52495a4544000000000000000000000000000000000000000000600082015250565b614e678161493e565b8114614e7257600080fd5b50565b614e7e81614950565b8114614e8957600080fd5b50565b614e9581614962565b8114614ea057600080fd5b50565b614eac8161498e565b8114614eb757600080fd5b5056fea2646970667358221220d0cc323372b98da787e6594a5dc99439965728ff517493bb02b772d38c40cdf564736f6c6343000807003360806040526ec097ce7bc90715b34b9f1000000000600a55610e10600b556001600c553480156200002f57600080fd5b50604051620016fb380380620016fb8339818101604052810190620000559190620000f4565b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506200018d565b600081519050620000ee8162000173565b92915050565b6000602082840312156200010d576200010c6200016e565b5b60006200011d84828501620000dd565b91505092915050565b600062000133826200014e565b9050919050565b6000620001478262000126565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6200017e816200013a565b81146200018a57600080fd5b50565b61155e806200019d6000396000f3fe6080604052600436106100dd5760003560e01c8063ce7c2ac21161007f578063efca2eed11610059578063efca2eed14610291578063f0fc6bca146102bc578063ffb2c479146102d3578063ffd49c84146102fc576100dd565b8063ce7c2ac21461021d578063d0e30db01461025c578063e2d2e21914610266576100dd565b80632d48e896116100bb5780632d48e896146101735780633a98ef391461019c5780634fab0ae8146101c7578063997664d7146101f2576100dd565b806311ce023d146100e257806314b6ca961461010d57806328fd319814610136575b600080fd5b3480156100ee57600080fd5b506100f7610327565b6040516101049190611205565b60405180910390f35b34801561011957600080fd5b50610134600480360381019061012f91906110ce565b61032d565b005b34801561014257600080fd5b5061015d600480360381019061015891906110a1565b6105ec565b60405161016a9190611205565b60405180910390f35b34801561017f57600080fd5b5061019a6004803603810190610195919061113b565b610706565b005b3480156101a857600080fd5b506101b1610770565b6040516101be9190611205565b60405180910390f35b3480156101d357600080fd5b506101dc610776565b6040516101e99190611205565b60405180910390f35b3480156101fe57600080fd5b5061020761077c565b6040516102149190611205565b60405180910390f35b34801561022957600080fd5b50610244600480360381019061023f91906110a1565b610782565b60405161025393929190611220565b60405180910390f35b6102646107ac565b005b34801561027257600080fd5b5061027b610864565b6040516102889190611205565b60405180910390f35b34801561029d57600080fd5b506102a661086a565b6040516102b39190611205565b60405180910390f35b3480156102c857600080fd5b506102d1610870565b005b3480156102df57600080fd5b506102fa60048036038101906102f5919061110e565b6108c3565b005b34801561030857600080fd5b50610311610a57565b60405161031e9190611205565b60405180910390f35b600a5481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461038557600080fd5b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015411156103da576103d982610a5d565b5b60008111801561042c57506000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154145b1561043f5761043a82610cca565b6104a1565b60008114801561049157506000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154115b156104a05761049f82610d79565b5b5b61050a816104fc600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154600654610f8090919063ffffffff16565b610f9690919063ffffffff16565b60068190555080600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055506105a2600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154610fac565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505050565b600080600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015414156106415760009050610701565b600061068e600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154610fac565b90506000600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015490508082116106e957600092505050610701565b6106fc8183610f8090919063ffffffff16565b925050505b919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461075e57600080fd5b81600b8190555080600c819055505050565b60065481565b600c5481565b60075481565b60056020528060005260406000206000915090508060000154908060010154908060020154905083565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461080457600080fd5b61081934600754610f9690919063ffffffff16565b60078190555061085c61084b60065461083d34600a54610fde90919063ffffffff16565b610ff490919063ffffffff16565b600954610f9690919063ffffffff16565b600981905550565b60095481565b60085481565b6108793361100a565b6108b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108af906111e5565b60405180910390fd5b6108c133610a5d565b565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461091b57600080fd5b6000600280549050905060008114156109345750610a54565b60008060005a90505b848210801561094b57508383105b15610a4f5783600d5410610962576000600d819055505b6109ab6002600d548154811061097b5761097a61149a565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661100a565b156109fa576109f96002600d54815481106109c9576109c861149a565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610a5d565b5b610a1f610a105a83610f8090919063ffffffff16565b83610f9690919063ffffffff16565b91505a9050600d6000815480929190610a37906113c4565b91905055508280610a47906113c4565b93505061093d565b505050505b50565b600b5481565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001541415610aad57610cc7565b6000610ab8826105ec565b90506000811115610cc557610ad881600854610f9690919063ffffffff16565b60088190555060008273ffffffffffffffffffffffffffffffffffffffff168261753090604051610b08906111d0565b600060405180830381858888f193505050503d8060008114610b46576040519150601f19603f3d011682016040523d82523d6000602084013e610b4b565b606091505b505090506000905042600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610bec82600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154610f9690919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020181905550610c7d600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154610fac565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010181905550505b505b50565b600280549050600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506002819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60026001600280549050610d8d9190611354565b81548110610d9e57610d9d61149a565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166002600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481548110610e1c57610e1b61149a565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546003600060026001600280549050610ebc9190611354565b81548110610ecd57610ecc61149a565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506002805480610f4857610f4761146b565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905550565b60008183610f8e9190611354565b905092915050565b60008183610fa49190611273565b905092915050565b6000610fd7600a54610fc960095485610fde90919063ffffffff16565b610ff490919063ffffffff16565b9050919050565b60008183610fec91906112fa565b905092915050565b6000818361100291906112c9565b905092915050565b600042600b54600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461105a9190611273565b1080156110705750600c5461106e836105ec565b115b9050919050565b600081359050611086816114fa565b92915050565b60008135905061109b81611511565b92915050565b6000602082840312156110b7576110b66114c9565b5b60006110c584828501611077565b91505092915050565b600080604083850312156110e5576110e46114c9565b5b60006110f385828601611077565b92505060206111048582860161108c565b9150509250929050565b600060208284031215611124576111236114c9565b5b60006111328482850161108c565b91505092915050565b60008060408385031215611152576111516114c9565b5b60006111608582860161108c565b92505060206111718582860161108c565b9150509250929050565b6000611188601783611262565b9150611193826114ce565b602082019050919050565b60006111ab600083611257565b91506111b6826114f7565b600082019050919050565b6111ca816113ba565b82525050565b60006111db8261119e565b9150819050919050565b600060208201905081810360008301526111fe8161117b565b9050919050565b600060208201905061121a60008301846111c1565b92915050565b600060608201905061123560008301866111c1565b61124260208301856111c1565b61124f60408301846111c1565b949350505050565b600081905092915050565b600082825260208201905092915050565b600061127e826113ba565b9150611289836113ba565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156112be576112bd61140d565b5b828201905092915050565b60006112d4826113ba565b91506112df836113ba565b9250826112ef576112ee61143c565b5b828204905092915050565b6000611305826113ba565b9150611310836113ba565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156113495761134861140d565b5b828202905092915050565b600061135f826113ba565b915061136a836113ba565b92508282101561137d5761137c61140d565b5b828203905092915050565b60006113938261139a565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006113cf826113ba565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156114025761140161140d565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600080fd5b7f546f6f20736f6f6e2e204e65656420746f207761697421000000000000000000600082015250565b50565b61150381611388565b811461150e57600080fd5b50565b61151a816113ba565b811461152557600080fd5b5056fea264697066735822122008f62b83ca5d47d0d38528e8e0a07ac84de0aac83b892eddf319f5d77c4138f664736f6c63430008070033
Deployed Bytecode
0x6080604052600436106103a65760003560e01c806375f0a874116101e7578063bad3ea6a1161010d578063dd62ed3e116100a0578063f887ea401161006f578063f887ea4014610de9578063fabe628314610e14578063fe9fbb8014610e3d578063ffb54a9914610e7a576103ad565b8063dd62ed3e14610d31578063e2dd8ca014610d6e578063f0b37c0414610d97578063f2fde38b14610dc0576103ad565b8063d829d3f8116100dc578063d829d3f814610c89578063d920334e14610cb2578063da00097d14610cdb578063dbe1c4d514610d06576103ad565b8063bad3ea6a14610bdd578063bf56b37114610c08578063ca33e64c14610c33578063d7c94efd14610c5e576103ad565b80638b42507f11610185578063a9059cbb11610154578063a9059cbb14610b25578063a9f7864b14610b62578063b0a616a914610b8b578063b6a5d7de14610bb4576103ad565b80638b42507f14610a6757806395d89b4114610aa457806398118cb414610acf578063a8aa1b3114610afa576103ad565b80637db1342c116101c15780637db1342c146109bd578063807c2d9c146109e657806384f6820a14610a11578063893d20e814610a3c576103ad565b806375f0a8741461093e578063773fcb5c146109695780637d1db4a514610992576103ad565b8063315dca29116102cc578063479f66d81161026a57806359927044116102395780635992704414610882578063650c4226146108ad5780636b67c4df146108d657806370a0823114610901576103ad565b8063479f66d8146107c65780634a74bb02146107ef578063531484161461081a578063571ac8b014610845576103ad565b80633f4218e0116102a65780633f4218e0146106f85780634102eedc146107355780634355855a1461075e57806344de2e4c1461079b576103ad565b8063315dca291461066957806334c70889146106925780633bbac579146106bb576103ad565b806313374e7a116103445780632b112e49116103135780632b112e49146105ab5780632bb14e1d146105d65780632f54bf6e14610601578063313ce5671461063e576103ad565b806313374e7a146104ed57806318160ddd146105185780631df4ccfc1461054357806323b872dd1461056e576103ad565b8063095ea7b311610380578063095ea7b31461043357806309ad803d146104705780630d295980146104995780631107b3a5146104c2576103ad565b806303898c17146103b25780630445b667146103dd57806306fdde0314610408576103ad565b366103ad57005b600080fd5b3480156103be57600080fd5b506103c7610ea5565b6040516103d49190614710565b60405180910390f35b3480156103e957600080fd5b506103f2610eab565b6040516103ff9190614710565b60405180910390f35b34801561041457600080fd5b5061041d610eb1565b60405161042a919061454e565b60405180910390f35b34801561043f57600080fd5b5061045a60048036038101906104559190613eb8565b610eee565b60405161046791906144fd565b60405180910390f35b34801561047c57600080fd5b5061049760048036038101906104929190614078565b610fe0565b005b3480156104a557600080fd5b506104c060048036038101906104bb9190613ef8565b61119f565b005b3480156104ce57600080fd5b506104d761120c565b6040516104e49190614710565b60405180910390f35b3480156104f957600080fd5b50610502611212565b60405161050f9190614710565b60405180910390f35b34801561052457600080fd5b5061052d611218565b60405161053a9190614710565b60405180910390f35b34801561054f57600080fd5b50610558611222565b6040516105659190614710565b60405180910390f35b34801561057a57600080fd5b5061059560048036038101906105909190613e25565b611228565b6040516105a291906144fd565b60405180910390f35b3480156105b757600080fd5b506105c0611428565b6040516105cd9190614710565b60405180910390f35b3480156105e257600080fd5b506105eb6114aa565b6040516105f89190614710565b60405180910390f35b34801561060d57600080fd5b5061062860048036038101906106239190613d0b565b6114b0565b60405161063591906144fd565b60405180910390f35b34801561064a57600080fd5b50610653611509565b60405161066091906147ae565b60405180910390f35b34801561067557600080fd5b50610690600480360381019061068b9190613dd2565b611512565b005b34801561069e57600080fd5b506106b960048036038101906106b49190613f25565b611622565b005b3480156106c757600080fd5b506106e260048036038101906106dd9190613d0b565b6116aa565b6040516106ef91906144fd565b60405180910390f35b34801561070457600080fd5b5061071f600480360381019061071a9190613d0b565b6116ca565b60405161072c91906144fd565b60405180910390f35b34801561074157600080fd5b5061075c60048036038101906107579190613e78565b6116ea565b005b34801561076a57600080fd5b5061078560048036038101906107809190613d0b565b61178d565b60405161079291906144fd565b60405180910390f35b3480156107a757600080fd5b506107b06117ad565b6040516107bd91906144fd565b60405180910390f35b3480156107d257600080fd5b506107ed60048036038101906107e89190613f78565b6117c0565b005b3480156107fb57600080fd5b50610804611821565b60405161081191906144fd565b60405180910390f35b34801561082657600080fd5b5061082f611834565b60405161083c9190614710565b60405180910390f35b34801561085157600080fd5b5061086c60048036038101906108679190613d0b565b61183a565b60405161087991906144fd565b60405180910390f35b34801561088e57600080fd5b5061089761186d565b6040516108a49190614414565b60405180910390f35b3480156108b957600080fd5b506108d460048036038101906108cf9190614078565b611893565b005b3480156108e257600080fd5b506108eb611a52565b6040516108f89190614710565b60405180910390f35b34801561090d57600080fd5b5061092860048036038101906109239190613d0b565b611a58565b6040516109359190614710565b60405180910390f35b34801561094a57600080fd5b50610953611aa1565b6040516109609190614414565b60405180910390f35b34801561097557600080fd5b50610990600480360381019061098b9190613e78565b611ac7565b005b34801561099e57600080fd5b506109a7611d67565b6040516109b49190614710565b60405180910390f35b3480156109c957600080fd5b506109e460048036038101906109df9190613f78565b611d6d565b005b3480156109f257600080fd5b506109fb611dbf565b604051610a089190614710565b60405180910390f35b348015610a1d57600080fd5b50610a26611dc5565b604051610a339190614710565b60405180910390f35b348015610a4857600080fd5b50610a51611dcb565b604051610a5e9190614414565b60405180910390f35b348015610a7357600080fd5b50610a8e6004803603810190610a899190613d0b565b611df4565b604051610a9b91906144fd565b60405180910390f35b348015610ab057600080fd5b50610ab9611e14565b604051610ac6919061454e565b60405180910390f35b348015610adb57600080fd5b50610ae4611e51565b604051610af19190614710565b60405180910390f35b348015610b0657600080fd5b50610b0f611e57565b604051610b1c9190614414565b60405180910390f35b348015610b3157600080fd5b50610b4c6004803603810190610b479190613eb8565b611e7d565b604051610b5991906144fd565b60405180910390f35b348015610b6e57600080fd5b50610b896004803603810190610b849190613fe5565b611e92565b005b348015610b9757600080fd5b50610bb26004803603810190610bad9190613fa5565b611f6d565b005b348015610bc057600080fd5b50610bdb6004803603810190610bd69190613d0b565b612048565b005b348015610be957600080fd5b50610bf26120ea565b604051610bff9190614518565b60405180910390f35b348015610c1457600080fd5b50610c1d612110565b604051610c2a9190614710565b60405180910390f35b348015610c3f57600080fd5b50610c48612116565b604051610c559190614414565b60405180910390f35b348015610c6a57600080fd5b50610c7361213c565b604051610c809190614710565b60405180910390f35b348015610c9557600080fd5b50610cb06004803603810190610cab9190613ef8565b612142565b005b348015610cbe57600080fd5b50610cd96004803603810190610cd49190613f78565b6121a7565b005b348015610ce757600080fd5b50610cf06121f9565b604051610cfd91906144fd565b60405180910390f35b348015610d1257600080fd5b50610d1b61220c565b604051610d289190614710565b60405180910390f35b348015610d3d57600080fd5b50610d586004803603810190610d539190613d92565b612212565b604051610d659190614710565b60405180910390f35b348015610d7a57600080fd5b50610d956004803603810190610d909190613e78565b612299565b005b348015610da357600080fd5b50610dbe6004803603810190610db99190613d0b565b61233c565b005b348015610dcc57600080fd5b50610de76004803603810190610de29190613d65565b6123df565b005b348015610df557600080fd5b50610dfe6124f8565b604051610e0b9190614533565b60405180910390f35b348015610e2057600080fd5b50610e3b6004803603810190610e369190613e78565b61251e565b005b348015610e4957600080fd5b50610e646004803603810190610e5f9190613d0b565b6125c1565b604051610e7191906144fd565b60405180910390f35b348015610e8657600080fd5b50610e8f612617565b604051610e9c91906144fd565b60405180910390f35b60135481565b60215481565b60606040518060400160405280600b81526020017f43524f4e4f5320424f5353000000000000000000000000000000000000000000815250905090565b600081600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610fce9190614710565b60405180910390a36001905092915050565b610fe9336125c1565b611028576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101f906146f0565b60405180910390fd5b600a84111561106c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611063906145f0565b60405180910390fd5b600a8211156110b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a790614630565b60405180910390fd5b60008111156110f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110eb906146b0565b60405180910390fd5b6002831015611138576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112f90614670565b60405180910390fd5b83600f81905550826013819055508160118190555080601581905550611193601354611185601554611177601154600f5461262a90919063ffffffff16565b61262a90919063ffffffff16565b61262a90919063ffffffff16565b60178190555050505050565b6111a8336114b0565b6111e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111de90614690565b60405180910390fd5b80601e60006101000a81548160ff021916908315150217905550611209612640565b50565b600f5481565b60115481565b6000600454905090565b60165481565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461141457611393826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126499092919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b61141f84848461269e565b90509392505050565b60006114a5611458600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611a58565b611497611486600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611a58565b60045461312590919063ffffffff16565b61312590919063ffffffff16565b905090565b60125481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b61151b336125c1565b61155a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611551906146f0565b60405180910390fd5b82601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b61162b336125c1565b61166a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611661906146f0565b60405180910390fd5b82602060016101000a81548160ff0219169083151502179055508160218190555080602060026101000a81548160ff021916908315150217905550505050565b600d6020528060005260406000206000915054906101000a900460ff1681565b600a6020528060005260406000206000915054906101000a900460ff1681565b6116f3336125c1565b611732576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611729906146f0565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600c6020528060005260406000206000915054906101000a900460ff1681565b600760009054906101000a900460ff1681565b6117c9336125c1565b611808576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ff906146f0565b60405180910390fd5b620b71b0811061181757600080fd5b80601f8190555050565b602060019054906101000a900460ff1681565b60175481565b6000611866827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610eee565b9050919050565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61189c336125c1565b6118db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d2906146f0565b60405180910390fd5b600a84111561191f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191690614650565b60405180910390fd5b600a821115611963576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195a906146d0565b60405180910390fd5b60008111156119a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199e906145d0565b60405180910390fd5b60028310156119eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e2906145b0565b60405180910390fd5b83600e81905550826012819055508160108190555080601481905550611a46601254611a38601454611a2a601054600e5461262a90919063ffffffff16565b61262a90919063ffffffff16565b61262a90919063ffffffff16565b60168190555050505050565b60105481565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611ad0336125c1565b611b0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b06906146f0565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015611b995750601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b611ba257600080fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015611c9457601e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968360006040518363ffffffff1660e01b8152600401611c5d92919061444a565b600060405180830381600087803b158015611c7757600080fd5b505af1158015611c8b573d6000803e3d6000fd5b50505050611d63565b601e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9683600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401611d30929190614473565b600060405180830381600087803b158015611d4a57600080fd5b505af1158015611d5e573d6000803e3d6000fd5b505050505b5050565b60055481565b611d76336125c1565b611db5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dac906146f0565b60405180910390fd5b8060068190555050565b60065481565b60155481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600b6020528060005260406000206000915054906101000a900460ff1681565b60606040518060400160405280600581526020017f43424f5353000000000000000000000000000000000000000000000000000000815250905090565b600e5481565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611e8a33848461269e565b905092915050565b611e9b336125c1565b611eda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed1906146f0565b60405180910390fd5b601e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632d48e89683836040518363ffffffff1660e01b8152600401611f37929190614785565b600060405180830381600087803b158015611f5157600080fd5b505af1158015611f65573d6000803e3d6000fd5b505050505050565b611f76336114b0565b611fb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fac90614690565b60405180910390fd5b6000479050828111611ffc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff390614590565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f19350505050158015612042573d6000803e3d6000fd5b50505050565b612051336114b0565b612090576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208790614690565b60405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b601e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601d5481565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60145481565b61214b336125c1565b61218a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612181906146f0565b60405180910390fd5b80600760006101000a81548160ff02191690831515021790555050565b6121b0336125c1565b6121ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121e6906146f0565b60405180910390fd5b8060058190555050565b602060029054906101000a900460ff1681565b60225481565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6122a2336114b0565b6122e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122d890614690565b60405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b612345336114b0565b612384576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161237b90614690565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6123e8336114b0565b612427576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161241e90614690565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516124ed919061442f565b60405180910390a150565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612527336125c1565b612566576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161255d906146f0565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b601e60009054906101000a900460ff1681565b600081836126389190614829565b905092915050565b42601d81905550565b6000838311158290612691576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612688919061454e565b60405180910390fd5b5082840390509392505050565b6000602060009054906101000a900460ff16156126c7576126c084848461313b565b905061311e565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561276b5750600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156127c057601e60009054906101000a900460ff166127bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127b690614610565b60405180910390fd5b5b6005548211158061281a5750600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612859576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161285090614570565b60405180910390fd5b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156128c45750602060009054906101000a900460ff16155b80156128dc5750602060019054906101000a900460ff165b80156129295750602154600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b156129375761293661330e565b5b61293f6139eb565b1580156129995750601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b156129eb576000600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054116129ea57600080fd5b5b602254601d546129fb9190614829565b42108015612a575750601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15612af0576001600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600115157f3159dadbd8e2d720a851b412e3358e7e44bb11734c9bfd5715340e21798e8b2584604051612ae79190614414565b60405180910390a25b612b79826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126499092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612c225750600760009054906101000a900460ff165b15612c8857600654612c7c83600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461262a90919063ffffffff16565b1115612c8757600080fd5b5b6000600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612d2e5750600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612d385782612d44565b612d438585856139f8565b5b9050612d9881600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461262a90919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612efe57601e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9686600860008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401612ec8929190614473565b600060405180830381600087803b158015612ee257600080fd5b505af1925050508015612ef3575060015b612efc57612efd565b5b5b600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661302157601e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9685600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401612feb929190614473565b600060405180830381600087803b15801561300557600080fd5b505af1925050508015613016575060015b61301f57613020565b5b5b601e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ffb2c479601f546040518263ffffffff1660e01b815260040161307e9190614710565b600060405180830381600087803b15801561309857600080fd5b505af19250505080156130a9575060015b6130b2576130b3565b5b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516131109190614710565b60405180910390a360019150505b9392505050565b60008183613133919061490a565b905092915050565b60006131c6826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126499092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061325b82600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461262a90919063ffffffff16565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516132fb9190614710565b60405180910390a3600190509392505050565b6001602060006101000a81548160ff0219169083151502179055506000600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060006133ab600261339d60165461338f600e5487613c6190919063ffffffff16565b613c7790919063ffffffff16565b613c7790919063ffffffff16565b905060006133c2828461312590919063ffffffff16565b90506000600267ffffffffffffffff8111156133e1576133e0614ad1565b5b60405190808252806020026020018201604052801561340f5781602001602082028036833780820191505090505b509050308160008151811061342757613426614aa2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156134c957600080fd5b505afa1580156134dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135019190613d38565b8160018151811061351557613514614aa2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016135b395949392919061472b565b600060405180830381600087803b1580156135cd57600080fd5b505af11580156135e1573d6000803e3d6000fd5b50505050600047905060006136166136056002600e54613c7790919063ffffffff16565b60165461312590919063ffffffff16565b90506000613654600261364684613638600e5488613c6190919063ffffffff16565b613c7790919063ffffffff16565b613c7790919063ffffffff16565b9050600061367f8361367160125487613c6190919063ffffffff16565b613c7790919063ffffffff16565b905060006136a88261369a858861312590919063ffffffff16565b61312590919063ffffffff16565b9050601e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b15801561371457600080fd5b505af193505050508015613726575060015b61372f57613730565b5b60006137598561374b60145489613c6190919063ffffffff16565b613c7790919063ffffffff16565b90506000613770828461312590919063ffffffff16565b90506000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682617530906040516137be906143ff565b600060405180830381858888f193505050503d80600081146137fc576040519150601f19603f3d011682016040523d82523d6000602084013e613801565b606091505b505090506000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168461753090604051613851906143ff565b600060405180830381858888f193505050503d806000811461388f576040519150601f19603f3d011682016040523d82523d6000602084013e613894565b606091505b50509050600091506000905060008c11156139c157601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71988308f600080601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016139329695949392919061449c565b6060604051808303818588803b15801561394b57600080fd5b505af115801561395f573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906139849190614025565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506878d6040516139b8929190614785565b60405180910390a15b505050505050505050505050506000602060006101000a81548160ff021916908315150217905550565b600080601d541415905090565b6000808373ffffffffffffffffffffffffffffffffffffffff16601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613a5857601654613a5c565b6017545b905060011515600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415613ac05760639050613b1f565b60011515600d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415613b1e57606390505b5b6000613b476064613b398487613c6190919063ffffffff16565b613c7790919063ffffffff16565b9050613b9b81600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461262a90919063ffffffff16565b600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613c3b9190614710565b60405180910390a3613c56818561312590919063ffffffff16565b925050509392505050565b60008183613c6f91906148b0565b905092915050565b60008183613c85919061487f565b905092915050565b600081359050613c9c81614e5e565b92915050565b600081519050613cb181614e5e565b92915050565b600081359050613cc681614e75565b92915050565b600081359050613cdb81614e8c565b92915050565b600081359050613cf081614ea3565b92915050565b600081519050613d0581614ea3565b92915050565b600060208284031215613d2157613d20614b00565b5b6000613d2f84828501613c8d565b91505092915050565b600060208284031215613d4e57613d4d614b00565b5b6000613d5c84828501613ca2565b91505092915050565b600060208284031215613d7b57613d7a614b00565b5b6000613d8984828501613cb7565b91505092915050565b60008060408385031215613da957613da8614b00565b5b6000613db785828601613c8d565b9250506020613dc885828601613c8d565b9150509250929050565b600080600060608486031215613deb57613dea614b00565b5b6000613df986828701613c8d565b9350506020613e0a86828701613c8d565b9250506040613e1b86828701613c8d565b9150509250925092565b600080600060608486031215613e3e57613e3d614b00565b5b6000613e4c86828701613c8d565b9350506020613e5d86828701613c8d565b9250506040613e6e86828701613ce1565b9150509250925092565b60008060408385031215613e8f57613e8e614b00565b5b6000613e9d85828601613c8d565b9250506020613eae85828601613ccc565b9150509250929050565b60008060408385031215613ecf57613ece614b00565b5b6000613edd85828601613c8d565b9250506020613eee85828601613ce1565b9150509250929050565b600060208284031215613f0e57613f0d614b00565b5b6000613f1c84828501613ccc565b91505092915050565b600080600060608486031215613f3e57613f3d614b00565b5b6000613f4c86828701613ccc565b9350506020613f5d86828701613ce1565b9250506040613f6e86828701613ccc565b9150509250925092565b600060208284031215613f8e57613f8d614b00565b5b6000613f9c84828501613ce1565b91505092915050565b60008060408385031215613fbc57613fbb614b00565b5b6000613fca85828601613ce1565b9250506020613fdb85828601613cb7565b9150509250929050565b60008060408385031215613ffc57613ffb614b00565b5b600061400a85828601613ce1565b925050602061401b85828601613ce1565b9150509250929050565b60008060006060848603121561403e5761403d614b00565b5b600061404c86828701613cf6565b935050602061405d86828701613cf6565b925050604061406e86828701613cf6565b9150509250925092565b6000806000806080858703121561409257614091614b00565b5b60006140a087828801613ce1565b94505060206140b187828801613ce1565b93505060406140c287828801613ce1565b92505060606140d387828801613ce1565b91505092959194509250565b60006140eb8383614106565b60208301905092915050565b614100816149a5565b82525050565b61410f8161493e565b82525050565b61411e8161493e565b82525050565b600061412f826147d9565b61413981856147fc565b9350614144836147c9565b8060005b8381101561417557815161415c88826140df565b9750614167836147ef565b925050600181019050614148565b5085935050505092915050565b61418b81614962565b82525050565b61419a816149b7565b82525050565b6141a9816149c9565b82525050565b6141b8816149db565b82525050565b60006141c9826147e4565b6141d38185614818565b93506141e3818560208601614a11565b6141ec81614b05565b840191505092915050565b6000614204601183614818565b915061420f82614b16565b602082019050919050565b6000614227601083614818565b915061423282614b3f565b602082019050919050565b600061424a602c83614818565b915061425582614b68565b604082019050919050565b600061426d602a83614818565b915061427882614bb7565b604082019050919050565b6000614290602a83614818565b915061429b82614c06565b604082019050919050565b60006142b3601483614818565b91506142be82614c55565b602082019050919050565b60006142d6603183614818565b91506142e182614c7e565b604082019050919050565b60006142f9602983614818565b915061430482614ccd565b604082019050919050565b600061431c602d83614818565b915061432782614d1c565b604082019050919050565b600061433f600683614818565b915061434a82614d6b565b602082019050919050565b600061436260008361480d565b915061436d82614d94565b600082019050919050565b6000614385602b83614818565b915061439082614d97565b604082019050919050565b60006143a8603083614818565b91506143b382614de6565b604082019050919050565b60006143cb600b83614818565b91506143d682614e35565b602082019050919050565b6143ea8161498e565b82525050565b6143f981614998565b82525050565b600061440a82614355565b9150819050919050565b60006020820190506144296000830184614115565b92915050565b600060208201905061444460008301846140f7565b92915050565b600060408201905061445f6000830185614115565b61446c60208301846141af565b9392505050565b60006040820190506144886000830185614115565b61449560208301846143e1565b9392505050565b600060c0820190506144b16000830189614115565b6144be60208301886143e1565b6144cb60408301876141af565b6144d860608301866141af565b6144e56080830185614115565b6144f260a08301846143e1565b979650505050505050565b60006020820190506145126000830184614182565b92915050565b600060208201905061452d6000830184614191565b92915050565b600060208201905061454860008301846141a0565b92915050565b6000602082019050818103600083015261456881846141be565b905092915050565b60006020820190508181036000830152614589816141f7565b9050919050565b600060208201905081810360008301526145a98161421a565b9050919050565b600060208201905081810360008301526145c98161423d565b9050919050565b600060208201905081810360008301526145e981614260565b9050919050565b6000602082019050818103600083015261460981614283565b9050919050565b60006020820190508181036000830152614629816142a6565b9050919050565b60006020820190508181036000830152614649816142c9565b9050919050565b60006020820190508181036000830152614669816142ec565b9050919050565b600060208201905081810360008301526146898161430f565b9050919050565b600060208201905081810360008301526146a981614332565b9050919050565b600060208201905081810360008301526146c981614378565b9050919050565b600060208201905081810360008301526146e98161439b565b9050919050565b60006020820190508181036000830152614709816143be565b9050919050565b600060208201905061472560008301846143e1565b92915050565b600060a08201905061474060008301886143e1565b61474d60208301876141af565b818103604083015261475f8186614124565b905061476e6060830185614115565b61477b60808301846143e1565b9695505050505050565b600060408201905061479a60008301856143e1565b6147a760208301846143e1565b9392505050565b60006020820190506147c360008301846143f0565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006148348261498e565b915061483f8361498e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561487457614873614a44565b5b828201905092915050565b600061488a8261498e565b91506148958361498e565b9250826148a5576148a4614a73565b5b828204905092915050565b60006148bb8261498e565b91506148c68361498e565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156148ff576148fe614a44565b5b828202905092915050565b60006149158261498e565b91506149208361498e565b92508282101561493357614932614a44565b5b828203905092915050565b60006149498261496e565b9050919050565b600061495b8261496e565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006149b0826149ed565b9050919050565b60006149c2826149ed565b9050919050565b60006149d4826149ed565b9050919050565b60006149e68261498e565b9050919050565b60006149f8826149ff565b9050919050565b6000614a0a8261496e565b9050919050565b60005b83811015614a2f578082015181840152602081019050614a14565b83811115614a3e576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b7f496e73756666696369656e742043524f00000000000000000000000000000000600082015250565b7f5265776172647320546178206f6e20627579732063616e206e6f74206265206c60008201527f6f776572207468616e2032250000000000000000000000000000000000000000602082015250565b7f5465616d20546178206f6e20627579732063616e206e6f74206265206869676860008201527f6572207468616e20302500000000000000000000000000000000000000000000602082015250565b7f4c5020546178206f6e2073656c6c732063616e206e6f7420626520686967686560008201527f72207468616e2031302500000000000000000000000000000000000000000000602082015250565b7f54726164696e67206e6f74206f70656e20796574000000000000000000000000600082015250565b7f4d61726b6574696e6720546178206f6e2073656c6c732063616e206e6f74206260008201527f6520686967686572207468616e20313025000000000000000000000000000000602082015250565b7f4c5020546178206f6e20627579732063616e206e6f742062652068696768657260008201527f207468616e203130250000000000000000000000000000000000000000000000602082015250565b7f5265776172647320546178206f6e2073656c6c732063616e206e6f742062652060008201527f6c6f776572207468616e20322500000000000000000000000000000000000000602082015250565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b50565b7f5465616d20546178206f6e2073656c6c732063616e206e6f742062652068696760008201527f686572207468616e203025000000000000000000000000000000000000000000602082015250565b7f4d61726b6574696e6720546178206f6e20627579732063616e206e6f7420626560008201527f20686967686572207468616e2031302500000000000000000000000000000000602082015250565b7f21415554484f52495a4544000000000000000000000000000000000000000000600082015250565b614e678161493e565b8114614e7257600080fd5b50565b614e7e81614950565b8114614e8957600080fd5b50565b614e9581614962565b8114614ea057600080fd5b50565b614eac8161498e565b8114614eb757600080fd5b5056fea2646970667358221220d0cc323372b98da787e6594a5dc99439965728ff517493bb02b772d38c40cdf564736f6c63430008070033
Deployed ByteCode Sourcemap
20354:13912:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21487:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22252:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23717:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24528:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26751:793;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31753:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21325:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21407;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23954:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21601:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28639:370;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24126:142;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21451:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19898:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23876:72;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27552:276;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27836;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21241:37;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21077:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25398:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21183:49;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20920:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28328:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22151:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21636:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24752:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21818:70;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26040:703;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21369:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24276:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21736:75;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25664:368;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20786:60;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25173:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20853:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21562:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24048:70;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21128:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23794:76;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21287:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21930:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28475:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28120:200;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;33949:248;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19691:94;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22030:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21958:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21677:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21529:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25287:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25062;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22198:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22314:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24387:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31926:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19793:97;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20124:173;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21897:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25525:131;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20009:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21990:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21487:33;;;;:::o;22252:53::-;;;;:::o;23717:71::-;23756:13;23780:5;;;;;;;;;;;;;;;;;23773:12;;23717:71;:::o;24528:216::-;24603:4;24655:6;24620:11;:23;24632:10;24620:23;;;;;;;;;;;;;;;:32;24644:7;24620:32;;;;;;;;;;;;;;;:41;;;;24698:7;24677:37;;24686:10;24677:37;;;24707:6;24677:37;;;;;;:::i;:::-;;;;;;;;24732:4;24725:11;;24528:216;;;;:::o;26751:793::-;19632:24;19645:10;19632:12;:24::i;:::-;19624:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;26933:2:::1;26916:13;:19;;26908:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;27024:2;27001:19;:25;;26993:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;27117:1;27099:14;:19;;27091:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;27205:1;27185:16;:21;;27177:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;27288:13;27269:16;:32;;;;27329:16;27312:14;:33;;;;27375:19;27356:16;:38;;;;27419:14;27405:11;:28;;;;27461:75;27521:14;;27461:55;27504:11;;27461:38;27482:16;;27461;;:20;;:38;;;;:::i;:::-;:42;;:55;;;;:::i;:::-;:59;;:75;;;;:::i;:::-;27446:12;:90;;;;26751:793:::0;;;;:::o;31753:117::-;19542:19;19550:10;19542:7;:19::i;:::-;19534:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;31834:9:::1;31820:11;;:23;;;;;;;;;;;;;;;;;;31854:8;:6;:8::i;:::-;31753:117:::0;:::o;21325:35::-;;;;:::o;21407:::-;;;;:::o;23954:88::-;24009:7;24027:12;;24020:19;;23954:88;:::o;21601:28::-;;;;:::o;28639:370::-;28739:4;28796:17;28761:11;:19;28773:6;28761:19;;;;;;;;;;;;;;;:31;28781:10;28761:31;;;;;;;;;;;;;;;;:52;28758:186;;28863:69;28899:6;28863:69;;;;;;;;;;;;;;;;;:11;:19;28875:6;28863:19;;;;;;;;;;;;;;;:31;28883:10;28863:31;;;;;;;;;;;;;;;;:35;;:69;;;;;:::i;:::-;28829:11;:19;28841:6;28829:19;;;;;;;;;;;;;;;:31;28849:10;28829:31;;;;;;;;;;;;;;;:103;;;;28758:186;28961:40;28975:6;28983:9;28994:6;28961:13;:40::i;:::-;28954:47;;28639:370;;;;;:::o;24126:142::-;24179:7;24206:54;24244:15;24254:4;;;;;;;;;;;24244:9;:15::i;:::-;24206:33;24223:15;24233:4;;;;;;;;;;;24223:9;:15::i;:::-;24206:12;;:16;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;24199:61;;24126:142;:::o;21451:29::-;;;;:::o;19898:103::-;19953:4;19988:5;;;;;;;;;;;19977:16;;:7;:16;;;19970:23;;19898:103;;;:::o;23876:72::-;23920:5;20582:1;23929:16;;23876:72;:::o;27552:276::-;19632:24;19645:10;19632:12;:24::i;:::-;19624:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;27716:20:::1;27692:21;;:44;;;;;;;;;;;;;;;;;;27765:18;27747:15;;:36;;;;;;;;;;;;;;;;;;27807:13;27794:10;;:26;;;;;;;;;;;;;;;;;;27552:276:::0;;;:::o;27836:::-;19632:24;19645:10;19632:12;:24::i;:::-;19624:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;27993:14:::1;27968:21;;:39;;;;;;;;;;;;;;;;;;28034:16;28018:13;:32;;;;28089:15;28061:25;;:43;;;;;;;;;;;;;;;;;;27836:276:::0;;;:::o;21241:37::-;;;;;;;;;;;;;;;;;;;;;;:::o;21077:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;25398:119::-;19632:24;19645:10;19632:12;:24::i;:::-;19624:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;25503:6:::1;25481:11;:19;25493:6;25481:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;25398:119:::0;;:::o;21183:49::-;;;;;;;;;;;;;;;;;;;;;;:::o;20920:33::-;;;;;;;;;;;;;:::o;28328:139::-;19632:24;19645:10;19632:12;:24::i;:::-;19624:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;28421:6:::1;28415:3;:12;28407:21;;;::::0;::::1;;28456:3;28439:14;:20;;;;28328:139:::0;:::o;22151:40::-;;;;;;;;;;;;;:::o;21636:32::-;;;;:::o;24752:122::-;24807:4;24831:35;24839:7;24848:17;24831:7;:35::i;:::-;24824:42;;24752:122;;;:::o;21818:70::-;;;;;;;;;;;;;:::o;26040:703::-;19632:24;19645:10;19632:12;:24::i;:::-;19624:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;26200:2:::1;26187:9;:15;;26179:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;26286:2;26267:15;:21;;26259:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;26374:1;26360:10;:15;;26352:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;26457:1;26441:12;:17;;26433:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;26535:9;26520:12;:24;;;;26568:12;26555:10;:25;;;;26606:15;26591:12;:30;;;;26642:10;26632:7;:20;;;;26676:59;26724:10;;26676:43;26711:7;;26676:30;26693:12;;26676;;:16;;:30;;;;:::i;:::-;:34;;:43;;;;:::i;:::-;:47;;:59;;;;:::i;:::-;26665:8;:70;;;;26040:703:::0;;;;:::o;21369:31::-;;;;:::o;24276:105::-;24342:7;24360:9;:18;24370:7;24360:18;;;;;;;;;;;;;;;;24353:25;;24276:105;;;:::o;21736:75::-;;;;;;;;;;;;;:::o;25664:368::-;19632:24;19645:10;19632:12;:24::i;:::-;19624:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;25782:4:::1;25764:23;;:6;:23;;;;:41;;;;;25801:4;;;;;;;;;;;25791:14;;:6;:14;;;;25764:41;25756:50;;;::::0;::::1;;25844:6;25817:16;:24;25834:6;25817:24;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;25866:6;25863:162;;;25888:19;;;;;;;;;;;:28;;;25917:6;25925:1;25888:39;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;25863:162;;;25958:19;;;;;;;;;;;:28;;;25987:6;25995:9;:17;26005:6;25995:17;;;;;;;;;;;;;;;;25958:55;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;25863:162;25664:368:::0;;:::o;20786:60::-;;;;:::o;25173:106::-;19632:24;19645:10;19632:12;:24::i;:::-;19624:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;25263:8:::1;25249:10;:22;;;;25173:106:::0;:::o;20853:58::-;;;;:::o;21562:30::-;;;;:::o;24048:70::-;24092:7;24110:5;;;;;;;;;;;24103:12;;24048:70;:::o;21128:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;23794:76::-;23836:13;23860:7;;;;;;;;;;;;;;;;;23853:14;;23794:76;:::o;21287:31::-;;;;:::o;21930:19::-;;;;;;;;;;;;;:::o;28475:156::-;28555:4;28579:44;28593:10;28605:9;28616:6;28579:13;:44::i;:::-;28572:51;;28475:156;;;;:::o;28120:200::-;19632:24;19645:10;19632:12;:24::i;:::-;19624:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;28236:19:::1;;;;;;;;;;;:43;;;28280:11;28293:18;28236:76;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;28120:200:::0;;:::o;33949:248::-;19542:19;19550:10;19542:7;:19::i;:::-;19534:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;34043:23:::1;34069:21;34043:47;;34127:6;34109:15;:24;34101:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;34164:8;:17;;:25;34182:6;34164:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;34032:165;33949:248:::0;;:::o;19691:94::-;19542:19;19550:10;19542:7;:19::i;:::-;19534:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;19773:4:::1;19751:14:::0;:19:::1;19766:3;19751:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;19691:94:::0;:::o;22030:46::-;;;;;;;;;;;;;:::o;21958:25::-;;;;:::o;21677:52::-;;;;;;;;;;;;;:::o;21529:26::-;;;;:::o;25287:103::-;19632:24;19645:10;19632:12;:24::i;:::-;19624:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;25374:8:::1;25357:14;;:25;;;;;;;;;;;;;;;;;;25287:103:::0;:::o;25062:::-;19632:24;19645:10;19632:12;:24::i;:::-;19624:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;25149:8:::1;25134:12;:23;;;;25062:103:::0;:::o;22198:45::-;;;;;;;;;;;;;:::o;22314:29::-;;;;:::o;24387:133::-;24471:7;24489:11;:19;24501:6;24489:19;;;;;;;;;;;;;;;:28;24509:7;24489:28;;;;;;;;;;;;;;;;24482:35;;24387:133;;;;:::o;31926:120::-;19542:19;19550:10;19542:7;:19::i;:::-;19534:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;32033:5:::1;32013;:17;32019:10;32013:17;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;31926:120:::0;;:::o;19793:97::-;19542:19;19550:10;19542:7;:19::i;:::-;19534:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;19877:5:::1;19855:14;:19;19870:3;19855:19;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;19793:97:::0;:::o;20124:173::-;19542:19;19550:10;19542:7;:19::i;:::-;19534:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;20208:3:::1;20200:5;::::0;:11:::1;;;;;;;;;;;;;;;;;;20244:4;20222:14:::0;:19:::1;20237:3;20222:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;20264:25;20285:3;20264:25;;;;;;:::i;:::-;;;;;;;;20124:173:::0;:::o;21897:26::-;;;;;;;;;;;;;:::o;25525:131::-;19632:24;19645:10;19632:12;:24::i;:::-;19624:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;25642:6:::1;25616:15;:23;25632:6;25616:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;25525:131:::0;;:::o;20009:107::-;20065:4;20089:14;:19;20104:3;20089:19;;;;;;;;;;;;;;;;;;;;;;;;;20082:26;;20009:107;;;:::o;21990:31::-;;;;;;;;;;;;;:::o;12435:98::-;12493:7;12524:1;12520;:5;;;;:::i;:::-;12513:12;;12435:98;;;;:::o;24980:74::-;25031:15;25018:10;:28;;;;24980:74::o;12965:240::-;13085:7;13143:1;13138;:6;;13146:12;13130:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;13185:1;13181;:5;13174:12;;12965:240;;;;;:::o;29017:1790::-;29109:4;29131:16;;;;;;;;;;;29128:73;;;29157:41;29172:6;29180:9;29191:6;29157:14;:41::i;:::-;29150:48;;;;29128:73;29217:14;:22;29232:6;29217:22;;;;;;;;;;;;;;;;;;;;;;;;;29216:23;:53;;;;;29244:14;:25;29259:9;29244:25;;;;;;;;;;;;;;;;;;;;;;;;;29243:26;29216:53;29213:128;;;29293:11;;;;;;;;;;;29285:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;29213:128;29371:12;;29361:6;:22;;:52;;;;29387:15;:26;29403:9;29387:26;;;;;;;;;;;;;;;;;;;;;;;;;29361:52;29353:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;29465:4;;;;;;;;;;;29451:18;;:10;:18;;;;:39;;;;;29474:16;;;;;;;;;;;29473:17;29451:39;:64;;;;;29494:21;;;;;;;;;;;29451:64;:109;;;;;29547:13;;29519:9;:24;29537:4;29519:24;;;;;;;;;;;;;;;;:41;;29451:109;29448:128;;;29563:10;:8;:10::i;:::-;29448:128;29592:10;:8;:10::i;:::-;29591:11;:32;;;;;29619:4;;;;;;;;;;;29606:17;;:9;:17;;;29591:32;29588:96;;;29668:1;29648:9;:17;29658:6;29648:17;;;;;;;;;;;;;;;;:21;29640:30;;;;;;29588:96;29732:10;;29719;;:23;;;;:::i;:::-;29701:15;:41;29700:64;;;;;29760:4;;;;;;;;;;;29747:17;;:9;:17;;;;29700:64;29696:172;;;29800:4;29781:5;:16;29787:9;29781:16;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;29851:4;29824:32;;;29840:9;29824:32;;;;;;:::i;:::-;;;;;;;;29696:172;29927:53;29949:6;29927:53;;;;;;;;;;;;;;;;;:9;:17;29937:6;29927:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;29907:9;:17;29917:6;29907:17;;;;;;;;;;;;;;;:73;;;;29997:15;:26;30013:9;29997:26;;;;;;;;;;;;;;;;;;;;;;;;;29996:27;:45;;;;;30027:14;;;;;;;;;;;29996:45;29993:141;;;30111:10;;30075:32;30100:6;30075:9;:20;30085:9;30075:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;:46;;30067:55;;;;;;29993:141;30146:19;30169:11;:19;30181:6;30169:19;;;;;;;;;;;;;;;;;;;;;;;;;30168:20;:47;;;;;30193:11;:22;30205:9;30193:22;;;;;;;;;;;;;;;;;;;;;;;;;30192:23;30168:47;:93;;30255:6;30168:93;;;30218:34;30226:6;30234:9;30245:6;30218:7;:34::i;:::-;30168:93;30146:115;;30295:37;30320:11;30295:9;:20;30305:9;30295:20;;;;;;;;;;;;;;;;:24;;:37;;;;:::i;:::-;30272:9;:20;30282:9;30272:20;;;;;;;;;;;;;;;:60;;;;30378:16;:24;30395:6;30378:24;;;;;;;;;;;;;;;;;;;;;;;;;30374:127;;30423:19;;;;;;;;;;;:28;;;30452:6;30460:9;:17;30470:6;30460:17;;;;;;;;;;;;;;;;30423:55;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30419:71;;;;;;30374:127;30517:16;:27;30534:9;30517:27;;;;;;;;;;;;;;;;;;;;;;;;;30513:136;;30565:19;;;;;;;;;;;:28;;;30594:9;30605;:20;30615:9;30605:20;;;;;;;;;;;;;;;;30565:61;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30561:77;;;;;;30513:136;30665:19;;;;;;;;;;;:27;;;30693:14;;30665:43;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30661:59;;;;;;30754:9;30737:40;;30746:6;30737:40;;;30765:11;30737:40;;;;;;:::i;:::-;;;;;;;;30795:4;30788:11;;;29017:1790;;;;;;:::o;12541:98::-;12599:7;12630:1;12626;:5;;;;:::i;:::-;12619:12;;12541:98;;;;:::o;30815:330::-;30908:4;30945:53;30967:6;30945:53;;;;;;;;;;;;;;;;;:9;:17;30955:6;30945:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;30925:9;:17;30935:6;30925:17;;;;;;;;;;;;;;;:73;;;;31032:32;31057:6;31032:9;:20;31042:9;31032:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;31009:9;:20;31019:9;31009:20;;;;;;;;;;;;;;;:55;;;;31097:9;31080:35;;31089:6;31080:35;;;31108:6;31080:35;;;;;;:::i;:::-;;;;;;;;31133:4;31126:11;;30815:330;;;;;:::o;32054:1887::-;22473:4;22454:16;;:23;;;;;;;;;;;;;;;;;;32108::::1;32134:9;:24;32152:4;32134:24;;;;;;;;;;;;;;;;32108:50;;32169:23;32195:54;32247:1;32195:47;32233:8;;32195:33;32215:12;;32195:15;:19;;:33;;;;:::i;:::-;:37;;:47;;;;:::i;:::-;:51;;:54;;;;:::i;:::-;32169:80;;32260:20;32283:36;32303:15;32283;:19;;:36;;;;:::i;:::-;32260:59;;32332:21;32370:1;32356:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32332:40;;32401:4;32383;32388:1;32383:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;32427:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;32417:4;32422:1;32417:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;32453:6;;;;;;;;;;;:57;;;32525:12;32552:1;32568:4;32595;32615:15;32453:188;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;32654:17;32674:21;32654:41;;32708:19;32730:33;32743:19;32760:1;32743:12;;:16;;:19;;;;:::i;:::-;32730:8;;:12;;:33;;;;:::i;:::-;32708:55;;32776:26;32805:51;32854:1;32805:44;32837:11;32805:27;32819:12;;32805:9;:13;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;:48;;:51;;;;:::i;:::-;32776:80;;32867:27;32897:42;32927:11;32897:25;32911:10;;32897:9;:13;;:25;;;;:::i;:::-;:29;;:42;;;;:::i;:::-;32867:72;;32950:26;32979:58;33017:19;32979:33;32993:18;32979:9;:13;;:33;;;;:::i;:::-;:37;;:58;;;;:::i;:::-;32950:87;;33054:19;;;;;;;;;;;:27;;;33089:19;33054:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;33050:73;;;;;;33135:17;33155:39;33182:11;33155:22;33169:7;;33155:9;:13;;:22;;;;:::i;:::-;:26;;:39;;;;:::i;:::-;33135:59;;33205:22;33230:33;33253:9;33230:18;:22;;:33;;;;:::i;:::-;33205:58;;33279:15;33307;;;;;;;;;;;33299:29;;33336:14;33357:5;33299:68;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33278:89;;;33379:16;33408:10;;;;;;;;;;;33400:24;;33432:9;33448:5;33400:58;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33378:80;;;33524:5;33511:18;;33554:5;33540:19;;33593:1;33575:15;:19;33572:362;;;33610:6;;;;;;;;;;;:22;;;33640:18;33686:4;33710:15;33744:1;33764::::0;33784:21:::1;;;;;;;;;;;33824:15;33610:244;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;33874:48;33886:18;33906:15;33874:48;;;;;;;:::i;:::-;;;;;;;;33572:362;32095:1846;;;;;;;;;;;;;22519:5:::0;22500:16;;:24;;;;;;;;;;;;;;;;;;32054:1887::o;24882:90::-;24925:4;24963:1;24949:10;;:15;;24942:22;;24882:90;:::o;31153:592::-;31239:7;31261:21;31293:9;31285:17;;:4;;;;;;;;;;;:17;;;:43;;31320:8;;31285:43;;;31305:12;;31285:43;31261:67;;31362:4;31342:24;;:5;:16;31348:9;31342:16;;;;;;;;;;;;;;;;;;;;;;;;;:24;;;31339:156;;;31397:2;31381:18;;31339:156;;;31446:4;31429:21;;:5;:13;31435:6;31429:13;;;;;;;;;;;;;;;;;;;;;;;;;:21;;;31426:69;;;31481:2;31465:18;;31426:69;31339:156;31505:17;31525:34;31555:3;31525:25;31536:13;31525:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;31505:54;;31599:39;31628:9;31599;:24;31617:4;31599:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;31572:9;:24;31590:4;31572:24;;;;;;;;;;;;;;;:66;;;;31679:4;31654:42;;31663:6;31654:42;;;31686:9;31654:42;;;;;;:::i;:::-;;;;;;;;31716:21;31727:9;31716:6;:10;;:21;;;;:::i;:::-;31709:28;;;;31153:592;;;;;:::o;12647:98::-;12705:7;12736:1;12732;:5;;;;:::i;:::-;12725:12;;12647:98;;;;:::o;12753:::-;12811:7;12842:1;12838;:5;;;;:::i;:::-;12831:12;;12753:98;;;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;7:139;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;152:143;;;;:::o;301:155::-;355:5;393:6;380:20;371:29;;409:41;444:5;409:41;:::i;:::-;301:155;;;;:::o;462:133::-;505:5;543:6;530:20;521:29;;559:30;583:5;559:30;:::i;:::-;462:133;;;;:::o;601:139::-;647:5;685:6;672:20;663:29;;701:33;728:5;701:33;:::i;:::-;601:139;;;;:::o;746:143::-;803:5;834:6;828:13;819:22;;850:33;877:5;850:33;:::i;:::-;746:143;;;;:::o;895:329::-;954:6;1003:2;991:9;982:7;978:23;974:32;971:119;;;1009:79;;:::i;:::-;971:119;1129:1;1154:53;1199:7;1190:6;1179:9;1175:22;1154:53;:::i;:::-;1144:63;;1100:117;895:329;;;;:::o;1230:351::-;1300:6;1349:2;1337:9;1328:7;1324:23;1320:32;1317:119;;;1355:79;;:::i;:::-;1317:119;1475:1;1500:64;1556:7;1547:6;1536:9;1532:22;1500:64;:::i;:::-;1490:74;;1446:128;1230:351;;;;:::o;1587:345::-;1654:6;1703:2;1691:9;1682:7;1678:23;1674:32;1671:119;;;1709:79;;:::i;:::-;1671:119;1829:1;1854:61;1907:7;1898:6;1887:9;1883:22;1854:61;:::i;:::-;1844:71;;1800:125;1587:345;;;;:::o;1938:474::-;2006:6;2014;2063:2;2051:9;2042:7;2038:23;2034:32;2031:119;;;2069:79;;:::i;:::-;2031:119;2189:1;2214:53;2259:7;2250:6;2239:9;2235:22;2214:53;:::i;:::-;2204:63;;2160:117;2316:2;2342:53;2387:7;2378:6;2367:9;2363:22;2342:53;:::i;:::-;2332:63;;2287:118;1938:474;;;;;:::o;2418:619::-;2495:6;2503;2511;2560:2;2548:9;2539:7;2535:23;2531:32;2528:119;;;2566:79;;:::i;:::-;2528:119;2686:1;2711:53;2756:7;2747:6;2736:9;2732:22;2711:53;:::i;:::-;2701:63;;2657:117;2813:2;2839:53;2884:7;2875:6;2864:9;2860:22;2839:53;:::i;:::-;2829:63;;2784:118;2941:2;2967:53;3012:7;3003:6;2992:9;2988:22;2967:53;:::i;:::-;2957:63;;2912:118;2418:619;;;;;:::o;3043:::-;3120:6;3128;3136;3185:2;3173:9;3164:7;3160:23;3156:32;3153:119;;;3191:79;;:::i;:::-;3153:119;3311:1;3336:53;3381:7;3372:6;3361:9;3357:22;3336:53;:::i;:::-;3326:63;;3282:117;3438:2;3464:53;3509:7;3500:6;3489:9;3485:22;3464:53;:::i;:::-;3454:63;;3409:118;3566:2;3592:53;3637:7;3628:6;3617:9;3613:22;3592:53;:::i;:::-;3582:63;;3537:118;3043:619;;;;;:::o;3668:468::-;3733:6;3741;3790:2;3778:9;3769:7;3765:23;3761:32;3758:119;;;3796:79;;:::i;:::-;3758:119;3916:1;3941:53;3986:7;3977:6;3966:9;3962:22;3941:53;:::i;:::-;3931:63;;3887:117;4043:2;4069:50;4111:7;4102:6;4091:9;4087:22;4069:50;:::i;:::-;4059:60;;4014:115;3668:468;;;;;:::o;4142:474::-;4210:6;4218;4267:2;4255:9;4246:7;4242:23;4238:32;4235:119;;;4273:79;;:::i;:::-;4235:119;4393:1;4418:53;4463:7;4454:6;4443:9;4439:22;4418:53;:::i;:::-;4408:63;;4364:117;4520:2;4546:53;4591:7;4582:6;4571:9;4567:22;4546:53;:::i;:::-;4536:63;;4491:118;4142:474;;;;;:::o;4622:323::-;4678:6;4727:2;4715:9;4706:7;4702:23;4698:32;4695:119;;;4733:79;;:::i;:::-;4695:119;4853:1;4878:50;4920:7;4911:6;4900:9;4896:22;4878:50;:::i;:::-;4868:60;;4824:114;4622:323;;;;:::o;4951:607::-;5022:6;5030;5038;5087:2;5075:9;5066:7;5062:23;5058:32;5055:119;;;5093:79;;:::i;:::-;5055:119;5213:1;5238:50;5280:7;5271:6;5260:9;5256:22;5238:50;:::i;:::-;5228:60;;5184:114;5337:2;5363:53;5408:7;5399:6;5388:9;5384:22;5363:53;:::i;:::-;5353:63;;5308:118;5465:2;5491:50;5533:7;5524:6;5513:9;5509:22;5491:50;:::i;:::-;5481:60;;5436:115;4951:607;;;;;:::o;5564:329::-;5623:6;5672:2;5660:9;5651:7;5647:23;5643:32;5640:119;;;5678:79;;:::i;:::-;5640:119;5798:1;5823:53;5868:7;5859:6;5848:9;5844:22;5823:53;:::i;:::-;5813:63;;5769:117;5564:329;;;;:::o;5899:490::-;5975:6;5983;6032:2;6020:9;6011:7;6007:23;6003:32;6000:119;;;6038:79;;:::i;:::-;6000:119;6158:1;6183:53;6228:7;6219:6;6208:9;6204:22;6183:53;:::i;:::-;6173:63;;6129:117;6285:2;6311:61;6364:7;6355:6;6344:9;6340:22;6311:61;:::i;:::-;6301:71;;6256:126;5899:490;;;;;:::o;6395:474::-;6463:6;6471;6520:2;6508:9;6499:7;6495:23;6491:32;6488:119;;;6526:79;;:::i;:::-;6488:119;6646:1;6671:53;6716:7;6707:6;6696:9;6692:22;6671:53;:::i;:::-;6661:63;;6617:117;6773:2;6799:53;6844:7;6835:6;6824:9;6820:22;6799:53;:::i;:::-;6789:63;;6744:118;6395:474;;;;;:::o;6875:663::-;6963:6;6971;6979;7028:2;7016:9;7007:7;7003:23;6999:32;6996:119;;;7034:79;;:::i;:::-;6996:119;7154:1;7179:64;7235:7;7226:6;7215:9;7211:22;7179:64;:::i;:::-;7169:74;;7125:128;7292:2;7318:64;7374:7;7365:6;7354:9;7350:22;7318:64;:::i;:::-;7308:74;;7263:129;7431:2;7457:64;7513:7;7504:6;7493:9;7489:22;7457:64;:::i;:::-;7447:74;;7402:129;6875:663;;;;;:::o;7544:765::-;7630:6;7638;7646;7654;7703:3;7691:9;7682:7;7678:23;7674:33;7671:120;;;7710:79;;:::i;:::-;7671:120;7830:1;7855:53;7900:7;7891:6;7880:9;7876:22;7855:53;:::i;:::-;7845:63;;7801:117;7957:2;7983:53;8028:7;8019:6;8008:9;8004:22;7983:53;:::i;:::-;7973:63;;7928:118;8085:2;8111:53;8156:7;8147:6;8136:9;8132:22;8111:53;:::i;:::-;8101:63;;8056:118;8213:2;8239:53;8284:7;8275:6;8264:9;8260:22;8239:53;:::i;:::-;8229:63;;8184:118;7544:765;;;;;;;:::o;8315:179::-;8384:10;8405:46;8447:3;8439:6;8405:46;:::i;:::-;8483:4;8478:3;8474:14;8460:28;;8315:179;;;;:::o;8500:147::-;8595:45;8634:5;8595:45;:::i;:::-;8590:3;8583:58;8500:147;;:::o;8653:108::-;8730:24;8748:5;8730:24;:::i;:::-;8725:3;8718:37;8653:108;;:::o;8767:118::-;8854:24;8872:5;8854:24;:::i;:::-;8849:3;8842:37;8767:118;;:::o;8921:732::-;9040:3;9069:54;9117:5;9069:54;:::i;:::-;9139:86;9218:6;9213:3;9139:86;:::i;:::-;9132:93;;9249:56;9299:5;9249:56;:::i;:::-;9328:7;9359:1;9344:284;9369:6;9366:1;9363:13;9344:284;;;9445:6;9439:13;9472:63;9531:3;9516:13;9472:63;:::i;:::-;9465:70;;9558:60;9611:6;9558:60;:::i;:::-;9548:70;;9404:224;9391:1;9388;9384:9;9379:14;;9344:284;;;9348:14;9644:3;9637:10;;9045:608;;;8921:732;;;;:::o;9659:109::-;9740:21;9755:5;9740:21;:::i;:::-;9735:3;9728:34;9659:109;;:::o;9774:187::-;9889:65;9948:5;9889:65;:::i;:::-;9884:3;9877:78;9774:187;;:::o;9967:171::-;10074:57;10125:5;10074:57;:::i;:::-;10069:3;10062:70;9967:171;;:::o;10144:147::-;10239:45;10278:5;10239:45;:::i;:::-;10234:3;10227:58;10144:147;;:::o;10297:364::-;10385:3;10413:39;10446:5;10413:39;:::i;:::-;10468:71;10532:6;10527:3;10468:71;:::i;:::-;10461:78;;10548:52;10593:6;10588:3;10581:4;10574:5;10570:16;10548:52;:::i;:::-;10625:29;10647:6;10625:29;:::i;:::-;10620:3;10616:39;10609:46;;10389:272;10297:364;;;;:::o;10667:366::-;10809:3;10830:67;10894:2;10889:3;10830:67;:::i;:::-;10823:74;;10906:93;10995:3;10906:93;:::i;:::-;11024:2;11019:3;11015:12;11008:19;;10667:366;;;:::o;11039:::-;11181:3;11202:67;11266:2;11261:3;11202:67;:::i;:::-;11195:74;;11278:93;11367:3;11278:93;:::i;:::-;11396:2;11391:3;11387:12;11380:19;;11039:366;;;:::o;11411:::-;11553:3;11574:67;11638:2;11633:3;11574:67;:::i;:::-;11567:74;;11650:93;11739:3;11650:93;:::i;:::-;11768:2;11763:3;11759:12;11752:19;;11411:366;;;:::o;11783:::-;11925:3;11946:67;12010:2;12005:3;11946:67;:::i;:::-;11939:74;;12022:93;12111:3;12022:93;:::i;:::-;12140:2;12135:3;12131:12;12124:19;;11783:366;;;:::o;12155:::-;12297:3;12318:67;12382:2;12377:3;12318:67;:::i;:::-;12311:74;;12394:93;12483:3;12394:93;:::i;:::-;12512:2;12507:3;12503:12;12496:19;;12155:366;;;:::o;12527:::-;12669:3;12690:67;12754:2;12749:3;12690:67;:::i;:::-;12683:74;;12766:93;12855:3;12766:93;:::i;:::-;12884:2;12879:3;12875:12;12868:19;;12527:366;;;:::o;12899:::-;13041:3;13062:67;13126:2;13121:3;13062:67;:::i;:::-;13055:74;;13138:93;13227:3;13138:93;:::i;:::-;13256:2;13251:3;13247:12;13240:19;;12899:366;;;:::o;13271:::-;13413:3;13434:67;13498:2;13493:3;13434:67;:::i;:::-;13427:74;;13510:93;13599:3;13510:93;:::i;:::-;13628:2;13623:3;13619:12;13612:19;;13271:366;;;:::o;13643:::-;13785:3;13806:67;13870:2;13865:3;13806:67;:::i;:::-;13799:74;;13882:93;13971:3;13882:93;:::i;:::-;14000:2;13995:3;13991:12;13984:19;;13643:366;;;:::o;14015:365::-;14157:3;14178:66;14242:1;14237:3;14178:66;:::i;:::-;14171:73;;14253:93;14342:3;14253:93;:::i;:::-;14371:2;14366:3;14362:12;14355:19;;14015:365;;;:::o;14386:398::-;14545:3;14566:83;14647:1;14642:3;14566:83;:::i;:::-;14559:90;;14658:93;14747:3;14658:93;:::i;:::-;14776:1;14771:3;14767:11;14760:18;;14386:398;;;:::o;14790:366::-;14932:3;14953:67;15017:2;15012:3;14953:67;:::i;:::-;14946:74;;15029:93;15118:3;15029:93;:::i;:::-;15147:2;15142:3;15138:12;15131:19;;14790:366;;;:::o;15162:::-;15304:3;15325:67;15389:2;15384:3;15325:67;:::i;:::-;15318:74;;15401:93;15490:3;15401:93;:::i;:::-;15519:2;15514:3;15510:12;15503:19;;15162:366;;;:::o;15534:::-;15676:3;15697:67;15761:2;15756:3;15697:67;:::i;:::-;15690:74;;15773:93;15862:3;15773:93;:::i;:::-;15891:2;15886:3;15882:12;15875:19;;15534:366;;;:::o;15906:118::-;15993:24;16011:5;15993:24;:::i;:::-;15988:3;15981:37;15906:118;;:::o;16030:112::-;16113:22;16129:5;16113:22;:::i;:::-;16108:3;16101:35;16030:112;;:::o;16148:379::-;16332:3;16354:147;16497:3;16354:147;:::i;:::-;16347:154;;16518:3;16511:10;;16148:379;;;:::o;16533:222::-;16626:4;16664:2;16653:9;16649:18;16641:26;;16677:71;16745:1;16734:9;16730:17;16721:6;16677:71;:::i;:::-;16533:222;;;;:::o;16761:238::-;16862:4;16900:2;16889:9;16885:18;16877:26;;16913:79;16989:1;16978:9;16974:17;16965:6;16913:79;:::i;:::-;16761:238;;;;:::o;17005:348::-;17134:4;17172:2;17161:9;17157:18;17149:26;;17185:71;17253:1;17242:9;17238:17;17229:6;17185:71;:::i;:::-;17266:80;17342:2;17331:9;17327:18;17318:6;17266:80;:::i;:::-;17005:348;;;;;:::o;17359:332::-;17480:4;17518:2;17507:9;17503:18;17495:26;;17531:71;17599:1;17588:9;17584:17;17575:6;17531:71;:::i;:::-;17612:72;17680:2;17669:9;17665:18;17656:6;17612:72;:::i;:::-;17359:332;;;;;:::o;17697:807::-;17946:4;17984:3;17973:9;17969:19;17961:27;;17998:71;18066:1;18055:9;18051:17;18042:6;17998:71;:::i;:::-;18079:72;18147:2;18136:9;18132:18;18123:6;18079:72;:::i;:::-;18161:80;18237:2;18226:9;18222:18;18213:6;18161:80;:::i;:::-;18251;18327:2;18316:9;18312:18;18303:6;18251:80;:::i;:::-;18341:73;18409:3;18398:9;18394:19;18385:6;18341:73;:::i;:::-;18424;18492:3;18481:9;18477:19;18468:6;18424:73;:::i;:::-;17697:807;;;;;;;;;:::o;18510:210::-;18597:4;18635:2;18624:9;18620:18;18612:26;;18648:65;18710:1;18699:9;18695:17;18686:6;18648:65;:::i;:::-;18510:210;;;;:::o;18726:278::-;18847:4;18885:2;18874:9;18870:18;18862:26;;18898:99;18994:1;18983:9;18979:17;18970:6;18898:99;:::i;:::-;18726:278;;;;:::o;19010:262::-;19123:4;19161:2;19150:9;19146:18;19138:26;;19174:91;19262:1;19251:9;19247:17;19238:6;19174:91;:::i;:::-;19010:262;;;;:::o;19278:313::-;19391:4;19429:2;19418:9;19414:18;19406:26;;19478:9;19472:4;19468:20;19464:1;19453:9;19449:17;19442:47;19506:78;19579:4;19570:6;19506:78;:::i;:::-;19498:86;;19278:313;;;;:::o;19597:419::-;19763:4;19801:2;19790:9;19786:18;19778:26;;19850:9;19844:4;19840:20;19836:1;19825:9;19821:17;19814:47;19878:131;20004:4;19878:131;:::i;:::-;19870:139;;19597:419;;;:::o;20022:::-;20188:4;20226:2;20215:9;20211:18;20203:26;;20275:9;20269:4;20265:20;20261:1;20250:9;20246:17;20239:47;20303:131;20429:4;20303:131;:::i;:::-;20295:139;;20022:419;;;:::o;20447:::-;20613:4;20651:2;20640:9;20636:18;20628:26;;20700:9;20694:4;20690:20;20686:1;20675:9;20671:17;20664:47;20728:131;20854:4;20728:131;:::i;:::-;20720:139;;20447:419;;;:::o;20872:::-;21038:4;21076:2;21065:9;21061:18;21053:26;;21125:9;21119:4;21115:20;21111:1;21100:9;21096:17;21089:47;21153:131;21279:4;21153:131;:::i;:::-;21145:139;;20872:419;;;:::o;21297:::-;21463:4;21501:2;21490:9;21486:18;21478:26;;21550:9;21544:4;21540:20;21536:1;21525:9;21521:17;21514:47;21578:131;21704:4;21578:131;:::i;:::-;21570:139;;21297:419;;;:::o;21722:::-;21888:4;21926:2;21915:9;21911:18;21903:26;;21975:9;21969:4;21965:20;21961:1;21950:9;21946:17;21939:47;22003:131;22129:4;22003:131;:::i;:::-;21995:139;;21722:419;;;:::o;22147:::-;22313:4;22351:2;22340:9;22336:18;22328:26;;22400:9;22394:4;22390:20;22386:1;22375:9;22371:17;22364:47;22428:131;22554:4;22428:131;:::i;:::-;22420:139;;22147:419;;;:::o;22572:::-;22738:4;22776:2;22765:9;22761:18;22753:26;;22825:9;22819:4;22815:20;22811:1;22800:9;22796:17;22789:47;22853:131;22979:4;22853:131;:::i;:::-;22845:139;;22572:419;;;:::o;22997:::-;23163:4;23201:2;23190:9;23186:18;23178:26;;23250:9;23244:4;23240:20;23236:1;23225:9;23221:17;23214:47;23278:131;23404:4;23278:131;:::i;:::-;23270:139;;22997:419;;;:::o;23422:::-;23588:4;23626:2;23615:9;23611:18;23603:26;;23675:9;23669:4;23665:20;23661:1;23650:9;23646:17;23639:47;23703:131;23829:4;23703:131;:::i;:::-;23695:139;;23422:419;;;:::o;23847:::-;24013:4;24051:2;24040:9;24036:18;24028:26;;24100:9;24094:4;24090:20;24086:1;24075:9;24071:17;24064:47;24128:131;24254:4;24128:131;:::i;:::-;24120:139;;23847:419;;;:::o;24272:::-;24438:4;24476:2;24465:9;24461:18;24453:26;;24525:9;24519:4;24515:20;24511:1;24500:9;24496:17;24489:47;24553:131;24679:4;24553:131;:::i;:::-;24545:139;;24272:419;;;:::o;24697:::-;24863:4;24901:2;24890:9;24886:18;24878:26;;24950:9;24944:4;24940:20;24936:1;24925:9;24921:17;24914:47;24978:131;25104:4;24978:131;:::i;:::-;24970:139;;24697:419;;;:::o;25122:222::-;25215:4;25253:2;25242:9;25238:18;25230:26;;25266:71;25334:1;25323:9;25319:17;25310:6;25266:71;:::i;:::-;25122:222;;;;:::o;25350:831::-;25613:4;25651:3;25640:9;25636:19;25628:27;;25665:71;25733:1;25722:9;25718:17;25709:6;25665:71;:::i;:::-;25746:80;25822:2;25811:9;25807:18;25798:6;25746:80;:::i;:::-;25873:9;25867:4;25863:20;25858:2;25847:9;25843:18;25836:48;25901:108;26004:4;25995:6;25901:108;:::i;:::-;25893:116;;26019:72;26087:2;26076:9;26072:18;26063:6;26019:72;:::i;:::-;26101:73;26169:3;26158:9;26154:19;26145:6;26101:73;:::i;:::-;25350:831;;;;;;;;:::o;26187:332::-;26308:4;26346:2;26335:9;26331:18;26323:26;;26359:71;26427:1;26416:9;26412:17;26403:6;26359:71;:::i;:::-;26440:72;26508:2;26497:9;26493:18;26484:6;26440:72;:::i;:::-;26187:332;;;;;:::o;26525:214::-;26614:4;26652:2;26641:9;26637:18;26629:26;;26665:67;26729:1;26718:9;26714:17;26705:6;26665:67;:::i;:::-;26525:214;;;;:::o;26826:132::-;26893:4;26916:3;26908:11;;26946:4;26941:3;26937:14;26929:22;;26826:132;;;:::o;26964:114::-;27031:6;27065:5;27059:12;27049:22;;26964:114;;;:::o;27084:99::-;27136:6;27170:5;27164:12;27154:22;;27084:99;;;:::o;27189:113::-;27259:4;27291;27286:3;27282:14;27274:22;;27189:113;;;:::o;27308:184::-;27407:11;27441:6;27436:3;27429:19;27481:4;27476:3;27472:14;27457:29;;27308:184;;;;:::o;27498:147::-;27599:11;27636:3;27621:18;;27498:147;;;;:::o;27651:169::-;27735:11;27769:6;27764:3;27757:19;27809:4;27804:3;27800:14;27785:29;;27651:169;;;;:::o;27826:305::-;27866:3;27885:20;27903:1;27885:20;:::i;:::-;27880:25;;27919:20;27937:1;27919:20;:::i;:::-;27914:25;;28073:1;28005:66;28001:74;27998:1;27995:81;27992:107;;;28079:18;;:::i;:::-;27992:107;28123:1;28120;28116:9;28109:16;;27826:305;;;;:::o;28137:185::-;28177:1;28194:20;28212:1;28194:20;:::i;:::-;28189:25;;28228:20;28246:1;28228:20;:::i;:::-;28223:25;;28267:1;28257:35;;28272:18;;:::i;:::-;28257:35;28314:1;28311;28307:9;28302:14;;28137:185;;;;:::o;28328:348::-;28368:7;28391:20;28409:1;28391:20;:::i;:::-;28386:25;;28425:20;28443:1;28425:20;:::i;:::-;28420:25;;28613:1;28545:66;28541:74;28538:1;28535:81;28530:1;28523:9;28516:17;28512:105;28509:131;;;28620:18;;:::i;:::-;28509:131;28668:1;28665;28661:9;28650:20;;28328:348;;;;:::o;28682:191::-;28722:4;28742:20;28760:1;28742:20;:::i;:::-;28737:25;;28776:20;28794:1;28776:20;:::i;:::-;28771:25;;28815:1;28812;28809:8;28806:34;;;28820:18;;:::i;:::-;28806:34;28865:1;28862;28858:9;28850:17;;28682:191;;;;:::o;28879:96::-;28916:7;28945:24;28963:5;28945:24;:::i;:::-;28934:35;;28879:96;;;:::o;28981:104::-;29026:7;29055:24;29073:5;29055:24;:::i;:::-;29044:35;;28981:104;;;:::o;29091:90::-;29125:7;29168:5;29161:13;29154:21;29143:32;;29091:90;;;:::o;29187:126::-;29224:7;29264:42;29257:5;29253:54;29242:65;;29187:126;;;:::o;29319:77::-;29356:7;29385:5;29374:16;;29319:77;;;:::o;29402:86::-;29437:7;29477:4;29470:5;29466:16;29455:27;;29402:86;;;:::o;29494:134::-;29552:9;29585:37;29616:5;29585:37;:::i;:::-;29572:50;;29494:134;;;:::o;29634:154::-;29712:9;29745:37;29776:5;29745:37;:::i;:::-;29732:50;;29634:154;;;:::o;29794:146::-;29864:9;29897:37;29928:5;29897:37;:::i;:::-;29884:50;;29794:146;;;:::o;29946:121::-;30004:9;30037:24;30055:5;30037:24;:::i;:::-;30024:37;;29946:121;;;:::o;30073:126::-;30123:9;30156:37;30187:5;30156:37;:::i;:::-;30143:50;;30073:126;;;:::o;30205:113::-;30255:9;30288:24;30306:5;30288:24;:::i;:::-;30275:37;;30205:113;;;:::o;30324:307::-;30392:1;30402:113;30416:6;30413:1;30410:13;30402:113;;;30501:1;30496:3;30492:11;30486:18;30482:1;30477:3;30473:11;30466:39;30438:2;30435:1;30431:10;30426:15;;30402:113;;;30533:6;30530:1;30527:13;30524:101;;;30613:1;30604:6;30599:3;30595:16;30588:27;30524:101;30373:258;30324:307;;;:::o;30637:180::-;30685:77;30682:1;30675:88;30782:4;30779:1;30772:15;30806:4;30803:1;30796:15;30823:180;30871:77;30868:1;30861:88;30968:4;30965:1;30958:15;30992:4;30989:1;30982:15;31009:180;31057:77;31054:1;31047:88;31154:4;31151:1;31144:15;31178:4;31175:1;31168:15;31195:180;31243:77;31240:1;31233:88;31340:4;31337:1;31330:15;31364:4;31361:1;31354:15;31504:117;31613:1;31610;31603:12;31627:102;31668:6;31719:2;31715:7;31710:2;31703:5;31699:14;31695:28;31685:38;;31627:102;;;:::o;31735:167::-;31875:19;31871:1;31863:6;31859:14;31852:43;31735:167;:::o;31908:166::-;32048:18;32044:1;32036:6;32032:14;32025:42;31908:166;:::o;32080:231::-;32220:34;32216:1;32208:6;32204:14;32197:58;32289:14;32284:2;32276:6;32272:15;32265:39;32080:231;:::o;32317:229::-;32457:34;32453:1;32445:6;32441:14;32434:58;32526:12;32521:2;32513:6;32509:15;32502:37;32317:229;:::o;32552:::-;32692:34;32688:1;32680:6;32676:14;32669:58;32761:12;32756:2;32748:6;32744:15;32737:37;32552:229;:::o;32787:170::-;32927:22;32923:1;32915:6;32911:14;32904:46;32787:170;:::o;32963:236::-;33103:34;33099:1;33091:6;33087:14;33080:58;33172:19;33167:2;33159:6;33155:15;33148:44;32963:236;:::o;33205:228::-;33345:34;33341:1;33333:6;33329:14;33322:58;33414:11;33409:2;33401:6;33397:15;33390:36;33205:228;:::o;33439:232::-;33579:34;33575:1;33567:6;33563:14;33556:58;33648:15;33643:2;33635:6;33631:15;33624:40;33439:232;:::o;33677:156::-;33817:8;33813:1;33805:6;33801:14;33794:32;33677:156;:::o;33839:114::-;;:::o;33959:230::-;34099:34;34095:1;34087:6;34083:14;34076:58;34168:13;34163:2;34155:6;34151:15;34144:38;33959:230;:::o;34195:235::-;34335:34;34331:1;34323:6;34319:14;34312:58;34404:18;34399:2;34391:6;34387:15;34380:43;34195:235;:::o;34436:161::-;34576:13;34572:1;34564:6;34560:14;34553:37;34436:161;:::o;34603:122::-;34676:24;34694:5;34676:24;:::i;:::-;34669:5;34666:35;34656:63;;34715:1;34712;34705:12;34656:63;34603:122;:::o;34731:138::-;34812:32;34838:5;34812:32;:::i;:::-;34805:5;34802:43;34792:71;;34859:1;34856;34849:12;34792:71;34731:138;:::o;34875:116::-;34945:21;34960:5;34945:21;:::i;:::-;34938:5;34935:32;34925:60;;34981:1;34978;34971:12;34925:60;34875:116;:::o;34997:122::-;35070:24;35088:5;35070:24;:::i;:::-;35063:5;35060:35;35050:63;;35109:1;35106;35099:12;35050:63;34997:122;:::o
Swarm Source
ipfs://08f62b83ca5d47d0d38528e8e0a07ac84de0aac83b892eddf319f5d77c4138f6
Age | Block | Fee Address | BC Fee Address | Voting Power | Jailed | Incoming |
---|
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.