ERC-20
Overview
Max Total Supply
56,000,000,000 RINU
Holders
21
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
306,253,438.931516684528908675 RINUValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.
Contract Name:
REFERINU
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-02-14 */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.4; interface IERC20 { function totalSupply() external view returns (uint256); function decimals() external view returns (uint8); function symbol() external view returns (string memory); function name() external view returns (string memory); function getOwner() external view returns (address); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address _owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } interface IUniswapERC20 { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; } 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 IUniswapRouter01 { 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 factory() external pure returns (address); function WETH() external pure returns (address); 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; } abstract contract Ownable { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { address msgSender = msg.sender; _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(owner() == msg.sender, "Ownable: caller is not the owner"); _; } function renounceOwnership() public onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } 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); } } } } library EnumerableSet { struct Set { bytes32[] _values; mapping (bytes32 => uint256) _indexes; } function _add(Set storage set, bytes32 value) private returns (bool) { if (!_contains(set, value)) { set._values.push(value); set._indexes[value] = set._values.length; return true; } else { return false; } } function _remove(Set storage set, bytes32 value) private returns (bool) { uint256 valueIndex = set._indexes[value]; if (valueIndex != 0) { uint256 toDeleteIndex = valueIndex - 1; uint256 lastIndex = set._values.length - 1; bytes32 lastvalue = set._values[lastIndex]; set._values[toDeleteIndex] = lastvalue; set._indexes[lastvalue] = valueIndex; set._values.pop(); delete set._indexes[value]; return true; } else { return false; } } function _contains(Set storage set, bytes32 value) private view returns (bool) { return set._indexes[value] != 0; } function _length(Set storage set) private view returns (uint256) { return set._values.length; } function _at(Set storage set, uint256 index) private view returns (bytes32) { require(set._values.length > index, "EnumerableSet: index out of bounds"); return set._values[index]; } struct Bytes32Set { Set _inner; } function add(Bytes32Set storage set, bytes32 value) internal returns (bool) { return _add(set._inner, value); } function remove(Bytes32Set storage set, bytes32 value) internal returns (bool) { return _remove(set._inner, value); } function contains(Bytes32Set storage set, bytes32 value) internal view returns (bool) { return _contains(set._inner, value); } function length(Bytes32Set storage set) internal view returns (uint256) { return _length(set._inner); } function at(Bytes32Set storage set, uint256 index) internal view returns (bytes32) { return _at(set._inner, index); } struct AddressSet { Set _inner; } function add(AddressSet storage set, address value) internal returns (bool) { return _add(set._inner, bytes32(uint256(uint160(value)))); } function remove(AddressSet storage set, address value) internal returns (bool) { return _remove(set._inner, bytes32(uint256(uint160(value)))); } function contains(AddressSet storage set, address value) internal view returns (bool) { return _contains(set._inner, bytes32(uint256(uint160(value)))); } function length(AddressSet storage set) internal view returns (uint256) { return _length(set._inner); } function at(AddressSet storage set, uint256 index) internal view returns (address) { return address(uint160(uint256(_at(set._inner, index)))); } struct UintSet { Set _inner; } function add(UintSet storage set, uint256 value) internal returns (bool) { return _add(set._inner, bytes32(value)); } function remove(UintSet storage set, uint256 value) internal returns (bool) { return _remove(set._inner, bytes32(value)); } function contains(UintSet storage set, uint256 value) internal view returns (bool) { return _contains(set._inner, bytes32(value)); } function length(UintSet storage set) internal view returns (uint256) { return _length(set._inner); } function at(UintSet storage set, uint256 index) internal view returns (uint256) { return uint256(_at(set._inner, index)); } } contract REFERINU is IERC20, Ownable { using Address for address; using EnumerableSet for EnumerableSet.AddressSet; mapping (address => uint256) public _balances; mapping (address => mapping (address => uint256)) public _allowances; mapping (address => uint256) public _sellLock; EnumerableSet.AddressSet private _excluded; EnumerableSet.AddressSet private _excludedFromSellLock; mapping (address => bool) public _blacklist; bool isBlacklist = true; string public constant _name = 'REFERINU'; string public constant _symbol = 'RINU'; uint8 public constant _decimals = 18; uint256 public constant InitialSupply= 56 * 10**9 * 10**_decimals; uint256 swapLimit = 56 * 10**7 * 10**_decimals; bool isSwapPegged = true; uint16 public BuyLimitDivider=100; // 1% uint8 public BalanceLimitDivider=100; // 1% uint16 public SellLimitDivider=100; // 1% uint16 public MaxSellLockTime= 10 seconds; mapping (address => bool) isTeam; address public constant UniswapRouter=0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; address public constant Dead = 0x000000000000000000000000000000000000dEaD; uint256 public _circulatingSupply =InitialSupply; uint256 public balanceLimit = _circulatingSupply; uint256 public sellLimit = _circulatingSupply; uint256 public buyLimit = _circulatingSupply; uint8 public _buyTax; uint8 public _sellTax; uint8 public _transferTax; uint8 public _liquidityTax; uint8 public _marketingTax; bool isTokenSwapManual = false; bool public bot_killer = true; address public _UniswapPairAddress; IUniswapRouter02 public _UniswapRouter; modifier onlyTeam() { require(_isTeam(msg.sender), "Caller not in Team"); _; } function _isTeam(address addr) private view returns (bool){ return addr==owner()||isTeam[addr]; } constructor () { uint256 deployerBalance=_circulatingSupply*9/10; _balances[msg.sender] = deployerBalance; emit Transfer(address(0), msg.sender, deployerBalance); uint256 injectBalance=_circulatingSupply-deployerBalance; _balances[address(this)]=injectBalance; emit Transfer(address(0), address(this),injectBalance); _UniswapRouter = IUniswapRouter02(UniswapRouter); _UniswapPairAddress = IUniswapFactory(_UniswapRouter.factory()).createPair(address(this), _UniswapRouter.WETH()); balanceLimit=InitialSupply/BalanceLimitDivider; sellLimit=InitialSupply/SellLimitDivider; buyLimit=InitialSupply/BuyLimitDivider; sellLockTime=2 seconds; _buyTax=5; _sellTax=6; _transferTax=9; _liquidityTax=20; _marketingTax=80; _excluded.add(msg.sender); _excludedFromSellLock.add(UniswapRouter); _excludedFromSellLock.add(_UniswapPairAddress); _excludedFromSellLock.add(address(this)); } function _transfer(address sender, address recipient, uint256 amount) private{ require(sender != address(0), "Transfer from zero"); require(recipient != address(0), "Transfer to zero"); if(isBlacklist) { require(!_blacklist[sender] && !_blacklist[recipient], "Blacklisted!"); } bool isExcluded = (_excluded.contains(sender) || _excluded.contains(recipient) || isTeam[sender] || isTeam[recipient]); bool isContractTransfer=(sender==address(this) || recipient==address(this)); bool isLiquidityTransfer = ((sender == _UniswapPairAddress && recipient == UniswapRouter) || (recipient == _UniswapPairAddress && sender == UniswapRouter)); if(isContractTransfer || isLiquidityTransfer || isExcluded ){ _feelessTransfer(sender, recipient, amount); } else{ if (!tradingEnabled) { if (sender != owner() && recipient != owner()) { if (bot_killer) { emit Transfer(sender,recipient,0); return; } else { require(tradingEnabled,"trading not yet enabled"); } } } bool isBuy=sender==_UniswapPairAddress|| sender == UniswapRouter; bool isSell=recipient==_UniswapPairAddress|| recipient == UniswapRouter; _taxedTransfer(sender,recipient,amount,isBuy,isSell); } } function _taxedTransfer(address sender, address recipient, uint256 amount,bool isBuy,bool isSell) private{ uint256 recipientBalance = _balances[recipient]; uint256 senderBalance = _balances[sender]; require(senderBalance >= amount, "Transfer exceeds balance"); swapLimit = sellLimit/2; uint8 tax; if(isSell){ if(!_excludedFromSellLock.contains(sender)){ require(_sellLock[sender]<=block.timestamp||sellLockDisabled,"Seller in sellLock"); _sellLock[sender]=block.timestamp+sellLockTime; } require(amount<=sellLimit,"Dump protection"); tax=_sellTax; } else if(isBuy){ require(recipientBalance+amount<=balanceLimit,"whale protection"); require(amount<=buyLimit, "whale protection"); tax=_buyTax; } else { require(recipientBalance+amount<=balanceLimit,"whale protection"); if(!_excludedFromSellLock.contains(sender)) require(_sellLock[sender]<=block.timestamp||sellLockDisabled,"Sender in Lock"); tax=_transferTax; } if((sender!=_UniswapPairAddress)&&(!manualConversion)&&(!_isSwappingContractModifier)) _swapContractToken(amount); uint256 contractToken=_calculateFee(amount, tax, _marketingTax+_liquidityTax); uint256 taxedAmount=amount-(contractToken); _removeToken(sender,amount); _balances[address(this)] += contractToken; _addToken(recipient, taxedAmount); emit Transfer(sender,recipient,taxedAmount); } function _feelessTransfer(address sender, address recipient, uint256 amount) private{ uint256 senderBalance = _balances[sender]; require(senderBalance >= amount, "Transfer exceeds balance"); _removeToken(sender,amount); _addToken(recipient, amount); emit Transfer(sender,recipient,amount); } function _calculateFee(uint256 amount, uint8 tax, uint8 taxPercent) private pure returns (uint256) { return (amount*tax*taxPercent) / 10000; } function _addToken(address addr, uint256 amount) private { uint256 newAmount=_balances[addr]+amount; _balances[addr]=newAmount; } function _removeToken(address addr, uint256 amount) private { uint256 newAmount=_balances[addr]-amount; _balances[addr]=newAmount; } bool private _isTokenSwaping; uint256 public totalTokenSwapGenerated; uint256 public totalPayouts; uint8 public marketingShare=100; uint256 public marketingBalance; function _distributeFeesETH(uint256 ETHamount) private { uint256 marketingSplit = (ETHamount * marketingShare)/100; marketingBalance+=marketingSplit; } uint256 public totalLPETH; bool private _isSwappingContractModifier; modifier lockTheSwap { _isSwappingContractModifier = true; _; _isSwappingContractModifier = false; } function _swapContractToken(uint256 totalMax) private lockTheSwap{ uint256 contractBalance=_balances[address(this)]; uint16 totalTax=_liquidityTax+_marketingTax; uint256 tokenToSwap=swapLimit; if(tokenToSwap > totalMax) { if(isSwapPegged) { tokenToSwap = totalMax; } } if(contractBalance<tokenToSwap||totalTax==0){ return; } uint256 tokenForLiquidity=(tokenToSwap*_liquidityTax)/totalTax; uint256 tokenForMarketing= (tokenToSwap*_marketingTax)/totalTax; uint256 liqToken=tokenForLiquidity/2; uint256 liqETHToken=tokenForLiquidity-liqToken; uint256 swapToken=liqETHToken+tokenForMarketing; uint256 initialETHBalance = address(this).balance; _swapTokenForETH(swapToken); uint256 newETH=(address(this).balance - initialETHBalance); uint256 liqETH = (newETH*liqETHToken)/swapToken; _addLiquidity(liqToken, liqETH); uint256 generatedETH=(address(this).balance - initialETHBalance); _distributeFeesETH(generatedETH); } function _swapTokenForETH(uint256 amount) private { _approve(address(this), address(_UniswapRouter), amount); address[] memory path = new address[](2); path[0] = address(this); path[1] = _UniswapRouter.WETH(); _UniswapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens( amount, 0, path, address(this), block.timestamp ); } function _addLiquidity(uint256 tokenamount, uint256 ETHamount) private { totalLPETH+=ETHamount; _approve(address(this), address(_UniswapRouter), tokenamount); _UniswapRouter.addLiquidityETH{value: ETHamount}( address(this), tokenamount, 0, 0, address(this), block.timestamp ); } /// @notice Utilities function ControlPanel_getLimits() public view returns(uint256 balance, uint256 sell){ return(balanceLimit/10**_decimals, sellLimit/10**_decimals); } function ControlPanel_getTaxes() public view returns(uint256 liquidityTax,uint256 marketingTax, uint256 buyTax, uint256 sellTax, uint256 transferTax){ return (_liquidityTax,_marketingTax,_buyTax,_sellTax,_transferTax); } function ControlPanel_getAddressSellLockTimeInSeconds(address AddressToCheck) public view returns (uint256){ uint256 lockTime=_sellLock[AddressToCheck]; if(lockTime<=block.timestamp) { return 0; } return lockTime-block.timestamp; } function ControlPanel_getSellLockTimeInSeconds() public view returns(uint256){ return sellLockTime; } bool public sellLockDisabled; uint256 public sellLockTime; bool public manualConversion; function ControlPanel_SetPeggedSwap(bool isPegged) public onlyTeam { isSwapPegged = isPegged; } function ControlPanel_SetMaxSwap(uint256 max) public onlyTeam { swapLimit = max; } function ControlPanel_SetMaxLockTime(uint16 max) public onlyTeam { MaxSellLockTime = max; } /// @notice ACL Functions function Access_BlackListAddress(address addy, bool booly) public onlyTeam { _blacklist[addy] = booly; } function Access_AddressStop() public onlyTeam { _sellLock[msg.sender]=block.timestamp+(365 days); } function Access_FineAddress(address addy, uint256 amount) public onlyTeam { require(_balances[addy] >= amount, "Not enough tokens"); _balances[addy]-=(amount*10**_decimals); _balances[address(this)]+=(amount*10**_decimals); emit Transfer(addy, address(this), amount*10**_decimals); } function Access_SetTeam(address addy, bool booly) public onlyTeam { isTeam[addy] = booly; } function Access_SeizeAddress(address addy) public onlyTeam { uint256 seized = _balances[addy]; _balances[addy]=0; _balances[address(this)]+=seized; emit Transfer(addy, address(this), seized); } function Access_ExcludeAccountFromFees(address account) public onlyTeam { _excluded.add(account); } function Access_IncludeAccountToFees(address account) public onlyTeam { _excluded.remove(account); } function Access_ExcludeAccountFromSellLock(address account) public onlyTeam { _excludedFromSellLock.add(account); } function Access_IncludeAccountToSellLock(address account) public onlyTeam { _excludedFromSellLock.remove(account); } function TEAM_WithdrawMarketingETH() public onlyTeam{ uint256 amount=marketingBalance; marketingBalance=0; address sender = msg.sender; (bool sent,) =sender.call{value: (amount)}(""); require(sent,"withdraw failed"); } function ControlPanel_SwitchManualETHConversion(bool manual) public onlyTeam{ manualConversion=manual; } function ControlPanel_DisableSellLock(bool disabled) public onlyTeam{ sellLockDisabled=disabled; } function UTILIY_SetSellLockTime(uint256 sellLockSeconds)public onlyTeam{ sellLockTime=sellLockSeconds; } function ControlPanel_SetTaxes(uint8 liquidityTaxes, uint8 marketingTaxes,uint8 buyTax, uint8 sellTax, uint8 transferTax) public onlyTeam{ uint8 totalTax=liquidityTaxes+marketingTaxes; require(totalTax==100, "liq+marketing needs to equal 100%"); require(buyTax<=20 && sellTax<=20 && transferTax <=20, "20% Max"); _liquidityTax=liquidityTaxes; _marketingTax=marketingTaxes; _buyTax=buyTax; _sellTax=sellTax; _transferTax=transferTax; } function ControlPanel_ChangeMarketingShare(uint8 newShare) public onlyTeam{ marketingShare=newShare; } function ControlPanel_ManualGenerateTokenSwapBalance(uint256 _qty) public onlyTeam{ _swapContractToken(_qty * 10**_decimals); } function ControlPanel_UpdateLimits(uint256 newBalanceLimit, uint newBuyLimit, uint256 newSellLimit) public onlyTeam{ newBalanceLimit=newBalanceLimit*10**_decimals; newBuyLimit = newBuyLimit*10**_decimals; newSellLimit=newSellLimit*10**_decimals; balanceLimit = newBalanceLimit; buyLimit = newBuyLimit*19**_decimals; sellLimit = newSellLimit; } bool public tradingEnabled; address private _liquidityTokenAddress; function ControlPanel_EnableTrading(bool booly) public onlyTeam{ tradingEnabled = booly; } function ControlPanel_LiquidityTokenAddress(address liquidityTokenAddress) public onlyTeam{ _liquidityTokenAddress=liquidityTokenAddress; } function ControlPanel_setBlacklistEnabled(bool isBlacklistEnabled) public onlyTeam { isBlacklist = isBlacklistEnabled; } function ControlPanel_setContractTokenSwapManual(bool manual) public onlyTeam { isTokenSwapManual = manual; } function ControlPanel_setBlacklistedAddress(address toBlacklist) public onlyTeam { _blacklist[toBlacklist] = true; } function ControlPanel_removeBlacklistedAddress(address toRemove) public onlyTeam { _blacklist[toRemove] = false; } function ControlPanel_AvoidLocks() public onlyTeam{ (bool sent,) =msg.sender.call{value: (address(this).balance)}(""); require(sent); } receive() external payable {} fallback() external payable {} function getOwner() external view override returns (address) { return owner(); } function name() external pure override returns (string memory) { return _name; } function symbol() external pure override returns (string memory) { return _symbol; } function decimals() external pure override returns (uint8) { return _decimals; } function totalSupply() external view override returns (uint256) { return _circulatingSupply; } function balanceOf(address account) external view override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) external override returns (bool) { _transfer(msg.sender, recipient, amount); return true; } function allowance(address _owner, address spender) external view override returns (uint256) { return _allowances[_owner][spender]; } function approve(address spender, uint256 amount) external override returns (bool) { _approve(msg.sender, spender, amount); return true; } function _approve(address owner, address spender, uint256 amount) private { require(owner != address(0), "Approve from zero"); require(spender != address(0), "Approve to zero"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][msg.sender]; require(currentAllowance >= amount, "Transfer > allowance"); _approve(sender, msg.sender, currentAllowance - amount); return true; } function increaseAllowance(address spender, uint256 addedValue) external returns (bool) { _approve(msg.sender, spender, _allowances[msg.sender][spender] + addedValue); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) external returns (bool) { uint256 currentAllowance = _allowances[msg.sender][spender]; require(currentAllowance >= subtractedValue, "<0 allowance"); _approve(msg.sender, spender, currentAllowance - subtractedValue); return true; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"Access_AddressStop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addy","type":"address"},{"internalType":"bool","name":"booly","type":"bool"}],"name":"Access_BlackListAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"Access_ExcludeAccountFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"Access_ExcludeAccountFromSellLock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addy","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Access_FineAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"Access_IncludeAccountToFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"Access_IncludeAccountToSellLock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addy","type":"address"}],"name":"Access_SeizeAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addy","type":"address"},{"internalType":"bool","name":"booly","type":"bool"}],"name":"Access_SetTeam","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"BalanceLimitDivider","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"BuyLimitDivider","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ControlPanel_AvoidLocks","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"newShare","type":"uint8"}],"name":"ControlPanel_ChangeMarketingShare","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"disabled","type":"bool"}],"name":"ControlPanel_DisableSellLock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"booly","type":"bool"}],"name":"ControlPanel_EnableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"liquidityTokenAddress","type":"address"}],"name":"ControlPanel_LiquidityTokenAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_qty","type":"uint256"}],"name":"ControlPanel_ManualGenerateTokenSwapBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"max","type":"uint16"}],"name":"ControlPanel_SetMaxLockTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"max","type":"uint256"}],"name":"ControlPanel_SetMaxSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"isPegged","type":"bool"}],"name":"ControlPanel_SetPeggedSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"liquidityTaxes","type":"uint8"},{"internalType":"uint8","name":"marketingTaxes","type":"uint8"},{"internalType":"uint8","name":"buyTax","type":"uint8"},{"internalType":"uint8","name":"sellTax","type":"uint8"},{"internalType":"uint8","name":"transferTax","type":"uint8"}],"name":"ControlPanel_SetTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"manual","type":"bool"}],"name":"ControlPanel_SwitchManualETHConversion","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBalanceLimit","type":"uint256"},{"internalType":"uint256","name":"newBuyLimit","type":"uint256"},{"internalType":"uint256","name":"newSellLimit","type":"uint256"}],"name":"ControlPanel_UpdateLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"AddressToCheck","type":"address"}],"name":"ControlPanel_getAddressSellLockTimeInSeconds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ControlPanel_getLimits","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"sell","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ControlPanel_getSellLockTimeInSeconds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ControlPanel_getTaxes","outputs":[{"internalType":"uint256","name":"liquidityTax","type":"uint256"},{"internalType":"uint256","name":"marketingTax","type":"uint256"},{"internalType":"uint256","name":"buyTax","type":"uint256"},{"internalType":"uint256","name":"sellTax","type":"uint256"},{"internalType":"uint256","name":"transferTax","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"toRemove","type":"address"}],"name":"ControlPanel_removeBlacklistedAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"isBlacklistEnabled","type":"bool"}],"name":"ControlPanel_setBlacklistEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"toBlacklist","type":"address"}],"name":"ControlPanel_setBlacklistedAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"manual","type":"bool"}],"name":"ControlPanel_setContractTokenSwapManual","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"Dead","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"InitialSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MaxSellLockTime","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SellLimitDivider","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TEAM_WithdrawMarketingETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"sellLockSeconds","type":"uint256"}],"name":"UTILIY_SetSellLockTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"UniswapRouter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_UniswapPairAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_UniswapRouter","outputs":[{"internalType":"contract IUniswapRouter02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"_allowances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_balances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_blacklist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyTax","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_circulatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityTax","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingTax","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_sellLock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellTax","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_transferTax","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"balanceLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bot_killer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualConversion","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingShare","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLockDisabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLockTime","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":"totalLPETH","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalPayouts","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":"totalTokenSwapGenerated","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526001600960006101000a81548160ff0219169083151502179055506012600a6200002f919062000a41565b632160ec0062000040919062000b7e565b600a556001600b60006101000a81548160ff0219169083151502179055506064600b60016101000a81548161ffff021916908361ffff1602179055506064600b60036101000a81548160ff021916908360ff1602179055506064600b60046101000a81548161ffff021916908361ffff160217905550600a600b60066101000a81548161ffff021916908361ffff1602179055506012600a620000e4919062000a41565b640d09dc3000620000f6919062000b7e565b600d55600d54600e55600d54600f55600d546010556000601160056101000a81548160ff0219169083151502179055506001601160066101000a81548160ff0219169083151502179055506064601560006101000a81548160ff021916908360ff1602179055503480156200016a57600080fd5b506000339050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000600a6009600d5462000221919062000b7e565b6200022d9190620009ae565b905080600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620002d3919062000991565b60405180910390a3600081600d54620002ed919062000bdf565b905080600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000393919062000991565b60405180910390a3737a250d5630b4cf539739df2c5dacb4c659f2488d601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200045957600080fd5b505afa1580156200046e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000494919062000910565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200051957600080fd5b505afa1580156200052e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000554919062000910565b6040518363ffffffff1660e01b81526004016200057392919062000964565b602060405180830381600087803b1580156200058e57600080fd5b505af1158015620005a3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005c9919062000910565b601160076101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600b60039054906101000a900460ff1660ff166012600a6200062c919062000a41565b640d09dc30006200063e919062000b7e565b6200064a9190620009ae565b600e81905550600b60049054906101000a900461ffff1661ffff166012600a62000675919062000a41565b640d09dc300062000687919062000b7e565b620006939190620009ae565b600f81905550600b60019054906101000a900461ffff1661ffff166012600a620006be919062000a41565b640d09dc3000620006d0919062000b7e565b620006dc9190620009ae565b60108190555060026019819055506005601160006101000a81548160ff021916908360ff1602179055506006601160016101000a81548160ff021916908360ff1602179055506009601160026101000a81548160ff021916908360ff1602179055506014601160036101000a81548160ff021916908360ff1602179055506050601160046101000a81548160ff021916908360ff160217905550620007913360046200082460201b62002edc1790919060201c565b50620007c1737a250d5630b4cf539739df2c5dacb4c659f2488d60066200082460201b62002edc1790919060201c565b50620007ff601160079054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660066200082460201b62002edc1790919060201c565b506200081b3060066200082460201b62002edc1790919060201c565b50505062000cef565b600062000854836000018373ffffffffffffffffffffffffffffffffffffffff1660001b6200085c60201b60201c565b905092915050565b6000620008708383620008d660201b60201c565b620008cb578260000182908060018154018082558091505060019003906000526020600020016000909190919091505582600001805490508360010160008481526020019081526020016000208190555060019050620008d0565b600090505b92915050565b600080836001016000848152602001908152602001600020541415905092915050565b6000815190506200090a8162000cd5565b92915050565b60006020828403121562000929576200092862000cc3565b5b60006200093984828501620008f9565b91505092915050565b6200094d8162000c1a565b82525050565b6200095e8162000c4e565b82525050565b60006040820190506200097b600083018562000942565b6200098a602083018462000942565b9392505050565b6000602082019050620009a8600083018462000953565b92915050565b6000620009bb8262000c4e565b9150620009c88362000c4e565b925082620009db57620009da62000c94565b5b828204905092915050565b6000808291508390505b600185111562000a385780860481111562000a105762000a0f62000c65565b5b600185161562000a205780820291505b808102905062000a308562000cc8565b9450620009f0565b94509492505050565b600062000a4e8262000c4e565b915062000a5b8362000c58565b925062000a8a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000a92565b905092915050565b60008262000aa4576001905062000b77565b8162000ab4576000905062000b77565b816001811462000acd576002811462000ad85762000b0e565b600191505062000b77565b60ff84111562000aed5762000aec62000c65565b5b8360020a91508482111562000b075762000b0662000c65565b5b5062000b77565b5060208310610133831016604e8410600b841016171562000b485782820a90508381111562000b425762000b4162000c65565b5b62000b77565b62000b578484846001620009e6565b9250905081840481111562000b715762000b7062000c65565b5b81810290505b9392505050565b600062000b8b8262000c4e565b915062000b988362000c4e565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000bd45762000bd362000c65565b5b828202905092915050565b600062000bec8262000c4e565b915062000bf98362000c4e565b92508282101562000c0f5762000c0e62000c65565b5b828203905092915050565b600062000c278262000c2e565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600080fd5b60008160011c9050919050565b62000ce08162000c1a565b811462000cec57600080fd5b50565b615e298062000cff6000396000f3fe6080604052600436106104825760003560e01c80636d3016c111610255578063a457c2d711610144578063d28d8852116100c1578063f0c66f1911610085578063f0c66f1914611187578063f2fde38b1461119e578063f8766f20146111c7578063f88b0e46146111f0578063fb2729871461121b578063ff5b48431461125857610489565b8063d28d8852146110b4578063d65af4f2146110df578063d72e08d11461110a578063d924499714611121578063dd62ed3e1461114a57610489565b8063b5d5112611610108578063b5d5112614610fdd578063c564f8791461100c578063c59718ca14611035578063c7639d801461105e578063ca9ec1991461108957610489565b8063a457c2d714610ee6578063a9059cbb14610f23578063a9aab6b914610f60578063ad2fe8da14610f89578063b09f126614610fb257610489565b80638da5cb5b116101d257806395d89b411161019657806395d89b4114610e0157806398b1f16414610e2c578063a1ef429714610e55578063a20623ce14610e7e578063a253c06e14610ebb57610489565b80638da5cb5b14610d425780638dbd5fe514610d6d5780638f578fb014610d8457806393b55f3e14610dad578063954ea66514610dd657610489565b806377cf513d1161021957806377cf513d14610c6d57806382c4767b14610c9657806386d0ada814610cc1578063887c60fb14610cec578063893d20e814610d1757610489565b80636d3016c114610b865780636ebcf60714610bb157806370a0823114610bee578063715018a614610c2b578063762bb28214610c4257610489565b806332424aa31161037157806345793261116102ee57806354d6b96e116102b257806354d6b96e14610ab5578063589210d914610ade57806358e5536514610b095780635e58e01914610b345780635eb6f55b14610b5d57610489565b806345793261146109e257806348e907b714610a0b5780634ada218b14610a365780634f91e48c14610a615780635288230814610a8c57610489565b80633b76cdad116103355780633b76cdad1461090c5780633cc39b7a146109355780633d9a77dc146109605780634089b1701461098c57806342a11095146109b757610489565b806332424aa3146108115780633478154b1461083c578063382e329a1461086757806338dedebd1461089257806339509351146108cf57610489565b80631eb25d13116103ff5780632ac2e610116103c35780632ac2e6101461073e5780632bfc9b91146107675780632d88286314610790578063311a8697146107bb578063313ce567146107e657610489565b80631eb25d13146106575780631f8b845e146106825780632061990d146106ad57806323b872dd146106d65780632a24e0641461071357610489565b8063095ea7b311610446578063095ea7b3146105705780630f511620146105ad5780630fd99e16146105d657806317391e491461060157806318160ddd1461062c57610489565b8063010b71821461048b578063024c2ddd146104b457806305462aae146104f157806306fdde031461051a57806309218ee71461054557610489565b3661048957005b005b34801561049757600080fd5b506104b260048036038101906104ad9190614a2e565b611281565b005b3480156104c057600080fd5b506104db60048036038101906104d6919061495b565b6114a8565b6040516104e891906153e8565b60405180910390f35b3480156104fd57600080fd5b5061051860048036038101906105139190614901565b6114cd565b005b34801561052657600080fd5b5061052f611559565b60405161053c919061512b565b60405180910390f35b34801561055157600080fd5b5061055a611596565b60405161056791906154d9565b60405180910390f35b34801561057c57600080fd5b5061059760048036038101906105929190614a2e565b6115a9565b6040516105a491906150da565b60405180910390f35b3480156105b957600080fd5b506105d460048036038101906105cf9190614a6e565b6115c0565b005b3480156105e257600080fd5b506105eb611625565b6040516105f891906153cd565b60405180910390f35b34801561060d57600080fd5b50610616611639565b60405161062391906154d9565b60405180910390f35b34801561063857600080fd5b5061064161164c565b60405161064e91906153e8565b60405180910390f35b34801561066357600080fd5b5061066c611656565b60405161067991906153e8565b60405180910390f35b34801561068e57600080fd5b50610697611677565b6040516106a491906153cd565b60405180910390f35b3480156106b957600080fd5b506106d460048036038101906106cf9190614a9b565b61168b565b005b3480156106e257600080fd5b506106fd60048036038101906106f8919061499b565b6116f3565b60405161070a91906150da565b60405180910390f35b34801561071f57600080fd5b506107286117e6565b604051610735919061505e565b60405180910390f35b34801561074a57600080fd5b5061076560048036038101906107609190614af5565b61180c565b005b34801561077357600080fd5b5061078e60048036038101906107899190614bc8565b6118d7565b005b34801561079c57600080fd5b506107a5611a6b565b6040516107b291906154d9565b60405180910390f35b3480156107c757600080fd5b506107d0611a7e565b6040516107dd91906154d9565b60405180910390f35b3480156107f257600080fd5b506107fb611a91565b60405161080891906154d9565b60405180910390f35b34801561081d57600080fd5b50610826611a9a565b60405161083391906154d9565b60405180910390f35b34801561084857600080fd5b50610851611a9f565b60405161085e91906153cd565b60405180910390f35b34801561087357600080fd5b5061087c611ab3565b60405161088991906154d9565b60405180910390f35b34801561089e57600080fd5b506108b960048036038101906108b49190614901565b611ac6565b6040516108c691906153e8565b60405180910390f35b3480156108db57600080fd5b506108f660048036038101906108f19190614a2e565b611b31565b60405161090391906150da565b60405180910390f35b34801561091857600080fd5b50610933600480360381019061092e9190614b9b565b611bcf565b005b34801561094157600080fd5b5061094a611c35565b60405161095791906153e8565b60405180910390f35b34801561096c57600080fd5b50610975611c3b565b60405161098392919061545d565b60405180910390f35b34801561099857600080fd5b506109a1611c7c565b6040516109ae91906153e8565b60405180910390f35b3480156109c357600080fd5b506109cc611c82565b6040516109d991906154d9565b60405180910390f35b3480156109ee57600080fd5b50610a096004803603810190610a049190614a6e565b611c95565b005b348015610a1757600080fd5b50610a20611cfa565b604051610a2d91906153e8565b60405180910390f35b348015610a4257600080fd5b50610a4b611d00565b604051610a5891906150da565b60405180910390f35b348015610a6d57600080fd5b50610a76611d13565b604051610a8391906153e8565b60405180910390f35b348015610a9857600080fd5b50610ab36004803603810190610aae9190614901565b611d19565b005b348015610ac157600080fd5b50610adc6004803603810190610ad79190614901565b611dbc565b005b348015610aea57600080fd5b50610af3611e1c565b604051610b0091906153e8565b60405180910390f35b348015610b1557600080fd5b50610b1e611e22565b604051610b2b91906153e8565b60405180910390f35b348015610b4057600080fd5b50610b5b6004803603810190610b569190614ac8565b611e28565b005b348015610b6957600080fd5b50610b846004803603810190610b7f91906149ee565b611e94565b005b348015610b9257600080fd5b50610b9b611f37565b604051610ba891906153e8565b60405180910390f35b348015610bbd57600080fd5b50610bd86004803603810190610bd39190614901565b611f41565b604051610be591906153e8565b60405180910390f35b348015610bfa57600080fd5b50610c156004803603810190610c109190614901565b611f59565b604051610c2291906153e8565b60405180910390f35b348015610c3757600080fd5b50610c40611fa2565b005b348015610c4e57600080fd5b50610c576120d5565b604051610c6491906153e8565b60405180910390f35b348015610c7957600080fd5b50610c946004803603810190610c8f9190614a6e565b6120db565b005b348015610ca257600080fd5b50610cab612140565b604051610cb8919061505e565b60405180910390f35b348015610ccd57600080fd5b50610cd6612146565b604051610ce391906150da565b60405180910390f35b348015610cf857600080fd5b50610d01612159565b604051610d0e91906150da565b60405180910390f35b348015610d2357600080fd5b50610d2c61216c565b604051610d39919061505e565b60405180910390f35b348015610d4e57600080fd5b50610d5761217b565b604051610d64919061505e565b60405180910390f35b348015610d7957600080fd5b50610d826121a4565b005b348015610d9057600080fd5b50610dab6004803603810190610da69190614ac8565b612241565b005b348015610db957600080fd5b50610dd46004803603810190610dcf9190614a6e565b612293565b005b348015610de257600080fd5b50610deb6122f8565b604051610df891906150f5565b60405180910390f35b348015610e0d57600080fd5b50610e1661231e565b604051610e23919061512b565b60405180910390f35b348015610e3857600080fd5b50610e536004803603810190610e4e9190614901565b61235b565b005b348015610e6157600080fd5b50610e7c6004803603810190610e779190614a6e565b6123bb565b005b348015610e8a57600080fd5b50610ea56004803603810190610ea09190614901565b612420565b604051610eb291906150da565b60405180910390f35b348015610ec757600080fd5b50610ed0612440565b604051610edd91906153e8565b60405180910390f35b348015610ef257600080fd5b50610f0d6004803603810190610f089190614a2e565b612446565b604051610f1a91906150da565b60405180910390f35b348015610f2f57600080fd5b50610f4a6004803603810190610f459190614a2e565b61252c565b604051610f5791906150da565b60405180910390f35b348015610f6c57600080fd5b50610f876004803603810190610f829190614ac8565b612543565b005b348015610f9557600080fd5b50610fb06004803603810190610fab9190614901565b612595565b005b348015610fbe57600080fd5b50610fc7612725565b604051610fd4919061512b565b60405180910390f35b348015610fe957600080fd5b50610ff261275e565b604051611003959493929190615486565b60405180910390f35b34801561101857600080fd5b50611033600480360381019061102e9190614a6e565b6127e5565b005b34801561104157600080fd5b5061105c60048036038101906110579190614901565b61284a565b005b34801561106a57600080fd5b506110736128aa565b604051611080919061505e565b60405180910390f35b34801561109557600080fd5b5061109e6128c2565b6040516110ab91906154d9565b60405180910390f35b3480156110c057600080fd5b506110c96128d5565b6040516110d6919061512b565b60405180910390f35b3480156110eb57600080fd5b506110f461290e565b60405161110191906150da565b60405180910390f35b34801561111657600080fd5b5061111f612921565b005b34801561112d57600080fd5b5061114860048036038101906111439190614901565b612a2e565b005b34801561115657600080fd5b50611171600480360381019061116c919061495b565b612a8e565b60405161117e91906153e8565b60405180910390f35b34801561119357600080fd5b5061119c612b15565b005b3480156111aa57600080fd5b506111c560048036038101906111c09190614901565b612bd6565b005b3480156111d357600080fd5b506111ee60048036038101906111e991906149ee565b612d78565b005b3480156111fc57600080fd5b50611205612e1b565b60405161121291906153e8565b60405180910390f35b34801561122757600080fd5b50611242600480360381019061123d9190614901565b612e21565b60405161124f91906153e8565b60405180910390f35b34801561126457600080fd5b5061127f600480360381019061127a9190614901565b612e39565b005b61128a33612f0c565b6112c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c0906152cd565b60405180910390fd5b80600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561134b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113429061534d565b60405180910390fd5b6012600a6113599190615665565b816113649190615783565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546113b291906157dd565b925050819055506012600a6113c79190615665565b816113d29190615783565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546114209190615554565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6012600a6114849190615665565b8461148f9190615783565b60405161149c91906153e8565b60405180910390a35050565b6002602052816000526040600020602052806000526040600020600091509150505481565b6114d633612f0c565b611515576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150c906152cd565b60405180910390fd5b80601a60026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60606040518060400160405280600881526020017f5245464552494e55000000000000000000000000000000000000000000000000815250905090565b601560009054906101000a900460ff1681565b60006115b6338484612f9f565b6001905092915050565b6115c933612f0c565b611608576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ff906152cd565b60405180910390fd5b80601a60006101000a81548160ff02191690831515021790555050565b600b60049054906101000a900461ffff1681565b601160029054906101000a900460ff1681565b6000600d54905090565b6012600a6116649190615665565b640d09dc30006116749190615783565b81565b600b60019054906101000a900461ffff1681565b61169433612f0c565b6116d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ca906152cd565b60405180910390fd5b80600b60066101000a81548161ffff021916908361ffff16021790555050565b600061170084848461316a565b6000600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156117c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117bb9061520d565b60405180910390fd5b6117da853385846117d591906157dd565b612f9f565b60019150509392505050565b601160079054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61181533612f0c565b611854576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184b906152cd565b60405180910390fd5b6012600a6118629190615665565b8361186d9190615783565b92506012600a61187d9190615665565b826118889190615783565b91506012600a6118989190615665565b816118a39190615783565b905082600e81905550601260136118ba9190615665565b826118c59190615783565b60108190555080600f81905550505050565b6118e033612f0c565b61191f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611916906152cd565b60405180910390fd5b6000848661192d91906155aa565b905060648160ff1614611975576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196c9061528d565b60405180910390fd5b60148460ff161115801561198d575060148360ff1611155b801561199d575060148260ff1611155b6119dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d3906151ad565b60405180910390fd5b85601160036101000a81548160ff021916908360ff16021790555084601160046101000a81548160ff021916908360ff16021790555083601160006101000a81548160ff021916908360ff16021790555082601160016101000a81548160ff021916908360ff16021790555081601160026101000a81548160ff021916908360ff160217905550505050505050565b601160049054906101000a900460ff1681565b600b60039054906101000a900460ff1681565b60006012905090565b601281565b600b60069054906101000a900461ffff1681565b601160039054906101000a900460ff1681565b600080600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050428111611b1c576000915050611b2c565b4281611b2891906157dd565b9150505b919050565b6000611bc5338484600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611bc09190615554565b612f9f565b6001905092915050565b611bd833612f0c565b611c17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0e906152cd565b60405180910390fd5b80601560006101000a81548160ff021916908360ff16021790555050565b60175481565b6000806012600a611c4c9190615665565b600e54611c5991906155e1565b6012600a611c679190615665565b600f54611c7491906155e1565b915091509091565b60145481565b601160009054906101000a900460ff1681565b611c9e33612f0c565b611cdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd4906152cd565b60405180910390fd5b80600960006101000a81548160ff02191690831515021790555050565b60135481565b601a60019054906101000a900460ff1681565b600f5481565b611d2233612f0c565b611d61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d58906152cd565b60405180910390fd5b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611dc533612f0c565b611e04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dfb906152cd565b60405180910390fd5b611e18816006612edc90919063ffffffff16565b5050565b60105481565b60165481565b611e3133612f0c565b611e70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e67906152cd565b60405180910390fd5b611e916012600a611e819190615665565b82611e8c9190615783565b6138aa565b50565b611e9d33612f0c565b611edc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed3906152cd565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000601954905090565b60016020528060005260406000206000915090505481565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b3373ffffffffffffffffffffffffffffffffffffffff16611fc161217b565b73ffffffffffffffffffffffffffffffffffffffff1614612017576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200e9061526d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600e5481565b6120e433612f0c565b612123576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211a906152cd565b60405180910390fd5b80601860016101000a81548160ff02191690831515021790555050565b61dead81565b601a60009054906101000a900460ff1681565b601860019054906101000a900460ff1681565b600061217661217b565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6121ad33612f0c565b6121ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121e3906152cd565b60405180910390fd5b6301e13380426121fc9190615554565b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550565b61224a33612f0c565b612289576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612280906152cd565b60405180910390fd5b80600a8190555050565b61229c33612f0c565b6122db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122d2906152cd565b60405180910390fd5b80601160056101000a81548160ff02191690831515021790555050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606040518060400160405280600481526020017f52494e5500000000000000000000000000000000000000000000000000000000815250905090565b61236433612f0c565b6123a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161239a906152cd565b60405180910390fd5b6123b7816004613a9c90919063ffffffff16565b5050565b6123c433612f0c565b612403576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123fa906152cd565b60405180910390fd5b80601a60016101000a81548160ff02191690831515021790555050565b60086020528060005260406000206000915054906101000a900460ff1681565b600d5481565b600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561250b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125029061538d565b60405180910390fd5b6125213385858461251c91906157dd565b612f9f565b600191505092915050565b600061253933848461316a565b6001905092915050565b61254c33612f0c565b61258b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612582906152cd565b60405180910390fd5b8060198190555050565b61259e33612f0c565b6125dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125d4906152cd565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546126b59190615554565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161271991906153e8565b60405180910390a35050565b6040518060400160405280600481526020017f52494e550000000000000000000000000000000000000000000000000000000081525081565b6000806000806000601160039054906101000a900460ff16601160049054906101000a900460ff16601160009054906101000a900460ff16601160019054906101000a900460ff16601160029054906101000a900460ff168460ff1694508360ff1693508260ff1692508160ff1691508060ff169050945094509450945094509091929394565b6127ee33612f0c565b61282d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612824906152cd565b60405180910390fd5b80600b60006101000a81548160ff02191690831515021790555050565b61285333612f0c565b612892576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612889906152cd565b60405180910390fd5b6128a6816004612edc90919063ffffffff16565b5050565b737a250d5630b4cf539739df2c5dacb4c659f2488d81565b601160019054906101000a900460ff1681565b6040518060400160405280600881526020017f5245464552494e5500000000000000000000000000000000000000000000000081525081565b601160069054906101000a900460ff1681565b61292a33612f0c565b612969576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612960906152cd565b60405180910390fd5b600060165490506000601681905550600033905060008173ffffffffffffffffffffffffffffffffffffffff16836040516129a390615049565b60006040518083038185875af1925050503d80600081146129e0576040519150601f19603f3d011682016040523d82523d6000602084013e6129e5565b606091505b5050905080612a29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a209061536d565b60405180910390fd5b505050565b612a3733612f0c565b612a76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a6d906152cd565b60405180910390fd5b612a8a816006613a9c90919063ffffffff16565b5050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b612b1e33612f0c565b612b5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b54906152cd565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff1647604051612b8390615049565b60006040518083038185875af1925050503d8060008114612bc0576040519150601f19603f3d011682016040523d82523d6000602084013e612bc5565b606091505b5050905080612bd357600080fd5b50565b3373ffffffffffffffffffffffffffffffffffffffff16612bf561217b565b73ffffffffffffffffffffffffffffffffffffffff1614612c4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c429061526d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612cbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cb29061518d565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612d8133612f0c565b612dc0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612db7906152cd565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60195481565b60036020528060005260406000206000915090505481565b612e4233612f0c565b612e81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e78906152cd565b60405180910390fd5b6001600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000612f04836000018373ffffffffffffffffffffffffffffffffffffffff1660001b613acc565b905092915050565b6000612f1661217b565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480612f985750600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561300f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613006906151cd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561307f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130769061524d565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161315d91906153e8565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156131da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131d19061514d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561324a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613241906151ed565b60405180910390fd5b600960009054906101000a900460ff161561334357600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156133035750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b613342576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613339906152ed565b60405180910390fd5b5b6000613359846004613b3c90919063ffffffff16565b806133745750613373836004613b3c90919063ffffffff16565b5b806133c85750600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061341c5750600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b905060003073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16148061348557503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b90506000601160079054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161480156135255750737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b806135c85750601160079054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480156135c75750737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16145b5b905081806135d35750805b806135db5750825b156135f0576135eb868686613b6c565b6138a1565b601a60019054906101000a900460ff166137535761360c61217b565b73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415801561367a575061364a61217b565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b1561375257601160069054906101000a900460ff1615613702578473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60006040516136f29190615110565b60405180910390a35050506138a5565b601a60019054906101000a900460ff16613751576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613748906152ad565b60405180910390fd5b5b5b6000601160079054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614806137f05750737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16145b90506000601160079054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16148061388f5750737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16145b905061389e8888888585613c72565b50505b5050505b505050565b6001601860006101000a81548160ff0219169083151502179055506000600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000601160049054906101000a900460ff16601160039054906101000a900460ff1661393591906155aa565b60ff1690506000600a5490508381111561396357600b60009054906101000a900460ff1615613962578390505b5b80831080613975575060008261ffff16145b1561398257505050613a7e565b60008261ffff16601160039054906101000a900460ff1660ff16836139a79190615783565b6139b191906155e1565b905060008361ffff16601160049054906101000a900460ff1660ff16846139d89190615783565b6139e291906155e1565b905060006002836139f391906155e1565b905060008184613a0391906157dd565b905060008382613a139190615554565b90506000479050613a2382614237565b60008147613a3191906157dd565b90506000838583613a429190615783565b613a4c91906155e1565b9050613a588682614489565b60008347613a6691906157dd565b9050613a718161458f565b5050505050505050505050505b6000601860006101000a81548160ff02191690831515021790555050565b6000613ac4836000018373ffffffffffffffffffffffffffffffffffffffff1660001b6145da565b905092915050565b6000613ad883836146e6565b613b31578260000182908060018154018082558091505060019003906000526020600020016000909190919091505582600001805490508360010160008481526020019081526020016000208190555060019050613b36565b600090505b92915050565b6000613b64836000018373ffffffffffffffffffffffffffffffffffffffff1660001b6146e6565b905092915050565b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613bf3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613bea9061516d565b60405180910390fd5b613bfd8483614709565b613c0783836147a1565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613c6491906153e8565b60405180910390a350505050565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905084811015613d3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d349061516d565b60405180910390fd5b6002600f54613d4c91906155e1565b600a8190555060008315613eb957613d6e886006613b3c90919063ffffffff16565b613e5d5742600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054111580613dcc5750601860019054906101000a900460ff165b613e0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613e02906153ad565b60405180910390fd5b60195442613e199190615554565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600f54861115613ea2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613e999061522d565b60405180910390fd5b601160019054906101000a900460ff169050614081565b8415613f6b57600e548684613ece9190615554565b1115613f0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613f069061530d565b60405180910390fd5b601054861115613f54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613f4b9061530d565b60405180910390fd5b601160009054906101000a900460ff169050614080565b600e548684613f7a9190615554565b1115613fbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613fb29061530d565b60405180910390fd5b613fcf886006613b3c90919063ffffffff16565b61406d5742600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411158061402d5750601860019054906101000a900460ff165b61406c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016140639061532d565b60405180910390fd5b5b601160029054906101000a900460ff1690505b5b601160079054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff16141580156140ec5750601a60009054906101000a900460ff16155b80156141055750601860009054906101000a900460ff16155b1561411457614113866138aa565b5b600061414a8783601160039054906101000a900460ff16601160049054906101000a900460ff1661414591906155aa565b614839565b90506000818861415a91906157dd565b90506141668a89614709565b81600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546141b59190615554565b925050819055506141c689826147a1565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161422391906153e8565b60405180910390a350505050505050505050565b61426430601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683612f9f565b6000600267ffffffffffffffff811115614281576142806159ab565b5b6040519080825280602002602001820160405280156142af5781602001602082028036833780820191505090505b50905030816000815181106142c7576142c661597c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561436957600080fd5b505afa15801561437d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143a1919061492e565b816001815181106143b5576143b461597c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401614453959493929190615403565b600060405180830381600087803b15801561446d57600080fd5b505af1158015614481573d6000803e3d6000fd5b505050505050565b806017600082825461449b9190615554565b925050819055506144cf30601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612f9f565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008030426040518863ffffffff1660e01b815260040161453696959493929190615079565b6060604051808303818588803b15801561454f57600080fd5b505af1158015614563573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906145889190614b48565b5050505050565b60006064601560009054906101000a900460ff1660ff16836145b19190615783565b6145bb91906155e1565b905080601660008282546145cf9190615554565b925050819055505050565b600080836001016000848152602001908152602001600020549050600081146146da57600060018261460c91906157dd565b905060006001866000018054905061462491906157dd565b9050600086600001828154811061463e5761463d61597c565b5b90600052602060002001549050808760000184815481106146625761466161597c565b5b906000526020600020018190555083876001016000838152602001908152602001600020819055508660000180548061469e5761469d61594d565b5b600190038181906000526020600020016000905590558660010160008781526020019081526020016000206000905560019450505050506146e0565b60009150505b92915050565b600080836001016000848152602001908152602001600020541415905092915050565b600081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461475691906157dd565b905080600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b600081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546147ee9190615554565b905080600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b60006127108260ff168460ff16866148519190615783565b61485b9190615783565b61486591906155e1565b90509392505050565b60008135905061487d81615d80565b92915050565b60008151905061489281615d80565b92915050565b6000813590506148a781615d97565b92915050565b6000813590506148bc81615dae565b92915050565b6000813590506148d181615dc5565b92915050565b6000815190506148e681615dc5565b92915050565b6000813590506148fb81615ddc565b92915050565b600060208284031215614917576149166159da565b5b60006149258482850161486e565b91505092915050565b600060208284031215614944576149436159da565b5b600061495284828501614883565b91505092915050565b60008060408385031215614972576149716159da565b5b60006149808582860161486e565b92505060206149918582860161486e565b9150509250929050565b6000806000606084860312156149b4576149b36159da565b5b60006149c28682870161486e565b93505060206149d38682870161486e565b92505060406149e4868287016148c2565b9150509250925092565b60008060408385031215614a0557614a046159da565b5b6000614a138582860161486e565b9250506020614a2485828601614898565b9150509250929050565b60008060408385031215614a4557614a446159da565b5b6000614a538582860161486e565b9250506020614a64858286016148c2565b9150509250929050565b600060208284031215614a8457614a836159da565b5b6000614a9284828501614898565b91505092915050565b600060208284031215614ab157614ab06159da565b5b6000614abf848285016148ad565b91505092915050565b600060208284031215614ade57614add6159da565b5b6000614aec848285016148c2565b91505092915050565b600080600060608486031215614b0e57614b0d6159da565b5b6000614b1c868287016148c2565b9350506020614b2d868287016148c2565b9250506040614b3e868287016148c2565b9150509250925092565b600080600060608486031215614b6157614b606159da565b5b6000614b6f868287016148d7565b9350506020614b80868287016148d7565b9250506040614b91868287016148d7565b9150509250925092565b600060208284031215614bb157614bb06159da565b5b6000614bbf848285016148ec565b91505092915050565b600080600080600060a08688031215614be457614be36159da565b5b6000614bf2888289016148ec565b9550506020614c03888289016148ec565b9450506040614c14888289016148ec565b9350506060614c25888289016148ec565b9250506080614c36888289016148ec565b9150509295509295909350565b6000614c4f8383614c5b565b60208301905092915050565b614c6481615811565b82525050565b614c7381615811565b82525050565b6000614c8482615504565b614c8e8185615527565b9350614c99836154f4565b8060005b83811015614cca578151614cb18882614c43565b9750614cbc8361551a565b925050600181019050614c9d565b5085935050505092915050565b614ce081615823565b82525050565b614cef81615874565b82525050565b614cfe81615886565b82525050565b6000614d0f8261550f565b614d198185615543565b9350614d298185602086016158bc565b614d32816159df565b840191505092915050565b6000614d4a601283615543565b9150614d55826159fd565b602082019050919050565b6000614d6d601883615543565b9150614d7882615a26565b602082019050919050565b6000614d90602683615543565b9150614d9b82615a4f565b604082019050919050565b6000614db3600783615543565b9150614dbe82615a9e565b602082019050919050565b6000614dd6601183615543565b9150614de182615ac7565b602082019050919050565b6000614df9601083615543565b9150614e0482615af0565b602082019050919050565b6000614e1c601483615543565b9150614e2782615b19565b602082019050919050565b6000614e3f600f83615543565b9150614e4a82615b42565b602082019050919050565b6000614e62600f83615543565b9150614e6d82615b6b565b602082019050919050565b6000614e85602083615543565b9150614e9082615b94565b602082019050919050565b6000614ea8602183615543565b9150614eb382615bbd565b604082019050919050565b6000614ecb601783615543565b9150614ed682615c0c565b602082019050919050565b6000614eee601283615543565b9150614ef982615c35565b602082019050919050565b6000614f11600c83615543565b9150614f1c82615c5e565b602082019050919050565b6000614f34601083615543565b9150614f3f82615c87565b602082019050919050565b6000614f57600e83615543565b9150614f6282615cb0565b602082019050919050565b6000614f7a600083615538565b9150614f8582615cd9565b600082019050919050565b6000614f9d601183615543565b9150614fa882615cdc565b602082019050919050565b6000614fc0600f83615543565b9150614fcb82615d05565b602082019050919050565b6000614fe3600c83615543565b9150614fee82615d2e565b602082019050919050565b6000615006601283615543565b915061501182615d57565b602082019050919050565b6150258161582f565b82525050565b6150348161585d565b82525050565b61504381615867565b82525050565b600061505482614f6d565b9150819050919050565b60006020820190506150736000830184614c6a565b92915050565b600060c08201905061508e6000830189614c6a565b61509b602083018861502b565b6150a86040830187614cf5565b6150b56060830186614cf5565b6150c26080830185614c6a565b6150cf60a083018461502b565b979650505050505050565b60006020820190506150ef6000830184614cd7565b92915050565b600060208201905061510a6000830184614ce6565b92915050565b60006020820190506151256000830184614cf5565b92915050565b600060208201905081810360008301526151458184614d04565b905092915050565b6000602082019050818103600083015261516681614d3d565b9050919050565b6000602082019050818103600083015261518681614d60565b9050919050565b600060208201905081810360008301526151a681614d83565b9050919050565b600060208201905081810360008301526151c681614da6565b9050919050565b600060208201905081810360008301526151e681614dc9565b9050919050565b6000602082019050818103600083015261520681614dec565b9050919050565b6000602082019050818103600083015261522681614e0f565b9050919050565b6000602082019050818103600083015261524681614e32565b9050919050565b6000602082019050818103600083015261526681614e55565b9050919050565b6000602082019050818103600083015261528681614e78565b9050919050565b600060208201905081810360008301526152a681614e9b565b9050919050565b600060208201905081810360008301526152c681614ebe565b9050919050565b600060208201905081810360008301526152e681614ee1565b9050919050565b6000602082019050818103600083015261530681614f04565b9050919050565b6000602082019050818103600083015261532681614f27565b9050919050565b6000602082019050818103600083015261534681614f4a565b9050919050565b6000602082019050818103600083015261536681614f90565b9050919050565b6000602082019050818103600083015261538681614fb3565b9050919050565b600060208201905081810360008301526153a681614fd6565b9050919050565b600060208201905081810360008301526153c681614ff9565b9050919050565b60006020820190506153e2600083018461501c565b92915050565b60006020820190506153fd600083018461502b565b92915050565b600060a082019050615418600083018861502b565b6154256020830187614cf5565b81810360408301526154378186614c79565b90506154466060830185614c6a565b615453608083018461502b565b9695505050505050565b6000604082019050615472600083018561502b565b61547f602083018461502b565b9392505050565b600060a08201905061549b600083018861502b565b6154a8602083018761502b565b6154b5604083018661502b565b6154c2606083018561502b565b6154cf608083018461502b565b9695505050505050565b60006020820190506154ee600083018461503a565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600061555f8261585d565b915061556a8361585d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561559f5761559e6158ef565b5b828201905092915050565b60006155b582615867565b91506155c083615867565b92508260ff038211156155d6576155d56158ef565b5b828201905092915050565b60006155ec8261585d565b91506155f78361585d565b9250826156075761560661591e565b5b828204905092915050565b6000808291508390505b600185111561565c57808604811115615638576156376158ef565b5b60018516156156475780820291505b8081029050615655856159f0565b945061561c565b94509492505050565b60006156708261585d565b915061567b83615867565b92506156a87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846156b0565b905092915050565b6000826156c0576001905061577c565b816156ce576000905061577c565b81600181146156e457600281146156ee5761571d565b600191505061577c565b60ff841115615700576156ff6158ef565b5b8360020a915084821115615717576157166158ef565b5b5061577c565b5060208310610133831016604e8410600b84101617156157525782820a90508381111561574d5761574c6158ef565b5b61577c565b61575f8484846001615612565b92509050818404811115615776576157756158ef565b5b81810290505b9392505050565b600061578e8261585d565b91506157998361585d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156157d2576157d16158ef565b5b828202905092915050565b60006157e88261585d565b91506157f38361585d565b925082821015615806576158056158ef565b5b828203905092915050565b600061581c8261583d565b9050919050565b60008115159050919050565b600061ffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061587f82615898565b9050919050565b60006158918261585d565b9050919050565b60006158a3826158aa565b9050919050565b60006158b58261583d565b9050919050565b60005b838110156158da5780820151818401526020810190506158bf565b838111156158e9576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b7f5472616e736665722066726f6d207a65726f0000000000000000000000000000600082015250565b7f5472616e7366657220657863656564732062616c616e63650000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f323025204d617800000000000000000000000000000000000000000000000000600082015250565b7f417070726f76652066726f6d207a65726f000000000000000000000000000000600082015250565b7f5472616e7366657220746f207a65726f00000000000000000000000000000000600082015250565b7f5472616e73666572203e20616c6c6f77616e6365000000000000000000000000600082015250565b7f44756d702070726f74656374696f6e0000000000000000000000000000000000600082015250565b7f417070726f766520746f207a65726f0000000000000000000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f6c69712b6d61726b6574696e67206e6565647320746f20657175616c2031303060008201527f2500000000000000000000000000000000000000000000000000000000000000602082015250565b7f74726164696e67206e6f742079657420656e61626c6564000000000000000000600082015250565b7f43616c6c6572206e6f7420696e205465616d0000000000000000000000000000600082015250565b7f426c61636b6c6973746564210000000000000000000000000000000000000000600082015250565b7f7768616c652070726f74656374696f6e00000000000000000000000000000000600082015250565b7f53656e64657220696e204c6f636b000000000000000000000000000000000000600082015250565b50565b7f4e6f7420656e6f75676820746f6b656e73000000000000000000000000000000600082015250565b7f7769746864726177206661696c65640000000000000000000000000000000000600082015250565b7f3c3020616c6c6f77616e63650000000000000000000000000000000000000000600082015250565b7f53656c6c657220696e2073656c6c4c6f636b0000000000000000000000000000600082015250565b615d8981615811565b8114615d9457600080fd5b50565b615da081615823565b8114615dab57600080fd5b50565b615db78161582f565b8114615dc257600080fd5b50565b615dce8161585d565b8114615dd957600080fd5b50565b615de581615867565b8114615df057600080fd5b5056fea264697066735822122067c4fe0528823739a14360d2300f348c9b69128b5bf0eb2ad5c40d994287edf264736f6c63430008070033
Deployed Bytecode
0x6080604052600436106104825760003560e01c80636d3016c111610255578063a457c2d711610144578063d28d8852116100c1578063f0c66f1911610085578063f0c66f1914611187578063f2fde38b1461119e578063f8766f20146111c7578063f88b0e46146111f0578063fb2729871461121b578063ff5b48431461125857610489565b8063d28d8852146110b4578063d65af4f2146110df578063d72e08d11461110a578063d924499714611121578063dd62ed3e1461114a57610489565b8063b5d5112611610108578063b5d5112614610fdd578063c564f8791461100c578063c59718ca14611035578063c7639d801461105e578063ca9ec1991461108957610489565b8063a457c2d714610ee6578063a9059cbb14610f23578063a9aab6b914610f60578063ad2fe8da14610f89578063b09f126614610fb257610489565b80638da5cb5b116101d257806395d89b411161019657806395d89b4114610e0157806398b1f16414610e2c578063a1ef429714610e55578063a20623ce14610e7e578063a253c06e14610ebb57610489565b80638da5cb5b14610d425780638dbd5fe514610d6d5780638f578fb014610d8457806393b55f3e14610dad578063954ea66514610dd657610489565b806377cf513d1161021957806377cf513d14610c6d57806382c4767b14610c9657806386d0ada814610cc1578063887c60fb14610cec578063893d20e814610d1757610489565b80636d3016c114610b865780636ebcf60714610bb157806370a0823114610bee578063715018a614610c2b578063762bb28214610c4257610489565b806332424aa31161037157806345793261116102ee57806354d6b96e116102b257806354d6b96e14610ab5578063589210d914610ade57806358e5536514610b095780635e58e01914610b345780635eb6f55b14610b5d57610489565b806345793261146109e257806348e907b714610a0b5780634ada218b14610a365780634f91e48c14610a615780635288230814610a8c57610489565b80633b76cdad116103355780633b76cdad1461090c5780633cc39b7a146109355780633d9a77dc146109605780634089b1701461098c57806342a11095146109b757610489565b806332424aa3146108115780633478154b1461083c578063382e329a1461086757806338dedebd1461089257806339509351146108cf57610489565b80631eb25d13116103ff5780632ac2e610116103c35780632ac2e6101461073e5780632bfc9b91146107675780632d88286314610790578063311a8697146107bb578063313ce567146107e657610489565b80631eb25d13146106575780631f8b845e146106825780632061990d146106ad57806323b872dd146106d65780632a24e0641461071357610489565b8063095ea7b311610446578063095ea7b3146105705780630f511620146105ad5780630fd99e16146105d657806317391e491461060157806318160ddd1461062c57610489565b8063010b71821461048b578063024c2ddd146104b457806305462aae146104f157806306fdde031461051a57806309218ee71461054557610489565b3661048957005b005b34801561049757600080fd5b506104b260048036038101906104ad9190614a2e565b611281565b005b3480156104c057600080fd5b506104db60048036038101906104d6919061495b565b6114a8565b6040516104e891906153e8565b60405180910390f35b3480156104fd57600080fd5b5061051860048036038101906105139190614901565b6114cd565b005b34801561052657600080fd5b5061052f611559565b60405161053c919061512b565b60405180910390f35b34801561055157600080fd5b5061055a611596565b60405161056791906154d9565b60405180910390f35b34801561057c57600080fd5b5061059760048036038101906105929190614a2e565b6115a9565b6040516105a491906150da565b60405180910390f35b3480156105b957600080fd5b506105d460048036038101906105cf9190614a6e565b6115c0565b005b3480156105e257600080fd5b506105eb611625565b6040516105f891906153cd565b60405180910390f35b34801561060d57600080fd5b50610616611639565b60405161062391906154d9565b60405180910390f35b34801561063857600080fd5b5061064161164c565b60405161064e91906153e8565b60405180910390f35b34801561066357600080fd5b5061066c611656565b60405161067991906153e8565b60405180910390f35b34801561068e57600080fd5b50610697611677565b6040516106a491906153cd565b60405180910390f35b3480156106b957600080fd5b506106d460048036038101906106cf9190614a9b565b61168b565b005b3480156106e257600080fd5b506106fd60048036038101906106f8919061499b565b6116f3565b60405161070a91906150da565b60405180910390f35b34801561071f57600080fd5b506107286117e6565b604051610735919061505e565b60405180910390f35b34801561074a57600080fd5b5061076560048036038101906107609190614af5565b61180c565b005b34801561077357600080fd5b5061078e60048036038101906107899190614bc8565b6118d7565b005b34801561079c57600080fd5b506107a5611a6b565b6040516107b291906154d9565b60405180910390f35b3480156107c757600080fd5b506107d0611a7e565b6040516107dd91906154d9565b60405180910390f35b3480156107f257600080fd5b506107fb611a91565b60405161080891906154d9565b60405180910390f35b34801561081d57600080fd5b50610826611a9a565b60405161083391906154d9565b60405180910390f35b34801561084857600080fd5b50610851611a9f565b60405161085e91906153cd565b60405180910390f35b34801561087357600080fd5b5061087c611ab3565b60405161088991906154d9565b60405180910390f35b34801561089e57600080fd5b506108b960048036038101906108b49190614901565b611ac6565b6040516108c691906153e8565b60405180910390f35b3480156108db57600080fd5b506108f660048036038101906108f19190614a2e565b611b31565b60405161090391906150da565b60405180910390f35b34801561091857600080fd5b50610933600480360381019061092e9190614b9b565b611bcf565b005b34801561094157600080fd5b5061094a611c35565b60405161095791906153e8565b60405180910390f35b34801561096c57600080fd5b50610975611c3b565b60405161098392919061545d565b60405180910390f35b34801561099857600080fd5b506109a1611c7c565b6040516109ae91906153e8565b60405180910390f35b3480156109c357600080fd5b506109cc611c82565b6040516109d991906154d9565b60405180910390f35b3480156109ee57600080fd5b50610a096004803603810190610a049190614a6e565b611c95565b005b348015610a1757600080fd5b50610a20611cfa565b604051610a2d91906153e8565b60405180910390f35b348015610a4257600080fd5b50610a4b611d00565b604051610a5891906150da565b60405180910390f35b348015610a6d57600080fd5b50610a76611d13565b604051610a8391906153e8565b60405180910390f35b348015610a9857600080fd5b50610ab36004803603810190610aae9190614901565b611d19565b005b348015610ac157600080fd5b50610adc6004803603810190610ad79190614901565b611dbc565b005b348015610aea57600080fd5b50610af3611e1c565b604051610b0091906153e8565b60405180910390f35b348015610b1557600080fd5b50610b1e611e22565b604051610b2b91906153e8565b60405180910390f35b348015610b4057600080fd5b50610b5b6004803603810190610b569190614ac8565b611e28565b005b348015610b6957600080fd5b50610b846004803603810190610b7f91906149ee565b611e94565b005b348015610b9257600080fd5b50610b9b611f37565b604051610ba891906153e8565b60405180910390f35b348015610bbd57600080fd5b50610bd86004803603810190610bd39190614901565b611f41565b604051610be591906153e8565b60405180910390f35b348015610bfa57600080fd5b50610c156004803603810190610c109190614901565b611f59565b604051610c2291906153e8565b60405180910390f35b348015610c3757600080fd5b50610c40611fa2565b005b348015610c4e57600080fd5b50610c576120d5565b604051610c6491906153e8565b60405180910390f35b348015610c7957600080fd5b50610c946004803603810190610c8f9190614a6e565b6120db565b005b348015610ca257600080fd5b50610cab612140565b604051610cb8919061505e565b60405180910390f35b348015610ccd57600080fd5b50610cd6612146565b604051610ce391906150da565b60405180910390f35b348015610cf857600080fd5b50610d01612159565b604051610d0e91906150da565b60405180910390f35b348015610d2357600080fd5b50610d2c61216c565b604051610d39919061505e565b60405180910390f35b348015610d4e57600080fd5b50610d5761217b565b604051610d64919061505e565b60405180910390f35b348015610d7957600080fd5b50610d826121a4565b005b348015610d9057600080fd5b50610dab6004803603810190610da69190614ac8565b612241565b005b348015610db957600080fd5b50610dd46004803603810190610dcf9190614a6e565b612293565b005b348015610de257600080fd5b50610deb6122f8565b604051610df891906150f5565b60405180910390f35b348015610e0d57600080fd5b50610e1661231e565b604051610e23919061512b565b60405180910390f35b348015610e3857600080fd5b50610e536004803603810190610e4e9190614901565b61235b565b005b348015610e6157600080fd5b50610e7c6004803603810190610e779190614a6e565b6123bb565b005b348015610e8a57600080fd5b50610ea56004803603810190610ea09190614901565b612420565b604051610eb291906150da565b60405180910390f35b348015610ec757600080fd5b50610ed0612440565b604051610edd91906153e8565b60405180910390f35b348015610ef257600080fd5b50610f0d6004803603810190610f089190614a2e565b612446565b604051610f1a91906150da565b60405180910390f35b348015610f2f57600080fd5b50610f4a6004803603810190610f459190614a2e565b61252c565b604051610f5791906150da565b60405180910390f35b348015610f6c57600080fd5b50610f876004803603810190610f829190614ac8565b612543565b005b348015610f9557600080fd5b50610fb06004803603810190610fab9190614901565b612595565b005b348015610fbe57600080fd5b50610fc7612725565b604051610fd4919061512b565b60405180910390f35b348015610fe957600080fd5b50610ff261275e565b604051611003959493929190615486565b60405180910390f35b34801561101857600080fd5b50611033600480360381019061102e9190614a6e565b6127e5565b005b34801561104157600080fd5b5061105c60048036038101906110579190614901565b61284a565b005b34801561106a57600080fd5b506110736128aa565b604051611080919061505e565b60405180910390f35b34801561109557600080fd5b5061109e6128c2565b6040516110ab91906154d9565b60405180910390f35b3480156110c057600080fd5b506110c96128d5565b6040516110d6919061512b565b60405180910390f35b3480156110eb57600080fd5b506110f461290e565b60405161110191906150da565b60405180910390f35b34801561111657600080fd5b5061111f612921565b005b34801561112d57600080fd5b5061114860048036038101906111439190614901565b612a2e565b005b34801561115657600080fd5b50611171600480360381019061116c919061495b565b612a8e565b60405161117e91906153e8565b60405180910390f35b34801561119357600080fd5b5061119c612b15565b005b3480156111aa57600080fd5b506111c560048036038101906111c09190614901565b612bd6565b005b3480156111d357600080fd5b506111ee60048036038101906111e991906149ee565b612d78565b005b3480156111fc57600080fd5b50611205612e1b565b60405161121291906153e8565b60405180910390f35b34801561122757600080fd5b50611242600480360381019061123d9190614901565b612e21565b60405161124f91906153e8565b60405180910390f35b34801561126457600080fd5b5061127f600480360381019061127a9190614901565b612e39565b005b61128a33612f0c565b6112c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c0906152cd565b60405180910390fd5b80600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561134b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113429061534d565b60405180910390fd5b6012600a6113599190615665565b816113649190615783565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546113b291906157dd565b925050819055506012600a6113c79190615665565b816113d29190615783565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546114209190615554565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6012600a6114849190615665565b8461148f9190615783565b60405161149c91906153e8565b60405180910390a35050565b6002602052816000526040600020602052806000526040600020600091509150505481565b6114d633612f0c565b611515576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150c906152cd565b60405180910390fd5b80601a60026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60606040518060400160405280600881526020017f5245464552494e55000000000000000000000000000000000000000000000000815250905090565b601560009054906101000a900460ff1681565b60006115b6338484612f9f565b6001905092915050565b6115c933612f0c565b611608576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ff906152cd565b60405180910390fd5b80601a60006101000a81548160ff02191690831515021790555050565b600b60049054906101000a900461ffff1681565b601160029054906101000a900460ff1681565b6000600d54905090565b6012600a6116649190615665565b640d09dc30006116749190615783565b81565b600b60019054906101000a900461ffff1681565b61169433612f0c565b6116d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ca906152cd565b60405180910390fd5b80600b60066101000a81548161ffff021916908361ffff16021790555050565b600061170084848461316a565b6000600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156117c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117bb9061520d565b60405180910390fd5b6117da853385846117d591906157dd565b612f9f565b60019150509392505050565b601160079054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61181533612f0c565b611854576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184b906152cd565b60405180910390fd5b6012600a6118629190615665565b8361186d9190615783565b92506012600a61187d9190615665565b826118889190615783565b91506012600a6118989190615665565b816118a39190615783565b905082600e81905550601260136118ba9190615665565b826118c59190615783565b60108190555080600f81905550505050565b6118e033612f0c565b61191f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611916906152cd565b60405180910390fd5b6000848661192d91906155aa565b905060648160ff1614611975576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196c9061528d565b60405180910390fd5b60148460ff161115801561198d575060148360ff1611155b801561199d575060148260ff1611155b6119dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d3906151ad565b60405180910390fd5b85601160036101000a81548160ff021916908360ff16021790555084601160046101000a81548160ff021916908360ff16021790555083601160006101000a81548160ff021916908360ff16021790555082601160016101000a81548160ff021916908360ff16021790555081601160026101000a81548160ff021916908360ff160217905550505050505050565b601160049054906101000a900460ff1681565b600b60039054906101000a900460ff1681565b60006012905090565b601281565b600b60069054906101000a900461ffff1681565b601160039054906101000a900460ff1681565b600080600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050428111611b1c576000915050611b2c565b4281611b2891906157dd565b9150505b919050565b6000611bc5338484600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611bc09190615554565b612f9f565b6001905092915050565b611bd833612f0c565b611c17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0e906152cd565b60405180910390fd5b80601560006101000a81548160ff021916908360ff16021790555050565b60175481565b6000806012600a611c4c9190615665565b600e54611c5991906155e1565b6012600a611c679190615665565b600f54611c7491906155e1565b915091509091565b60145481565b601160009054906101000a900460ff1681565b611c9e33612f0c565b611cdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd4906152cd565b60405180910390fd5b80600960006101000a81548160ff02191690831515021790555050565b60135481565b601a60019054906101000a900460ff1681565b600f5481565b611d2233612f0c565b611d61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d58906152cd565b60405180910390fd5b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611dc533612f0c565b611e04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dfb906152cd565b60405180910390fd5b611e18816006612edc90919063ffffffff16565b5050565b60105481565b60165481565b611e3133612f0c565b611e70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e67906152cd565b60405180910390fd5b611e916012600a611e819190615665565b82611e8c9190615783565b6138aa565b50565b611e9d33612f0c565b611edc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed3906152cd565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000601954905090565b60016020528060005260406000206000915090505481565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b3373ffffffffffffffffffffffffffffffffffffffff16611fc161217b565b73ffffffffffffffffffffffffffffffffffffffff1614612017576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200e9061526d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600e5481565b6120e433612f0c565b612123576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211a906152cd565b60405180910390fd5b80601860016101000a81548160ff02191690831515021790555050565b61dead81565b601a60009054906101000a900460ff1681565b601860019054906101000a900460ff1681565b600061217661217b565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6121ad33612f0c565b6121ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121e3906152cd565b60405180910390fd5b6301e13380426121fc9190615554565b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550565b61224a33612f0c565b612289576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612280906152cd565b60405180910390fd5b80600a8190555050565b61229c33612f0c565b6122db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122d2906152cd565b60405180910390fd5b80601160056101000a81548160ff02191690831515021790555050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606040518060400160405280600481526020017f52494e5500000000000000000000000000000000000000000000000000000000815250905090565b61236433612f0c565b6123a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161239a906152cd565b60405180910390fd5b6123b7816004613a9c90919063ffffffff16565b5050565b6123c433612f0c565b612403576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123fa906152cd565b60405180910390fd5b80601a60016101000a81548160ff02191690831515021790555050565b60086020528060005260406000206000915054906101000a900460ff1681565b600d5481565b600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561250b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125029061538d565b60405180910390fd5b6125213385858461251c91906157dd565b612f9f565b600191505092915050565b600061253933848461316a565b6001905092915050565b61254c33612f0c565b61258b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612582906152cd565b60405180910390fd5b8060198190555050565b61259e33612f0c565b6125dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125d4906152cd565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546126b59190615554565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161271991906153e8565b60405180910390a35050565b6040518060400160405280600481526020017f52494e550000000000000000000000000000000000000000000000000000000081525081565b6000806000806000601160039054906101000a900460ff16601160049054906101000a900460ff16601160009054906101000a900460ff16601160019054906101000a900460ff16601160029054906101000a900460ff168460ff1694508360ff1693508260ff1692508160ff1691508060ff169050945094509450945094509091929394565b6127ee33612f0c565b61282d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612824906152cd565b60405180910390fd5b80600b60006101000a81548160ff02191690831515021790555050565b61285333612f0c565b612892576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612889906152cd565b60405180910390fd5b6128a6816004612edc90919063ffffffff16565b5050565b737a250d5630b4cf539739df2c5dacb4c659f2488d81565b601160019054906101000a900460ff1681565b6040518060400160405280600881526020017f5245464552494e5500000000000000000000000000000000000000000000000081525081565b601160069054906101000a900460ff1681565b61292a33612f0c565b612969576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612960906152cd565b60405180910390fd5b600060165490506000601681905550600033905060008173ffffffffffffffffffffffffffffffffffffffff16836040516129a390615049565b60006040518083038185875af1925050503d80600081146129e0576040519150601f19603f3d011682016040523d82523d6000602084013e6129e5565b606091505b5050905080612a29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a209061536d565b60405180910390fd5b505050565b612a3733612f0c565b612a76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a6d906152cd565b60405180910390fd5b612a8a816006613a9c90919063ffffffff16565b5050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b612b1e33612f0c565b612b5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b54906152cd565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff1647604051612b8390615049565b60006040518083038185875af1925050503d8060008114612bc0576040519150601f19603f3d011682016040523d82523d6000602084013e612bc5565b606091505b5050905080612bd357600080fd5b50565b3373ffffffffffffffffffffffffffffffffffffffff16612bf561217b565b73ffffffffffffffffffffffffffffffffffffffff1614612c4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c429061526d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612cbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cb29061518d565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612d8133612f0c565b612dc0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612db7906152cd565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60195481565b60036020528060005260406000206000915090505481565b612e4233612f0c565b612e81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e78906152cd565b60405180910390fd5b6001600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000612f04836000018373ffffffffffffffffffffffffffffffffffffffff1660001b613acc565b905092915050565b6000612f1661217b565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480612f985750600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561300f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613006906151cd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561307f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130769061524d565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161315d91906153e8565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156131da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131d19061514d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561324a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613241906151ed565b60405180910390fd5b600960009054906101000a900460ff161561334357600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156133035750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b613342576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613339906152ed565b60405180910390fd5b5b6000613359846004613b3c90919063ffffffff16565b806133745750613373836004613b3c90919063ffffffff16565b5b806133c85750600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061341c5750600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b905060003073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16148061348557503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b90506000601160079054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161480156135255750737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b806135c85750601160079054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480156135c75750737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16145b5b905081806135d35750805b806135db5750825b156135f0576135eb868686613b6c565b6138a1565b601a60019054906101000a900460ff166137535761360c61217b565b73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415801561367a575061364a61217b565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b1561375257601160069054906101000a900460ff1615613702578473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60006040516136f29190615110565b60405180910390a35050506138a5565b601a60019054906101000a900460ff16613751576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613748906152ad565b60405180910390fd5b5b5b6000601160079054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614806137f05750737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16145b90506000601160079054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16148061388f5750737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16145b905061389e8888888585613c72565b50505b5050505b505050565b6001601860006101000a81548160ff0219169083151502179055506000600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000601160049054906101000a900460ff16601160039054906101000a900460ff1661393591906155aa565b60ff1690506000600a5490508381111561396357600b60009054906101000a900460ff1615613962578390505b5b80831080613975575060008261ffff16145b1561398257505050613a7e565b60008261ffff16601160039054906101000a900460ff1660ff16836139a79190615783565b6139b191906155e1565b905060008361ffff16601160049054906101000a900460ff1660ff16846139d89190615783565b6139e291906155e1565b905060006002836139f391906155e1565b905060008184613a0391906157dd565b905060008382613a139190615554565b90506000479050613a2382614237565b60008147613a3191906157dd565b90506000838583613a429190615783565b613a4c91906155e1565b9050613a588682614489565b60008347613a6691906157dd565b9050613a718161458f565b5050505050505050505050505b6000601860006101000a81548160ff02191690831515021790555050565b6000613ac4836000018373ffffffffffffffffffffffffffffffffffffffff1660001b6145da565b905092915050565b6000613ad883836146e6565b613b31578260000182908060018154018082558091505060019003906000526020600020016000909190919091505582600001805490508360010160008481526020019081526020016000208190555060019050613b36565b600090505b92915050565b6000613b64836000018373ffffffffffffffffffffffffffffffffffffffff1660001b6146e6565b905092915050565b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613bf3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613bea9061516d565b60405180910390fd5b613bfd8483614709565b613c0783836147a1565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613c6491906153e8565b60405180910390a350505050565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905084811015613d3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d349061516d565b60405180910390fd5b6002600f54613d4c91906155e1565b600a8190555060008315613eb957613d6e886006613b3c90919063ffffffff16565b613e5d5742600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054111580613dcc5750601860019054906101000a900460ff165b613e0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613e02906153ad565b60405180910390fd5b60195442613e199190615554565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600f54861115613ea2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613e999061522d565b60405180910390fd5b601160019054906101000a900460ff169050614081565b8415613f6b57600e548684613ece9190615554565b1115613f0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613f069061530d565b60405180910390fd5b601054861115613f54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613f4b9061530d565b60405180910390fd5b601160009054906101000a900460ff169050614080565b600e548684613f7a9190615554565b1115613fbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613fb29061530d565b60405180910390fd5b613fcf886006613b3c90919063ffffffff16565b61406d5742600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411158061402d5750601860019054906101000a900460ff165b61406c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016140639061532d565b60405180910390fd5b5b601160029054906101000a900460ff1690505b5b601160079054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff16141580156140ec5750601a60009054906101000a900460ff16155b80156141055750601860009054906101000a900460ff16155b1561411457614113866138aa565b5b600061414a8783601160039054906101000a900460ff16601160049054906101000a900460ff1661414591906155aa565b614839565b90506000818861415a91906157dd565b90506141668a89614709565b81600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546141b59190615554565b925050819055506141c689826147a1565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161422391906153e8565b60405180910390a350505050505050505050565b61426430601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683612f9f565b6000600267ffffffffffffffff811115614281576142806159ab565b5b6040519080825280602002602001820160405280156142af5781602001602082028036833780820191505090505b50905030816000815181106142c7576142c661597c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561436957600080fd5b505afa15801561437d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143a1919061492e565b816001815181106143b5576143b461597c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401614453959493929190615403565b600060405180830381600087803b15801561446d57600080fd5b505af1158015614481573d6000803e3d6000fd5b505050505050565b806017600082825461449b9190615554565b925050819055506144cf30601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612f9f565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008030426040518863ffffffff1660e01b815260040161453696959493929190615079565b6060604051808303818588803b15801561454f57600080fd5b505af1158015614563573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906145889190614b48565b5050505050565b60006064601560009054906101000a900460ff1660ff16836145b19190615783565b6145bb91906155e1565b905080601660008282546145cf9190615554565b925050819055505050565b600080836001016000848152602001908152602001600020549050600081146146da57600060018261460c91906157dd565b905060006001866000018054905061462491906157dd565b9050600086600001828154811061463e5761463d61597c565b5b90600052602060002001549050808760000184815481106146625761466161597c565b5b906000526020600020018190555083876001016000838152602001908152602001600020819055508660000180548061469e5761469d61594d565b5b600190038181906000526020600020016000905590558660010160008781526020019081526020016000206000905560019450505050506146e0565b60009150505b92915050565b600080836001016000848152602001908152602001600020541415905092915050565b600081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461475691906157dd565b905080600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b600081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546147ee9190615554565b905080600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b60006127108260ff168460ff16866148519190615783565b61485b9190615783565b61486591906155e1565b90509392505050565b60008135905061487d81615d80565b92915050565b60008151905061489281615d80565b92915050565b6000813590506148a781615d97565b92915050565b6000813590506148bc81615dae565b92915050565b6000813590506148d181615dc5565b92915050565b6000815190506148e681615dc5565b92915050565b6000813590506148fb81615ddc565b92915050565b600060208284031215614917576149166159da565b5b60006149258482850161486e565b91505092915050565b600060208284031215614944576149436159da565b5b600061495284828501614883565b91505092915050565b60008060408385031215614972576149716159da565b5b60006149808582860161486e565b92505060206149918582860161486e565b9150509250929050565b6000806000606084860312156149b4576149b36159da565b5b60006149c28682870161486e565b93505060206149d38682870161486e565b92505060406149e4868287016148c2565b9150509250925092565b60008060408385031215614a0557614a046159da565b5b6000614a138582860161486e565b9250506020614a2485828601614898565b9150509250929050565b60008060408385031215614a4557614a446159da565b5b6000614a538582860161486e565b9250506020614a64858286016148c2565b9150509250929050565b600060208284031215614a8457614a836159da565b5b6000614a9284828501614898565b91505092915050565b600060208284031215614ab157614ab06159da565b5b6000614abf848285016148ad565b91505092915050565b600060208284031215614ade57614add6159da565b5b6000614aec848285016148c2565b91505092915050565b600080600060608486031215614b0e57614b0d6159da565b5b6000614b1c868287016148c2565b9350506020614b2d868287016148c2565b9250506040614b3e868287016148c2565b9150509250925092565b600080600060608486031215614b6157614b606159da565b5b6000614b6f868287016148d7565b9350506020614b80868287016148d7565b9250506040614b91868287016148d7565b9150509250925092565b600060208284031215614bb157614bb06159da565b5b6000614bbf848285016148ec565b91505092915050565b600080600080600060a08688031215614be457614be36159da565b5b6000614bf2888289016148ec565b9550506020614c03888289016148ec565b9450506040614c14888289016148ec565b9350506060614c25888289016148ec565b9250506080614c36888289016148ec565b9150509295509295909350565b6000614c4f8383614c5b565b60208301905092915050565b614c6481615811565b82525050565b614c7381615811565b82525050565b6000614c8482615504565b614c8e8185615527565b9350614c99836154f4565b8060005b83811015614cca578151614cb18882614c43565b9750614cbc8361551a565b925050600181019050614c9d565b5085935050505092915050565b614ce081615823565b82525050565b614cef81615874565b82525050565b614cfe81615886565b82525050565b6000614d0f8261550f565b614d198185615543565b9350614d298185602086016158bc565b614d32816159df565b840191505092915050565b6000614d4a601283615543565b9150614d55826159fd565b602082019050919050565b6000614d6d601883615543565b9150614d7882615a26565b602082019050919050565b6000614d90602683615543565b9150614d9b82615a4f565b604082019050919050565b6000614db3600783615543565b9150614dbe82615a9e565b602082019050919050565b6000614dd6601183615543565b9150614de182615ac7565b602082019050919050565b6000614df9601083615543565b9150614e0482615af0565b602082019050919050565b6000614e1c601483615543565b9150614e2782615b19565b602082019050919050565b6000614e3f600f83615543565b9150614e4a82615b42565b602082019050919050565b6000614e62600f83615543565b9150614e6d82615b6b565b602082019050919050565b6000614e85602083615543565b9150614e9082615b94565b602082019050919050565b6000614ea8602183615543565b9150614eb382615bbd565b604082019050919050565b6000614ecb601783615543565b9150614ed682615c0c565b602082019050919050565b6000614eee601283615543565b9150614ef982615c35565b602082019050919050565b6000614f11600c83615543565b9150614f1c82615c5e565b602082019050919050565b6000614f34601083615543565b9150614f3f82615c87565b602082019050919050565b6000614f57600e83615543565b9150614f6282615cb0565b602082019050919050565b6000614f7a600083615538565b9150614f8582615cd9565b600082019050919050565b6000614f9d601183615543565b9150614fa882615cdc565b602082019050919050565b6000614fc0600f83615543565b9150614fcb82615d05565b602082019050919050565b6000614fe3600c83615543565b9150614fee82615d2e565b602082019050919050565b6000615006601283615543565b915061501182615d57565b602082019050919050565b6150258161582f565b82525050565b6150348161585d565b82525050565b61504381615867565b82525050565b600061505482614f6d565b9150819050919050565b60006020820190506150736000830184614c6a565b92915050565b600060c08201905061508e6000830189614c6a565b61509b602083018861502b565b6150a86040830187614cf5565b6150b56060830186614cf5565b6150c26080830185614c6a565b6150cf60a083018461502b565b979650505050505050565b60006020820190506150ef6000830184614cd7565b92915050565b600060208201905061510a6000830184614ce6565b92915050565b60006020820190506151256000830184614cf5565b92915050565b600060208201905081810360008301526151458184614d04565b905092915050565b6000602082019050818103600083015261516681614d3d565b9050919050565b6000602082019050818103600083015261518681614d60565b9050919050565b600060208201905081810360008301526151a681614d83565b9050919050565b600060208201905081810360008301526151c681614da6565b9050919050565b600060208201905081810360008301526151e681614dc9565b9050919050565b6000602082019050818103600083015261520681614dec565b9050919050565b6000602082019050818103600083015261522681614e0f565b9050919050565b6000602082019050818103600083015261524681614e32565b9050919050565b6000602082019050818103600083015261526681614e55565b9050919050565b6000602082019050818103600083015261528681614e78565b9050919050565b600060208201905081810360008301526152a681614e9b565b9050919050565b600060208201905081810360008301526152c681614ebe565b9050919050565b600060208201905081810360008301526152e681614ee1565b9050919050565b6000602082019050818103600083015261530681614f04565b9050919050565b6000602082019050818103600083015261532681614f27565b9050919050565b6000602082019050818103600083015261534681614f4a565b9050919050565b6000602082019050818103600083015261536681614f90565b9050919050565b6000602082019050818103600083015261538681614fb3565b9050919050565b600060208201905081810360008301526153a681614fd6565b9050919050565b600060208201905081810360008301526153c681614ff9565b9050919050565b60006020820190506153e2600083018461501c565b92915050565b60006020820190506153fd600083018461502b565b92915050565b600060a082019050615418600083018861502b565b6154256020830187614cf5565b81810360408301526154378186614c79565b90506154466060830185614c6a565b615453608083018461502b565b9695505050505050565b6000604082019050615472600083018561502b565b61547f602083018461502b565b9392505050565b600060a08201905061549b600083018861502b565b6154a8602083018761502b565b6154b5604083018661502b565b6154c2606083018561502b565b6154cf608083018461502b565b9695505050505050565b60006020820190506154ee600083018461503a565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600061555f8261585d565b915061556a8361585d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561559f5761559e6158ef565b5b828201905092915050565b60006155b582615867565b91506155c083615867565b92508260ff038211156155d6576155d56158ef565b5b828201905092915050565b60006155ec8261585d565b91506155f78361585d565b9250826156075761560661591e565b5b828204905092915050565b6000808291508390505b600185111561565c57808604811115615638576156376158ef565b5b60018516156156475780820291505b8081029050615655856159f0565b945061561c565b94509492505050565b60006156708261585d565b915061567b83615867565b92506156a87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846156b0565b905092915050565b6000826156c0576001905061577c565b816156ce576000905061577c565b81600181146156e457600281146156ee5761571d565b600191505061577c565b60ff841115615700576156ff6158ef565b5b8360020a915084821115615717576157166158ef565b5b5061577c565b5060208310610133831016604e8410600b84101617156157525782820a90508381111561574d5761574c6158ef565b5b61577c565b61575f8484846001615612565b92509050818404811115615776576157756158ef565b5b81810290505b9392505050565b600061578e8261585d565b91506157998361585d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156157d2576157d16158ef565b5b828202905092915050565b60006157e88261585d565b91506157f38361585d565b925082821015615806576158056158ef565b5b828203905092915050565b600061581c8261583d565b9050919050565b60008115159050919050565b600061ffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061587f82615898565b9050919050565b60006158918261585d565b9050919050565b60006158a3826158aa565b9050919050565b60006158b58261583d565b9050919050565b60005b838110156158da5780820151818401526020810190506158bf565b838111156158e9576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b7f5472616e736665722066726f6d207a65726f0000000000000000000000000000600082015250565b7f5472616e7366657220657863656564732062616c616e63650000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f323025204d617800000000000000000000000000000000000000000000000000600082015250565b7f417070726f76652066726f6d207a65726f000000000000000000000000000000600082015250565b7f5472616e7366657220746f207a65726f00000000000000000000000000000000600082015250565b7f5472616e73666572203e20616c6c6f77616e6365000000000000000000000000600082015250565b7f44756d702070726f74656374696f6e0000000000000000000000000000000000600082015250565b7f417070726f766520746f207a65726f0000000000000000000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f6c69712b6d61726b6574696e67206e6565647320746f20657175616c2031303060008201527f2500000000000000000000000000000000000000000000000000000000000000602082015250565b7f74726164696e67206e6f742079657420656e61626c6564000000000000000000600082015250565b7f43616c6c6572206e6f7420696e205465616d0000000000000000000000000000600082015250565b7f426c61636b6c6973746564210000000000000000000000000000000000000000600082015250565b7f7768616c652070726f74656374696f6e00000000000000000000000000000000600082015250565b7f53656e64657220696e204c6f636b000000000000000000000000000000000000600082015250565b50565b7f4e6f7420656e6f75676820746f6b656e73000000000000000000000000000000600082015250565b7f7769746864726177206661696c65640000000000000000000000000000000000600082015250565b7f3c3020616c6c6f77616e63650000000000000000000000000000000000000000600082015250565b7f53656c6c657220696e2073656c6c4c6f636b0000000000000000000000000000600082015250565b615d8981615811565b8114615d9457600080fd5b50565b615da081615823565b8114615dab57600080fd5b50565b615db78161582f565b8114615dc257600080fd5b50565b615dce8161585d565b8114615dd957600080fd5b50565b615de581615867565b8114615df057600080fd5b5056fea264697066735822122067c4fe0528823739a14360d2300f348c9b69128b5bf0eb2ad5c40d994287edf264736f6c63430008070033
Deployed Bytecode Sourcemap
16344:18434:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28068:324;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16530:68;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31366:153;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32451:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23889:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33336:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29551:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17275:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17887:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32761:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16998:65;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17165:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27672:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;33810:392;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18062:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30744:402;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29937:513;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17952:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17218:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32659:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16955:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17329:42;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17919:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26920:294;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34218:205;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30462:116;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24195:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26504:162;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;23847:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17832:20;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31537:134;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23796:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31162:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17719:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31948:128;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29000:129;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17772:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23933:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30589:141;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27817:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27220:115;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16478:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32877:121;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8128:140;;;;;;;;;;;;;:::i;:::-;;17663:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29681:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17522:73;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27412:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27343;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32349:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7903:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27947:113;;;;;;;;;;;;;:::i;:::-;;27568:96;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31679:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18103:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32553:98;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28874:114;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31248:104;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16773:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17608:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34431:342;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33006:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29805:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28513:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16909:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26674:234;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;27451:109;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28755:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17435:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17859:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16861:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18024:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29273:268;;;;;;;;;;;;;:::i;:::-;;29135:130;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;33181:147;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32086:158;;;;;;;;;;;;;:::i;:::-;;8282:236;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28400:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27378:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16605:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31810:130;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28068:324;18196:19;18204:10;18196:7;:19::i;:::-;18188:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;28180:6:::1;28161:9;:15;28171:4;28161:15;;;;;;;;;;;;;;;;:25;;28153:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;16989:2;28244;:13;;;;:::i;:::-;28237:6;:20;;;;:::i;:::-;28219:9;:15;28229:4;28219:15;;;;;;;;;;;;;;;;:39;;;;;;;:::i;:::-;;;;;;;;16989:2;28303;:13;;;;:::i;:::-;28296:6;:20;;;;:::i;:::-;28269:9;:24;28287:4;28269:24;;;;;;;;;;;;;;;;:48;;;;;;;:::i;:::-;;;;;;;;28356:4;28333:51;;28342:4;28333:51;;;16989:2;28370;:13;;;;:::i;:::-;28363:6;:20;;;;:::i;:::-;28333:51;;;;;;:::i;:::-;;;;;;;;28068:324:::0;;:::o;16530:68::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;31366:153::-;18196:19;18204:10;18196:7;:19::i;:::-;18188:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;31490:21:::1;31467:22;;:44;;;;;;;;;;;;;;;;;;31366:153:::0;:::o;32451:94::-;32499:13;32532:5;;;;;;;;;;;;;;;;;32525:12;;32451:94;:::o;23889:31::-;;;;;;;;;;;;;:::o;33336:161::-;33413:4;33430:37;33439:10;33451:7;33460:6;33430:8;:37::i;:::-;33485:4;33478:11;;33336:161;;;;:::o;29551:118::-;18196:19;18204:10;18196:7;:19::i;:::-;18188:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;29655:6:::1;29638:16;;:23;;;;;;;;;;;;;;;;;;29551:118:::0;:::o;17275:35::-;;;;;;;;;;;;;:::o;17887:25::-;;;;;;;;;;;;;:::o;32761:108::-;32816:7;32843:18;;32836:25;;32761:108;:::o;16998:65::-;16989:2;17050;:13;;;;:::i;:::-;17037:10;:26;;;;:::i;:::-;16998:65;:::o;17165:34::-;;;;;;;;;;;;;:::o;27672:102::-;18196:19;18204:10;18196:7;:19::i;:::-;18188:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;27763:3:::1;27745:15;;:21;;;;;;;;;;;;;;;;;;27672:102:::0;:::o;33810:392::-;33910:4;33927:36;33937:6;33945:9;33956:6;33927:9;:36::i;:::-;33976:24;34003:11;:19;34015:6;34003:19;;;;;;;;;;;;;;;:31;34023:10;34003:31;;;;;;;;;;;;;;;;33976:58;;34073:6;34053:16;:26;;34045:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;34117:55;34126:6;34134:10;34165:6;34146:16;:25;;;;:::i;:::-;34117:8;:55::i;:::-;34190:4;34183:11;;;33810:392;;;;;:::o;18062:34::-;;;;;;;;;;;;;:::o;30744:402::-;18196:19;18204:10;18196:7;:19::i;:::-;18188:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;16989:2:::1;30902;:13;;;;:::i;:::-;30886:15;:29;;;;:::i;:::-;30870:45;;16989:2;30952;:13;;;;:::i;:::-;30940:11;:25;;;;:::i;:::-;30926:39;;16989:2;31002;:13;;;;:::i;:::-;30989:12;:26;;;;:::i;:::-;30976:39;;31041:15;31026:12;:30;;;;16989:2;31090;:13;;;;:::i;:::-;31078:11;:25;;;;:::i;:::-;31067:8;:36;;;;31126:12;31114:9;:24;;;;30744:402:::0;;;:::o;29937:513::-;18196:19;18204:10;18196:7;:19::i;:::-;18188:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;30085:14:::1;30115;30100;:29;;;;:::i;:::-;30085:44;;30158:3;30148:8;:13;;;30140:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;30226:2;30218:6;:10;;;;:25;;;;;30241:2;30232:7;:11;;;;30218:25;:45;;;;;30261:2;30247:11;:16;;;;30218:45;30210:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;30300:14;30286:13;;:28;;;;;;;;;;;;;;;;;;30339:14;30325:13;;:28;;;;;;;;;;;;;;;;;;30374:6;30366:7;;:14;;;;;;;;;;;;;;;;;;30400:7;30391:8;;:16;;;;;;;;;;;;;;;;;;30431:11;30418:12;;:24;;;;;;;;;;;;;;;;;;30074:376;29937:513:::0;;;;;:::o;17952:26::-;;;;;;;;;;;;;:::o;17218:38::-;;;;;;;;;;;;;:::o;32659:94::-;32711:5;16989:2;32729:16;;32659:94;:::o;16955:36::-;16989:2;16955:36;:::o;17329:42::-;;;;;;;;;;;;;:::o;17919:26::-;;;;;;;;;;;;;:::o;26920:294::-;27019:7;27038:16;27055:9;:25;27065:14;27055:25;;;;;;;;;;;;;;;;27038:42;;27104:15;27094:8;:25;27091:74;;27152:1;27145:8;;;;;27091:74;27191:15;27182:8;:24;;;;:::i;:::-;27175:31;;;26920:294;;;;:::o;34218:205::-;34300:4;34317:76;34326:10;34338:7;34382:10;34347:11;:23;34359:10;34347:23;;;;;;;;;;;;;;;:32;34371:7;34347:32;;;;;;;;;;;;;;;;:45;;;;:::i;:::-;34317:8;:76::i;:::-;34411:4;34404:11;;34218:205;;;;:::o;30462:116::-;18196:19;18204:10;18196:7;:19::i;:::-;18188:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;30562:8:::1;30547:14;;:23;;;;;;;;;;;;;;;;;;30462:116:::0;:::o;24195:25::-;;;;:::o;26504:162::-;26558:15;26575:12;16989:2;26619;:13;;;;:::i;:::-;26606:12;;:26;;;;:::i;:::-;16989:2;26644;:13;;;;:::i;:::-;26634:9;;:23;;;;:::i;:::-;26599:59;;;;26504:162;;:::o;23847:27::-;;;;:::o;17832:20::-;;;;;;;;;;;;;:::o;31537:134::-;18196:19;18204:10;18196:7;:19::i;:::-;18188:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;31645:18:::1;31631:11;;:32;;;;;;;;;;;;;;;;;;31537:134:::0;:::o;23796:38::-;;;;:::o;31162:26::-;;;;;;;;;;;;;:::o;17719:46::-;;;;:::o;31948:128::-;18196:19;18204:10;18196:7;:19::i;:::-;18188:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;32063:5:::1;32040:10;:20;32051:8;32040:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;31948:128:::0;:::o;29000:129::-;18196:19;18204:10;18196:7;:19::i;:::-;18188:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;29087:34:::1;29113:7;29087:21;:25;;:34;;;;:::i;:::-;;29000:129:::0;:::o;17772:45::-;;;;:::o;23933:31::-;;;;:::o;30589:141::-;18196:19;18204:10;18196:7;:19::i;:::-;18188:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;30682:40:::1;16989:2;30708;:13;;;;:::i;:::-;30701:4;:20;;;;:::i;:::-;30682:18;:40::i;:::-;30589:141:::0;:::o;27817:118::-;18196:19;18204:10;18196:7;:19::i;:::-;18188:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;27922:5:::1;27903:10;:16;27914:4;27903:16;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;27817:118:::0;;:::o;27220:115::-;27289:7;27315:12;;27308:19;;27220:115;:::o;16478:45::-;;;;;;;;;;;;;;;;;:::o;32877:121::-;32945:7;32972:9;:18;32982:7;32972:18;;;;;;;;;;;;;;;;32965:25;;32877:121;;;:::o;8128:140::-;8047:10;8036:21;;:7;:5;:7::i;:::-;:21;;;8028:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;8227:1:::1;8190:40;;8211:6;::::0;::::1;;;;;;;;8190:40;;;;;;;;;;;;8258:1;8241:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;8128:140::o:0;17663:49::-;;;;:::o;29681:112::-;18196:19;18204:10;18196:7;:19::i;:::-;18188:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;29777:8:::1;29760:16;;:25;;;;;;;;;;;;;;;;;;29681:112:::0;:::o;17522:73::-;17553:42;17522:73;:::o;27412:28::-;;;;;;;;;;;;;:::o;27343:::-;;;;;;;;;;;;;:::o;32349:94::-;32401:7;32428;:5;:7::i;:::-;32421:14;;32349:94;:::o;7903:79::-;7941:7;7968:6;;;;;;;;;;;7961:13;;7903:79;:::o;27947:113::-;18196:19;18204:10;18196:7;:19::i;:::-;18188:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;28043:8:::1;28026:15;:26;;;;:::i;:::-;28004:9;:21;28014:10;28004:21;;;;;;;;;;;;;;;:48;;;;27947:113::o:0;27568:96::-;18196:19;18204:10;18196:7;:19::i;:::-;18188:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;27653:3:::1;27641:9;:15;;;;27568:96:::0;:::o;31679:123::-;18196:19;18204:10;18196:7;:19::i;:::-;18188:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;31788:6:::1;31768:17;;:26;;;;;;;;;;;;;;;;;;31679:123:::0;:::o;18103:39::-;;;;;;;;;;;;;:::o;32553:98::-;32603:13;32636:7;;;;;;;;;;;;;;;;;32629:14;;32553:98;:::o;28874:114::-;18196:19;18204:10;18196:7;:19::i;:::-;18188:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;28955:25:::1;28972:7;28955:9;:16;;:25;;;;:::i;:::-;;28874:114:::0;:::o;31248:104::-;18196:19;18204:10;18196:7;:19::i;:::-;18188:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;31339:5:::1;31322:14;;:22;;;;;;;;;;;;;;;;;;31248:104:::0;:::o;16773:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;17608:48::-;;;;:::o;34431:342::-;34518:4;34535:24;34562:11;:23;34574:10;34562:23;;;;;;;;;;;;;;;:32;34586:7;34562:32;;;;;;;;;;;;;;;;34535:59;;34633:15;34613:16;:35;;34605:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;34678:65;34687:10;34699:7;34727:15;34708:16;:34;;;;:::i;:::-;34678:8;:65::i;:::-;34761:4;34754:11;;;34431:342;;;;:::o;33006:167::-;33086:4;33103:40;33113:10;33125:9;33136:6;33103:9;:40::i;:::-;33161:4;33154:11;;33006:167;;;;:::o;29805:118::-;18196:19;18204:10;18196:7;:19::i;:::-;18188:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;29900:15:::1;29887:12;:28;;;;29805:118:::0;:::o;28513:234::-;18196:19;18204:10;18196:7;:19::i;:::-;18188:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;28583:14:::1;28600:9;:15;28610:4;28600:15;;;;;;;;;;;;;;;;28583:32;;28642:1;28626:9;:15;28636:4;28626:15;;;;;;;;;;;;;;;:17;;;;28680:6;28654:9;:24;28672:4;28654:24;;;;;;;;;;;;;;;;:32;;;;;;;:::i;:::-;;;;;;;;28725:4;28702:37;;28711:4;28702:37;;;28732:6;28702:37;;;;;;:::i;:::-;;;;;;;;28572:175;28513:234:::0;:::o;16909:39::-;;;;;;;;;;;;;;;;;;;:::o;26674:234::-;26727:20;26748;26770:14;26786:15;26803:19;26842:13;;;;;;;;;;;26856;;;;;;;;;;;26870:7;;;;;;;;;;;26878:8;;;;;;;;;;;26887:12;;;;;;;;;;;26834:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26674:234;;;;;:::o;27451:109::-;18196:19;18204:10;18196:7;:19::i;:::-;18188:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;27544:8:::1;27529:12;;:23;;;;;;;;;;;;;;;;;;27451:109:::0;:::o;28755:113::-;18196:19;18204:10;18196:7;:19::i;:::-;18188:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;28838:22:::1;28852:7;28838:9;:13;;:22;;;;:::i;:::-;;28755:113:::0;:::o;17435:80::-;17473:42;17435:80;:::o;17859:21::-;;;;;;;;;;;;;:::o;16861:41::-;;;;;;;;;;;;;;;;;;;:::o;18024:29::-;;;;;;;;;;;;;:::o;29273:268::-;18196:19;18204:10;18196:7;:19::i;:::-;18188:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;29336:14:::1;29351:16;;29336:31;;29395:1;29378:16;:18;;;;29407:14;29424:10;29407:27;;29446:9;29459:6;:11;;29479:6;29459:32;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29445:46;;;29510:4;29502:31;;;;;;;;;;;;:::i;:::-;;;;;;;;;29325:216;;;29273:268::o:0;29135:130::-;18196:19;18204:10;18196:7;:19::i;:::-;18188:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;29220:37:::1;29249:7;29220:21;:28;;:37;;;;:::i;:::-;;29135:130:::0;:::o;33181:147::-;33265:7;33292:11;:19;33304:6;33292:19;;;;;;;;;;;;;;;:28;33312:7;33292:28;;;;;;;;;;;;;;;;33285:35;;33181:147;;;;:::o;32086:158::-;18196:19;18204:10;18196:7;:19::i;:::-;18188:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;32148:9:::1;32161:10;:15;;32185:21;32161:51;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32147:65;;;32231:4;32223:13;;;::::0;::::1;;32136:108;32086:158::o:0;8282:236::-;8047:10;8036:21;;:7;:5;:7::i;:::-;:21;;;8028:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;8383:1:::1;8363:22;;:8;:22;;;;8355:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;8473:8;8444:38;;8465:6;::::0;::::1;;;;;;;;8444:38;;;;;;;;;;;;8502:8;8493:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;8282:236:::0;:::o;28400:105::-;18196:19;18204:10;18196:7;:19::i;:::-;18188:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;28492:5:::1;28477:6;:12;28484:4;28477:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;28400:105:::0;;:::o;27378:27::-;;;;:::o;16605:45::-;;;;;;;;;;;;;;;;;:::o;31810:130::-;18196:19;18204:10;18196:7;:19::i;:::-;18188:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;31928:4:::1;31902:10;:23;31913:11;31902:23;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;31810:130:::0;:::o;14626:152::-;14696:4;14720:50;14725:3;:10;;14761:5;14745:23;;14737:32;;14720:4;:50::i;:::-;14713:57;;14626:152;;;;:::o;18276:111::-;18329:4;18358:7;:5;:7::i;:::-;18352:13;;:4;:13;;;:27;;;;18367:6;:12;18374:4;18367:12;;;;;;;;;;;;;;;;;;;;;;;;;18352:27;18345:34;;18276:111;;;:::o;33503:299::-;33613:1;33596:19;;:5;:19;;;;33588:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;33675:1;33656:21;;:7;:21;;;;33648:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;33740:6;33710:11;:18;33722:5;33710:18;;;;;;;;;;;;;;;:27;33729:7;33710:27;;;;;;;;;;;;;;;:36;;;;33778:7;33762:32;;33771:5;33762:32;;;33787:6;33762:32;;;;;;:::i;:::-;;;;;;;;33503:299;;;:::o;19512:1570::-;19626:1;19608:20;;:6;:20;;;;19600:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;19691:1;19670:23;;:9;:23;;;;19662:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;19728:11;;;;;;;;;;;19725:113;;;19765:10;:18;19776:6;19765:18;;;;;;;;;;;;;;;;;;;;;;;;;19764:19;:45;;;;;19788:10;:21;19799:9;19788:21;;;;;;;;;;;;;;;;;;;;;;;;;19787:22;19764:45;19756:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;19725:113;19850:15;19869:26;19888:6;19869:9;:18;;:26;;;;:::i;:::-;:59;;;;19899:29;19918:9;19899;:18;;:29;;;;:::i;:::-;19869:59;:77;;;;19932:6;:14;19939:6;19932:14;;;;;;;;;;;;;;;;;;;;;;;;;19869:77;:98;;;;19950:6;:17;19957:9;19950:17;;;;;;;;;;;;;;;;;;;;;;;;;19869:98;19850:118;;19981:23;20022:4;20006:21;;:6;:21;;;:49;;;;20050:4;20031:24;;:9;:24;;;20006:49;19981:75;;20069:24;20108:19;;;;;;;;;;;20098:29;;:6;:29;;;:59;;;;;17473:42;20131:26;;:9;:26;;;20098:59;20097:135;;;;20185:19;;;;;;;;;;;20172:32;;:9;:32;;;:59;;;;;17473:42;20208:23;;:6;:23;;;20172:59;20097:135;20069:164;;20251:18;:41;;;;20273:19;20251:41;:55;;;;20296:10;20251:55;20248:827;;;20324:43;20341:6;20349:9;20360:6;20324:16;:43::i;:::-;20248:827;;;20413:14;;;;;;;;;;;20408:404;;20462:7;:5;:7::i;:::-;20452:17;;:6;:17;;;;:41;;;;;20486:7;:5;:7::i;:::-;20473:20;;:9;:20;;;;20452:41;20448:349;;;20522:10;;;;;;;;;;;20518:260;;;20582:9;20566:28;;20575:6;20566:28;;;20592:1;20566:28;;;;;;:::i;:::-;;;;;;;;20621:7;;;;;20518:260;20713:14;;;;;;;;;;;20705:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;20448:349;20408:404;20844:10;20863:19;;;;;;;;;;;20855:27;;:6;:27;;;:53;;;;17473:42;20885:23;;:6;:23;;;20855:53;20844:64;;20923:11;20946:19;;;;;;;;;;;20935:30;;:9;:30;;;:59;;;;17473:42;20968:26;;:9;:26;;;20935:59;20923:71;;21009:52;21024:6;21031:9;21041:6;21048:5;21054:6;21009:14;:52::i;:::-;20393:682;;20248:827;19589:1493;;;19512:1570;;;;:::o;24432:1157::-;24342:4;24312:27;;:34;;;;;;;;;;;;;;;;;;24508:23:::1;24532:9;:24;24550:4;24532:24;;;;;;;;;;;;;;;;24508:48;;24567:15;24597:13;;;;;;;;;;;24583;;;;;;;;;;;:27;;;;:::i;:::-;24567:43;;;;24621:19;24641:9;;24621:29;;24678:8;24664:11;:22;24661:127;;;24706:12;;;;;;;;;;;24703:74;;;24753:8;24739:22;;24703:74;24661:127;24820:11;24804:15;:27;:40;;;;24843:1;24833:8;:11;;;24804:40;24801:77;;;24860:7;;;;;24801:77;24888:25;24942:8;24914:36;;24927:13;;;;;;;;;;;24915:25;;:11;:25;;;;:::i;:::-;24914:36;;;;:::i;:::-;24888:62;;24961:25;25016:8;24988:36;;25001:13;;;;;;;;;;;24989:25;;:11;:25;;;;:::i;:::-;24988:36;;;;:::i;:::-;24961:63;;25037:16;25072:1;25054:17;:19;;;;:::i;:::-;25037:36;;25084:19;25122:8;25104:17;:26;;;;:::i;:::-;25084:46;;25146:17;25176;25164:11;:29;;;;:::i;:::-;25146:47;;25207:25;25235:21;25207:49;;25267:27;25284:9;25267:16;:27::i;:::-;25305:14;25345:17;25321:21;:41;;;;:::i;:::-;25305:58;;25374:14;25412:9;25399:11;25392:6;:18;;;;:::i;:::-;25391:30;;;;:::i;:::-;25374:47;;25432:31;25446:8;25456:6;25432:13;:31::i;:::-;25474:20;25520:17;25496:21;:41;;;;:::i;:::-;25474:64;;25549:32;25568:12;25549:18;:32::i;:::-;24497:1092;;;;;;;;;;;;24357:1;24399:5:::0;24369:27;;:35;;;;;;;;;;;;;;;;;;24432:1157;:::o;14792:158::-;14865:4;14889:53;14897:3;:10;;14933:5;14917:23;;14909:32;;14889:7;:53::i;:::-;14882:60;;14792:158;;;;:::o;12214:305::-;12277:4;12299:21;12309:3;12314:5;12299:9;:21::i;:::-;12294:218;;12337:3;:11;;12354:5;12337:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12411:3;:11;;:18;;;;12389:3;:12;;:19;12402:5;12389:19;;;;;;;;;;;:40;;;;12451:4;12444:11;;;;12294:218;12495:5;12488:12;;12214:305;;;;;:::o;14964:167::-;15044:4;15068:55;15078:3;:10;;15114:5;15098:23;;15090:32;;15068:9;:55::i;:::-;15061:62;;14964:167;;;;:::o;22873:351::-;22968:21;22992:9;:17;23002:6;22992:17;;;;;;;;;;;;;;;;22968:41;;23045:6;23028:13;:23;;23020:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;23094:27;23107:6;23114;23094:12;:27::i;:::-;23135:28;23145:9;23156:6;23135:9;:28::i;:::-;23197:9;23181:33;;23190:6;23181:33;;;23207:6;23181:33;;;;;;:::i;:::-;;;;;;;;22957:267;22873:351;;;:::o;21100:1761::-;21216:24;21243:9;:20;21253:9;21243:20;;;;;;;;;;;;;;;;21216:47;;21274:21;21298:9;:17;21308:6;21298:17;;;;;;;;;;;;;;;;21274:41;;21351:6;21334:13;:23;;21326:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;21423:1;21413:9;;:11;;;;:::i;:::-;21401:9;:23;;;;21437:9;21460:6;21457:893;;;21486:38;21517:6;21486:21;:30;;:38;;;;:::i;:::-;21482:247;;21582:15;21563:9;:17;21573:6;21563:17;;;;;;;;;;;;;;;;:34;;:52;;;;21599:16;;;;;;;;;;;21563:52;21555:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;21701:12;;21685:15;:28;;;;:::i;:::-;21667:9;:17;21677:6;21667:17;;;;;;;;;;;;;;;:46;;;;21482:247;21773:9;;21765:6;:17;;21757:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;21820:8;;;;;;;;;;;21816:12;;21457:893;;;21851:5;21848:502;;;21912:12;;21904:6;21887:16;:23;;;;:::i;:::-;:37;;21879:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;21975:8;;21967:6;:16;;21959:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;22023:7;;;;;;;;;;;22019:11;;21848:502;;;22105:12;;22097:6;22080:16;:23;;;;:::i;:::-;:37;;22072:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;22170:38;22201:6;22170:21;:30;;:38;;;;:::i;:::-;22166:139;;22254:15;22235:9;:17;22245:6;22235:17;;;;;;;;;;;;;;;;:34;;:52;;;;22271:16;;;;;;;;;;;22235:52;22227:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;22166:139;22324:12;;;;;;;;;;;22320:16;;21848:502;21457:893;22381:19;;;;;;;;;;;22373:27;;:6;:27;;;;22372:50;;;;;22405:16;;;;;;;;;;;22404:17;22372:50;:82;;;;;22426:27;;;;;;;;;;;22425:28;22372:82;22369:126;;;22469:26;22488:6;22469:18;:26::i;:::-;22369:126;22509:21;22531:55;22545:6;22553:3;22572:13;;;;;;;;;;;22558;;;;;;;;;;;:27;;;;:::i;:::-;22531:13;:55::i;:::-;22509:77;;22600:19;22628:13;22620:6;:22;;;;:::i;:::-;22600:42;;22658:27;22671:6;22678;22658:12;:27::i;:::-;22729:13;22701:9;:24;22719:4;22701:24;;;;;;;;;;;;;;;;:41;;;;;;;:::i;:::-;;;;;;;;22758:33;22768:9;22779:11;22758:9;:33::i;:::-;22825:9;22809:38;;22818:6;22809:38;;;22835:11;22809:38;;;;;;:::i;:::-;;;;;;;;21205:1656;;;;;21100:1761;;;;;:::o;25601:455::-;25662:56;25679:4;25694:14;;;;;;;;;;;25711:6;25662:8;:56::i;:::-;25729:21;25767:1;25753:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25729:40;;25798:4;25780;25785:1;25780:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;25824:14;;;;;;;;;;;:19;;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25814:4;25819:1;25814:7;;;;;;;;:::i;:::-;;;;;;;:31;;;;;;;;;;;25858:14;;;;;;;;;;;:65;;;25938:6;25959:1;25975:4;26002;26022:15;25858:190;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25651:405;25601:455;:::o;26068:397::-;26162:9;26150:10;;:21;;;;;;;:::i;:::-;;;;;;;;26182:61;26199:4;26214:14;;;;;;;;;;;26231:11;26182:8;:61::i;:::-;26254:14;;;;;;;;;;;:30;;;26292:9;26325:4;26345:11;26371:1;26387;26411:4;26431:15;26254:203;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;26068:397;;:::o;23993:178::-;24059:22;24113:3;24097:14;;;;;;;;;;;24085:26;;:9;:26;;;;:::i;:::-;24084:32;;;;:::i;:::-;24059:57;;24147:14;24129:16;;:32;;;;;;;:::i;:::-;;;;;;;;24048:123;23993:178;:::o;12533:659::-;12599:4;12619:18;12640:3;:12;;:19;12653:5;12640:19;;;;;;;;;;;;12619:40;;12690:1;12676:10;:15;12672:513;;12725:21;12762:1;12749:10;:14;;;;:::i;:::-;12725:38;;12778:17;12819:1;12798:3;:11;;:18;;;;:22;;;;:::i;:::-;12778:42;;12846:17;12866:3;:11;;12878:9;12866:22;;;;;;;;:::i;:::-;;;;;;;;;;12846:42;;12941:9;12912:3;:11;;12924:13;12912:26;;;;;;;;:::i;:::-;;;;;;;;;:38;;;;12998:10;12972:3;:12;;:23;12985:9;12972:23;;;;;;;;;;;:36;;;;13033:3;:11;;:17;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13081:3;:12;;:19;13094:5;13081:19;;;;;;;;;;;13074:26;;;13124:4;13117:11;;;;;;;;12672:513;13168:5;13161:12;;;12533:659;;;;;:::o;13206:129::-;13279:4;13326:1;13303:3;:12;;:19;13316:5;13303:19;;;;;;;;;;;;:24;;13296:31;;13206:129;;;;:::o;23583:158::-;23657:17;23691:6;23675:9;:15;23685:4;23675:15;;;;;;;;;;;;;;;;:22;;;;:::i;:::-;23657:40;;23724:9;23708;:15;23718:4;23708:15;;;;;;;;;;;;;;;:25;;;;23643:98;23583:158;;:::o;23410:157::-;23481:17;23515:6;23499:9;:15;23509:4;23499:15;;;;;;;;;;;;;;;;:22;;;;:::i;:::-;23481:40;;23548:9;23532;:15;23542:4;23532:15;;;;;;;;;;;;;;;:25;;;;23467:100;23410:157;;:::o;23236:156::-;23326:7;23379:5;23365:10;23354:21;;23361:3;23354:10;;:6;:10;;;;:::i;:::-;:21;;;;:::i;:::-;23353:31;;;;:::i;:::-;23346:38;;23236:156;;;;;:::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:133::-;344:5;382:6;369:20;360:29;;398:30;422:5;398:30;:::i;:::-;301:133;;;;:::o;440:137::-;485:5;523:6;510:20;501:29;;539:32;565:5;539:32;:::i;:::-;440:137;;;;:::o;583:139::-;629:5;667:6;654:20;645:29;;683:33;710:5;683:33;:::i;:::-;583:139;;;;:::o;728:143::-;785:5;816:6;810:13;801:22;;832:33;859:5;832:33;:::i;:::-;728:143;;;;:::o;877:135::-;921:5;959:6;946:20;937:29;;975:31;1000:5;975:31;:::i;:::-;877:135;;;;:::o;1018:329::-;1077:6;1126:2;1114:9;1105:7;1101:23;1097:32;1094:119;;;1132:79;;:::i;:::-;1094:119;1252:1;1277:53;1322:7;1313:6;1302:9;1298:22;1277:53;:::i;:::-;1267:63;;1223:117;1018:329;;;;:::o;1353:351::-;1423:6;1472:2;1460:9;1451:7;1447:23;1443:32;1440:119;;;1478:79;;:::i;:::-;1440:119;1598:1;1623:64;1679:7;1670:6;1659:9;1655:22;1623:64;:::i;:::-;1613:74;;1569:128;1353:351;;;;:::o;1710:474::-;1778:6;1786;1835:2;1823:9;1814:7;1810:23;1806:32;1803:119;;;1841:79;;:::i;:::-;1803:119;1961:1;1986:53;2031:7;2022:6;2011:9;2007:22;1986:53;:::i;:::-;1976:63;;1932:117;2088:2;2114:53;2159:7;2150:6;2139:9;2135:22;2114:53;:::i;:::-;2104:63;;2059:118;1710:474;;;;;:::o;2190:619::-;2267:6;2275;2283;2332:2;2320:9;2311:7;2307:23;2303:32;2300:119;;;2338:79;;:::i;:::-;2300:119;2458:1;2483:53;2528:7;2519:6;2508:9;2504:22;2483:53;:::i;:::-;2473:63;;2429:117;2585:2;2611:53;2656:7;2647:6;2636:9;2632:22;2611:53;:::i;:::-;2601:63;;2556:118;2713:2;2739:53;2784:7;2775:6;2764:9;2760:22;2739:53;:::i;:::-;2729:63;;2684:118;2190:619;;;;;:::o;2815:468::-;2880:6;2888;2937:2;2925:9;2916:7;2912:23;2908:32;2905:119;;;2943:79;;:::i;:::-;2905:119;3063:1;3088:53;3133:7;3124:6;3113:9;3109:22;3088:53;:::i;:::-;3078:63;;3034:117;3190:2;3216:50;3258:7;3249:6;3238:9;3234:22;3216:50;:::i;:::-;3206:60;;3161:115;2815:468;;;;;:::o;3289:474::-;3357:6;3365;3414:2;3402:9;3393:7;3389:23;3385:32;3382:119;;;3420:79;;:::i;:::-;3382:119;3540:1;3565:53;3610:7;3601:6;3590:9;3586:22;3565:53;:::i;:::-;3555:63;;3511:117;3667:2;3693:53;3738:7;3729:6;3718:9;3714:22;3693:53;:::i;:::-;3683:63;;3638:118;3289:474;;;;;:::o;3769:323::-;3825:6;3874:2;3862:9;3853:7;3849:23;3845:32;3842:119;;;3880:79;;:::i;:::-;3842:119;4000:1;4025:50;4067:7;4058:6;4047:9;4043:22;4025:50;:::i;:::-;4015:60;;3971:114;3769:323;;;;:::o;4098:327::-;4156:6;4205:2;4193:9;4184:7;4180:23;4176:32;4173:119;;;4211:79;;:::i;:::-;4173:119;4331:1;4356:52;4400:7;4391:6;4380:9;4376:22;4356:52;:::i;:::-;4346:62;;4302:116;4098:327;;;;:::o;4431:329::-;4490:6;4539:2;4527:9;4518:7;4514:23;4510:32;4507:119;;;4545:79;;:::i;:::-;4507:119;4665:1;4690:53;4735:7;4726:6;4715:9;4711:22;4690:53;:::i;:::-;4680:63;;4636:117;4431:329;;;;:::o;4766:619::-;4843:6;4851;4859;4908:2;4896:9;4887:7;4883:23;4879:32;4876:119;;;4914:79;;:::i;:::-;4876:119;5034:1;5059:53;5104:7;5095:6;5084:9;5080:22;5059:53;:::i;:::-;5049:63;;5005:117;5161:2;5187:53;5232:7;5223:6;5212:9;5208:22;5187:53;:::i;:::-;5177:63;;5132:118;5289:2;5315:53;5360:7;5351:6;5340:9;5336:22;5315:53;:::i;:::-;5305:63;;5260:118;4766:619;;;;;:::o;5391:663::-;5479:6;5487;5495;5544:2;5532:9;5523:7;5519:23;5515:32;5512:119;;;5550:79;;:::i;:::-;5512:119;5670:1;5695:64;5751:7;5742:6;5731:9;5727:22;5695:64;:::i;:::-;5685:74;;5641:128;5808:2;5834:64;5890:7;5881:6;5870:9;5866:22;5834:64;:::i;:::-;5824:74;;5779:129;5947:2;5973:64;6029:7;6020:6;6009:9;6005:22;5973:64;:::i;:::-;5963:74;;5918:129;5391:663;;;;;:::o;6060:325::-;6117:6;6166:2;6154:9;6145:7;6141:23;6137:32;6134:119;;;6172:79;;:::i;:::-;6134:119;6292:1;6317:51;6360:7;6351:6;6340:9;6336:22;6317:51;:::i;:::-;6307:61;;6263:115;6060:325;;;;:::o;6391:891::-;6476:6;6484;6492;6500;6508;6557:3;6545:9;6536:7;6532:23;6528:33;6525:120;;;6564:79;;:::i;:::-;6525:120;6684:1;6709:51;6752:7;6743:6;6732:9;6728:22;6709:51;:::i;:::-;6699:61;;6655:115;6809:2;6835:51;6878:7;6869:6;6858:9;6854:22;6835:51;:::i;:::-;6825:61;;6780:116;6935:2;6961:51;7004:7;6995:6;6984:9;6980:22;6961:51;:::i;:::-;6951:61;;6906:116;7061:2;7087:51;7130:7;7121:6;7110:9;7106:22;7087:51;:::i;:::-;7077:61;;7032:116;7187:3;7214:51;7257:7;7248:6;7237:9;7233:22;7214:51;:::i;:::-;7204:61;;7158:117;6391:891;;;;;;;;:::o;7288:179::-;7357:10;7378:46;7420:3;7412:6;7378:46;:::i;:::-;7456:4;7451:3;7447:14;7433:28;;7288:179;;;;:::o;7473:108::-;7550:24;7568:5;7550:24;:::i;:::-;7545:3;7538:37;7473:108;;:::o;7587:118::-;7674:24;7692:5;7674:24;:::i;:::-;7669:3;7662:37;7587:118;;:::o;7741:732::-;7860:3;7889:54;7937:5;7889:54;:::i;:::-;7959:86;8038:6;8033:3;7959:86;:::i;:::-;7952:93;;8069:56;8119:5;8069:56;:::i;:::-;8148:7;8179:1;8164:284;8189:6;8186:1;8183:13;8164:284;;;8265:6;8259:13;8292:63;8351:3;8336:13;8292:63;:::i;:::-;8285:70;;8378:60;8431:6;8378:60;:::i;:::-;8368:70;;8224:224;8211:1;8208;8204:9;8199:14;;8164:284;;;8168:14;8464:3;8457:10;;7865:608;;;7741:732;;;;:::o;8479:109::-;8560:21;8575:5;8560:21;:::i;:::-;8555:3;8548:34;8479:109;;:::o;8594:179::-;8705:61;8760:5;8705:61;:::i;:::-;8700:3;8693:74;8594:179;;:::o;8779:147::-;8874:45;8913:5;8874:45;:::i;:::-;8869:3;8862:58;8779:147;;:::o;8932:364::-;9020:3;9048:39;9081:5;9048:39;:::i;:::-;9103:71;9167:6;9162:3;9103:71;:::i;:::-;9096:78;;9183:52;9228:6;9223:3;9216:4;9209:5;9205:16;9183:52;:::i;:::-;9260:29;9282:6;9260:29;:::i;:::-;9255:3;9251:39;9244:46;;9024:272;8932:364;;;;:::o;9302:366::-;9444:3;9465:67;9529:2;9524:3;9465:67;:::i;:::-;9458:74;;9541:93;9630:3;9541:93;:::i;:::-;9659:2;9654:3;9650:12;9643:19;;9302:366;;;:::o;9674:::-;9816:3;9837:67;9901:2;9896:3;9837:67;:::i;:::-;9830:74;;9913:93;10002:3;9913:93;:::i;:::-;10031:2;10026:3;10022:12;10015:19;;9674:366;;;:::o;10046:::-;10188:3;10209:67;10273:2;10268:3;10209:67;:::i;:::-;10202:74;;10285:93;10374:3;10285:93;:::i;:::-;10403:2;10398:3;10394:12;10387:19;;10046:366;;;:::o;10418:365::-;10560:3;10581:66;10645:1;10640:3;10581:66;:::i;:::-;10574:73;;10656:93;10745:3;10656:93;:::i;:::-;10774:2;10769:3;10765:12;10758:19;;10418:365;;;:::o;10789:366::-;10931:3;10952:67;11016:2;11011:3;10952:67;:::i;:::-;10945:74;;11028:93;11117:3;11028:93;:::i;:::-;11146:2;11141:3;11137:12;11130:19;;10789:366;;;:::o;11161:::-;11303:3;11324:67;11388:2;11383:3;11324:67;:::i;:::-;11317:74;;11400:93;11489:3;11400:93;:::i;:::-;11518:2;11513:3;11509:12;11502:19;;11161:366;;;:::o;11533:::-;11675:3;11696:67;11760:2;11755:3;11696:67;:::i;:::-;11689:74;;11772:93;11861:3;11772:93;:::i;:::-;11890:2;11885:3;11881:12;11874:19;;11533:366;;;:::o;11905:::-;12047:3;12068:67;12132:2;12127:3;12068:67;:::i;:::-;12061:74;;12144:93;12233:3;12144:93;:::i;:::-;12262:2;12257:3;12253:12;12246:19;;11905:366;;;:::o;12277:::-;12419:3;12440:67;12504:2;12499:3;12440:67;:::i;:::-;12433:74;;12516:93;12605:3;12516:93;:::i;:::-;12634:2;12629:3;12625:12;12618:19;;12277:366;;;:::o;12649:::-;12791:3;12812:67;12876:2;12871:3;12812:67;:::i;:::-;12805:74;;12888:93;12977:3;12888:93;:::i;:::-;13006:2;13001:3;12997:12;12990:19;;12649:366;;;:::o;13021:::-;13163:3;13184:67;13248:2;13243:3;13184:67;:::i;:::-;13177:74;;13260:93;13349:3;13260:93;:::i;:::-;13378:2;13373:3;13369:12;13362:19;;13021:366;;;:::o;13393:::-;13535:3;13556:67;13620:2;13615:3;13556:67;:::i;:::-;13549:74;;13632:93;13721:3;13632:93;:::i;:::-;13750:2;13745:3;13741:12;13734:19;;13393:366;;;:::o;13765:::-;13907:3;13928:67;13992:2;13987:3;13928:67;:::i;:::-;13921:74;;14004:93;14093:3;14004:93;:::i;:::-;14122:2;14117:3;14113:12;14106:19;;13765:366;;;:::o;14137:::-;14279:3;14300:67;14364:2;14359:3;14300:67;:::i;:::-;14293:74;;14376:93;14465:3;14376:93;:::i;:::-;14494:2;14489:3;14485:12;14478:19;;14137:366;;;:::o;14509:::-;14651:3;14672:67;14736:2;14731:3;14672:67;:::i;:::-;14665:74;;14748:93;14837:3;14748:93;:::i;:::-;14866:2;14861:3;14857:12;14850:19;;14509:366;;;:::o;14881:::-;15023:3;15044:67;15108:2;15103:3;15044:67;:::i;:::-;15037:74;;15120:93;15209:3;15120:93;:::i;:::-;15238:2;15233:3;15229:12;15222:19;;14881:366;;;:::o;15253:398::-;15412:3;15433:83;15514:1;15509:3;15433:83;:::i;:::-;15426:90;;15525:93;15614:3;15525:93;:::i;:::-;15643:1;15638:3;15634:11;15627:18;;15253:398;;;:::o;15657:366::-;15799:3;15820:67;15884:2;15879:3;15820:67;:::i;:::-;15813:74;;15896:93;15985:3;15896:93;:::i;:::-;16014:2;16009:3;16005:12;15998:19;;15657:366;;;:::o;16029:::-;16171:3;16192:67;16256:2;16251:3;16192:67;:::i;:::-;16185:74;;16268:93;16357:3;16268:93;:::i;:::-;16386:2;16381:3;16377:12;16370:19;;16029:366;;;:::o;16401:::-;16543:3;16564:67;16628:2;16623:3;16564:67;:::i;:::-;16557:74;;16640:93;16729:3;16640:93;:::i;:::-;16758:2;16753:3;16749:12;16742:19;;16401:366;;;:::o;16773:::-;16915:3;16936:67;17000:2;16995:3;16936:67;:::i;:::-;16929:74;;17012:93;17101:3;17012:93;:::i;:::-;17130:2;17125:3;17121:12;17114:19;;16773:366;;;:::o;17145:115::-;17230:23;17247:5;17230:23;:::i;:::-;17225:3;17218:36;17145:115;;:::o;17266:118::-;17353:24;17371:5;17353:24;:::i;:::-;17348:3;17341:37;17266:118;;:::o;17390:112::-;17473:22;17489:5;17473:22;:::i;:::-;17468:3;17461:35;17390:112;;:::o;17508:379::-;17692:3;17714:147;17857:3;17714:147;:::i;:::-;17707:154;;17878:3;17871:10;;17508:379;;;:::o;17893:222::-;17986:4;18024:2;18013:9;18009:18;18001:26;;18037:71;18105:1;18094:9;18090:17;18081:6;18037:71;:::i;:::-;17893:222;;;;:::o;18121:807::-;18370:4;18408:3;18397:9;18393:19;18385:27;;18422:71;18490:1;18479:9;18475:17;18466:6;18422:71;:::i;:::-;18503:72;18571:2;18560:9;18556:18;18547:6;18503:72;:::i;:::-;18585:80;18661:2;18650:9;18646:18;18637:6;18585:80;:::i;:::-;18675;18751:2;18740:9;18736:18;18727:6;18675:80;:::i;:::-;18765:73;18833:3;18822:9;18818:19;18809:6;18765:73;:::i;:::-;18848;18916:3;18905:9;18901:19;18892:6;18848:73;:::i;:::-;18121:807;;;;;;;;;:::o;18934:210::-;19021:4;19059:2;19048:9;19044:18;19036:26;;19072:65;19134:1;19123:9;19119:17;19110:6;19072:65;:::i;:::-;18934:210;;;;:::o;19150:270::-;19267:4;19305:2;19294:9;19290:18;19282:26;;19318:95;19410:1;19399:9;19395:17;19386:6;19318:95;:::i;:::-;19150:270;;;;:::o;19426:238::-;19527:4;19565:2;19554:9;19550:18;19542:26;;19578:79;19654:1;19643:9;19639:17;19630:6;19578:79;:::i;:::-;19426:238;;;;:::o;19670:313::-;19783:4;19821:2;19810:9;19806:18;19798:26;;19870:9;19864:4;19860:20;19856:1;19845:9;19841:17;19834:47;19898:78;19971:4;19962:6;19898:78;:::i;:::-;19890:86;;19670:313;;;;:::o;19989:419::-;20155:4;20193:2;20182:9;20178:18;20170:26;;20242:9;20236:4;20232:20;20228:1;20217:9;20213:17;20206:47;20270:131;20396:4;20270:131;:::i;:::-;20262:139;;19989:419;;;:::o;20414:::-;20580:4;20618:2;20607:9;20603:18;20595:26;;20667:9;20661:4;20657:20;20653:1;20642:9;20638:17;20631:47;20695:131;20821:4;20695:131;:::i;:::-;20687:139;;20414:419;;;:::o;20839:::-;21005:4;21043:2;21032:9;21028:18;21020:26;;21092:9;21086:4;21082:20;21078:1;21067:9;21063:17;21056:47;21120:131;21246:4;21120:131;:::i;:::-;21112:139;;20839:419;;;:::o;21264:::-;21430:4;21468:2;21457:9;21453:18;21445:26;;21517:9;21511:4;21507:20;21503:1;21492:9;21488:17;21481:47;21545:131;21671:4;21545:131;:::i;:::-;21537:139;;21264:419;;;:::o;21689:::-;21855:4;21893:2;21882:9;21878:18;21870:26;;21942:9;21936:4;21932:20;21928:1;21917:9;21913:17;21906:47;21970:131;22096:4;21970:131;:::i;:::-;21962:139;;21689:419;;;:::o;22114:::-;22280:4;22318:2;22307:9;22303:18;22295:26;;22367:9;22361:4;22357:20;22353:1;22342:9;22338:17;22331:47;22395:131;22521:4;22395:131;:::i;:::-;22387:139;;22114:419;;;:::o;22539:::-;22705:4;22743:2;22732:9;22728:18;22720:26;;22792:9;22786:4;22782:20;22778:1;22767:9;22763:17;22756:47;22820:131;22946:4;22820:131;:::i;:::-;22812:139;;22539:419;;;:::o;22964:::-;23130:4;23168:2;23157:9;23153:18;23145:26;;23217:9;23211:4;23207:20;23203:1;23192:9;23188:17;23181:47;23245:131;23371:4;23245:131;:::i;:::-;23237:139;;22964:419;;;:::o;23389:::-;23555:4;23593:2;23582:9;23578:18;23570:26;;23642:9;23636:4;23632:20;23628:1;23617:9;23613:17;23606:47;23670:131;23796:4;23670:131;:::i;:::-;23662:139;;23389:419;;;:::o;23814:::-;23980:4;24018:2;24007:9;24003:18;23995:26;;24067:9;24061:4;24057:20;24053:1;24042:9;24038:17;24031:47;24095:131;24221:4;24095:131;:::i;:::-;24087:139;;23814:419;;;:::o;24239:::-;24405:4;24443:2;24432:9;24428:18;24420:26;;24492:9;24486:4;24482:20;24478:1;24467:9;24463:17;24456:47;24520:131;24646:4;24520:131;:::i;:::-;24512:139;;24239:419;;;:::o;24664:::-;24830:4;24868:2;24857:9;24853:18;24845:26;;24917:9;24911:4;24907:20;24903:1;24892:9;24888:17;24881:47;24945:131;25071:4;24945:131;:::i;:::-;24937:139;;24664:419;;;:::o;25089:::-;25255:4;25293:2;25282:9;25278:18;25270:26;;25342:9;25336:4;25332:20;25328:1;25317:9;25313:17;25306:47;25370:131;25496:4;25370:131;:::i;:::-;25362:139;;25089:419;;;:::o;25514:::-;25680:4;25718:2;25707:9;25703:18;25695:26;;25767:9;25761:4;25757:20;25753:1;25742:9;25738:17;25731:47;25795:131;25921:4;25795:131;:::i;:::-;25787:139;;25514:419;;;:::o;25939:::-;26105:4;26143:2;26132:9;26128:18;26120:26;;26192:9;26186:4;26182:20;26178:1;26167:9;26163:17;26156:47;26220:131;26346:4;26220:131;:::i;:::-;26212:139;;25939:419;;;:::o;26364:::-;26530:4;26568:2;26557:9;26553:18;26545:26;;26617:9;26611:4;26607:20;26603:1;26592:9;26588:17;26581:47;26645:131;26771:4;26645:131;:::i;:::-;26637:139;;26364:419;;;:::o;26789:::-;26955:4;26993:2;26982:9;26978:18;26970:26;;27042:9;27036:4;27032:20;27028:1;27017:9;27013:17;27006:47;27070:131;27196:4;27070:131;:::i;:::-;27062:139;;26789:419;;;:::o;27214:::-;27380:4;27418:2;27407:9;27403:18;27395:26;;27467:9;27461:4;27457:20;27453:1;27442:9;27438:17;27431:47;27495:131;27621:4;27495:131;:::i;:::-;27487:139;;27214:419;;;:::o;27639:::-;27805:4;27843:2;27832:9;27828:18;27820:26;;27892:9;27886:4;27882:20;27878:1;27867:9;27863:17;27856:47;27920:131;28046:4;27920:131;:::i;:::-;27912:139;;27639:419;;;:::o;28064:::-;28230:4;28268:2;28257:9;28253:18;28245:26;;28317:9;28311:4;28307:20;28303:1;28292:9;28288:17;28281:47;28345:131;28471:4;28345:131;:::i;:::-;28337:139;;28064:419;;;:::o;28489:218::-;28580:4;28618:2;28607:9;28603:18;28595:26;;28631:69;28697:1;28686:9;28682:17;28673:6;28631:69;:::i;:::-;28489:218;;;;:::o;28713:222::-;28806:4;28844:2;28833:9;28829:18;28821:26;;28857:71;28925:1;28914:9;28910:17;28901:6;28857:71;:::i;:::-;28713:222;;;;:::o;28941:831::-;29204:4;29242:3;29231:9;29227:19;29219:27;;29256:71;29324:1;29313:9;29309:17;29300:6;29256:71;:::i;:::-;29337:80;29413:2;29402:9;29398:18;29389:6;29337:80;:::i;:::-;29464:9;29458:4;29454:20;29449:2;29438:9;29434:18;29427:48;29492:108;29595:4;29586:6;29492:108;:::i;:::-;29484:116;;29610:72;29678:2;29667:9;29663:18;29654:6;29610:72;:::i;:::-;29692:73;29760:3;29749:9;29745:19;29736:6;29692:73;:::i;:::-;28941:831;;;;;;;;:::o;29778:332::-;29899:4;29937:2;29926:9;29922:18;29914:26;;29950:71;30018:1;30007:9;30003:17;29994:6;29950:71;:::i;:::-;30031:72;30099:2;30088:9;30084:18;30075:6;30031:72;:::i;:::-;29778:332;;;;;:::o;30116:664::-;30321:4;30359:3;30348:9;30344:19;30336:27;;30373:71;30441:1;30430:9;30426:17;30417:6;30373:71;:::i;:::-;30454:72;30522:2;30511:9;30507:18;30498:6;30454:72;:::i;:::-;30536;30604:2;30593:9;30589:18;30580:6;30536:72;:::i;:::-;30618;30686:2;30675:9;30671:18;30662:6;30618:72;:::i;:::-;30700:73;30768:3;30757:9;30753:19;30744:6;30700:73;:::i;:::-;30116:664;;;;;;;;:::o;30786:214::-;30875:4;30913:2;30902:9;30898:18;30890:26;;30926:67;30990:1;30979:9;30975:17;30966:6;30926:67;:::i;:::-;30786:214;;;;:::o;31087:132::-;31154:4;31177:3;31169:11;;31207:4;31202:3;31198:14;31190:22;;31087:132;;;:::o;31225:114::-;31292:6;31326:5;31320:12;31310:22;;31225:114;;;:::o;31345:99::-;31397:6;31431:5;31425:12;31415:22;;31345:99;;;:::o;31450:113::-;31520:4;31552;31547:3;31543:14;31535:22;;31450:113;;;:::o;31569:184::-;31668:11;31702:6;31697:3;31690:19;31742:4;31737:3;31733:14;31718:29;;31569:184;;;;:::o;31759:147::-;31860:11;31897:3;31882:18;;31759:147;;;;:::o;31912:169::-;31996:11;32030:6;32025:3;32018:19;32070:4;32065:3;32061:14;32046:29;;31912:169;;;;:::o;32087:305::-;32127:3;32146:20;32164:1;32146:20;:::i;:::-;32141:25;;32180:20;32198:1;32180:20;:::i;:::-;32175:25;;32334:1;32266:66;32262:74;32259:1;32256:81;32253:107;;;32340:18;;:::i;:::-;32253:107;32384:1;32381;32377:9;32370:16;;32087:305;;;;:::o;32398:237::-;32436:3;32455:18;32471:1;32455:18;:::i;:::-;32450:23;;32487:18;32503:1;32487:18;:::i;:::-;32482:23;;32577:1;32571:4;32567:12;32564:1;32561:19;32558:45;;;32583:18;;:::i;:::-;32558:45;32627:1;32624;32620:9;32613:16;;32398:237;;;;:::o;32641:185::-;32681:1;32698:20;32716:1;32698:20;:::i;:::-;32693:25;;32732:20;32750:1;32732:20;:::i;:::-;32727:25;;32771:1;32761:35;;32776:18;;:::i;:::-;32761:35;32818:1;32815;32811:9;32806:14;;32641:185;;;;:::o;32832:848::-;32893:5;32900:4;32924:6;32915:15;;32948:5;32939:14;;32962:712;32983:1;32973:8;32970:15;32962:712;;;33078:4;33073:3;33069:14;33063:4;33060:24;33057:50;;;33087:18;;:::i;:::-;33057:50;33137:1;33127:8;33123:16;33120:451;;;33552:4;33545:5;33541:16;33532:25;;33120:451;33602:4;33596;33592:15;33584:23;;33632:32;33655:8;33632:32;:::i;:::-;33620:44;;32962:712;;;32832:848;;;;;;;:::o;33686:281::-;33744:5;33768:23;33786:4;33768:23;:::i;:::-;33760:31;;33812:25;33828:8;33812:25;:::i;:::-;33800:37;;33856:104;33893:66;33883:8;33877:4;33856:104;:::i;:::-;33847:113;;33686:281;;;;:::o;33973:1073::-;34027:5;34218:8;34208:40;;34239:1;34230:10;;34241:5;;34208:40;34267:4;34257:36;;34284:1;34275:10;;34286:5;;34257:36;34353:4;34401:1;34396:27;;;;34437:1;34432:191;;;;34346:277;;34396:27;34414:1;34405:10;;34416:5;;;34432:191;34477:3;34467:8;34464:17;34461:43;;;34484:18;;:::i;:::-;34461:43;34533:8;34530:1;34526:16;34517:25;;34568:3;34561:5;34558:14;34555:40;;;34575:18;;:::i;:::-;34555:40;34608:5;;;34346:277;;34732:2;34722:8;34719:16;34713:3;34707:4;34704:13;34700:36;34682:2;34672:8;34669:16;34664:2;34658:4;34655:12;34651:35;34635:111;34632:246;;;34788:8;34782:4;34778:19;34769:28;;34823:3;34816:5;34813:14;34810:40;;;34830:18;;:::i;:::-;34810:40;34863:5;;34632:246;34903:42;34941:3;34931:8;34925:4;34922:1;34903:42;:::i;:::-;34888:57;;;;34977:4;34972:3;34968:14;34961:5;34958:25;34955:51;;;34986:18;;:::i;:::-;34955:51;35035:4;35028:5;35024:16;35015:25;;33973:1073;;;;;;:::o;35052:348::-;35092:7;35115:20;35133:1;35115:20;:::i;:::-;35110:25;;35149:20;35167:1;35149:20;:::i;:::-;35144:25;;35337:1;35269:66;35265:74;35262:1;35259:81;35254:1;35247:9;35240:17;35236:105;35233:131;;;35344:18;;:::i;:::-;35233:131;35392:1;35389;35385:9;35374:20;;35052:348;;;;:::o;35406:191::-;35446:4;35466:20;35484:1;35466:20;:::i;:::-;35461:25;;35500:20;35518:1;35500:20;:::i;:::-;35495:25;;35539:1;35536;35533:8;35530:34;;;35544:18;;:::i;:::-;35530:34;35589:1;35586;35582:9;35574:17;;35406:191;;;;:::o;35603:96::-;35640:7;35669:24;35687:5;35669:24;:::i;:::-;35658:35;;35603:96;;;:::o;35705:90::-;35739:7;35782:5;35775:13;35768:21;35757:32;;35705:90;;;:::o;35801:89::-;35837:7;35877:6;35870:5;35866:18;35855:29;;35801:89;;;:::o;35896:126::-;35933:7;35973:42;35966:5;35962:54;35951:65;;35896:126;;;:::o;36028:77::-;36065:7;36094:5;36083:16;;36028:77;;;:::o;36111:86::-;36146:7;36186:4;36179:5;36175:16;36164:27;;36111:86;;;:::o;36203:150::-;36277:9;36310:37;36341:5;36310:37;:::i;:::-;36297:50;;36203:150;;;:::o;36359:121::-;36417:9;36450:24;36468:5;36450:24;:::i;:::-;36437:37;;36359:121;;;:::o;36486:126::-;36536:9;36569:37;36600:5;36569:37;:::i;:::-;36556:50;;36486:126;;;:::o;36618:113::-;36668:9;36701:24;36719:5;36701:24;:::i;:::-;36688:37;;36618:113;;;:::o;36737:307::-;36805:1;36815:113;36829:6;36826:1;36823:13;36815:113;;;36914:1;36909:3;36905:11;36899:18;36895:1;36890:3;36886:11;36879:39;36851:2;36848:1;36844:10;36839:15;;36815:113;;;36946:6;36943:1;36940:13;36937:101;;;37026:1;37017:6;37012:3;37008:16;37001:27;36937:101;36786:258;36737:307;;;:::o;37050:180::-;37098:77;37095:1;37088:88;37195:4;37192:1;37185:15;37219:4;37216:1;37209:15;37236:180;37284:77;37281:1;37274:88;37381:4;37378:1;37371:15;37405:4;37402:1;37395:15;37422:180;37470:77;37467:1;37460:88;37567:4;37564:1;37557:15;37591:4;37588:1;37581:15;37608:180;37656:77;37653:1;37646:88;37753:4;37750:1;37743:15;37777:4;37774:1;37767:15;37794:180;37842:77;37839:1;37832:88;37939:4;37936:1;37929:15;37963:4;37960:1;37953:15;38103:117;38212:1;38209;38202:12;38226:102;38267:6;38318:2;38314:7;38309:2;38302:5;38298:14;38294:28;38284:38;;38226:102;;;:::o;38334:::-;38376:8;38423:5;38420:1;38416:13;38395:34;;38334:102;;;:::o;38442:168::-;38582:20;38578:1;38570:6;38566:14;38559:44;38442:168;:::o;38616:174::-;38756:26;38752:1;38744:6;38740:14;38733:50;38616:174;:::o;38796:225::-;38936:34;38932:1;38924:6;38920:14;38913:58;39005:8;39000:2;38992:6;38988:15;38981:33;38796:225;:::o;39027:157::-;39167:9;39163:1;39155:6;39151:14;39144:33;39027:157;:::o;39190:167::-;39330:19;39326:1;39318:6;39314:14;39307:43;39190:167;:::o;39363:166::-;39503:18;39499:1;39491:6;39487:14;39480:42;39363:166;:::o;39535:170::-;39675:22;39671:1;39663:6;39659:14;39652:46;39535:170;:::o;39711:165::-;39851:17;39847:1;39839:6;39835:14;39828:41;39711:165;:::o;39882:::-;40022:17;40018:1;40010:6;40006:14;39999:41;39882:165;:::o;40053:182::-;40193:34;40189:1;40181:6;40177:14;40170:58;40053:182;:::o;40241:220::-;40381:34;40377:1;40369:6;40365:14;40358:58;40450:3;40445:2;40437:6;40433:15;40426:28;40241:220;:::o;40467:173::-;40607:25;40603:1;40595:6;40591:14;40584:49;40467:173;:::o;40646:168::-;40786:20;40782:1;40774:6;40770:14;40763:44;40646:168;:::o;40820:162::-;40960:14;40956:1;40948:6;40944:14;40937:38;40820:162;:::o;40988:166::-;41128:18;41124:1;41116:6;41112:14;41105:42;40988:166;:::o;41160:164::-;41300:16;41296:1;41288:6;41284:14;41277:40;41160:164;:::o;41330:114::-;;:::o;41450:167::-;41590:19;41586:1;41578:6;41574:14;41567:43;41450:167;:::o;41623:165::-;41763:17;41759:1;41751:6;41747:14;41740:41;41623:165;:::o;41794:162::-;41934:14;41930:1;41922:6;41918:14;41911:38;41794:162;:::o;41962:168::-;42102:20;42098:1;42090:6;42086:14;42079:44;41962:168;:::o;42136:122::-;42209:24;42227:5;42209:24;:::i;:::-;42202:5;42199:35;42189:63;;42248:1;42245;42238:12;42189:63;42136:122;:::o;42264:116::-;42334:21;42349:5;42334:21;:::i;:::-;42327:5;42324:32;42314:60;;42370:1;42367;42360:12;42314:60;42264:116;:::o;42386:120::-;42458:23;42475:5;42458:23;:::i;:::-;42451:5;42448:34;42438:62;;42496:1;42493;42486:12;42438:62;42386:120;:::o;42512:122::-;42585:24;42603:5;42585:24;:::i;:::-;42578:5;42575:35;42565:63;;42624:1;42621;42614:12;42565:63;42512:122;:::o;42640:118::-;42711:22;42727:5;42711:22;:::i;:::-;42704:5;42701:33;42691:61;;42748:1;42745;42738:12;42691:61;42640:118;:::o
Swarm Source
ipfs://67c4fe0528823739a14360d2300f348c9b69128b5bf0eb2ad5c40d994287edf2
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.