ERC-20
Overview
Max Total Supply
1,000,000 GAYY
Holders
18
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 2 Decimals)
Balance
5,992.76 GAYYValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
gaySquid
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-09-17 */ 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 IUniswapRouter01 { 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 IUniswapRouter02 is IUniswapRouter01 { 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 IUniswapFactory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IDividendDistributor { function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external; function setShare(address shareholder, uint256 amount) external; function deposit() external payable; function process(uint256 gas) external; } contract DividendDistributor is IDividendDistributor { using SafeMath for uint256; address _token; struct Share { uint256 amount; uint256 totalExcluded; uint256 totalRealised; } IUniswapRouter02 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 (IUniswapRouter02 _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 gaySquid is IERC20, Auth { using SafeMath for uint256; using SafeERC20 for IERC20; string constant _name = "Gay Squid"; string constant _symbol = "GAYY"; uint8 constant _decimals = 2; address DEAD = 0x000000000000000000000000000000000000dEaD; address ZERO = 0x0000000000000000000000000000000000000000; uint256 _totalSupply = 1000000 * (10 ** _decimals); uint256 public _maxTxAmount = 20000 * (10 ** _decimals); uint256 public _walletMax = 20000 * (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 = 0; uint256 public liquidityFeeSell = 0; uint256 public marketingFee = 2; uint256 public marketingFeeSell = 2; uint256 public rewardsFee = 5; uint256 public rewardsFeeSell =5; uint256 public teamFee = 0; uint256 public teamFeeSell = 0; uint256 public totalFee = 7; uint256 public totalFeeSell = 7; address public autoLiquidityReceiver = address(this); address public marketingWallet = 0xb1b60ED202059594Abe5Ea3a8831F923C53F6e9c; address private teamWallet = 0xb1b60ED202059594Abe5Ea3a8831F923C53F6e9c; IUniswapRouter02 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 = 8 * (10 ** _decimals); uint256 public timeToWait = 6; event BlacklistedUser(address botAddress, bool indexed value); modifier lockTheSwap { inSwapAndLiquify = true; _; inSwapAndLiquify = false; } constructor () Auth(msg.sender) { IUniswapRouter02 _router = IUniswapRouter02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); router = _router; pair = IUniswapFactory(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 >= 0, "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 lower than 0%"); require(newRewardFee >= 10, "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 >= 0, "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 lower than 0%"); require(newRewardFeeSell >= 10, "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); }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"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 IUniswapRouter02","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":"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
608060405261dead600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506002600a62000099919062000eea565b620f4240620000a9919062001027565b6004556002600a620000bc919062000eea565b614e20620000cb919062001027565b6005556002600a620000de919062000eea565b614e20620000ed919062001027565b6006556001600760006101000a81548160ff0219169083151502179055506000600e556000600f556002601055600260115560056012556005601355600060145560006015556007601655600760175530601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073b1b60ed202059594abe5ea3a8831f923c53f6e9c601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073b1b60ed202059594abe5ea3a8831f923c53f6e9c601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601e60006101000a81548160ff0219169083151502179055506207a120601f556001602060016101000a81548160ff0219169083151502179055506000602060026101000a81548160ff0219169083151502179055506002600a62000290919062000eea565b60086200029e919062001027565b6021556006602255348015620002b357600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200041057600080fd5b505afa15801562000425573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200044b919062000dc3565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620004cf57600080fd5b505afa158015620004e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200050a919062000dc3565b306040518363ffffffff1660e01b81526004016200052a92919062000e28565b602060405180830381600087803b1580156200054557600080fd5b505af11580156200055a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000580919062000dc3565b601c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051620006b49062000d9e565b620006c0919062000e55565b604051809103906000f080158015620006dd573d6000803e3d6000fd5b50601e60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555030601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600454600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60045460405162000d8f919062000e72565b60405180910390a3506200116a565b6116fb806200600e83390190565b60008151905062000dbd8162001150565b92915050565b60006020828403121562000ddc5762000ddb6200113e565b5b600062000dec8482850162000dac565b91505092915050565b62000e008162001088565b82525050565b62000e1181620010d3565b82525050565b62000e2281620010bc565b82525050565b600060408201905062000e3f600083018562000df5565b62000e4e602083018462000df5565b9392505050565b600060208201905062000e6c600083018462000e06565b92915050565b600060208201905062000e89600083018462000e17565b92915050565b6000808291508390505b600185111562000ee15780860481111562000eb95762000eb86200110f565b5b600185161562000ec95780820291505b808102905062000ed98562001143565b945062000e99565b94509492505050565b600062000ef782620010bc565b915062000f0483620010c6565b925062000f337fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000f3b565b905092915050565b60008262000f4d576001905062001020565b8162000f5d576000905062001020565b816001811462000f76576002811462000f815762000fb7565b600191505062001020565b60ff84111562000f965762000f956200110f565b5b8360020a91508482111562000fb05762000faf6200110f565b5b5062001020565b5060208310610133831016604e8410600b841016171562000ff15782820a90508381111562000feb5762000fea6200110f565b5b62001020565b62001000848484600162000e8f565b925090508184048111156200101a57620010196200110f565b5b81810290505b9392505050565b60006200103482620010bc565b91506200104183620010bc565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156200107d576200107c6200110f565b5b828202905092915050565b600062001095826200109c565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000620010e082620010e7565b9050919050565b6000620010f482620010fb565b9050919050565b600062001108826200109c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600080fd5b60008160011c9050919050565b6200115b8162001088565b81146200116757600080fd5b50565b614e94806200117a6000396000f3fe60806040526004361061039b5760003560e01c8063773fcb5c116101dc578063bf56b37111610102578063dd62ed3e116100a0578063f887ea401161006f578063f887ea4014610db3578063fabe628314610dde578063fe9fbb8014610e07578063ffb54a9914610e44576103a2565b8063dd62ed3e14610cfb578063e2dd8ca014610d38578063f0b37c0414610d61578063f2fde38b14610d8a576103a2565b8063d829d3f8116100dc578063d829d3f814610c53578063d920334e14610c7c578063da00097d14610ca5578063dbe1c4d514610cd0576103a2565b8063bf56b37114610bd2578063ca33e64c14610bfd578063d7c94efd14610c28576103a2565b806395d89b411161017a578063a9f7864b11610149578063a9f7864b14610b2c578063b0a616a914610b55578063b6a5d7de14610b7e578063bad3ea6a14610ba7576103a2565b806395d89b4114610a6e57806398118cb414610a99578063a8aa1b3114610ac4578063a9059cbb14610aef576103a2565b8063807c2d9c116101b6578063807c2d9c146109b057806384f6820a146109db578063893d20e814610a065780638b42507f14610a31576103a2565b8063773fcb5c146109335780637d1db4a51461095c5780637db1342c14610987576103a2565b8063315dca29116102c1578063479f66d81161025f578063650c42261161022e578063650c4226146108775780636b67c4df146108a057806370a08231146108cb57806375f0a87414610908576103a2565b8063479f66d8146107bb5780634a74bb02146107e4578063531484161461080f578063571ac8b01461083a576103a2565b80633f4218e01161029b5780633f4218e0146106ed5780634102eedc1461072a5780634355855a1461075357806344de2e4c14610790576103a2565b8063315dca291461065e57806334c70889146106875780633bbac579146106b0576103a2565b806313374e7a116103395780632b112e49116103085780632b112e49146105a05780632bb14e1d146105cb5780632f54bf6e146105f6578063313ce56714610633576103a2565b806313374e7a146104e257806318160ddd1461050d5780631df4ccfc1461053857806323b872dd14610563576103a2565b8063095ea7b311610375578063095ea7b31461042857806309ad803d146104655780630d2959801461048e5780631107b3a5146104b7576103a2565b806303898c17146103a75780630445b667146103d257806306fdde03146103fd576103a2565b366103a257005b600080fd5b3480156103b357600080fd5b506103bc610e6f565b6040516103c991906146b4565b60405180910390f35b3480156103de57600080fd5b506103e7610e75565b6040516103f491906146b4565b60405180910390f35b34801561040957600080fd5b50610412610e7b565b60405161041f91906144f2565b60405180910390f35b34801561043457600080fd5b5061044f600480360381019061044a9190613e5c565b610eb8565b60405161045c91906144a1565b60405180910390f35b34801561047157600080fd5b5061048c6004803603810190610487919061401c565b610faa565b005b34801561049a57600080fd5b506104b560048036038101906104b09190613e9c565b611169565b005b3480156104c357600080fd5b506104cc6111d6565b6040516104d991906146b4565b60405180910390f35b3480156104ee57600080fd5b506104f76111dc565b60405161050491906146b4565b60405180910390f35b34801561051957600080fd5b506105226111e2565b60405161052f91906146b4565b60405180910390f35b34801561054457600080fd5b5061054d6111ec565b60405161055a91906146b4565b60405180910390f35b34801561056f57600080fd5b5061058a60048036038101906105859190613dc9565b6111f2565b60405161059791906144a1565b60405180910390f35b3480156105ac57600080fd5b506105b56113f2565b6040516105c291906146b4565b60405180910390f35b3480156105d757600080fd5b506105e0611474565b6040516105ed91906146b4565b60405180910390f35b34801561060257600080fd5b5061061d60048036038101906106189190613caf565b61147a565b60405161062a91906144a1565b60405180910390f35b34801561063f57600080fd5b506106486114d3565b6040516106559190614752565b60405180910390f35b34801561066a57600080fd5b5061068560048036038101906106809190613d76565b6114dc565b005b34801561069357600080fd5b506106ae60048036038101906106a99190613ec9565b6115ec565b005b3480156106bc57600080fd5b506106d760048036038101906106d29190613caf565b611674565b6040516106e491906144a1565b60405180910390f35b3480156106f957600080fd5b50610714600480360381019061070f9190613caf565b611694565b60405161072191906144a1565b60405180910390f35b34801561073657600080fd5b50610751600480360381019061074c9190613e1c565b6116b4565b005b34801561075f57600080fd5b5061077a60048036038101906107759190613caf565b611757565b60405161078791906144a1565b60405180910390f35b34801561079c57600080fd5b506107a5611777565b6040516107b291906144a1565b60405180910390f35b3480156107c757600080fd5b506107e260048036038101906107dd9190613f1c565b61178a565b005b3480156107f057600080fd5b506107f96117eb565b60405161080691906144a1565b60405180910390f35b34801561081b57600080fd5b506108246117fe565b60405161083191906146b4565b60405180910390f35b34801561084657600080fd5b50610861600480360381019061085c9190613caf565b611804565b60405161086e91906144a1565b60405180910390f35b34801561088357600080fd5b5061089e6004803603810190610899919061401c565b611837565b005b3480156108ac57600080fd5b506108b56119f6565b6040516108c291906146b4565b60405180910390f35b3480156108d757600080fd5b506108f260048036038101906108ed9190613caf565b6119fc565b6040516108ff91906146b4565b60405180910390f35b34801561091457600080fd5b5061091d611a45565b60405161092a91906143b8565b60405180910390f35b34801561093f57600080fd5b5061095a60048036038101906109559190613e1c565b611a6b565b005b34801561096857600080fd5b50610971611d0b565b60405161097e91906146b4565b60405180910390f35b34801561099357600080fd5b506109ae60048036038101906109a99190613f1c565b611d11565b005b3480156109bc57600080fd5b506109c5611d63565b6040516109d291906146b4565b60405180910390f35b3480156109e757600080fd5b506109f0611d69565b6040516109fd91906146b4565b60405180910390f35b348015610a1257600080fd5b50610a1b611d6f565b604051610a2891906143b8565b60405180910390f35b348015610a3d57600080fd5b50610a586004803603810190610a539190613caf565b611d98565b604051610a6591906144a1565b60405180910390f35b348015610a7a57600080fd5b50610a83611db8565b604051610a9091906144f2565b60405180910390f35b348015610aa557600080fd5b50610aae611df5565b604051610abb91906146b4565b60405180910390f35b348015610ad057600080fd5b50610ad9611dfb565b604051610ae691906143b8565b60405180910390f35b348015610afb57600080fd5b50610b166004803603810190610b119190613e5c565b611e21565b604051610b2391906144a1565b60405180910390f35b348015610b3857600080fd5b50610b536004803603810190610b4e9190613f89565b611e36565b005b348015610b6157600080fd5b50610b7c6004803603810190610b779190613f49565b611f11565b005b348015610b8a57600080fd5b50610ba56004803603810190610ba09190613caf565b611fec565b005b348015610bb357600080fd5b50610bbc61208e565b604051610bc991906144bc565b60405180910390f35b348015610bde57600080fd5b50610be76120b4565b604051610bf491906146b4565b60405180910390f35b348015610c0957600080fd5b50610c126120ba565b604051610c1f91906143b8565b60405180910390f35b348015610c3457600080fd5b50610c3d6120e0565b604051610c4a91906146b4565b60405180910390f35b348015610c5f57600080fd5b50610c7a6004803603810190610c759190613e9c565b6120e6565b005b348015610c8857600080fd5b50610ca36004803603810190610c9e9190613f1c565b61214b565b005b348015610cb157600080fd5b50610cba61219d565b604051610cc791906144a1565b60405180910390f35b348015610cdc57600080fd5b50610ce56121b0565b604051610cf291906146b4565b60405180910390f35b348015610d0757600080fd5b50610d226004803603810190610d1d9190613d36565b6121b6565b604051610d2f91906146b4565b60405180910390f35b348015610d4457600080fd5b50610d5f6004803603810190610d5a9190613e1c565b61223d565b005b348015610d6d57600080fd5b50610d886004803603810190610d839190613caf565b6122e0565b005b348015610d9657600080fd5b50610db16004803603810190610dac9190613d09565b612383565b005b348015610dbf57600080fd5b50610dc861249c565b604051610dd591906144d7565b60405180910390f35b348015610dea57600080fd5b50610e056004803603810190610e009190613e1c565b6124c2565b005b348015610e1357600080fd5b50610e2e6004803603810190610e299190613caf565b612565565b604051610e3b91906144a1565b60405180910390f35b348015610e5057600080fd5b50610e596125bb565b604051610e6691906144a1565b60405180910390f35b60135481565b60215481565b60606040518060400160405280600981526020017f4761792053717569640000000000000000000000000000000000000000000000815250905090565b600081600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610f9891906146b4565b60405180910390a36001905092915050565b610fb333612565565b610ff2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe990614694565b60405180910390fd5b6000841015611036576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102d90614594565b60405180910390fd5b600a82111561107a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611071906145d4565b60405180910390fd5b60008110156110be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b590614574565b60405180910390fd5b600a831015611102576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f990614614565b60405180910390fd5b83600f8190555082601381905550816011819055508060158190555061115d60135461114f601554611141601154600f546125ce90919063ffffffff16565b6125ce90919063ffffffff16565b6125ce90919063ffffffff16565b60178190555050505050565b6111723361147a565b6111b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a890614634565b60405180910390fd5b80601e60006101000a81548160ff0219169083151502179055506111d36125e4565b50565b600f5481565b60115481565b6000600454905090565b60165481565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146113de5761135d826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125ed9092919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6113e9848484612642565b90509392505050565b600061146f611422600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166119fc565b611461611450600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166119fc565b6004546130c990919063ffffffff16565b6130c990919063ffffffff16565b905090565b60125481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006002905090565b6114e533612565565b611524576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151b90614694565b60405180910390fd5b82601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6115f533612565565b611634576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162b90614694565b60405180910390fd5b82602060016101000a81548160ff0219169083151502179055508160218190555080602060026101000a81548160ff021916908315150217905550505050565b600d6020528060005260406000206000915054906101000a900460ff1681565b600a6020528060005260406000206000915054906101000a900460ff1681565b6116bd33612565565b6116fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f390614694565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600c6020528060005260406000206000915054906101000a900460ff1681565b600760009054906101000a900460ff1681565b61179333612565565b6117d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c990614694565b60405180910390fd5b620b71b081106117e157600080fd5b80601f8190555050565b602060019054906101000a900460ff1681565b60175481565b6000611830827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610eb8565b9050919050565b61184033612565565b61187f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187690614694565b60405180910390fd5b60008410156118c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ba906145f4565b60405180910390fd5b600a821115611907576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118fe90614654565b60405180910390fd5b600081101561194b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194290614674565b60405180910390fd5b600a83101561198f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198690614554565b60405180910390fd5b83600e819055508260128190555081601081905550806014819055506119ea6012546119dc6014546119ce601054600e546125ce90919063ffffffff16565b6125ce90919063ffffffff16565b6125ce90919063ffffffff16565b60168190555050505050565b60105481565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611a7433612565565b611ab3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aaa90614694565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015611b3d5750601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b611b4657600080fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015611c3857601e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968360006040518363ffffffff1660e01b8152600401611c019291906143ee565b600060405180830381600087803b158015611c1b57600080fd5b505af1158015611c2f573d6000803e3d6000fd5b50505050611d07565b601e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9683600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401611cd4929190614417565b600060405180830381600087803b158015611cee57600080fd5b505af1158015611d02573d6000803e3d6000fd5b505050505b5050565b60055481565b611d1a33612565565b611d59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5090614694565b60405180910390fd5b8060068190555050565b60065481565b60155481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600b6020528060005260406000206000915054906101000a900460ff1681565b60606040518060400160405280600481526020017f4741595900000000000000000000000000000000000000000000000000000000815250905090565b600e5481565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611e2e338484612642565b905092915050565b611e3f33612565565b611e7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7590614694565b60405180910390fd5b601e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632d48e89683836040518363ffffffff1660e01b8152600401611edb929190614729565b600060405180830381600087803b158015611ef557600080fd5b505af1158015611f09573d6000803e3d6000fd5b505050505050565b611f1a3361147a565b611f59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5090614634565b60405180910390fd5b6000479050828111611fa0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9790614534565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f19350505050158015611fe6573d6000803e3d6000fd5b50505050565b611ff53361147a565b612034576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202b90614634565b60405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b601e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601d5481565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60145481565b6120ef33612565565b61212e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212590614694565b60405180910390fd5b80600760006101000a81548160ff02191690831515021790555050565b61215433612565565b612193576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161218a90614694565b60405180910390fd5b8060058190555050565b602060029054906101000a900460ff1681565b60225481565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6122463361147a565b612285576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227c90614634565b60405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6122e93361147a565b612328576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161231f90614634565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61238c3361147a565b6123cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123c290614634565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861638160405161249191906143d3565b60405180910390a150565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6124cb33612565565b61250a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161250190614694565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b601e60009054906101000a900460ff1681565b600081836125dc91906147cd565b905092915050565b42601d81905550565b6000838311158290612635576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262c91906144f2565b60405180910390fd5b5082840390509392505050565b6000602060009054906101000a900460ff161561266b576126648484846130df565b90506130c2565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561270f5750600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561276457601e60009054906101000a900460ff16612763576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161275a906145b4565b60405180910390fd5b5b600554821115806127be5750600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6127fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127f490614514565b60405180910390fd5b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156128685750602060009054906101000a900460ff16155b80156128805750602060019054906101000a900460ff165b80156128cd5750602154600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b156128db576128da6132b2565b5b6128e361398f565b15801561293d5750601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b1561298f576000600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541161298e57600080fd5b5b602254601d5461299f91906147cd565b421080156129fb5750601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15612a94576001600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600115157f3159dadbd8e2d720a851b412e3358e7e44bb11734c9bfd5715340e21798e8b2584604051612a8b91906143b8565b60405180910390a25b612b1d826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125ed9092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612bc65750600760009054906101000a900460ff165b15612c2c57600654612c2083600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125ce90919063ffffffff16565b1115612c2b57600080fd5b5b6000600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612cd25750600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612cdc5782612ce8565b612ce785858561399c565b5b9050612d3c81600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125ce90919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612ea257601e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9686600860008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401612e6c929190614417565b600060405180830381600087803b158015612e8657600080fd5b505af1925050508015612e97575060015b612ea057612ea1565b5b5b600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612fc557601e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9685600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401612f8f929190614417565b600060405180830381600087803b158015612fa957600080fd5b505af1925050508015612fba575060015b612fc357612fc4565b5b5b601e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ffb2c479601f546040518263ffffffff1660e01b815260040161302291906146b4565b600060405180830381600087803b15801561303c57600080fd5b505af192505050801561304d575060015b61305657613057565b5b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516130b491906146b4565b60405180910390a360019150505b9392505050565b600081836130d791906148ae565b905092915050565b600061316a826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125ed9092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506131ff82600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125ce90919063ffffffff16565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161329f91906146b4565b60405180910390a3600190509392505050565b6001602060006101000a81548160ff0219169083151502179055506000600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600061334f6002613341601654613333600e5487613c0590919063ffffffff16565b613c1b90919063ffffffff16565b613c1b90919063ffffffff16565b9050600061336682846130c990919063ffffffff16565b90506000600267ffffffffffffffff81111561338557613384614a75565b5b6040519080825280602002602001820160405280156133b35781602001602082028036833780820191505090505b50905030816000815181106133cb576133ca614a46565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561346d57600080fd5b505afa158015613481573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134a59190613cdc565b816001815181106134b9576134b8614a46565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016135579594939291906146cf565b600060405180830381600087803b15801561357157600080fd5b505af1158015613585573d6000803e3d6000fd5b50505050600047905060006135ba6135a96002600e54613c1b90919063ffffffff16565b6016546130c990919063ffffffff16565b905060006135f860026135ea846135dc600e5488613c0590919063ffffffff16565b613c1b90919063ffffffff16565b613c1b90919063ffffffff16565b905060006136238361361560125487613c0590919063ffffffff16565b613c1b90919063ffffffff16565b9050600061364c8261363e85886130c990919063ffffffff16565b6130c990919063ffffffff16565b9050601e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b1580156136b857600080fd5b505af1935050505080156136ca575060015b6136d3576136d4565b5b60006136fd856136ef60145489613c0590919063ffffffff16565b613c1b90919063ffffffff16565b9050600061371482846130c990919063ffffffff16565b90506000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168261753090604051613762906143a3565b600060405180830381858888f193505050503d80600081146137a0576040519150601f19603f3d011682016040523d82523d6000602084013e6137a5565b606091505b505090506000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1684617530906040516137f5906143a3565b600060405180830381858888f193505050503d8060008114613833576040519150601f19603f3d011682016040523d82523d6000602084013e613838565b606091505b50509050600091506000905060008c111561396557601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71988308f600080601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016138d696959493929190614440565b6060604051808303818588803b1580156138ef57600080fd5b505af1158015613903573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906139289190613fc9565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506878d60405161395c929190614729565b60405180910390a15b505050505050505050505050506000602060006101000a81548160ff021916908315150217905550565b600080601d541415905090565b6000808373ffffffffffffffffffffffffffffffffffffffff16601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146139fc57601654613a00565b6017545b905060011515600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415613a645760639050613ac3565b60011515600d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415613ac257606390505b5b6000613aeb6064613add8487613c0590919063ffffffff16565b613c1b90919063ffffffff16565b9050613b3f81600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125ce90919063ffffffff16565b600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613bdf91906146b4565b60405180910390a3613bfa81856130c990919063ffffffff16565b925050509392505050565b60008183613c139190614854565b905092915050565b60008183613c299190614823565b905092915050565b600081359050613c4081614e02565b92915050565b600081519050613c5581614e02565b92915050565b600081359050613c6a81614e19565b92915050565b600081359050613c7f81614e30565b92915050565b600081359050613c9481614e47565b92915050565b600081519050613ca981614e47565b92915050565b600060208284031215613cc557613cc4614aa4565b5b6000613cd384828501613c31565b91505092915050565b600060208284031215613cf257613cf1614aa4565b5b6000613d0084828501613c46565b91505092915050565b600060208284031215613d1f57613d1e614aa4565b5b6000613d2d84828501613c5b565b91505092915050565b60008060408385031215613d4d57613d4c614aa4565b5b6000613d5b85828601613c31565b9250506020613d6c85828601613c31565b9150509250929050565b600080600060608486031215613d8f57613d8e614aa4565b5b6000613d9d86828701613c31565b9350506020613dae86828701613c31565b9250506040613dbf86828701613c31565b9150509250925092565b600080600060608486031215613de257613de1614aa4565b5b6000613df086828701613c31565b9350506020613e0186828701613c31565b9250506040613e1286828701613c85565b9150509250925092565b60008060408385031215613e3357613e32614aa4565b5b6000613e4185828601613c31565b9250506020613e5285828601613c70565b9150509250929050565b60008060408385031215613e7357613e72614aa4565b5b6000613e8185828601613c31565b9250506020613e9285828601613c85565b9150509250929050565b600060208284031215613eb257613eb1614aa4565b5b6000613ec084828501613c70565b91505092915050565b600080600060608486031215613ee257613ee1614aa4565b5b6000613ef086828701613c70565b9350506020613f0186828701613c85565b9250506040613f1286828701613c70565b9150509250925092565b600060208284031215613f3257613f31614aa4565b5b6000613f4084828501613c85565b91505092915050565b60008060408385031215613f6057613f5f614aa4565b5b6000613f6e85828601613c85565b9250506020613f7f85828601613c5b565b9150509250929050565b60008060408385031215613fa057613f9f614aa4565b5b6000613fae85828601613c85565b9250506020613fbf85828601613c85565b9150509250929050565b600080600060608486031215613fe257613fe1614aa4565b5b6000613ff086828701613c9a565b935050602061400186828701613c9a565b925050604061401286828701613c9a565b9150509250925092565b6000806000806080858703121561403657614035614aa4565b5b600061404487828801613c85565b945050602061405587828801613c85565b935050604061406687828801613c85565b925050606061407787828801613c85565b91505092959194509250565b600061408f83836140aa565b60208301905092915050565b6140a481614949565b82525050565b6140b3816148e2565b82525050565b6140c2816148e2565b82525050565b60006140d38261477d565b6140dd81856147a0565b93506140e88361476d565b8060005b838110156141195781516141008882614083565b975061410b83614793565b9250506001810190506140ec565b5085935050505092915050565b61412f81614906565b82525050565b61413e8161495b565b82525050565b61414d8161496d565b82525050565b61415c8161497f565b82525050565b600061416d82614788565b61417781856147bc565b93506141878185602086016149b5565b61419081614aa9565b840191505092915050565b60006141a86011836147bc565b91506141b382614aba565b602082019050919050565b60006141cb6010836147bc565b91506141d682614ae3565b602082019050919050565b60006141ee602c836147bc565b91506141f982614b0c565b604082019050919050565b6000614211602a836147bc565b915061421c82614b5b565b604082019050919050565b6000614234602a836147bc565b915061423f82614baa565b604082019050919050565b60006142576014836147bc565b915061426282614bf9565b602082019050919050565b600061427a6031836147bc565b915061428582614c22565b604082019050919050565b600061429d6029836147bc565b91506142a882614c71565b604082019050919050565b60006142c0602d836147bc565b91506142cb82614cc0565b604082019050919050565b60006142e36006836147bc565b91506142ee82614d0f565b602082019050919050565b60006143066000836147b1565b915061431182614d38565b600082019050919050565b60006143296030836147bc565b915061433482614d3b565b604082019050919050565b600061434c6029836147bc565b915061435782614d8a565b604082019050919050565b600061436f600b836147bc565b915061437a82614dd9565b602082019050919050565b61438e81614932565b82525050565b61439d8161493c565b82525050565b60006143ae826142f9565b9150819050919050565b60006020820190506143cd60008301846140b9565b92915050565b60006020820190506143e8600083018461409b565b92915050565b600060408201905061440360008301856140b9565b6144106020830184614153565b9392505050565b600060408201905061442c60008301856140b9565b6144396020830184614385565b9392505050565b600060c08201905061445560008301896140b9565b6144626020830188614385565b61446f6040830187614153565b61447c6060830186614153565b61448960808301856140b9565b61449660a0830184614385565b979650505050505050565b60006020820190506144b66000830184614126565b92915050565b60006020820190506144d16000830184614135565b92915050565b60006020820190506144ec6000830184614144565b92915050565b6000602082019050818103600083015261450c8184614162565b905092915050565b6000602082019050818103600083015261452d8161419b565b9050919050565b6000602082019050818103600083015261454d816141be565b9050919050565b6000602082019050818103600083015261456d816141e1565b9050919050565b6000602082019050818103600083015261458d81614204565b9050919050565b600060208201905081810360008301526145ad81614227565b9050919050565b600060208201905081810360008301526145cd8161424a565b9050919050565b600060208201905081810360008301526145ed8161426d565b9050919050565b6000602082019050818103600083015261460d81614290565b9050919050565b6000602082019050818103600083015261462d816142b3565b9050919050565b6000602082019050818103600083015261464d816142d6565b9050919050565b6000602082019050818103600083015261466d8161431c565b9050919050565b6000602082019050818103600083015261468d8161433f565b9050919050565b600060208201905081810360008301526146ad81614362565b9050919050565b60006020820190506146c96000830184614385565b92915050565b600060a0820190506146e46000830188614385565b6146f16020830187614153565b818103604083015261470381866140c8565b905061471260608301856140b9565b61471f6080830184614385565b9695505050505050565b600060408201905061473e6000830185614385565b61474b6020830184614385565b9392505050565b60006020820190506147676000830184614394565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006147d882614932565b91506147e383614932565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614818576148176149e8565b5b828201905092915050565b600061482e82614932565b915061483983614932565b92508261484957614848614a17565b5b828204905092915050565b600061485f82614932565b915061486a83614932565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156148a3576148a26149e8565b5b828202905092915050565b60006148b982614932565b91506148c483614932565b9250828210156148d7576148d66149e8565b5b828203905092915050565b60006148ed82614912565b9050919050565b60006148ff82614912565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061495482614991565b9050919050565b600061496682614991565b9050919050565b600061497882614991565b9050919050565b600061498a82614932565b9050919050565b600061499c826149a3565b9050919050565b60006149ae82614912565b9050919050565b60005b838110156149d35780820151818401526020810190506149b8565b838111156149e2576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b7f496e73756666696369656e742043524f00000000000000000000000000000000600082015250565b7f5265776172647320546178206f6e20627579732063616e206e6f74206265206c60008201527f6f776572207468616e2032250000000000000000000000000000000000000000602082015250565b7f5465616d20546178206f6e2073656c6c732063616e206e6f74206265206c6f7760008201527f6572207468616e20302500000000000000000000000000000000000000000000602082015250565b7f4c5020546178206f6e2073656c6c732063616e206e6f7420626520686967686560008201527f72207468616e2031302500000000000000000000000000000000000000000000602082015250565b7f54726164696e67206e6f74206f70656e20796574000000000000000000000000600082015250565b7f4d61726b6574696e6720546178206f6e2073656c6c732063616e206e6f74206260008201527f6520686967686572207468616e20313025000000000000000000000000000000602082015250565b7f4c5020546178206f6e20627579732063616e206e6f742062652068696768657260008201527f207468616e203130250000000000000000000000000000000000000000000000602082015250565b7f5265776172647320546178206f6e2073656c6c732063616e206e6f742062652060008201527f6c6f776572207468616e20322500000000000000000000000000000000000000602082015250565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b50565b7f4d61726b6574696e6720546178206f6e20627579732063616e206e6f7420626560008201527f20686967686572207468616e2031302500000000000000000000000000000000602082015250565b7f5465616d20546178206f6e20627579732063616e206e6f74206265206c6f776560008201527f72207468616e2030250000000000000000000000000000000000000000000000602082015250565b7f21415554484f52495a4544000000000000000000000000000000000000000000600082015250565b614e0b816148e2565b8114614e1657600080fd5b50565b614e22816148f4565b8114614e2d57600080fd5b50565b614e3981614906565b8114614e4457600080fd5b50565b614e5081614932565b8114614e5b57600080fd5b5056fea2646970667358221220af0c964466b9e65ed9abfec8c4e49d0723d2fc7fab4cb8f35222c47cef4e153664736f6c6343000807003360806040526ec097ce7bc90715b34b9f1000000000600a55610e10600b556001600c553480156200002f57600080fd5b50604051620016fb380380620016fb8339818101604052810190620000559190620000f4565b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506200018d565b600081519050620000ee8162000173565b92915050565b6000602082840312156200010d576200010c6200016e565b5b60006200011d84828501620000dd565b91505092915050565b600062000133826200014e565b9050919050565b6000620001478262000126565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6200017e816200013a565b81146200018a57600080fd5b50565b61155e806200019d6000396000f3fe6080604052600436106100dd5760003560e01c8063ce7c2ac21161007f578063efca2eed11610059578063efca2eed14610291578063f0fc6bca146102bc578063ffb2c479146102d3578063ffd49c84146102fc576100dd565b8063ce7c2ac21461021d578063d0e30db01461025c578063e2d2e21914610266576100dd565b80632d48e896116100bb5780632d48e896146101735780633a98ef391461019c5780634fab0ae8146101c7578063997664d7146101f2576100dd565b806311ce023d146100e257806314b6ca961461010d57806328fd319814610136575b600080fd5b3480156100ee57600080fd5b506100f7610327565b6040516101049190611205565b60405180910390f35b34801561011957600080fd5b50610134600480360381019061012f91906110ce565b61032d565b005b34801561014257600080fd5b5061015d600480360381019061015891906110a1565b6105ec565b60405161016a9190611205565b60405180910390f35b34801561017f57600080fd5b5061019a6004803603810190610195919061113b565b610706565b005b3480156101a857600080fd5b506101b1610770565b6040516101be9190611205565b60405180910390f35b3480156101d357600080fd5b506101dc610776565b6040516101e99190611205565b60405180910390f35b3480156101fe57600080fd5b5061020761077c565b6040516102149190611205565b60405180910390f35b34801561022957600080fd5b50610244600480360381019061023f91906110a1565b610782565b60405161025393929190611220565b60405180910390f35b6102646107ac565b005b34801561027257600080fd5b5061027b610864565b6040516102889190611205565b60405180910390f35b34801561029d57600080fd5b506102a661086a565b6040516102b39190611205565b60405180910390f35b3480156102c857600080fd5b506102d1610870565b005b3480156102df57600080fd5b506102fa60048036038101906102f5919061110e565b6108c3565b005b34801561030857600080fd5b50610311610a57565b60405161031e9190611205565b60405180910390f35b600a5481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461038557600080fd5b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015411156103da576103d982610a5d565b5b60008111801561042c57506000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154145b1561043f5761043a82610cca565b6104a1565b60008114801561049157506000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154115b156104a05761049f82610d79565b5b5b61050a816104fc600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154600654610f8090919063ffffffff16565b610f9690919063ffffffff16565b60068190555080600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055506105a2600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154610fac565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505050565b600080600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015414156106415760009050610701565b600061068e600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154610fac565b90506000600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015490508082116106e957600092505050610701565b6106fc8183610f8090919063ffffffff16565b925050505b919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461075e57600080fd5b81600b8190555080600c819055505050565b60065481565b600c5481565b60075481565b60056020528060005260406000206000915090508060000154908060010154908060020154905083565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461080457600080fd5b61081934600754610f9690919063ffffffff16565b60078190555061085c61084b60065461083d34600a54610fde90919063ffffffff16565b610ff490919063ffffffff16565b600954610f9690919063ffffffff16565b600981905550565b60095481565b60085481565b6108793361100a565b6108b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108af906111e5565b60405180910390fd5b6108c133610a5d565b565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461091b57600080fd5b6000600280549050905060008114156109345750610a54565b60008060005a90505b848210801561094b57508383105b15610a4f5783600d5410610962576000600d819055505b6109ab6002600d548154811061097b5761097a61149a565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661100a565b156109fa576109f96002600d54815481106109c9576109c861149a565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610a5d565b5b610a1f610a105a83610f8090919063ffffffff16565b83610f9690919063ffffffff16565b91505a9050600d6000815480929190610a37906113c4565b91905055508280610a47906113c4565b93505061093d565b505050505b50565b600b5481565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001541415610aad57610cc7565b6000610ab8826105ec565b90506000811115610cc557610ad881600854610f9690919063ffffffff16565b60088190555060008273ffffffffffffffffffffffffffffffffffffffff168261753090604051610b08906111d0565b600060405180830381858888f193505050503d8060008114610b46576040519150601f19603f3d011682016040523d82523d6000602084013e610b4b565b606091505b505090506000905042600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610bec82600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154610f9690919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020181905550610c7d600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154610fac565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010181905550505b505b50565b600280549050600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506002819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60026001600280549050610d8d9190611354565b81548110610d9e57610d9d61149a565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166002600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481548110610e1c57610e1b61149a565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546003600060026001600280549050610ebc9190611354565b81548110610ecd57610ecc61149a565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506002805480610f4857610f4761146b565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905550565b60008183610f8e9190611354565b905092915050565b60008183610fa49190611273565b905092915050565b6000610fd7600a54610fc960095485610fde90919063ffffffff16565b610ff490919063ffffffff16565b9050919050565b60008183610fec91906112fa565b905092915050565b6000818361100291906112c9565b905092915050565b600042600b54600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461105a9190611273565b1080156110705750600c5461106e836105ec565b115b9050919050565b600081359050611086816114fa565b92915050565b60008135905061109b81611511565b92915050565b6000602082840312156110b7576110b66114c9565b5b60006110c584828501611077565b91505092915050565b600080604083850312156110e5576110e46114c9565b5b60006110f385828601611077565b92505060206111048582860161108c565b9150509250929050565b600060208284031215611124576111236114c9565b5b60006111328482850161108c565b91505092915050565b60008060408385031215611152576111516114c9565b5b60006111608582860161108c565b92505060206111718582860161108c565b9150509250929050565b6000611188601783611262565b9150611193826114ce565b602082019050919050565b60006111ab600083611257565b91506111b6826114f7565b600082019050919050565b6111ca816113ba565b82525050565b60006111db8261119e565b9150819050919050565b600060208201905081810360008301526111fe8161117b565b9050919050565b600060208201905061121a60008301846111c1565b92915050565b600060608201905061123560008301866111c1565b61124260208301856111c1565b61124f60408301846111c1565b949350505050565b600081905092915050565b600082825260208201905092915050565b600061127e826113ba565b9150611289836113ba565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156112be576112bd61140d565b5b828201905092915050565b60006112d4826113ba565b91506112df836113ba565b9250826112ef576112ee61143c565b5b828204905092915050565b6000611305826113ba565b9150611310836113ba565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156113495761134861140d565b5b828202905092915050565b600061135f826113ba565b915061136a836113ba565b92508282101561137d5761137c61140d565b5b828203905092915050565b60006113938261139a565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006113cf826113ba565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156114025761140161140d565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600080fd5b7f546f6f20736f6f6e2e204e65656420746f207761697421000000000000000000600082015250565b50565b61150381611388565b811461150e57600080fd5b50565b61151a816113ba565b811461152557600080fd5b5056fea2646970667358221220f76c4142d392ade4b7f6f207df239efd69013bfa85c03adae13093fa092867da64736f6c63430008070033
Deployed Bytecode
0x60806040526004361061039b5760003560e01c8063773fcb5c116101dc578063bf56b37111610102578063dd62ed3e116100a0578063f887ea401161006f578063f887ea4014610db3578063fabe628314610dde578063fe9fbb8014610e07578063ffb54a9914610e44576103a2565b8063dd62ed3e14610cfb578063e2dd8ca014610d38578063f0b37c0414610d61578063f2fde38b14610d8a576103a2565b8063d829d3f8116100dc578063d829d3f814610c53578063d920334e14610c7c578063da00097d14610ca5578063dbe1c4d514610cd0576103a2565b8063bf56b37114610bd2578063ca33e64c14610bfd578063d7c94efd14610c28576103a2565b806395d89b411161017a578063a9f7864b11610149578063a9f7864b14610b2c578063b0a616a914610b55578063b6a5d7de14610b7e578063bad3ea6a14610ba7576103a2565b806395d89b4114610a6e57806398118cb414610a99578063a8aa1b3114610ac4578063a9059cbb14610aef576103a2565b8063807c2d9c116101b6578063807c2d9c146109b057806384f6820a146109db578063893d20e814610a065780638b42507f14610a31576103a2565b8063773fcb5c146109335780637d1db4a51461095c5780637db1342c14610987576103a2565b8063315dca29116102c1578063479f66d81161025f578063650c42261161022e578063650c4226146108775780636b67c4df146108a057806370a08231146108cb57806375f0a87414610908576103a2565b8063479f66d8146107bb5780634a74bb02146107e4578063531484161461080f578063571ac8b01461083a576103a2565b80633f4218e01161029b5780633f4218e0146106ed5780634102eedc1461072a5780634355855a1461075357806344de2e4c14610790576103a2565b8063315dca291461065e57806334c70889146106875780633bbac579146106b0576103a2565b806313374e7a116103395780632b112e49116103085780632b112e49146105a05780632bb14e1d146105cb5780632f54bf6e146105f6578063313ce56714610633576103a2565b806313374e7a146104e257806318160ddd1461050d5780631df4ccfc1461053857806323b872dd14610563576103a2565b8063095ea7b311610375578063095ea7b31461042857806309ad803d146104655780630d2959801461048e5780631107b3a5146104b7576103a2565b806303898c17146103a75780630445b667146103d257806306fdde03146103fd576103a2565b366103a257005b600080fd5b3480156103b357600080fd5b506103bc610e6f565b6040516103c991906146b4565b60405180910390f35b3480156103de57600080fd5b506103e7610e75565b6040516103f491906146b4565b60405180910390f35b34801561040957600080fd5b50610412610e7b565b60405161041f91906144f2565b60405180910390f35b34801561043457600080fd5b5061044f600480360381019061044a9190613e5c565b610eb8565b60405161045c91906144a1565b60405180910390f35b34801561047157600080fd5b5061048c6004803603810190610487919061401c565b610faa565b005b34801561049a57600080fd5b506104b560048036038101906104b09190613e9c565b611169565b005b3480156104c357600080fd5b506104cc6111d6565b6040516104d991906146b4565b60405180910390f35b3480156104ee57600080fd5b506104f76111dc565b60405161050491906146b4565b60405180910390f35b34801561051957600080fd5b506105226111e2565b60405161052f91906146b4565b60405180910390f35b34801561054457600080fd5b5061054d6111ec565b60405161055a91906146b4565b60405180910390f35b34801561056f57600080fd5b5061058a60048036038101906105859190613dc9565b6111f2565b60405161059791906144a1565b60405180910390f35b3480156105ac57600080fd5b506105b56113f2565b6040516105c291906146b4565b60405180910390f35b3480156105d757600080fd5b506105e0611474565b6040516105ed91906146b4565b60405180910390f35b34801561060257600080fd5b5061061d60048036038101906106189190613caf565b61147a565b60405161062a91906144a1565b60405180910390f35b34801561063f57600080fd5b506106486114d3565b6040516106559190614752565b60405180910390f35b34801561066a57600080fd5b5061068560048036038101906106809190613d76565b6114dc565b005b34801561069357600080fd5b506106ae60048036038101906106a99190613ec9565b6115ec565b005b3480156106bc57600080fd5b506106d760048036038101906106d29190613caf565b611674565b6040516106e491906144a1565b60405180910390f35b3480156106f957600080fd5b50610714600480360381019061070f9190613caf565b611694565b60405161072191906144a1565b60405180910390f35b34801561073657600080fd5b50610751600480360381019061074c9190613e1c565b6116b4565b005b34801561075f57600080fd5b5061077a60048036038101906107759190613caf565b611757565b60405161078791906144a1565b60405180910390f35b34801561079c57600080fd5b506107a5611777565b6040516107b291906144a1565b60405180910390f35b3480156107c757600080fd5b506107e260048036038101906107dd9190613f1c565b61178a565b005b3480156107f057600080fd5b506107f96117eb565b60405161080691906144a1565b60405180910390f35b34801561081b57600080fd5b506108246117fe565b60405161083191906146b4565b60405180910390f35b34801561084657600080fd5b50610861600480360381019061085c9190613caf565b611804565b60405161086e91906144a1565b60405180910390f35b34801561088357600080fd5b5061089e6004803603810190610899919061401c565b611837565b005b3480156108ac57600080fd5b506108b56119f6565b6040516108c291906146b4565b60405180910390f35b3480156108d757600080fd5b506108f260048036038101906108ed9190613caf565b6119fc565b6040516108ff91906146b4565b60405180910390f35b34801561091457600080fd5b5061091d611a45565b60405161092a91906143b8565b60405180910390f35b34801561093f57600080fd5b5061095a60048036038101906109559190613e1c565b611a6b565b005b34801561096857600080fd5b50610971611d0b565b60405161097e91906146b4565b60405180910390f35b34801561099357600080fd5b506109ae60048036038101906109a99190613f1c565b611d11565b005b3480156109bc57600080fd5b506109c5611d63565b6040516109d291906146b4565b60405180910390f35b3480156109e757600080fd5b506109f0611d69565b6040516109fd91906146b4565b60405180910390f35b348015610a1257600080fd5b50610a1b611d6f565b604051610a2891906143b8565b60405180910390f35b348015610a3d57600080fd5b50610a586004803603810190610a539190613caf565b611d98565b604051610a6591906144a1565b60405180910390f35b348015610a7a57600080fd5b50610a83611db8565b604051610a9091906144f2565b60405180910390f35b348015610aa557600080fd5b50610aae611df5565b604051610abb91906146b4565b60405180910390f35b348015610ad057600080fd5b50610ad9611dfb565b604051610ae691906143b8565b60405180910390f35b348015610afb57600080fd5b50610b166004803603810190610b119190613e5c565b611e21565b604051610b2391906144a1565b60405180910390f35b348015610b3857600080fd5b50610b536004803603810190610b4e9190613f89565b611e36565b005b348015610b6157600080fd5b50610b7c6004803603810190610b779190613f49565b611f11565b005b348015610b8a57600080fd5b50610ba56004803603810190610ba09190613caf565b611fec565b005b348015610bb357600080fd5b50610bbc61208e565b604051610bc991906144bc565b60405180910390f35b348015610bde57600080fd5b50610be76120b4565b604051610bf491906146b4565b60405180910390f35b348015610c0957600080fd5b50610c126120ba565b604051610c1f91906143b8565b60405180910390f35b348015610c3457600080fd5b50610c3d6120e0565b604051610c4a91906146b4565b60405180910390f35b348015610c5f57600080fd5b50610c7a6004803603810190610c759190613e9c565b6120e6565b005b348015610c8857600080fd5b50610ca36004803603810190610c9e9190613f1c565b61214b565b005b348015610cb157600080fd5b50610cba61219d565b604051610cc791906144a1565b60405180910390f35b348015610cdc57600080fd5b50610ce56121b0565b604051610cf291906146b4565b60405180910390f35b348015610d0757600080fd5b50610d226004803603810190610d1d9190613d36565b6121b6565b604051610d2f91906146b4565b60405180910390f35b348015610d4457600080fd5b50610d5f6004803603810190610d5a9190613e1c565b61223d565b005b348015610d6d57600080fd5b50610d886004803603810190610d839190613caf565b6122e0565b005b348015610d9657600080fd5b50610db16004803603810190610dac9190613d09565b612383565b005b348015610dbf57600080fd5b50610dc861249c565b604051610dd591906144d7565b60405180910390f35b348015610dea57600080fd5b50610e056004803603810190610e009190613e1c565b6124c2565b005b348015610e1357600080fd5b50610e2e6004803603810190610e299190613caf565b612565565b604051610e3b91906144a1565b60405180910390f35b348015610e5057600080fd5b50610e596125bb565b604051610e6691906144a1565b60405180910390f35b60135481565b60215481565b60606040518060400160405280600981526020017f4761792053717569640000000000000000000000000000000000000000000000815250905090565b600081600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610f9891906146b4565b60405180910390a36001905092915050565b610fb333612565565b610ff2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe990614694565b60405180910390fd5b6000841015611036576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102d90614594565b60405180910390fd5b600a82111561107a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611071906145d4565b60405180910390fd5b60008110156110be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b590614574565b60405180910390fd5b600a831015611102576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f990614614565b60405180910390fd5b83600f8190555082601381905550816011819055508060158190555061115d60135461114f601554611141601154600f546125ce90919063ffffffff16565b6125ce90919063ffffffff16565b6125ce90919063ffffffff16565b60178190555050505050565b6111723361147a565b6111b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a890614634565b60405180910390fd5b80601e60006101000a81548160ff0219169083151502179055506111d36125e4565b50565b600f5481565b60115481565b6000600454905090565b60165481565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146113de5761135d826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125ed9092919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6113e9848484612642565b90509392505050565b600061146f611422600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166119fc565b611461611450600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166119fc565b6004546130c990919063ffffffff16565b6130c990919063ffffffff16565b905090565b60125481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006002905090565b6114e533612565565b611524576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151b90614694565b60405180910390fd5b82601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6115f533612565565b611634576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162b90614694565b60405180910390fd5b82602060016101000a81548160ff0219169083151502179055508160218190555080602060026101000a81548160ff021916908315150217905550505050565b600d6020528060005260406000206000915054906101000a900460ff1681565b600a6020528060005260406000206000915054906101000a900460ff1681565b6116bd33612565565b6116fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f390614694565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600c6020528060005260406000206000915054906101000a900460ff1681565b600760009054906101000a900460ff1681565b61179333612565565b6117d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c990614694565b60405180910390fd5b620b71b081106117e157600080fd5b80601f8190555050565b602060019054906101000a900460ff1681565b60175481565b6000611830827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610eb8565b9050919050565b61184033612565565b61187f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187690614694565b60405180910390fd5b60008410156118c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ba906145f4565b60405180910390fd5b600a821115611907576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118fe90614654565b60405180910390fd5b600081101561194b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194290614674565b60405180910390fd5b600a83101561198f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198690614554565b60405180910390fd5b83600e819055508260128190555081601081905550806014819055506119ea6012546119dc6014546119ce601054600e546125ce90919063ffffffff16565b6125ce90919063ffffffff16565b6125ce90919063ffffffff16565b60168190555050505050565b60105481565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611a7433612565565b611ab3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aaa90614694565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015611b3d5750601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b611b4657600080fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015611c3857601e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968360006040518363ffffffff1660e01b8152600401611c019291906143ee565b600060405180830381600087803b158015611c1b57600080fd5b505af1158015611c2f573d6000803e3d6000fd5b50505050611d07565b601e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9683600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401611cd4929190614417565b600060405180830381600087803b158015611cee57600080fd5b505af1158015611d02573d6000803e3d6000fd5b505050505b5050565b60055481565b611d1a33612565565b611d59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5090614694565b60405180910390fd5b8060068190555050565b60065481565b60155481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600b6020528060005260406000206000915054906101000a900460ff1681565b60606040518060400160405280600481526020017f4741595900000000000000000000000000000000000000000000000000000000815250905090565b600e5481565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611e2e338484612642565b905092915050565b611e3f33612565565b611e7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7590614694565b60405180910390fd5b601e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632d48e89683836040518363ffffffff1660e01b8152600401611edb929190614729565b600060405180830381600087803b158015611ef557600080fd5b505af1158015611f09573d6000803e3d6000fd5b505050505050565b611f1a3361147a565b611f59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5090614634565b60405180910390fd5b6000479050828111611fa0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9790614534565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f19350505050158015611fe6573d6000803e3d6000fd5b50505050565b611ff53361147a565b612034576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202b90614634565b60405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b601e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601d5481565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60145481565b6120ef33612565565b61212e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212590614694565b60405180910390fd5b80600760006101000a81548160ff02191690831515021790555050565b61215433612565565b612193576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161218a90614694565b60405180910390fd5b8060058190555050565b602060029054906101000a900460ff1681565b60225481565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6122463361147a565b612285576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227c90614634565b60405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6122e93361147a565b612328576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161231f90614634565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61238c3361147a565b6123cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123c290614634565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861638160405161249191906143d3565b60405180910390a150565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6124cb33612565565b61250a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161250190614694565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b601e60009054906101000a900460ff1681565b600081836125dc91906147cd565b905092915050565b42601d81905550565b6000838311158290612635576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262c91906144f2565b60405180910390fd5b5082840390509392505050565b6000602060009054906101000a900460ff161561266b576126648484846130df565b90506130c2565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561270f5750600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561276457601e60009054906101000a900460ff16612763576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161275a906145b4565b60405180910390fd5b5b600554821115806127be5750600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6127fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127f490614514565b60405180910390fd5b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156128685750602060009054906101000a900460ff16155b80156128805750602060019054906101000a900460ff165b80156128cd5750602154600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b156128db576128da6132b2565b5b6128e361398f565b15801561293d5750601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b1561298f576000600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541161298e57600080fd5b5b602254601d5461299f91906147cd565b421080156129fb5750601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15612a94576001600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600115157f3159dadbd8e2d720a851b412e3358e7e44bb11734c9bfd5715340e21798e8b2584604051612a8b91906143b8565b60405180910390a25b612b1d826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125ed9092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612bc65750600760009054906101000a900460ff165b15612c2c57600654612c2083600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125ce90919063ffffffff16565b1115612c2b57600080fd5b5b6000600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612cd25750600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612cdc5782612ce8565b612ce785858561399c565b5b9050612d3c81600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125ce90919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612ea257601e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9686600860008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401612e6c929190614417565b600060405180830381600087803b158015612e8657600080fd5b505af1925050508015612e97575060015b612ea057612ea1565b5b5b600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612fc557601e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9685600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401612f8f929190614417565b600060405180830381600087803b158015612fa957600080fd5b505af1925050508015612fba575060015b612fc357612fc4565b5b5b601e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ffb2c479601f546040518263ffffffff1660e01b815260040161302291906146b4565b600060405180830381600087803b15801561303c57600080fd5b505af192505050801561304d575060015b61305657613057565b5b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516130b491906146b4565b60405180910390a360019150505b9392505050565b600081836130d791906148ae565b905092915050565b600061316a826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125ed9092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506131ff82600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125ce90919063ffffffff16565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161329f91906146b4565b60405180910390a3600190509392505050565b6001602060006101000a81548160ff0219169083151502179055506000600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600061334f6002613341601654613333600e5487613c0590919063ffffffff16565b613c1b90919063ffffffff16565b613c1b90919063ffffffff16565b9050600061336682846130c990919063ffffffff16565b90506000600267ffffffffffffffff81111561338557613384614a75565b5b6040519080825280602002602001820160405280156133b35781602001602082028036833780820191505090505b50905030816000815181106133cb576133ca614a46565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561346d57600080fd5b505afa158015613481573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134a59190613cdc565b816001815181106134b9576134b8614a46565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016135579594939291906146cf565b600060405180830381600087803b15801561357157600080fd5b505af1158015613585573d6000803e3d6000fd5b50505050600047905060006135ba6135a96002600e54613c1b90919063ffffffff16565b6016546130c990919063ffffffff16565b905060006135f860026135ea846135dc600e5488613c0590919063ffffffff16565b613c1b90919063ffffffff16565b613c1b90919063ffffffff16565b905060006136238361361560125487613c0590919063ffffffff16565b613c1b90919063ffffffff16565b9050600061364c8261363e85886130c990919063ffffffff16565b6130c990919063ffffffff16565b9050601e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b1580156136b857600080fd5b505af1935050505080156136ca575060015b6136d3576136d4565b5b60006136fd856136ef60145489613c0590919063ffffffff16565b613c1b90919063ffffffff16565b9050600061371482846130c990919063ffffffff16565b90506000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168261753090604051613762906143a3565b600060405180830381858888f193505050503d80600081146137a0576040519150601f19603f3d011682016040523d82523d6000602084013e6137a5565b606091505b505090506000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1684617530906040516137f5906143a3565b600060405180830381858888f193505050503d8060008114613833576040519150601f19603f3d011682016040523d82523d6000602084013e613838565b606091505b50509050600091506000905060008c111561396557601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71988308f600080601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016138d696959493929190614440565b6060604051808303818588803b1580156138ef57600080fd5b505af1158015613903573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906139289190613fc9565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506878d60405161395c929190614729565b60405180910390a15b505050505050505050505050506000602060006101000a81548160ff021916908315150217905550565b600080601d541415905090565b6000808373ffffffffffffffffffffffffffffffffffffffff16601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146139fc57601654613a00565b6017545b905060011515600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415613a645760639050613ac3565b60011515600d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415613ac257606390505b5b6000613aeb6064613add8487613c0590919063ffffffff16565b613c1b90919063ffffffff16565b9050613b3f81600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125ce90919063ffffffff16565b600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613bdf91906146b4565b60405180910390a3613bfa81856130c990919063ffffffff16565b925050509392505050565b60008183613c139190614854565b905092915050565b60008183613c299190614823565b905092915050565b600081359050613c4081614e02565b92915050565b600081519050613c5581614e02565b92915050565b600081359050613c6a81614e19565b92915050565b600081359050613c7f81614e30565b92915050565b600081359050613c9481614e47565b92915050565b600081519050613ca981614e47565b92915050565b600060208284031215613cc557613cc4614aa4565b5b6000613cd384828501613c31565b91505092915050565b600060208284031215613cf257613cf1614aa4565b5b6000613d0084828501613c46565b91505092915050565b600060208284031215613d1f57613d1e614aa4565b5b6000613d2d84828501613c5b565b91505092915050565b60008060408385031215613d4d57613d4c614aa4565b5b6000613d5b85828601613c31565b9250506020613d6c85828601613c31565b9150509250929050565b600080600060608486031215613d8f57613d8e614aa4565b5b6000613d9d86828701613c31565b9350506020613dae86828701613c31565b9250506040613dbf86828701613c31565b9150509250925092565b600080600060608486031215613de257613de1614aa4565b5b6000613df086828701613c31565b9350506020613e0186828701613c31565b9250506040613e1286828701613c85565b9150509250925092565b60008060408385031215613e3357613e32614aa4565b5b6000613e4185828601613c31565b9250506020613e5285828601613c70565b9150509250929050565b60008060408385031215613e7357613e72614aa4565b5b6000613e8185828601613c31565b9250506020613e9285828601613c85565b9150509250929050565b600060208284031215613eb257613eb1614aa4565b5b6000613ec084828501613c70565b91505092915050565b600080600060608486031215613ee257613ee1614aa4565b5b6000613ef086828701613c70565b9350506020613f0186828701613c85565b9250506040613f1286828701613c70565b9150509250925092565b600060208284031215613f3257613f31614aa4565b5b6000613f4084828501613c85565b91505092915050565b60008060408385031215613f6057613f5f614aa4565b5b6000613f6e85828601613c85565b9250506020613f7f85828601613c5b565b9150509250929050565b60008060408385031215613fa057613f9f614aa4565b5b6000613fae85828601613c85565b9250506020613fbf85828601613c85565b9150509250929050565b600080600060608486031215613fe257613fe1614aa4565b5b6000613ff086828701613c9a565b935050602061400186828701613c9a565b925050604061401286828701613c9a565b9150509250925092565b6000806000806080858703121561403657614035614aa4565b5b600061404487828801613c85565b945050602061405587828801613c85565b935050604061406687828801613c85565b925050606061407787828801613c85565b91505092959194509250565b600061408f83836140aa565b60208301905092915050565b6140a481614949565b82525050565b6140b3816148e2565b82525050565b6140c2816148e2565b82525050565b60006140d38261477d565b6140dd81856147a0565b93506140e88361476d565b8060005b838110156141195781516141008882614083565b975061410b83614793565b9250506001810190506140ec565b5085935050505092915050565b61412f81614906565b82525050565b61413e8161495b565b82525050565b61414d8161496d565b82525050565b61415c8161497f565b82525050565b600061416d82614788565b61417781856147bc565b93506141878185602086016149b5565b61419081614aa9565b840191505092915050565b60006141a86011836147bc565b91506141b382614aba565b602082019050919050565b60006141cb6010836147bc565b91506141d682614ae3565b602082019050919050565b60006141ee602c836147bc565b91506141f982614b0c565b604082019050919050565b6000614211602a836147bc565b915061421c82614b5b565b604082019050919050565b6000614234602a836147bc565b915061423f82614baa565b604082019050919050565b60006142576014836147bc565b915061426282614bf9565b602082019050919050565b600061427a6031836147bc565b915061428582614c22565b604082019050919050565b600061429d6029836147bc565b91506142a882614c71565b604082019050919050565b60006142c0602d836147bc565b91506142cb82614cc0565b604082019050919050565b60006142e36006836147bc565b91506142ee82614d0f565b602082019050919050565b60006143066000836147b1565b915061431182614d38565b600082019050919050565b60006143296030836147bc565b915061433482614d3b565b604082019050919050565b600061434c6029836147bc565b915061435782614d8a565b604082019050919050565b600061436f600b836147bc565b915061437a82614dd9565b602082019050919050565b61438e81614932565b82525050565b61439d8161493c565b82525050565b60006143ae826142f9565b9150819050919050565b60006020820190506143cd60008301846140b9565b92915050565b60006020820190506143e8600083018461409b565b92915050565b600060408201905061440360008301856140b9565b6144106020830184614153565b9392505050565b600060408201905061442c60008301856140b9565b6144396020830184614385565b9392505050565b600060c08201905061445560008301896140b9565b6144626020830188614385565b61446f6040830187614153565b61447c6060830186614153565b61448960808301856140b9565b61449660a0830184614385565b979650505050505050565b60006020820190506144b66000830184614126565b92915050565b60006020820190506144d16000830184614135565b92915050565b60006020820190506144ec6000830184614144565b92915050565b6000602082019050818103600083015261450c8184614162565b905092915050565b6000602082019050818103600083015261452d8161419b565b9050919050565b6000602082019050818103600083015261454d816141be565b9050919050565b6000602082019050818103600083015261456d816141e1565b9050919050565b6000602082019050818103600083015261458d81614204565b9050919050565b600060208201905081810360008301526145ad81614227565b9050919050565b600060208201905081810360008301526145cd8161424a565b9050919050565b600060208201905081810360008301526145ed8161426d565b9050919050565b6000602082019050818103600083015261460d81614290565b9050919050565b6000602082019050818103600083015261462d816142b3565b9050919050565b6000602082019050818103600083015261464d816142d6565b9050919050565b6000602082019050818103600083015261466d8161431c565b9050919050565b6000602082019050818103600083015261468d8161433f565b9050919050565b600060208201905081810360008301526146ad81614362565b9050919050565b60006020820190506146c96000830184614385565b92915050565b600060a0820190506146e46000830188614385565b6146f16020830187614153565b818103604083015261470381866140c8565b905061471260608301856140b9565b61471f6080830184614385565b9695505050505050565b600060408201905061473e6000830185614385565b61474b6020830184614385565b9392505050565b60006020820190506147676000830184614394565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006147d882614932565b91506147e383614932565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614818576148176149e8565b5b828201905092915050565b600061482e82614932565b915061483983614932565b92508261484957614848614a17565b5b828204905092915050565b600061485f82614932565b915061486a83614932565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156148a3576148a26149e8565b5b828202905092915050565b60006148b982614932565b91506148c483614932565b9250828210156148d7576148d66149e8565b5b828203905092915050565b60006148ed82614912565b9050919050565b60006148ff82614912565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061495482614991565b9050919050565b600061496682614991565b9050919050565b600061497882614991565b9050919050565b600061498a82614932565b9050919050565b600061499c826149a3565b9050919050565b60006149ae82614912565b9050919050565b60005b838110156149d35780820151818401526020810190506149b8565b838111156149e2576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b7f496e73756666696369656e742043524f00000000000000000000000000000000600082015250565b7f5265776172647320546178206f6e20627579732063616e206e6f74206265206c60008201527f6f776572207468616e2032250000000000000000000000000000000000000000602082015250565b7f5465616d20546178206f6e2073656c6c732063616e206e6f74206265206c6f7760008201527f6572207468616e20302500000000000000000000000000000000000000000000602082015250565b7f4c5020546178206f6e2073656c6c732063616e206e6f7420626520686967686560008201527f72207468616e2031302500000000000000000000000000000000000000000000602082015250565b7f54726164696e67206e6f74206f70656e20796574000000000000000000000000600082015250565b7f4d61726b6574696e6720546178206f6e2073656c6c732063616e206e6f74206260008201527f6520686967686572207468616e20313025000000000000000000000000000000602082015250565b7f4c5020546178206f6e20627579732063616e206e6f742062652068696768657260008201527f207468616e203130250000000000000000000000000000000000000000000000602082015250565b7f5265776172647320546178206f6e2073656c6c732063616e206e6f742062652060008201527f6c6f776572207468616e20322500000000000000000000000000000000000000602082015250565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b50565b7f4d61726b6574696e6720546178206f6e20627579732063616e206e6f7420626560008201527f20686967686572207468616e2031302500000000000000000000000000000000602082015250565b7f5465616d20546178206f6e20627579732063616e206e6f74206265206c6f776560008201527f72207468616e2030250000000000000000000000000000000000000000000000602082015250565b7f21415554484f52495a4544000000000000000000000000000000000000000000600082015250565b614e0b816148e2565b8114614e1657600080fd5b50565b614e22816148f4565b8114614e2d57600080fd5b50565b614e3981614906565b8114614e4457600080fd5b50565b614e5081614932565b8114614e5b57600080fd5b5056fea2646970667358221220af0c964466b9e65ed9abfec8c4e49d0723d2fc7fab4cb8f35222c47cef4e153664736f6c63430008070033
Deployed Bytecode Sourcemap
20869:13903:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21982:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22749:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24225:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25036:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27258:792;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32259:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21820:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21902;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24462:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22095:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29145:370;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24634:142;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21946:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20413:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24384:72;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28058:276;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28342;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21736:37;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21572:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25906:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21678:49;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21415:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28834:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22648:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22129:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25260:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26548:702;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21864:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24784:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22228:75;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26172:368;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21291:55;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25681:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21353:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22056:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24556:70;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21623:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24302:76;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21782:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22427:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28981:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28626:200;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;34455:248;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20206:94;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22527:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22455:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22169:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22023:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25795:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25570;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22695:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22810:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24895:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32432:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20308:97;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20639:173;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22390:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26033:131;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20524:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22487:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21982:32;;;;:::o;22749:52::-;;;;:::o;24225:71::-;24264:13;24288:5;;;;;;;;;;;;;;;;;24281:12;;24225:71;:::o;25036:216::-;25111:4;25163:6;25128:11;:23;25140:10;25128:23;;;;;;;;;;;;;;;:32;25152:7;25128:32;;;;;;;;;;;;;;;:41;;;;25206:7;25185:37;;25194:10;25185:37;;;25215:6;25185:37;;;;;;:::i;:::-;;;;;;;;25240:4;25233:11;;25036:216;;;;:::o;27258:792::-;20147:24;20160:10;20147:12;:24::i;:::-;20139:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;27440:1:::1;27423:13;:18;;27415:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;27530:2;27507:19;:25;;27499:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;27623:1;27605:14;:19;;27597:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;27710:2;27690:16;:22;;27682:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;27794:13;27775:16;:32;;;;27835:16;27818:14;:33;;;;27881:19;27862:16;:38;;;;27925:14;27911:11;:28;;;;27967:75;28027:14;;27967:55;28010:11;;27967:38;27988:16;;27967;;:20;;:38;;;;:::i;:::-;:42;;:55;;;;:::i;:::-;:59;;:75;;;;:::i;:::-;27952:12;:90;;;;27258:792:::0;;;;:::o;32259:117::-;20057:19;20065:10;20057:7;:19::i;:::-;20049:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;32340:9:::1;32326:11;;:23;;;;;;;;;;;;;;;;;;32360:8;:6;:8::i;:::-;32259:117:::0;:::o;21820:35::-;;;;:::o;21902:::-;;;;:::o;24462:88::-;24517:7;24535:12;;24528:19;;24462:88;:::o;22095:27::-;;;;:::o;29145:370::-;29245:4;29302:17;29267:11;:19;29279:6;29267:19;;;;;;;;;;;;;;;:31;29287:10;29267:31;;;;;;;;;;;;;;;;:52;29264:186;;29369:69;29405:6;29369:69;;;;;;;;;;;;;;;;;:11;:19;29381:6;29369:19;;;;;;;;;;;;;;;:31;29389:10;29369:31;;;;;;;;;;;;;;;;:35;;:69;;;;;:::i;:::-;29335:11;:19;29347:6;29335:19;;;;;;;;;;;;;;;:31;29355:10;29335:31;;;;;;;;;;;;;;;:103;;;;29264:186;29467:40;29481:6;29489:9;29500:6;29467:13;:40::i;:::-;29460:47;;29145:370;;;;;:::o;24634:142::-;24687:7;24714:54;24752:15;24762:4;;;;;;;;;;;24752:9;:15::i;:::-;24714:33;24731:15;24741:4;;;;;;;;;;;24731:9;:15::i;:::-;24714:12;;:16;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;24707:61;;24634:142;:::o;21946:29::-;;;;:::o;20413:103::-;20468:4;20503:5;;;;;;;;;;;20492:16;;:7;:16;;;20485:23;;20413:103;;;:::o;24384:72::-;24428:5;21092:1;24437:16;;24384:72;:::o;28058:276::-;20147:24;20160:10;20147:12;:24::i;:::-;20139:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;28222:20:::1;28198:21;;:44;;;;;;;;;;;;;;;;;;28271:18;28253:15;;:36;;;;;;;;;;;;;;;;;;28313:13;28300:10;;:26;;;;;;;;;;;;;;;;;;28058:276:::0;;;:::o;28342:::-;20147:24;20160:10;20147:12;:24::i;:::-;20139:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;28499:14:::1;28474:21;;:39;;;;;;;;;;;;;;;;;;28540:16;28524:13;:32;;;;28595:15;28567:25;;:43;;;;;;;;;;;;;;;;;;28342:276:::0;;;:::o;21736:37::-;;;;;;;;;;;;;;;;;;;;;;:::o;21572:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;25906:119::-;20147:24;20160:10;20147:12;:24::i;:::-;20139:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;26011:6:::1;25989:11;:19;26001:6;25989:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;25906:119:::0;;:::o;21678:49::-;;;;;;;;;;;;;;;;;;;;;;:::o;21415:33::-;;;;;;;;;;;;;:::o;28834:139::-;20147:24;20160:10;20147:12;:24::i;:::-;20139:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;28927:6:::1;28921:3;:12;28913:21;;;::::0;::::1;;28962:3;28945:14;:20;;;;28834:139:::0;:::o;22648:40::-;;;;;;;;;;;;;:::o;22129:31::-;;;;:::o;25260:122::-;25315:4;25339:35;25347:7;25356:17;25339:7;:35::i;:::-;25332:42;;25260:122;;;:::o;26548:702::-;20147:24;20160:10;20147:12;:24::i;:::-;20139:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;26708:1:::1;26695:9;:14;;26687:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26793:2;26774:15;:21;;26766:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;26881:1;26867:10;:15;;26859:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;26963:2;26947:12;:18;;26939:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;27042:9;27027:12;:24;;;;27075:12;27062:10;:25;;;;27113:15;27098:12;:30;;;;27149:10;27139:7;:20;;;;27183:59;27231:10;;27183:43;27218:7;;27183:30;27200:12;;27183;;:16;;:30;;;;:::i;:::-;:34;;:43;;;;:::i;:::-;:47;;:59;;;;:::i;:::-;27172:8;:70;;;;26548:702:::0;;;;:::o;21864:31::-;;;;:::o;24784:105::-;24850:7;24868:9;:18;24878:7;24868:18;;;;;;;;;;;;;;;;24861:25;;24784:105;;;:::o;22228:75::-;;;;;;;;;;;;;:::o;26172:368::-;20147:24;20160:10;20147:12;:24::i;:::-;20139:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;26290:4:::1;26272:23;;:6;:23;;;;:41;;;;;26309:4;;;;;;;;;;;26299:14;;:6;:14;;;;26272:41;26264:50;;;::::0;::::1;;26352:6;26325:16;:24;26342:6;26325:24;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;26374:6;26371:162;;;26396:19;;;;;;;;;;;:28;;;26425:6;26433:1;26396:39;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;26371:162;;;26466:19;;;;;;;;;;;:28;;;26495:6;26503:9;:17;26513:6;26503:17;;;;;;;;;;;;;;;;26466:55;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;26371:162;26172:368:::0;;:::o;21291:55::-;;;;:::o;25681:106::-;20147:24;20160:10;20147:12;:24::i;:::-;20139:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;25771:8:::1;25757:10;:22;;;;25681:106:::0;:::o;21353:53::-;;;;:::o;22056:30::-;;;;:::o;24556:70::-;24600:7;24618:5;;;;;;;;;;;24611:12;;24556:70;:::o;21623:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;24302:76::-;24344:13;24368:7;;;;;;;;;;;;;;;;;24361:14;;24302:76;:::o;21782:31::-;;;;:::o;22427:19::-;;;;;;;;;;;;;:::o;28981:156::-;29061:4;29085:44;29099:10;29111:9;29122:6;29085:13;:44::i;:::-;29078:51;;28981:156;;;;:::o;28626:200::-;20147:24;20160:10;20147:12;:24::i;:::-;20139:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;28742:19:::1;;;;;;;;;;;:43;;;28786:11;28799:18;28742:76;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;28626:200:::0;;:::o;34455:248::-;20057:19;20065:10;20057:7;:19::i;:::-;20049:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;34549:23:::1;34575:21;34549:47;;34633:6;34615:15;:24;34607:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;34670:8;:17;;:25;34688:6;34670:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;34538:165;34455:248:::0;;:::o;20206:94::-;20057:19;20065:10;20057:7;:19::i;:::-;20049:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;20288:4:::1;20266:14:::0;:19:::1;20281:3;20266:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;20206:94:::0;:::o;22527:46::-;;;;;;;;;;;;;:::o;22455:25::-;;;;:::o;22169:52::-;;;;;;;;;;;;;:::o;22023:26::-;;;;:::o;25795:103::-;20147:24;20160:10;20147:12;:24::i;:::-;20139:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;25882:8:::1;25865:14;;:25;;;;;;;;;;;;;;;;;;25795:103:::0;:::o;25570:::-;20147:24;20160:10;20147:12;:24::i;:::-;20139:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;25657:8:::1;25642:12;:23;;;;25570:103:::0;:::o;22695:45::-;;;;;;;;;;;;;:::o;22810:29::-;;;;:::o;24895:133::-;24979:7;24997:11;:19;25009:6;24997:19;;;;;;;;;;;;;;;:28;25017:7;24997:28;;;;;;;;;;;;;;;;24990:35;;24895:133;;;;:::o;32432:120::-;20057:19;20065:10;20057:7;:19::i;:::-;20049:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;32539:5:::1;32519;:17;32525:10;32519:17;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;32432:120:::0;;:::o;20308:97::-;20057:19;20065:10;20057:7;:19::i;:::-;20049:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;20392:5:::1;20370:14;:19;20385:3;20370:19;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;20308:97:::0;:::o;20639:173::-;20057:19;20065:10;20057:7;:19::i;:::-;20049:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;20723:3:::1;20715:5;::::0;:11:::1;;;;;;;;;;;;;;;;;;20759:4;20737:14:::0;:19:::1;20752:3;20737:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;20779:25;20800:3;20779:25;;;;;;:::i;:::-;;;;;;;;20639:173:::0;:::o;22390:30::-;;;;;;;;;;;;;:::o;26033:131::-;20147:24;20160:10;20147:12;:24::i;:::-;20139:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;26150:6:::1;26124:15;:23;26140:6;26124:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;26033:131:::0;;:::o;20524:107::-;20580:4;20604:14;:19;20619:3;20604:19;;;;;;;;;;;;;;;;;;;;;;;;;20597:26;;20524:107;;;:::o;22487:31::-;;;;;;;;;;;;;:::o;12412:98::-;12470:7;12501:1;12497;:5;;;;:::i;:::-;12490:12;;12412:98;;;;:::o;25488:74::-;25539:15;25526:10;:28;;;;25488:74::o;12942:240::-;13062:7;13120:1;13115;:6;;13123:12;13107:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;13162:1;13158;:5;13151:12;;12942:240;;;;;:::o;29523:1790::-;29615:4;29637:16;;;;;;;;;;;29634:73;;;29663:41;29678:6;29686:9;29697:6;29663:14;:41::i;:::-;29656:48;;;;29634:73;29723:14;:22;29738:6;29723:22;;;;;;;;;;;;;;;;;;;;;;;;;29722:23;:53;;;;;29750:14;:25;29765:9;29750:25;;;;;;;;;;;;;;;;;;;;;;;;;29749:26;29722:53;29719:128;;;29799:11;;;;;;;;;;;29791:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;29719:128;29877:12;;29867:6;:22;;:52;;;;29893:15;:26;29909:9;29893:26;;;;;;;;;;;;;;;;;;;;;;;;;29867:52;29859:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;29971:4;;;;;;;;;;;29957:18;;:10;:18;;;;:39;;;;;29980:16;;;;;;;;;;;29979:17;29957:39;:64;;;;;30000:21;;;;;;;;;;;29957:64;:109;;;;;30053:13;;30025:9;:24;30043:4;30025:24;;;;;;;;;;;;;;;;:41;;29957:109;29954:128;;;30069:10;:8;:10::i;:::-;29954:128;30098:10;:8;:10::i;:::-;30097:11;:32;;;;;30125:4;;;;;;;;;;;30112:17;;:9;:17;;;30097:32;30094:96;;;30174:1;30154:9;:17;30164:6;30154:17;;;;;;;;;;;;;;;;:21;30146:30;;;;;;30094:96;30238:10;;30225;;:23;;;;:::i;:::-;30207:15;:41;30206:64;;;;;30266:4;;;;;;;;;;;30253:17;;:9;:17;;;;30206:64;30202:172;;;30306:4;30287:5;:16;30293:9;30287:16;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;30357:4;30330:32;;;30346:9;30330:32;;;;;;:::i;:::-;;;;;;;;30202:172;30433:53;30455:6;30433:53;;;;;;;;;;;;;;;;;:9;:17;30443:6;30433:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;30413:9;:17;30423:6;30413:17;;;;;;;;;;;;;;;:73;;;;30503:15;:26;30519:9;30503:26;;;;;;;;;;;;;;;;;;;;;;;;;30502:27;:45;;;;;30533:14;;;;;;;;;;;30502:45;30499:141;;;30617:10;;30581:32;30606:6;30581:9;:20;30591:9;30581:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;:46;;30573:55;;;;;;30499:141;30652:19;30675:11;:19;30687:6;30675:19;;;;;;;;;;;;;;;;;;;;;;;;;30674:20;:47;;;;;30699:11;:22;30711:9;30699:22;;;;;;;;;;;;;;;;;;;;;;;;;30698:23;30674:47;:93;;30761:6;30674:93;;;30724:34;30732:6;30740:9;30751:6;30724:7;:34::i;:::-;30674:93;30652:115;;30801:37;30826:11;30801:9;:20;30811:9;30801:20;;;;;;;;;;;;;;;;:24;;:37;;;;:::i;:::-;30778:9;:20;30788:9;30778:20;;;;;;;;;;;;;;;:60;;;;30884:16;:24;30901:6;30884:24;;;;;;;;;;;;;;;;;;;;;;;;;30880:127;;30929:19;;;;;;;;;;;:28;;;30958:6;30966:9;:17;30976:6;30966:17;;;;;;;;;;;;;;;;30929:55;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30925:71;;;;;;30880:127;31023:16;:27;31040:9;31023:27;;;;;;;;;;;;;;;;;;;;;;;;;31019:136;;31071:19;;;;;;;;;;;:28;;;31100:9;31111;:20;31121:9;31111:20;;;;;;;;;;;;;;;;31071:61;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31067:77;;;;;;31019:136;31171:19;;;;;;;;;;;:27;;;31199:14;;31171:43;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31167:59;;;;;;31260:9;31243:40;;31252:6;31243:40;;;31271:11;31243:40;;;;;;:::i;:::-;;;;;;;;31301:4;31294:11;;;29523:1790;;;;;;:::o;12518:98::-;12576:7;12607:1;12603;:5;;;;:::i;:::-;12596:12;;12518:98;;;;:::o;31321:330::-;31414:4;31451:53;31473:6;31451:53;;;;;;;;;;;;;;;;;:9;:17;31461:6;31451:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;31431:9;:17;31441:6;31431:17;;;;;;;;;;;;;;;:73;;;;31538:32;31563:6;31538:9;:20;31548:9;31538:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;31515:9;:20;31525:9;31515:20;;;;;;;;;;;;;;;:55;;;;31603:9;31586:35;;31595:6;31586:35;;;31614:6;31586:35;;;;;;:::i;:::-;;;;;;;;31639:4;31632:11;;31321:330;;;;;:::o;32560:1887::-;22969:4;22950:16;;:23;;;;;;;;;;;;;;;;;;32614::::1;32640:9;:24;32658:4;32640:24;;;;;;;;;;;;;;;;32614:50;;32675:23;32701:54;32753:1;32701:47;32739:8;;32701:33;32721:12;;32701:15;:19;;:33;;;;:::i;:::-;:37;;:47;;;;:::i;:::-;:51;;:54;;;;:::i;:::-;32675:80;;32766:20;32789:36;32809:15;32789;:19;;:36;;;;:::i;:::-;32766:59;;32838:21;32876:1;32862:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32838:40;;32907:4;32889;32894:1;32889:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;32933:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;32923:4;32928:1;32923:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;32959:6;;;;;;;;;;;:57;;;33031:12;33058:1;33074:4;33101;33121:15;32959:188;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;33160:17;33180:21;33160:41;;33214:19;33236:33;33249:19;33266:1;33249:12;;:16;;:19;;;;:::i;:::-;33236:8;;:12;;:33;;;;:::i;:::-;33214:55;;33282:26;33311:51;33360:1;33311:44;33343:11;33311:27;33325:12;;33311:9;:13;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;:48;;:51;;;;:::i;:::-;33282:80;;33373:27;33403:42;33433:11;33403:25;33417:10;;33403:9;:13;;:25;;;;:::i;:::-;:29;;:42;;;;:::i;:::-;33373:72;;33456:26;33485:58;33523:19;33485:33;33499:18;33485:9;:13;;:33;;;;:::i;:::-;:37;;:58;;;;:::i;:::-;33456:87;;33560:19;;;;;;;;;;;:27;;;33595:19;33560:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;33556:73;;;;;;33641:17;33661:39;33688:11;33661:22;33675:7;;33661:9;:13;;:22;;;;:::i;:::-;:26;;:39;;;;:::i;:::-;33641:59;;33711:22;33736:33;33759:9;33736:18;:22;;:33;;;;:::i;:::-;33711:58;;33785:15;33813;;;;;;;;;;;33805:29;;33842:14;33863:5;33805:68;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33784:89;;;33885:16;33914:10;;;;;;;;;;;33906:24;;33938:9;33954:5;33906:58;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33884:80;;;34030:5;34017:18;;34060:5;34046:19;;34099:1;34081:15;:19;34078:362;;;34116:6;;;;;;;;;;;:22;;;34146:18;34192:4;34216:15;34250:1;34270::::0;34290:21:::1;;;;;;;;;;;34330:15;34116:244;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;34380:48;34392:18;34412:15;34380:48;;;;;;;:::i;:::-;;;;;;;;34078:362;32601:1846;;;;;;;;;;;;;23015:5:::0;22996:16;;:24;;;;;;;;;;;;;;;;;;32560:1887::o;25390:90::-;25433:4;25471:1;25457:10;;:15;;25450:22;;25390:90;:::o;31659:592::-;31745:7;31767:21;31799:9;31791:17;;:4;;;;;;;;;;;:17;;;:43;;31826:8;;31791:43;;;31811:12;;31791:43;31767:67;;31868:4;31848:24;;:5;:16;31854:9;31848:16;;;;;;;;;;;;;;;;;;;;;;;;;:24;;;31845:156;;;31903:2;31887:18;;31845:156;;;31952:4;31935:21;;:5;:13;31941:6;31935:13;;;;;;;;;;;;;;;;;;;;;;;;;:21;;;31932:69;;;31987:2;31971:18;;31932:69;31845:156;32011:17;32031:34;32061:3;32031:25;32042:13;32031:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;32011:54;;32105:39;32134:9;32105;:24;32123:4;32105:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;32078:9;:24;32096:4;32078:24;;;;;;;;;;;;;;;:66;;;;32185:4;32160:42;;32169:6;32160:42;;;32192:9;32160:42;;;;;;:::i;:::-;;;;;;;;32222:21;32233:9;32222:6;:10;;:21;;;;:::i;:::-;32215:28;;;;31659:592;;;;;:::o;12624:98::-;12682:7;12713:1;12709;:5;;;;:::i;:::-;12702:12;;12624:98;;;;:::o;12730:::-;12788:7;12819:1;12815;:5;;;;:::i;:::-;12808:12;;12730: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:179::-;10078:61;10133:5;10078:61;:::i;:::-;10073:3;10066:74;9967:179;;:::o;10152:147::-;10247:45;10286:5;10247:45;:::i;:::-;10242:3;10235:58;10152:147;;:::o;10305:364::-;10393:3;10421:39;10454:5;10421:39;:::i;:::-;10476:71;10540:6;10535:3;10476:71;:::i;:::-;10469:78;;10556:52;10601:6;10596:3;10589:4;10582:5;10578:16;10556:52;:::i;:::-;10633:29;10655:6;10633:29;:::i;:::-;10628:3;10624:39;10617:46;;10397:272;10305:364;;;;:::o;10675:366::-;10817:3;10838:67;10902:2;10897:3;10838:67;:::i;:::-;10831:74;;10914:93;11003:3;10914:93;:::i;:::-;11032:2;11027:3;11023:12;11016:19;;10675:366;;;:::o;11047:::-;11189:3;11210:67;11274:2;11269:3;11210:67;:::i;:::-;11203:74;;11286:93;11375:3;11286:93;:::i;:::-;11404:2;11399:3;11395:12;11388:19;;11047:366;;;:::o;11419:::-;11561:3;11582:67;11646:2;11641:3;11582:67;:::i;:::-;11575:74;;11658:93;11747:3;11658:93;:::i;:::-;11776:2;11771:3;11767:12;11760:19;;11419:366;;;:::o;11791:::-;11933:3;11954:67;12018:2;12013:3;11954:67;:::i;:::-;11947:74;;12030:93;12119:3;12030:93;:::i;:::-;12148:2;12143:3;12139:12;12132:19;;11791:366;;;:::o;12163:::-;12305:3;12326:67;12390:2;12385:3;12326:67;:::i;:::-;12319:74;;12402:93;12491:3;12402:93;:::i;:::-;12520:2;12515:3;12511:12;12504:19;;12163:366;;;:::o;12535:::-;12677:3;12698:67;12762:2;12757:3;12698:67;:::i;:::-;12691:74;;12774:93;12863:3;12774:93;:::i;:::-;12892:2;12887:3;12883:12;12876:19;;12535:366;;;:::o;12907:::-;13049:3;13070:67;13134:2;13129:3;13070:67;:::i;:::-;13063:74;;13146:93;13235:3;13146:93;:::i;:::-;13264:2;13259:3;13255:12;13248:19;;12907:366;;;:::o;13279:::-;13421:3;13442:67;13506:2;13501:3;13442:67;:::i;:::-;13435:74;;13518:93;13607:3;13518:93;:::i;:::-;13636:2;13631:3;13627:12;13620:19;;13279:366;;;:::o;13651:::-;13793:3;13814:67;13878:2;13873:3;13814:67;:::i;:::-;13807:74;;13890:93;13979:3;13890:93;:::i;:::-;14008:2;14003:3;13999:12;13992:19;;13651:366;;;:::o;14023:365::-;14165:3;14186:66;14250:1;14245:3;14186:66;:::i;:::-;14179:73;;14261:93;14350:3;14261:93;:::i;:::-;14379:2;14374:3;14370:12;14363:19;;14023:365;;;:::o;14394:398::-;14553:3;14574:83;14655:1;14650:3;14574:83;:::i;:::-;14567:90;;14666:93;14755:3;14666:93;:::i;:::-;14784:1;14779:3;14775:11;14768:18;;14394:398;;;:::o;14798:366::-;14940:3;14961:67;15025:2;15020:3;14961:67;:::i;:::-;14954:74;;15037:93;15126:3;15037:93;:::i;:::-;15155:2;15150:3;15146:12;15139:19;;14798:366;;;:::o;15170:::-;15312:3;15333:67;15397:2;15392:3;15333:67;:::i;:::-;15326:74;;15409:93;15498:3;15409:93;:::i;:::-;15527:2;15522:3;15518:12;15511:19;;15170:366;;;:::o;15542:::-;15684:3;15705:67;15769:2;15764:3;15705:67;:::i;:::-;15698:74;;15781:93;15870:3;15781:93;:::i;:::-;15899:2;15894:3;15890:12;15883:19;;15542:366;;;:::o;15914:118::-;16001:24;16019:5;16001:24;:::i;:::-;15996:3;15989:37;15914:118;;:::o;16038:112::-;16121:22;16137:5;16121:22;:::i;:::-;16116:3;16109:35;16038:112;;:::o;16156:379::-;16340:3;16362:147;16505:3;16362:147;:::i;:::-;16355:154;;16526:3;16519:10;;16156:379;;;:::o;16541:222::-;16634:4;16672:2;16661:9;16657:18;16649:26;;16685:71;16753:1;16742:9;16738:17;16729:6;16685:71;:::i;:::-;16541:222;;;;:::o;16769:238::-;16870:4;16908:2;16897:9;16893:18;16885:26;;16921:79;16997:1;16986:9;16982:17;16973:6;16921:79;:::i;:::-;16769:238;;;;:::o;17013:348::-;17142:4;17180:2;17169:9;17165:18;17157:26;;17193:71;17261:1;17250:9;17246:17;17237:6;17193:71;:::i;:::-;17274:80;17350:2;17339:9;17335:18;17326:6;17274:80;:::i;:::-;17013:348;;;;;:::o;17367:332::-;17488:4;17526:2;17515:9;17511:18;17503:26;;17539:71;17607:1;17596:9;17592:17;17583:6;17539:71;:::i;:::-;17620:72;17688:2;17677:9;17673:18;17664:6;17620:72;:::i;:::-;17367:332;;;;;:::o;17705:807::-;17954:4;17992:3;17981:9;17977:19;17969:27;;18006:71;18074:1;18063:9;18059:17;18050:6;18006:71;:::i;:::-;18087:72;18155:2;18144:9;18140:18;18131:6;18087:72;:::i;:::-;18169:80;18245:2;18234:9;18230:18;18221:6;18169:80;:::i;:::-;18259;18335:2;18324:9;18320:18;18311:6;18259:80;:::i;:::-;18349:73;18417:3;18406:9;18402:19;18393:6;18349:73;:::i;:::-;18432;18500:3;18489:9;18485:19;18476:6;18432:73;:::i;:::-;17705:807;;;;;;;;;:::o;18518:210::-;18605:4;18643:2;18632:9;18628:18;18620:26;;18656:65;18718:1;18707:9;18703:17;18694:6;18656:65;:::i;:::-;18518:210;;;;:::o;18734:278::-;18855:4;18893:2;18882:9;18878:18;18870:26;;18906:99;19002:1;18991:9;18987:17;18978:6;18906:99;:::i;:::-;18734:278;;;;:::o;19018:270::-;19135:4;19173:2;19162:9;19158:18;19150:26;;19186:95;19278:1;19267:9;19263:17;19254:6;19186:95;:::i;:::-;19018:270;;;;:::o;19294:313::-;19407:4;19445:2;19434:9;19430:18;19422:26;;19494:9;19488:4;19484:20;19480:1;19469:9;19465:17;19458:47;19522:78;19595:4;19586:6;19522:78;:::i;:::-;19514:86;;19294:313;;;;:::o;19613:419::-;19779:4;19817:2;19806:9;19802:18;19794:26;;19866:9;19860:4;19856:20;19852:1;19841:9;19837:17;19830:47;19894:131;20020:4;19894:131;:::i;:::-;19886:139;;19613:419;;;:::o;20038:::-;20204:4;20242:2;20231:9;20227:18;20219:26;;20291:9;20285:4;20281:20;20277:1;20266:9;20262:17;20255:47;20319:131;20445:4;20319:131;:::i;:::-;20311:139;;20038:419;;;:::o;20463:::-;20629:4;20667:2;20656:9;20652:18;20644:26;;20716:9;20710:4;20706:20;20702:1;20691:9;20687:17;20680:47;20744:131;20870:4;20744:131;:::i;:::-;20736:139;;20463:419;;;:::o;20888:::-;21054:4;21092:2;21081:9;21077:18;21069:26;;21141:9;21135:4;21131:20;21127:1;21116:9;21112:17;21105:47;21169:131;21295:4;21169:131;:::i;:::-;21161:139;;20888:419;;;:::o;21313:::-;21479:4;21517:2;21506:9;21502:18;21494:26;;21566:9;21560:4;21556:20;21552:1;21541:9;21537:17;21530:47;21594:131;21720:4;21594:131;:::i;:::-;21586:139;;21313:419;;;:::o;21738:::-;21904:4;21942:2;21931:9;21927:18;21919:26;;21991:9;21985:4;21981:20;21977:1;21966:9;21962:17;21955:47;22019:131;22145:4;22019:131;:::i;:::-;22011:139;;21738:419;;;:::o;22163:::-;22329:4;22367:2;22356:9;22352:18;22344:26;;22416:9;22410:4;22406:20;22402:1;22391:9;22387:17;22380:47;22444:131;22570:4;22444:131;:::i;:::-;22436:139;;22163:419;;;:::o;22588:::-;22754:4;22792:2;22781:9;22777:18;22769:26;;22841:9;22835:4;22831:20;22827:1;22816:9;22812:17;22805:47;22869:131;22995:4;22869:131;:::i;:::-;22861:139;;22588:419;;;:::o;23013:::-;23179:4;23217:2;23206:9;23202:18;23194:26;;23266:9;23260:4;23256:20;23252:1;23241:9;23237:17;23230:47;23294:131;23420:4;23294:131;:::i;:::-;23286:139;;23013:419;;;:::o;23438:::-;23604:4;23642:2;23631:9;23627:18;23619:26;;23691:9;23685:4;23681:20;23677:1;23666:9;23662:17;23655:47;23719:131;23845:4;23719:131;:::i;:::-;23711:139;;23438:419;;;:::o;23863:::-;24029:4;24067:2;24056:9;24052:18;24044:26;;24116:9;24110:4;24106:20;24102:1;24091:9;24087:17;24080:47;24144:131;24270:4;24144:131;:::i;:::-;24136:139;;23863:419;;;:::o;24288:::-;24454:4;24492:2;24481:9;24477:18;24469:26;;24541:9;24535:4;24531:20;24527:1;24516:9;24512:17;24505:47;24569:131;24695:4;24569:131;:::i;:::-;24561:139;;24288:419;;;:::o;24713:::-;24879:4;24917:2;24906:9;24902:18;24894:26;;24966:9;24960:4;24956:20;24952:1;24941:9;24937:17;24930:47;24994:131;25120:4;24994:131;:::i;:::-;24986:139;;24713:419;;;:::o;25138:222::-;25231:4;25269:2;25258:9;25254:18;25246:26;;25282:71;25350:1;25339:9;25335:17;25326:6;25282:71;:::i;:::-;25138:222;;;;:::o;25366:831::-;25629:4;25667:3;25656:9;25652:19;25644:27;;25681:71;25749:1;25738:9;25734:17;25725:6;25681:71;:::i;:::-;25762:80;25838:2;25827:9;25823:18;25814:6;25762:80;:::i;:::-;25889:9;25883:4;25879:20;25874:2;25863:9;25859:18;25852:48;25917:108;26020:4;26011:6;25917:108;:::i;:::-;25909:116;;26035:72;26103:2;26092:9;26088:18;26079:6;26035:72;:::i;:::-;26117:73;26185:3;26174:9;26170:19;26161:6;26117:73;:::i;:::-;25366:831;;;;;;;;:::o;26203:332::-;26324:4;26362:2;26351:9;26347:18;26339:26;;26375:71;26443:1;26432:9;26428:17;26419:6;26375:71;:::i;:::-;26456:72;26524:2;26513:9;26509:18;26500:6;26456:72;:::i;:::-;26203:332;;;;;:::o;26541:214::-;26630:4;26668:2;26657:9;26653:18;26645:26;;26681:67;26745:1;26734:9;26730:17;26721:6;26681:67;:::i;:::-;26541:214;;;;:::o;26842:132::-;26909:4;26932:3;26924:11;;26962:4;26957:3;26953:14;26945:22;;26842:132;;;:::o;26980:114::-;27047:6;27081:5;27075:12;27065:22;;26980:114;;;:::o;27100:99::-;27152:6;27186:5;27180:12;27170:22;;27100:99;;;:::o;27205:113::-;27275:4;27307;27302:3;27298:14;27290:22;;27205:113;;;:::o;27324:184::-;27423:11;27457:6;27452:3;27445:19;27497:4;27492:3;27488:14;27473:29;;27324:184;;;;:::o;27514:147::-;27615:11;27652:3;27637:18;;27514:147;;;;:::o;27667:169::-;27751:11;27785:6;27780:3;27773:19;27825:4;27820:3;27816:14;27801:29;;27667:169;;;;:::o;27842:305::-;27882:3;27901:20;27919:1;27901:20;:::i;:::-;27896:25;;27935:20;27953:1;27935:20;:::i;:::-;27930:25;;28089:1;28021:66;28017:74;28014:1;28011:81;28008:107;;;28095:18;;:::i;:::-;28008:107;28139:1;28136;28132:9;28125:16;;27842:305;;;;:::o;28153:185::-;28193:1;28210:20;28228:1;28210:20;:::i;:::-;28205:25;;28244:20;28262:1;28244:20;:::i;:::-;28239:25;;28283:1;28273:35;;28288:18;;:::i;:::-;28273:35;28330:1;28327;28323:9;28318:14;;28153:185;;;;:::o;28344:348::-;28384:7;28407:20;28425:1;28407:20;:::i;:::-;28402:25;;28441:20;28459:1;28441:20;:::i;:::-;28436:25;;28629:1;28561:66;28557:74;28554:1;28551:81;28546:1;28539:9;28532:17;28528:105;28525:131;;;28636:18;;:::i;:::-;28525:131;28684:1;28681;28677:9;28666:20;;28344:348;;;;:::o;28698:191::-;28738:4;28758:20;28776:1;28758:20;:::i;:::-;28753:25;;28792:20;28810:1;28792:20;:::i;:::-;28787:25;;28831:1;28828;28825:8;28822:34;;;28836:18;;:::i;:::-;28822:34;28881:1;28878;28874:9;28866:17;;28698:191;;;;:::o;28895:96::-;28932:7;28961:24;28979:5;28961:24;:::i;:::-;28950:35;;28895:96;;;:::o;28997:104::-;29042:7;29071:24;29089:5;29071:24;:::i;:::-;29060:35;;28997:104;;;:::o;29107:90::-;29141:7;29184:5;29177:13;29170:21;29159:32;;29107:90;;;:::o;29203:126::-;29240:7;29280:42;29273:5;29269:54;29258:65;;29203:126;;;:::o;29335:77::-;29372:7;29401:5;29390:16;;29335:77;;;:::o;29418:86::-;29453:7;29493:4;29486:5;29482:16;29471:27;;29418:86;;;:::o;29510:134::-;29568:9;29601:37;29632:5;29601:37;:::i;:::-;29588:50;;29510:134;;;:::o;29650:154::-;29728:9;29761:37;29792:5;29761:37;:::i;:::-;29748:50;;29650:154;;;:::o;29810:150::-;29884:9;29917:37;29948:5;29917:37;:::i;:::-;29904:50;;29810:150;;;:::o;29966:121::-;30024:9;30057:24;30075:5;30057:24;:::i;:::-;30044:37;;29966:121;;;:::o;30093:126::-;30143:9;30176:37;30207:5;30176:37;:::i;:::-;30163:50;;30093:126;;;:::o;30225:113::-;30275:9;30308:24;30326:5;30308:24;:::i;:::-;30295:37;;30225:113;;;:::o;30344:307::-;30412:1;30422:113;30436:6;30433:1;30430:13;30422:113;;;30521:1;30516:3;30512:11;30506:18;30502:1;30497:3;30493:11;30486:39;30458:2;30455:1;30451:10;30446:15;;30422:113;;;30553:6;30550:1;30547:13;30544:101;;;30633:1;30624:6;30619:3;30615:16;30608:27;30544:101;30393:258;30344:307;;;:::o;30657:180::-;30705:77;30702:1;30695:88;30802:4;30799:1;30792:15;30826:4;30823:1;30816:15;30843:180;30891:77;30888:1;30881:88;30988:4;30985:1;30978:15;31012:4;31009:1;31002:15;31029:180;31077:77;31074:1;31067:88;31174:4;31171:1;31164:15;31198:4;31195:1;31188:15;31215:180;31263:77;31260:1;31253:88;31360:4;31357:1;31350:15;31384:4;31381:1;31374:15;31524:117;31633:1;31630;31623:12;31647:102;31688:6;31739:2;31735:7;31730:2;31723:5;31719:14;31715:28;31705:38;;31647:102;;;:::o;31755:167::-;31895:19;31891:1;31883:6;31879:14;31872:43;31755:167;:::o;31928:166::-;32068:18;32064:1;32056:6;32052:14;32045:42;31928:166;:::o;32100:231::-;32240:34;32236:1;32228:6;32224:14;32217:58;32309:14;32304:2;32296:6;32292:15;32285:39;32100:231;:::o;32337:229::-;32477:34;32473:1;32465:6;32461:14;32454:58;32546:12;32541:2;32533:6;32529:15;32522:37;32337:229;:::o;32572:::-;32712:34;32708:1;32700:6;32696:14;32689:58;32781:12;32776:2;32768:6;32764:15;32757:37;32572:229;:::o;32807:170::-;32947:22;32943:1;32935:6;32931:14;32924:46;32807:170;:::o;32983:236::-;33123:34;33119:1;33111:6;33107:14;33100:58;33192:19;33187:2;33179:6;33175:15;33168:44;32983:236;:::o;33225:228::-;33365:34;33361:1;33353:6;33349:14;33342:58;33434:11;33429:2;33421:6;33417:15;33410:36;33225:228;:::o;33459:232::-;33599:34;33595:1;33587:6;33583:14;33576:58;33668:15;33663:2;33655:6;33651:15;33644:40;33459:232;:::o;33697:156::-;33837:8;33833:1;33825:6;33821:14;33814:32;33697:156;:::o;33859:114::-;;:::o;33979:235::-;34119:34;34115:1;34107:6;34103:14;34096:58;34188:18;34183:2;34175:6;34171:15;34164:43;33979:235;:::o;34220:228::-;34360:34;34356:1;34348:6;34344:14;34337:58;34429:11;34424:2;34416:6;34412:15;34405:36;34220:228;:::o;34454:161::-;34594:13;34590:1;34582:6;34578:14;34571:37;34454:161;:::o;34621:122::-;34694:24;34712:5;34694:24;:::i;:::-;34687:5;34684:35;34674:63;;34733:1;34730;34723:12;34674:63;34621:122;:::o;34749:138::-;34830:32;34856:5;34830:32;:::i;:::-;34823:5;34820:43;34810:71;;34877:1;34874;34867:12;34810:71;34749:138;:::o;34893:116::-;34963:21;34978:5;34963:21;:::i;:::-;34956:5;34953:32;34943:60;;34999:1;34996;34989:12;34943:60;34893:116;:::o;35015:122::-;35088:24;35106:5;35088:24;:::i;:::-;35081:5;35078:35;35068:63;;35127:1;35124;35117:12;35068:63;35015:122;:::o
Swarm Source
ipfs://f76c4142d392ade4b7f6f207df239efd69013bfa85c03adae13093fa092867da
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.