ERC-20
Overview
Max Total Supply
5,297,472.714405435 YFST
Holders
71
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
4,425.338194628 YFSTValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
YFStable
Compiler Version
v0.6.12+commit.27d51765
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-02-06 */ // SPDX-License-Identifier: MIT /* YYYYYYY YYYYYYYFFFFFFFFFFFFFFFFFFFFFF SSSSSSSSSSSSSSS TTTTTTTTTTTTTTTTTTTTTTT AAA BBBBBBBBBBBBBBBBB LLLLLLLLLLL EEEEEEEEEEEEEEEEEEEEEE Y:::::Y Y:::::YF::::::::::::::::::::F SS:::::::::::::::ST:::::::::::::::::::::T A:::A B::::::::::::::::B L:::::::::L E::::::::::::::::::::E Y:::::Y Y:::::YF::::::::::::::::::::FS:::::SSSSSS::::::ST:::::::::::::::::::::T A:::::A B::::::BBBBBB:::::B L:::::::::L E::::::::::::::::::::E Y::::::Y Y::::::YFF::::::FFFFFFFFF::::FS:::::S SSSSSSST:::::TT:::::::TT:::::T A:::::::A BB:::::B B:::::BLL:::::::LL EE::::::EEEEEEEEE::::E YYY:::::Y Y:::::YYY F:::::F FFFFFFS:::::S TTTTTT T:::::T TTTTTT A:::::::::A B::::B B:::::B L:::::L E:::::E EEEEEE Y:::::Y Y:::::Y F:::::F S:::::S T:::::T A:::::A:::::A B::::B B:::::B L:::::L E:::::E Y:::::Y:::::Y F::::::FFFFFFFFFF S::::SSSS T:::::T A:::::A A:::::A B::::BBBBBB:::::B L:::::L E::::::EEEEEEEEEE Y:::::::::Y F:::::::::::::::F SS::::::SSSSS T:::::T A:::::A A:::::A B:::::::::::::BB L:::::L E:::::::::::::::E Y:::::::Y F:::::::::::::::F SSS::::::::SS T:::::T A:::::A A:::::A B::::BBBBBB:::::B L:::::L E:::::::::::::::E Y:::::Y F::::::FFFFFFFFFF SSSSSS::::S T:::::T A:::::AAAAAAAAA:::::A B::::B B:::::B L:::::L E::::::EEEEEEEEEE Y:::::Y F:::::F S:::::S T:::::T A:::::::::::::::::::::A B::::B B:::::B L:::::L E:::::E Y:::::Y F:::::F S:::::S T:::::T A:::::AAAAAAAAAAAAA:::::A B::::B B:::::B L:::::L LLLLLL E:::::E EEEEEE Y:::::Y FF:::::::FF SSSSSSS S:::::S TT:::::::TT A:::::A A:::::A BB:::::BBBBBB::::::BLL:::::::LLLLLLLLL:::::LEE::::::EEEEEEEE:::::E YYYY:::::YYYY F::::::::FF S::::::SSSSSS:::::S T:::::::::T A:::::A A:::::A B:::::::::::::::::B L::::::::::::::::::::::LE::::::::::::::::::::E Y:::::::::::Y F::::::::FF S:::::::::::::::SS T:::::::::T A:::::A A:::::A B::::::::::::::::B L::::::::::::::::::::::LE::::::::::::::::::::E YYYYYYYYYYYYY FFFFFFFFFFF SSSSSSSSSSSSSSS TTTTTTTTTTTAAAAAAA AAAAAAABBBBBBBBBBBBBBBBB LLLLLLLLLLLLLLLLLLLLLLLLEEEEEEEEEEEEEEEEEEEEEE */ pragma solidity ^0.6.12; pragma experimental ABIEncoderV2; interface IUniswapV2Factory { 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 IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { 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; } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; return c; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } 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"); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (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 _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); } } } } abstract contract Context { function _msgSender() internal view virtual returns (address payable) { return msg.sender; } function _msgData() internal view virtual returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () internal { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } library Constants { uint256 private constant MAX = ~uint256(0); uint256 private constant _launchSupply = 60450 * 10**9; uint256 private constant _largeTotal = (MAX - (MAX % _launchSupply)); uint256 private constant _baseExpansionFactor = 100; uint256 private constant _baseContractionFactor = 100; uint256 private constant _baseUtilityFee = 50; uint256 private constant _baseContractionCap = 1000; uint256 private constant _stabilizerFee = 250; uint256 private constant _stabilizationLowerBound = 50; uint256 private constant _stabilizationLowerReset = 75; uint256 private constant _stabilizationUpperBound = 150; uint256 private constant _stabilizationUpperReset = 125; uint256 private constant _stabilizePercent = 10; uint256 private constant _treasuryFee = 250; uint256 private constant _presaleMinIndividualCap = 1 ether; uint256 private constant _presaleMaxIndividualCap = 4 ether; uint256 private constant _presaleCap = 37200 * 10**9; uint256 private constant _maxPresaleGas = 200000000000; uint256 private constant _epochLength = 4 hours; uint256 private constant _liquidityReward = 2 * 10**9; uint256 private constant _minForLiquidity = 10 * 10**9; uint256 private constant _minForCallerLiquidity = 10 * 10**9; address private constant _routerAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; address private constant _factoryAddress = 0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f; address payable private constant _deployerAddress = 0xB4a43aEd87902A24cD66afBD3349Af812325Ca01; address private constant _treasuryAddress = 0xB4a43aEd87902A24cD66afBD3349Af812325Ca01; uint256 private constant _presaleRate = 31000; uint256 private constant _listingRate = 29063; string private constant _name = "YFStable"; string private constant _symbol = "YFST"; uint8 private constant _decimals = 9; /****** Getters *******/ function getPresaleRate() internal pure returns (uint256) { return _presaleRate; } function getListingRate() internal pure returns (uint256) { return _listingRate; } function getLaunchSupply() internal pure returns (uint256) { return _launchSupply; } function getLargeTotal() internal pure returns (uint256) { return _largeTotal; } function getPresaleCap() internal pure returns (uint256) { return _presaleCap; } function getPresaleMinIndividualCap() internal pure returns (uint256) { return _presaleMinIndividualCap; } function getPresaleMaxIndividualCap() internal pure returns (uint256) { return _presaleMaxIndividualCap; } function getMaxPresaleGas() internal pure returns (uint256) { return _maxPresaleGas; } function getBaseExpansionFactor() internal pure returns (uint256) { return _baseExpansionFactor; } function getBaseContractionFactor() internal pure returns (uint256) { return _baseContractionFactor; } function getBaseContractionCap() internal pure returns (uint256) { return _baseContractionCap; } function getBaseUtilityFee() internal pure returns (uint256) { return _baseUtilityFee; } function getStabilizerFee() internal pure returns (uint256) { return _stabilizerFee; } function getStabilizationLowerBound() internal pure returns (uint256) { return _stabilizationLowerBound; } function getStabilizationLowerReset() internal pure returns (uint256) { return _stabilizationLowerReset; } function getStabilizationUpperBound() internal pure returns (uint256) { return _stabilizationUpperBound; } function getStabilizationUpperReset() internal pure returns (uint256) { return _stabilizationUpperReset; } function getStabilizePercent() internal pure returns (uint256) { return _stabilizePercent; } function getTreasuryFee() internal pure returns (uint256) { return _treasuryFee; } function getEpochLength() internal pure returns (uint256) { return _epochLength; } function getLiquidityReward() internal pure returns (uint256) { return _liquidityReward; } function getMinForLiquidity() internal pure returns (uint256) { return _minForLiquidity; } function getMinForCallerLiquidity() internal pure returns (uint256) { return _minForCallerLiquidity; } function getRouterAdd() internal pure returns (address) { return _routerAddress; } function getFactoryAdd() internal pure returns (address) { return _factoryAddress; } function getDeployerAdd() internal pure returns (address payable) { return _deployerAddress; } function getTreasuryAdd() internal pure returns (address) { return _treasuryAddress; } function getName() internal pure returns (string memory) { return _name; } function getSymbol() internal pure returns (string memory) { return _symbol; } function getDecimals() internal pure returns (uint8) { return _decimals; } } contract State { mapping (address => uint256) _largeBalances; mapping (address => mapping (address => uint256)) _allowances; // Supported pools and data for measuring mint & burn factors struct PoolCounter { address pairToken; uint256 tokenBalance; uint256 pairTokenBalance; uint256 lpBalance; uint256 startTokenBalance; uint256 startPairTokenBalance; } address[] _supportedPools; mapping (address => PoolCounter) _poolCounters; mapping (address => bool) _isSupportedPool; address _mainPool; uint256 _currentEpoch; //Creating locked balances struct LockBox { address beneficiary; uint256 lockedBalance; uint256 unlockTime; bool locked; } LockBox[] _lockBoxes; mapping(address => uint256) _lockedBalance; mapping(address => bool) _hasLockedBalance; uint256 _totalLockedBalance; uint256 _largeTotal; uint256 _totalSupply; address _liquidityReserve; address _stabilizer; bool _presaleDone; address _presaleCon; bool _paused; bool _taxLess; mapping(address=>bool) _isTaxlessSetter; } contract Getters is State { using SafeMath for uint256; using Address for address; function getLargeBalances(address account) public view returns (uint256) { return _largeBalances[account]; } function getAllowances(address account, address spender) public view returns (uint256) { return _allowances[account][spender]; } function getSupportedPools(uint256 index) public view returns (address) { return _supportedPools[index]; } function getPoolCounters(address pool) public view returns (address, uint256, uint256, uint256, uint256, uint256) { PoolCounter memory pc = _poolCounters[pool]; return (pc.pairToken, pc.tokenBalance, pc.pairTokenBalance, pc.lpBalance, pc.startTokenBalance, pc.startPairTokenBalance); } function isSupportedPool(address pool) public view returns (bool) { return _isSupportedPool[pool]; } function mainPool() public view returns (address) { return _mainPool; } function getCurrentEpoch() public view returns (uint256) { return _currentEpoch; } function getLockBoxes(uint256 box) public view returns (address, uint256, uint256, bool) { LockBox memory lb = _lockBoxes[box]; return (lb.beneficiary, lb.lockedBalance, lb.unlockTime, lb.locked); } function getLockedBalance(address account) public view returns (uint256) { return _lockedBalance[account]; } function hasLockedBalance(address account) public view returns (bool) { return _hasLockedBalance[account]; } function getTotalLockedBalance() public view returns (uint256) { return _totalLockedBalance; } function getLargeTotal() public view returns (uint256) { return _largeTotal; } function getTotalSupply() public view returns (uint256) { return _totalSupply; } function getLiquidityReserve() public view returns (address) { return _liquidityReserve; } function getStabilizer() public view returns (address) { return _stabilizer; } function isPresaleDone() public view returns (bool) { return _presaleDone; } function getPresaleAddress() public view returns (address) { return _presaleCon; } function isPaused() public view returns (bool) { return _paused; } function isTaxLess() public view returns (bool) { return _taxLess; } function isTaxlessSetter(address account) public view returns (bool) { return _isTaxlessSetter[account]; } function getUniswapRouter() public view returns (IUniswapV2Router02) { return IUniswapV2Router02(Constants.getRouterAdd()); } function getUniswapFactory() public view returns (IUniswapV2Factory) { return IUniswapV2Factory(Constants.getFactoryAdd()); } function getFactor() public view returns(uint256) { if (_presaleDone) { return _largeTotal.div(_totalSupply); } else { return _largeTotal.div(Constants.getLaunchSupply()); } } function getUpdatedPoolCounters(address pool, address pairToken) public view returns (uint256, uint256, uint256) { uint256 lpBalance = IERC20(pool).totalSupply(); uint256 tokenBalance = IERC20(address(this)).balanceOf(pool); uint256 pairTokenBalance = IERC20(address(pairToken)).balanceOf(pool); return (tokenBalance, pairTokenBalance, lpBalance); } function getMintValue(address sender, uint256 amount) internal view returns(uint256, uint256, uint256) { uint256 expansionR = (_poolCounters[sender].pairTokenBalance).mul(_poolCounters[sender].startTokenBalance).mul(100).div(_poolCounters[sender].startPairTokenBalance).div(_poolCounters[sender].tokenBalance); uint256 mintAmount; if (expansionR > (Constants.getBaseExpansionFactor()).add(10000).div(100)) { uint256 mintFactor = expansionR.mul(expansionR); mintAmount = amount.mul(mintFactor.sub(10000)).div(10000); } else { mintAmount = amount.mul(Constants.getBaseExpansionFactor()).div(10000); } return (mintAmount.mul(Constants.getStabilizerFee()).div(10000),mintAmount.mul(Constants.getTreasuryFee()).div(10000),mintAmount); } function getBurnValues(address recipient, uint256 amount) internal view returns(uint256, uint256) { uint256 currentFactor = getFactor(); uint256 contractionR; if (isSupportedPool(recipient)) { contractionR = (_poolCounters[recipient].tokenBalance).mul(_poolCounters[recipient].startPairTokenBalance).mul(100).div(_poolCounters[recipient].pairTokenBalance).div(_poolCounters[recipient].startTokenBalance); } else { contractionR = (_poolCounters[_mainPool].tokenBalance).mul(_poolCounters[_mainPool].startPairTokenBalance).mul(100).div(_poolCounters[_mainPool].pairTokenBalance).div(_poolCounters[_mainPool].startTokenBalance); } uint256 burnAmount; if (contractionR > (Constants.getBaseContractionFactor().add(10000)).div(100)) { uint256 burnFactor = contractionR.mul(contractionR); burnAmount = amount.mul(burnFactor.sub(10000)).div(10000); if (burnAmount > amount.mul(Constants.getBaseContractionCap()).div(10000)) burnAmount = amount.mul(Constants.getBaseContractionCap()).div(10000); } else { burnAmount = amount.mul(Constants.getBaseContractionFactor()).div(10000); } return (burnAmount, burnAmount.mul(currentFactor)); } function getUtilityFee(uint256 amount) internal view returns(uint256, uint256) { uint256 currentFactor = getFactor(); uint256 utilityFee = amount.mul(Constants.getBaseUtilityFee()).div(10000); return (utilityFee, utilityFee.mul(currentFactor)); } function getMintRate(address pool) external view returns (uint256) { uint256 expansionR = (_poolCounters[pool].pairTokenBalance).mul(_poolCounters[pool].startTokenBalance).mul(100).div(_poolCounters[pool].startPairTokenBalance).div(_poolCounters[pool].tokenBalance); if (expansionR > (Constants.getBaseExpansionFactor()).add(10000).div(100)) { uint256 mintFactor = expansionR.mul(expansionR); return mintFactor.sub(10000); } else { return Constants.getBaseExpansionFactor(); } } function getBurnRate(address pool) external view returns (uint256) { uint256 contractionR = (_poolCounters[pool].tokenBalance).mul(_poolCounters[pool].startPairTokenBalance).mul(100).div(_poolCounters[pool].pairTokenBalance).div(_poolCounters[pool].startTokenBalance); uint256 burnRate; if (contractionR > (Constants.getBaseContractionFactor().add(10000)).div(100)) { uint256 burnFactor = contractionR.mul(contractionR); burnRate = burnFactor.sub(10000); if (burnRate > Constants.getBaseContractionCap()) { return Constants.getBaseContractionCap(); } return burnRate; } else { return Constants.getBaseContractionFactor(); } } } contract Setters is State, Getters { function updatePresaleAddress(address presaleAddress) internal { _presaleCon = presaleAddress; } function setAllowances(address owner, address spender, uint256 amount) internal { _allowances[owner][spender] = amount; } function addToAccount(address account, uint256 amount) internal { uint256 currentFactor = getFactor(); uint256 largeAmount = amount.mul(currentFactor); _largeBalances[account] = _largeBalances[account].add(largeAmount); _totalSupply = _totalSupply.add(amount); } function addToAll(uint256 amount) internal { _totalSupply = _totalSupply.add(amount); } function initializeEpoch() internal { _currentEpoch = now; } function updateEpoch() internal { initializeEpoch(); for (uint256 i=0; i<_supportedPools.length; i++) { _poolCounters[_supportedPools[i]].startTokenBalance = _poolCounters[_supportedPools[i]].tokenBalance; _poolCounters[_supportedPools[i]].startPairTokenBalance = _poolCounters[_supportedPools[i]].pairTokenBalance; } } function initializeLargeTotal() internal { _largeTotal = Constants.getLargeTotal(); } function syncPair(address pool) internal returns(bool) { (uint256 tokenBalance, uint256 pairTokenBalance, uint256 lpBalance) = getUpdatedPoolCounters(pool, _poolCounters[pool].pairToken); bool lpBurn = lpBalance < _poolCounters[pool].lpBalance; _poolCounters[pool].lpBalance = lpBalance; _poolCounters[pool].tokenBalance = tokenBalance; _poolCounters[pool].pairTokenBalance = pairTokenBalance; return (lpBurn); } function silentSyncPair(address pool) public { (uint256 tokenBalance, uint256 pairTokenBalance, uint256 lpBalance) = getUpdatedPoolCounters(pool, _poolCounters[pool].pairToken); _poolCounters[pool].lpBalance = lpBalance; _poolCounters[pool].tokenBalance = tokenBalance; _poolCounters[pool].pairTokenBalance = pairTokenBalance; } function addSupportedPool(address pool, address pairToken) internal { require(!isSupportedPool(pool),"This pool is already supported"); _isSupportedPool[pool] = true; _supportedPools.push(pool); (uint256 tokenBalance, uint256 pairTokenBalance, uint256 lpBalance) = getUpdatedPoolCounters(pool, pairToken); _poolCounters[pool] = PoolCounter(pairToken, tokenBalance, pairTokenBalance, lpBalance, tokenBalance, pairTokenBalance); } function removeSupportedPool(address pool) internal { require(isSupportedPool(pool), "This pool is currently not supported"); for (uint256 i = 0; i < _supportedPools.length; i++) { if (_supportedPools[i] == pool) { _supportedPools[i] = _supportedPools[_supportedPools.length - 1]; _isSupportedPool[pool] = false; delete _poolCounters[pool]; _supportedPools.pop(); break; } } } } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } contract Stabilizer { constructor() public { } } contract YFStable is Setters, Context, IERC20, Ownable { using SafeMath for uint256; using Address for address; modifier onlyTaxless { require(isTaxlessSetter(_msgSender()),"not taxless"); _; } modifier onlyPresale { require(_msgSender()==getPresaleAddress(),"not presale"); require(!isPresaleDone(), "Presale over"); _; } modifier pausable { require(!isPaused(), "Paused"); _; } modifier taxlessTx { _taxLess = true; _; _taxLess = false; } constructor() public { updateEpoch(); initializeLargeTotal(); setStabilizer(address(new Stabilizer())); } function name() public view returns (string memory) { return Constants.getName(); } function symbol() public view returns (string memory) { return Constants.getSymbol(); } function decimals() public view returns (uint8) { return Constants.getDecimals(); } function totalSupply() public view override returns (uint256) { return getTotalSupply(); } function circulatingSupply() public view returns (uint256) { uint256 currentFactor = getFactor(); return getTotalSupply().sub(getTotalLockedBalance().div(currentFactor)).sub(balanceOf(address(this))).sub(balanceOf(getStabilizer())); } function balanceOf(address account) public view override returns (uint256) { uint256 currentFactor = getFactor(); if (hasLockedBalance(account)) return (getLargeBalances(account).add(getLockedBalance(account)).div(currentFactor)); return getLargeBalances(account).div(currentFactor); } function unlockedBalanceOf(address account) public view returns (uint256) { uint256 currentFactor = getFactor(); return getLargeBalances(account).div(currentFactor); } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return getAllowances(owner,spender); } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), getAllowances(sender,_msgSender()).sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, getAllowances(_msgSender(),spender).add(addedValue)); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, getAllowances(_msgSender(),spender).sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } function mint(address to, uint256 amount) public onlyPresale { addToAccount(to,amount); emit Transfer(address(0),to,amount); } function _approve(address owner, address spender, uint256 amount) private { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); setAllowances(owner, spender, amount); emit Approval(owner, spender, amount); } function _transfer(address sender, address recipient, uint256 amount) private pausable { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Amount must be greater than zero"); require(amount <= balanceOf(sender),"Amount exceeds balance"); require(amount <= unlockedBalanceOf(sender),"Amount exceeds unlocked balance"); require(isPresaleDone(),"Presale yet to close"); if (now > getCurrentEpoch().add(Constants.getEpochLength())) updateEpoch(); uint256 currentFactor = getFactor(); uint256 largeAmount = amount.mul(currentFactor); uint256 txType; if (isTaxLess()) { txType = 3; } else { bool lpBurn; if (isSupportedPool(sender)) { lpBurn = syncPair(sender); } else if (isSupportedPool(recipient)){ silentSyncPair(recipient); } else { silentSyncPair(_mainPool); } txType = _getTxType(sender, recipient, lpBurn); } // Buy Transaction from supported pools - requires mint, no utility fee if (txType == 1) { (uint256 stabilizerMint, uint256 treasuryMint, uint256 totalMint) = getMintValue(sender, amount); // uint256 mintSize = amount.div(100); _largeBalances[sender] = _largeBalances[sender].sub(largeAmount); _largeBalances[recipient] = _largeBalances[recipient].add(largeAmount); _largeBalances[getStabilizer()] = _largeBalances[getStabilizer()].add(stabilizerMint.mul(currentFactor)); _largeBalances[Constants.getTreasuryAdd()] = _largeBalances[Constants.getTreasuryAdd()].add(treasuryMint.mul(currentFactor)); _totalSupply = _totalSupply.add(totalMint); emit Transfer(sender, recipient, amount); emit Transfer(address(0),getStabilizer(),stabilizerMint); emit Transfer(address(0),Constants.getTreasuryAdd(),treasuryMint); } // Sells to supported pools or unsupported transfer - requires exit burn and utility fee else if (txType == 2) { (uint256 burnSize, uint256 largeBurnSize) = getBurnValues(recipient, amount); (uint256 utilityFee, uint256 largeUtilityFee) = getUtilityFee(amount); uint256 actualTransferAmount = amount.sub(burnSize).sub(utilityFee); uint256 largeTransferAmount = actualTransferAmount.mul(currentFactor); _largeBalances[sender] = _largeBalances[sender].sub(largeAmount); _largeBalances[recipient] = _largeBalances[recipient].add(largeTransferAmount); _largeBalances[_liquidityReserve] = _largeBalances[_liquidityReserve].add(largeUtilityFee); _totalSupply = _totalSupply.sub(burnSize); _largeTotal = _largeTotal.sub(largeBurnSize); emit Transfer(sender, recipient, actualTransferAmount); emit Transfer(sender, address(0), burnSize); emit Transfer(sender, _liquidityReserve, utilityFee); } // Add Liquidity via interface or Remove Liquidity Transaction to supported pools - no fee of any sort else if (txType == 3) { _largeBalances[sender] = _largeBalances[sender].sub(largeAmount); _largeBalances[recipient] = _largeBalances[recipient].add(largeAmount); emit Transfer(sender, recipient, amount); } } function _getTxType(address sender, address recipient, bool lpBurn) private returns(uint256) { uint256 txType = 2; if (isSupportedPool(sender)) { if (lpBurn) { txType = 3; } else { txType = 1; } } else if (sender == Constants.getRouterAdd()) { txType = 3; } return txType; } function setPresale(address presaleAdd) external onlyOwner() { require(!isPresaleDone(), "Presale is already completed"); updatePresaleAddress(presaleAdd); } function setPresaleDone() public payable onlyPresale { require(totalSupply() <= Constants.getLaunchSupply(), "Total supply is already minted"); _mintRemaining(); _presaleDone = true; _createEthPool(); } function _mintRemaining() private { require(!isPresaleDone(), "Cannot mint post presale"); Constants.getDeployerAdd().transfer(address(this).balance.div(3)); uint256 toMint = Constants.getLaunchSupply().sub(totalSupply()); uint256 tokensToAdd = address(this).balance.div(10**11).mul(Constants.getListingRate()); if(toMint > tokensToAdd) { addToAccount(address(0),toMint.sub(tokensToAdd)); emit Transfer(address(0),address(0),toMint.sub(tokensToAdd)); } addToAccount(address(this), tokensToAdd); emit Transfer(address(0),address(this),tokensToAdd); } function mintLockedTranche(address account, uint256 unlockTime, uint256 amount) external onlyOwner() { require(!isPresaleDone(), "Cannot mint post presale"); uint256 currentFactor = getFactor(); uint256 largeAmount = amount.mul(currentFactor); _lockBoxes.push(LockBox(account, largeAmount, unlockTime, true)); _lockedBalance[account] = _lockedBalance[account].add(largeAmount); _hasLockedBalance[account] = true; _totalLockedBalance = _totalLockedBalance.add(largeAmount); _totalSupply = _totalSupply.add(amount); emit Transfer(address(0),account,amount); } function mintUnlockedTranche(address account, uint256 amount) external onlyOwner() { require(!isPresaleDone(), "Cannot mint post presale"); addToAccount(account, amount); emit Transfer(address(0),account,amount); } function unlockTranche(uint256 tranche) external { require(hasLockedBalance(_msgSender()),"Caller has no locked balance"); (address beneficiary, uint256 balance, uint256 unlockTime, bool locked) = getLockBoxes(tranche); require(unlockTime <= now,"This tranche cannot be unlocked yet"); require(beneficiary == _msgSender(),"You are not the owner of this tranche"); require(locked == true, "This tranche has already been unlocked"); _totalLockedBalance = _totalLockedBalance.sub(balance); _largeBalances[_msgSender()] = _largeBalances[_msgSender()].add(balance); _lockedBalance[_msgSender()] = _lockedBalance[_msgSender()].sub(balance); if (_lockedBalance[_msgSender()] <= 0) _hasLockedBalance[_msgSender()] = false; _lockBoxes[tranche].lockedBalance = 0; _lockBoxes[tranche].locked = false; } function reassignTranche(uint256 tranche, address beneficiary) external onlyOwner() { (address oldBeneficiary, uint256 balance, uint256 unlockTime, bool locked) = getLockBoxes(tranche); require(locked == true, "This tranche has already been unlocked"); require(unlockTime > now,"This tranche has already been vested"); _lockedBalance[oldBeneficiary] = _lockedBalance[oldBeneficiary].sub(balance); _lockedBalance[beneficiary] = _lockedBalance[beneficiary].add(balance); if (_lockedBalance[oldBeneficiary] == 0) _hasLockedBalance[oldBeneficiary] = false; _hasLockedBalance[beneficiary] = true; _lockBoxes[tranche].beneficiary = beneficiary; uint256 currentFactor = getFactor(); emit Transfer(oldBeneficiary,beneficiary,balance.div(currentFactor)); } function _createEthPool() private taxlessTx { IUniswapV2Router02 uniswapRouterV2 = getUniswapRouter(); IUniswapV2Factory uniswapFactory = getUniswapFactory(); address tokenUniswapPair; if (uniswapFactory.getPair(address(uniswapRouterV2.WETH()), address(this)) == address(0)) { tokenUniswapPair = uniswapFactory.createPair( address(uniswapRouterV2.WETH()), address(this)); } else { tokenUniswapPair = uniswapFactory.getPair(address(this),uniswapRouterV2.WETH()); } uint256 tokensToAdd = balanceOf(address(this)); _approve(address(this), 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D, tokensToAdd); uniswapRouterV2.addLiquidityETH{value: address(this).balance}(address(this), tokensToAdd, 0, 0, Constants.getDeployerAdd(), block.timestamp); addSupportedPool(tokenUniswapPair, address(uniswapRouterV2.WETH())); _mainPool = tokenUniswapPair; } function createTokenPool(address pairToken, uint256 amount) external onlyOwner() taxlessTx { IUniswapV2Router02 uniswapRouterV2 = getUniswapRouter(); IUniswapV2Factory uniswapFactory = getUniswapFactory(); address tokenUniswapPair; if (uniswapFactory.getPair(pairToken, address(this)) == address(0)) { tokenUniswapPair = uniswapFactory.createPair( pairToken, address(this)); } else { tokenUniswapPair = uniswapFactory.getPair(pairToken,address(this)); } require(uniswapFactory.getPair(pairToken,address(uniswapRouterV2.WETH())) != address(0), "Eth pairing does not exist"); require(balanceOf(address(this)) >= amount, "Amount exceeds the token balance"); uint256 toConvert = amount.div(2); uint256 toAdd = amount.sub(toConvert); uint256 initialBalance = IERC20(pairToken).balanceOf(address(this)); address[] memory path = new address[](3); path[0] = address(this); path[1] = uniswapRouterV2.WETH(); path[2] = pairToken; _approve(address(this), address(uniswapRouterV2), toConvert); uniswapRouterV2.swapExactTokensForTokensSupportingFeeOnTransferTokens( toConvert, 0, path, address(this), block.timestamp); uint256 newBalance = IERC20(pairToken).balanceOf(address(this)).sub(initialBalance); _approve(address(this), address(uniswapRouterV2), toAdd); IERC20(pairToken).approve(address(uniswapRouterV2), newBalance); uniswapRouterV2.addLiquidity(address(this),pairToken,toAdd,newBalance,0,0,address(this),block.timestamp); addSupportedPool(tokenUniswapPair, pairToken); } function addNewSupportedPool(address pool, address pairToken) external onlyOwner() { addSupportedPool(pool, pairToken); } function removeOldSupportedPool(address pool) external onlyOwner() { removeSupportedPool(pool); } function setTaxlessSetter(address cont) external onlyOwner() { require(!isTaxlessSetter(cont),"already setter"); _isTaxlessSetter[cont] = true; } function setTaxless(bool flag) public onlyTaxless { _taxLess = flag; } function removeTaxlessSetter(address cont) external onlyOwner() { require(isTaxlessSetter(cont),"not setter"); _isTaxlessSetter[cont] = false; } function setLiquidityReserve(address reserve) external onlyOwner() { require(Address.isContract(reserve),"Need a contract"); _isTaxlessSetter[_liquidityReserve] = false; uint256 oldBalance = balanceOf(_liquidityReserve); if (oldBalance > 0) { _transfer(_liquidityReserve, reserve, oldBalance); emit Transfer(_liquidityReserve, reserve, oldBalance); } _liquidityReserve = reserve; _isTaxlessSetter[reserve] = true; } function setStabilizer(address reserve) public onlyOwner() taxlessTx { require(Address.isContract(reserve),"Need a contract"); _isTaxlessSetter[_stabilizer] = false; uint256 oldBalance = balanceOf(_stabilizer); if (oldBalance > 0) { _transfer(_stabilizer, reserve, oldBalance); emit Transfer(_stabilizer, reserve, oldBalance); } _stabilizer = reserve; _isTaxlessSetter[reserve] = true; } function pauseContract(bool flag) external onlyOwner() { _paused = flag; } }
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"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"pairToken","type":"address"}],"name":"addNewSupportedPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"circulatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pairToken","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"createTokenPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","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":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"getAllowances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getBurnRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCurrentEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getFactor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getLargeBalances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLargeTotal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLiquidityReserve","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"box","type":"uint256"}],"name":"getLockBoxes","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getLockedBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getMintRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getPoolCounters","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPresaleAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getStabilizer","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getSupportedPools","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalLockedBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getUniswapFactory","outputs":[{"internalType":"contract IUniswapV2Factory","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getUniswapRouter","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"pairToken","type":"address"}],"name":"getUpdatedPoolCounters","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"hasLockedBalance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"isPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isPresaleDone","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"isSupportedPool","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isTaxLess","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isTaxlessSetter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mainPool","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"unlockTime","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mintLockedTranche","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mintUnlockedTranche","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"flag","type":"bool"}],"name":"pauseContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tranche","type":"uint256"},{"internalType":"address","name":"beneficiary","type":"address"}],"name":"reassignTranche","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"removeOldSupportedPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"cont","type":"address"}],"name":"removeTaxlessSetter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"reserve","type":"address"}],"name":"setLiquidityReserve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"presaleAdd","type":"address"}],"name":"setPresale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setPresaleDone","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"reserve","type":"address"}],"name":"setStabilizer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"flag","type":"bool"}],"name":"setTaxless","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"cont","type":"address"}],"name":"setTaxlessSetter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"silentSyncPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tranche","type":"uint256"}],"name":"unlockTranche","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"unlockedBalanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60806040523480156200001157600080fd5b5060006200001e620000bc565b601180546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35062000076620000c1565b6200008062000206565b620000b66040516200009290620015e8565b604051809103906000f080158015620000af573d6000803e3d6000fd5b5062000220565b620018d9565b335b90565b620000cb62000386565b60005b60025481101562000203576003600060028381548110620000eb57fe5b9060005260206000200160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020016000206001015460036000600284815481106200013f57fe5b60009182526020808320909101546001600160a01b03168352820192909252604001812060040191909155600280546003929190849081106200017e57fe5b9060005260206000200160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b03168152602001908152602001600020600201546003600060028481548110620001d257fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902060050155600101620000ce565b50565b6200021b6200038c60201b620027941760201c565b600b55565b6200022a620000bc565b6011546001600160a01b03908116911614620002635760405162461bcd60e51b81526004016200025a90620017f6565b60405180910390fd5b600f8054600160a81b60ff60a81b199091161790556200028f8162000397602090811b6200279f17901c565b620002ae5760405162461bcd60e51b81526004016200025a90620018a7565b600e80546001600160a01b039081166000908152601060205260408120805460ff191690559154620002e19116620003a1565b905080156200033e57600e5462000303906001600160a01b0316838362000428565b600e546040516001600160a01b03808516921690600080516020620062ad8339815191529062000335908590620018d0565b60405180910390a35b50600e80546001600160a01b039092166001600160a01b0319909216821790556000908152601060205260409020805460ff19166001179055600f805460ff60a81b19169055565b42600655565b6511e22ddb7bff1990565b803b15155b919050565b600080620003ae62000c06565b9050620003bb8362000c72565b1562000411576200040881620003f4620003d58662000c90565b620003e08762000cab565b62000cc660201b620027a51790919060201c565b62000cf760201b620027ca1790919060201c565b9150506200039c565b6200042181620003f48562000cab565b9392505050565b6200043262000d41565b15620004525760405162461bcd60e51b81526004016200025a90620016f2565b6001600160a01b0383166200047b5760405162461bcd60e51b81526004016200025a9062001862565b6001600160a01b038216620004a45760405162461bcd60e51b81526004016200025a90620016af565b60008111620004c75760405162461bcd60e51b81526004016200025a9062001749565b620004d283620003a1565b811115620004f45760405162461bcd60e51b81526004016200025a9062001678565b620004ff8362000d51565b811115620005215760405162461bcd60e51b81526004016200025a906200182b565b6200052b62000d70565b6200054a5760405162461bcd60e51b81526004016200025a906200177e565b6200056d6200056362000d8060201b6200280c1760201c565b620003e062000d86565b4211156200057f576200057f620000c1565b60006200058b62000c06565b90506000620005a9828462000d8c60201b620028121790919060201c565b90506000620005b762000dcc565b15620005c65750600362000636565b6000620005d38762000ddc565b15620005ec57620005e48762000dfa565b905062000625565b620005f78662000ddc565b156200060e57620006088662000e67565b62000625565b60055462000625906001600160a01b031662000e67565b6200063287878362000ece565b9150505b8060011415620008e4576000808062000650898862000f38565b6001600160a01b038c1660009081526020818152604090912054939650919450925062000689919087906200284c620010ec821b17901c565b6001600160a01b03808b1660009081526020818152604080832094909455918b1681529190912054620006c7918790620027a562000cc6821b17901c565b6001600160a01b0389166000908152602081815260409091209190915562000743906200070190859089906200281262000d8c821b17901c565b6000806200070e62001136565b6001600160a01b03166001600160a01b031681526020019081526020016000205462000cc660201b620027a51790919060201c565b6000806200075062001136565b6001600160a01b03166001600160a01b0316815260200190815260200160002081905550620007aa62000792878462000d8c60201b620028121790919060201c565b6000806200070e6200114560201b6200288e1760201c565b600080620007c26200114560201b6200288e1760201c565b6001600160a01b03166001600160a01b03168152602001908152602001600020819055506200080281600c5462000cc660201b620027a51790919060201c565b600c81905550876001600160a01b0316896001600160a01b0316600080516020620062ad833981519152896040516200083c9190620018d0565b60405180910390a36200084e62001136565b6001600160a01b031660006001600160a01b0316600080516020620062ad83398151915285604051620008829190620018d0565b60405180910390a36200089f6200114560201b6200288e1760201c565b6001600160a01b031660006001600160a01b0316600080516020620062ad83398151915284604051620008d39190620018d0565b60405180910390a350505062000bfe565b806002141562000b3a57600080620008fd87876200115d565b9092509050600080620009108862001349565b915091506000620009498362000935878c620010ec60201b6200284c1790919060201c565b620010ec60201b6200284c1790919060201c565b9050600062000967898362000d8c60201b620028121790919060201c565b6001600160a01b038d16600090815260208181526040909120549192506200099b91908a906200284c620010ec821b17901c565b6001600160a01b03808e1660009081526020818152604080832094909455918e1681529190912054620009d9918390620027a562000cc6821b17901c565b6001600160a01b03808d1660009081526020818152604080832094909455600d549092168152919091205462000a1a918590620027a562000cc6821b17901c565b600d546001600160a01b031660009081526020818152604090912091909155600c5462000a529188906200284c620010ec821b17901c565b600c8190555062000a7485600b54620010ec60201b6200284c1790919060201c565b600b819055508a6001600160a01b03168c6001600160a01b0316600080516020620062ad8339815191528460405162000aae9190620018d0565b60405180910390a360006001600160a01b03168c6001600160a01b0316600080516020620062ad8339815191528860405162000aeb9190620018d0565b60405180910390a3600d546040516001600160a01b03918216918e1690600080516020620062ad8339815191529062000b26908890620018d0565b60405180910390a350505050505062000bfe565b806003141562000bfe576001600160a01b0386166000908152602081815260409091205462000b749184906200284c620010ec821b17901c565b6001600160a01b03808816600090815260208181526040808320949094559188168152919091205462000bb2918490620027a562000cc6821b17901c565b6001600160a01b038087166000818152602081905260409081902093909355915190881690600080516020620062ad8339815191529062000bf5908890620018d0565b60405180910390a35b505050505050565b600e54600090600160a01b900460ff161562000c425762000c3a600c54600b5462000cf760201b620027ca1790919060201c565b9050620000be565b62000c3a62000c5b620013b860201b620028a61760201c565b600b5462000cf760201b620027ca1790919060201c565b6001600160a01b031660009081526009602052604090205460ff1690565b6001600160a01b031660009081526008602052604090205490565b6001600160a01b031660009081526020819052604090205490565b60008282018381101562000cee5760405162461bcd60e51b81526004016200025a9062001712565b90505b92915050565b600062000cee83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250620013c260201b60201c565b600f54600160a01b900460ff1690565b60008062000d5e62000c06565b90506200042181620003f48562000cab565b600e54600160a01b900460ff1690565b61384090565b60065490565b60008262000d9d5750600062000cf1565b8282028284828162000dab57fe5b041462000cee5760405162461bcd60e51b81526004016200025a90620017b5565b600f54600160a81b900460ff1690565b6001600160a01b031660009081526004602052604090205460ff1690565b6001600160a01b03808216600090815260036020526040812054909182918291829162000e2a91879116620013fd565b6001600160a01b03979097166000908152600360208190526040909120908101805490899055600182019390935560020155909410949350505050565b6001600160a01b0380821660009081526003602052604081205490918291829162000e9591869116620013fd565b6001600160a01b039096166000908152600360208190526040909120908101969096556001860191909155600290940193909355505050565b6000600262000edd8562000ddc565b1562000efd57821562000ef35750600362000ef7565b5060015b62000f30565b62000f126200158c60201b620028b01760201c565b6001600160a01b0316856001600160a01b0316141562000f30575060035b949350505050565b6001600160a01b0382166000908152600360209081526040822060018101546005820154600483015460029093015485948594859462000faa949093620003f4939192849260649262000f969290916200281262000d8c821b17901c565b62000d8c60201b620028121790919060201c565b9050600062000fd06064620003f4612710620003e0620015a460201b620028c81760201c565b8211156200103b57600062000ff4838462000d8c60201b620028121790919060201c565b905062001032612710620003f46200101d61271085620010ec60201b6200284c1790919060201c565b8a62000d8c60201b620028121790919060201c565b91505062001073565b62001070612710620003f46200105b620015a460201b620028c81760201c565b8962000d8c60201b620028121790919060201c565b90505b620010a8612710620003f462001093620015a960201b620028cd1760201c565b8462000d8c60201b620028121790919060201c565b620010dd612710620003f4620010c8620015a960201b620028cd1760201c565b8562000d8c60201b620028121790919060201c565b90955093509150509250925092565b600062000cee83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250620015ae60201b60201c565b600e546001600160a01b031690565b73b4a43aed87902a24cd66afbd3349af812325ca0190565b600080806200116b62000c06565b905060006200117a8662000ddc565b15620011dd576001600160a01b0386166000908152600360209081526040909120600481015460028201546005830154600190930154620011d5949293620003f493849260649262000f96926200281262000d8c821b17901c565b905062001238565b600580546001600160a01b03166000908152600360209081526040909120600481015460028201549382015460019092015462001235949193620003f493849260649262000f96929062000d8c811b6200281217901c565b90505b60006200125c6064620003f4612710620003e0620015a460201b620028c81760201c565b821115620012fd57600062001280838462000d8c60201b620028121790919060201c565b9050620012a9612710620003f46200101d61271085620010ec60201b6200284c1790919060201c565b9150620012cb612710620003f46200101d620015dd60201b620028d21760201c565b821115620012f657620012f3612710620003f46200101d620015dd60201b620028d21760201c565b91505b5062001320565b6200131d612710620003f46200105b620015a460201b620028c81760201c565b90505b806200133b848362000d8c60201b620028121790919060201c565b945094505050509250929050565b600080806200135762000c06565b9050600062001390612710620003f46200137b620015e360201b620028d81760201c565b8862000d8c60201b620028121790919060201c565b905080620013ad838362000d8c60201b620028121790919060201c565b935093505050915091565b6536fa9cc6d40090565b60008183620013e65760405162461bcd60e51b81526004016200025a919062001622565b506000838581620013f357fe5b0495945050505050565b600080600080856001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200143d57600080fd5b505afa15801562001452573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620014789190620015f5565b6040516370a0823160e01b815290915060009030906370a0823190620014a3908a906004016200160e565b60206040518083038186803b158015620014bc57600080fd5b505afa158015620014d1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620014f79190620015f5565b90506000866001600160a01b03166370a08231896040518263ffffffff1660e01b81526004016200152991906200160e565b60206040518083038186803b1580156200154257600080fd5b505afa15801562001557573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200157d9190620015f5565b91989197509195509350505050565b737a250d5630b4cf539739df2c5dacb4c659f2488d90565b606490565b60fa90565b60008184841115620015d55760405162461bcd60e51b81526004016200025a919062001622565b505050900390565b6103e890565b603290565b605c806200625183390190565b60006020828403121562001607578081fd5b5051919050565b6001600160a01b0391909116815260200190565b6000602080835283518082850152825b81811015620016505785810183015185820160400152820162001632565b81811115620016625783604083870101525b50601f01601f1916929092016040019392505050565b60208082526016908201527f416d6f756e7420657863656564732062616c616e636500000000000000000000604082015260600190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526006908201526514185d5cd95960d21b604082015260600190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b6020808252818101527f416d6f756e74206d7573742062652067726561746572207468616e207a65726f604082015260600190565b60208082526014908201527f50726573616c652079657420746f20636c6f7365000000000000000000000000604082015260600190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601f908201527f416d6f756e74206578636565647320756e6c6f636b65642062616c616e636500604082015260600190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b6020808252600f908201526e1399595908184818dbdb9d1c9858dd608a1b604082015260600190565b90815260200190565b61496880620018e96000396000f3fe60806040526004361061038c5760003560e01c806384955c88116101dc578063bef2112411610102578063d825589b116100a0578063ec2b4e361161006f578063ec2b4e36146109df578063f0e0d14e146109ff578063f2fde38b14610a1f578063f9b7250c14610a3f5761038c565b8063d825589b1461095f578063db7f521a1461097f578063dd62ed3e1461099f578063e272b892146109bf5761038c565b8063c4e41b22116100dc578063c4e41b22146108f5578063cb4d31951461090a578063d5c258901461092a578063d5fcc7b61461093f5761038c565b8063bef2112414610886578063bf9a3a1b146108a6578063c4086893146108d55761038c565b8063a5a302d31161017a578063b21c327811610149578063b21c32781461081c578063b6333d831461083c578063b72455bd1461085c578063b97dd9e2146108715761038c565b8063a5a302d3146107b2578063a9059cbb146107c7578063ae2089ad146107e7578063b187bd26146108075761038c565b8063927ac386116101b6578063927ac386146107535780639358928b1461076857806395d89b411461077d578063a457c2d7146107925761038c565b806384955c88146106ec578063893987831461070c5780638da5cb5b1461073e5761038c565b80634cf73094116102c1578063715018a61161025f57806380af17991161022e57806380af17991461068257806380c2bbd21461069757806380dc74da146106b75780638484ed7e146106cc5761038c565b8063715018a61461060d5780637c2d0774146106225780637dff2680146106425780637e47d625146106625761038c565b8063522361461161029b5780635223614614610598578063524900b5146105b85780635d15d341146105cd57806370a08231146105ed5761038c565b80634cf73094146105435780634f78aa82146105635780635184cc43146105835761038c565b8063395093511161032e5780633f96440e116103085780633f96440e146104ce5780634028358a146104e357806340c10f191461050357806342b5f375146105235761038c565b806339509351146104825780633e6dfa36146104a25780633eedf63c146104c45761038c565b8063220659881161036a578063220659881461040b57806323b872dd1461042b57806323ecdf611461044b578063313ce567146104605761038c565b806306fdde0314610391578063095ea7b3146103bc57806318160ddd146103e9575b600080fd5b34801561039d57600080fd5b506103a6610a6f565b6040516103b3919061410d565b60405180910390f35b3480156103c857600080fd5b506103dc6103d7366004613ec4565b610a7f565b6040516103b39190614102565b3480156103f557600080fd5b506103fe610a9d565b6040516103b39190614805565b34801561041757600080fd5b506103dc610426366004613e14565b610aa7565b34801561043757600080fd5b506103dc610446366004613e84565b610ac9565b34801561045757600080fd5b506103dc610b21565b34801561046c57600080fd5b50610475610b31565b6040516103b39190614894565b34801561048e57600080fd5b506103dc61049d366004613ec4565b610b3b565b3480156104ae57600080fd5b506104b7610b64565b6040516103b39190613fdc565b6104cc610b6e565b005b3480156104da57600080fd5b506104b7610c2e565b3480156104ef57600080fd5b506104cc6104fe366004613e4c565b610c3d565b34801561050f57600080fd5b506104cc61051e366004613ec4565b610c80565b34801561052f57600080fd5b506103fe61053e366004613e14565b610d2c565b34801561054f57600080fd5b506104cc61055e366004613f8b565b610df7565b34801561056f57600080fd5b506103fe61057e366004613e14565b610fd4565b34801561058f57600080fd5b506103fe611063565b3480156105a457600080fd5b506104cc6105b3366004613e14565b6110a2565b3480156105c457600080fd5b506104b76111bf565b3480156105d957600080fd5b506104cc6105e8366004613ec4565b6111c9565b3480156105f957600080fd5b506103fe610608366004613e14565b611901565b34801561061957600080fd5b506104cc611949565b34801561062e57600080fd5b506104cc61063d366004613f5b565b6119c8565b34801561064e57600080fd5b506104b761065d366004613f5b565b611c15565b34801561066e57600080fd5b506104cc61067d366004613f23565b611c3f565b34801561068e57600080fd5b506104b7611c84565b3480156106a357600080fd5b506104cc6106b2366004613e14565b611c93565b3480156106c357600080fd5b506104b7611cf8565b3480156106d857600080fd5b506104cc6106e7366004613e14565b611d07565b3480156106f857600080fd5b506103fe610707366004613e14565b611d82565b34801561071857600080fd5b5061072c610727366004613e14565b611d9c565b6040516103b3969594939291906140cf565b34801561074a57600080fd5b506104b7611e28565b34801561075f57600080fd5b506103dc611e37565b34801561077457600080fd5b506103fe611e47565b34801561078957600080fd5b506103a6611e8b565b34801561079e57600080fd5b506103dc6107ad366004613ec4565b611e95565b3480156107be57600080fd5b506104b7611ed1565b3480156107d357600080fd5b506103dc6107e2366004613ec4565b611ee0565b3480156107f357600080fd5b506103fe610802366004613e14565b611ef4565b34801561081357600080fd5b506103dc611f0f565b34801561082857600080fd5b506103fe610837366004613e4c565b611f1f565b34801561084857600080fd5b506103dc610857366004613e14565b611f4a565b34801561086857600080fd5b506103fe611f68565b34801561087d57600080fd5b506103fe611f6e565b34801561089257600080fd5b506104cc6108a1366004613e14565b611f74565b3480156108b257600080fd5b506108c66108c1366004613e4c565b611ff3565b6040516103b39392919061487e565b3480156108e157600080fd5b506103fe6108f0366004613e14565b612172565b34801561090157600080fd5b506103fe61218d565b34801561091657600080fd5b506104cc610925366004613e14565b612193565b34801561093657600080fd5b506103fe6121d4565b34801561094b57600080fd5b506104cc61095a366004613e14565b6121da565b34801561096b57600080fd5b506104cc61097a366004613eef565b61223d565b34801561098b57600080fd5b506104cc61099a366004613e14565b61244b565b3480156109ab57600080fd5b506103fe6109ba366004613e4c565b612588565b3480156109cb57600080fd5b506104cc6109da366004613f23565b612594565b3480156109eb57600080fd5b506103dc6109fa366004613e14565b6125e7565b348015610a0b57600080fd5b506104cc610a1a366004613ec4565b612605565b348015610a2b57600080fd5b506104cc610a3a366004613e14565b61265f565b348015610a4b57600080fd5b50610a5f610a5a366004613f5b565b612716565b6040516103b394939291906140a7565b6060610a796128dd565b90505b90565b6000610a93610a8c6128ff565b8484612903565b5060015b92915050565b6000610a7961218d565b6001600160a01b03811660009081526009602052604090205460ff165b919050565b6000610ad68484846129aa565b610b1784610ae26128ff565b610b12856040518060600160405280602881526020016148c660289139610b0b8a6108376128ff565b9190612fad565b612903565b5060019392505050565b600f54600160a81b900460ff1690565b6000610a79612fd9565b6000610a93610b486128ff565b84610b1285610b5e610b586128ff565b89611f1f565b906127a5565b6000610a79612fde565b610b76610c2e565b6001600160a01b0316610b876128ff565b6001600160a01b031614610bb65760405162461bcd60e51b8152600401610bad906142b2565b60405180910390fd5b610bbe611e37565b15610bdb5760405162461bcd60e51b8152600401610bad906143e5565b610be36128a6565b610beb610a9d565b1115610c095760405162461bcd60e51b8152600401610bad906145ed565b610c11612ff6565b600e805460ff60a01b1916600160a01b179055610c2c613113565b565b600f546001600160a01b031690565b610c456128ff565b6011546001600160a01b03908116911614610c725760405162461bcd60e51b8152600401610bad906145b8565b610c7c828261359b565b5050565b610c88610c2e565b6001600160a01b0316610c996128ff565b6001600160a01b031614610cbf5760405162461bcd60e51b8152600401610bad906142b2565b610cc7611e37565b15610ce45760405162461bcd60e51b8152600401610bad906143e5565b610cee82826136c0565b816001600160a01b031660006001600160a01b03166000805160206148ee83398151915283604051610d209190614805565b60405180910390a35050565b6001600160a01b03811660009081526003602052604081206004810154600282015460058301546001909301548493610d819392610d7b9290918391606491610d759190612812565b90612812565b906127ca565b90506000610d986064610d7b612710610b5e6128c8565b821115610de6576000610dab8380612812565b9050610db98161271061284c565b9150610dc36128d2565b821115610ddc57610dd26128d2565b9350505050610ac4565b509150610ac49050565b610dee6128c8565b92505050610ac4565b610dff6128ff565b6011546001600160a01b03908116911614610e2c5760405162461bcd60e51b8152600401610bad906145b8565b600080600080610e3b86612716565b93509350935093508015156001151514610e675760405162461bcd60e51b8152600401610bad9061475f565b428211610e865760405162461bcd60e51b8152600401610bad9061450f565b6001600160a01b038416600090815260086020526040902054610ea9908461284c565b6001600160a01b038086166000908152600860205260408082209390935590871681522054610ed890846127a5565b6001600160a01b038087166000908152600860205260408082209390935590861681522054610f22576001600160a01b0384166000908152600960205260409020805460ff191690555b6001600160a01b0385166000908152600960205260409020805460ff191660011790556007805486919088908110610f5657fe5b6000918252602082206004919091020180546001600160a01b0319166001600160a01b039390931692909217909155610f8d611063565b90506001600160a01b038087169086166000805160206148ee833981519152610fb687856127ca565b604051610fc39190614805565b60405180910390a350505050505050565b6001600160a01b0381166000908152600360205260408120600181015460058201546004830154600290930154849361101d9392610d7b9290918391606491610d759190612812565b90506110326064610d7b612710610b5e6128c8565b8111156110535760006110458280612812565b9050610dee8161271061284c565b61105b6128c8565b915050610ac4565b600e54600090600160a01b900460ff161561108e57600c54600b54611087916127ca565b9050610a7c565b6110876110996128a6565b600b54906127ca565b6110aa6128ff565b6011546001600160a01b039081169116146110d75760405162461bcd60e51b8152600401610bad906145b8565b6110e08161279f565b6110fc5760405162461bcd60e51b8152600401610bad906147dc565b600d80546001600160a01b039081166000908152601060205260408120805460ff19169055915461112d9116611901565b9050801561118457600d5461114c906001600160a01b031683836129aa565b600d546040516001600160a01b038085169216906000805160206148ee8339815191529061117b908590614805565b60405180910390a35b50600d80546001600160a01b039092166001600160a01b0319909216821790556000908152601060205260409020805460ff19166001179055565b6000610a796128b0565b6111d16128ff565b6011546001600160a01b039081169116146111fe5760405162461bcd60e51b8152600401610bad906145b8565b600f805460ff60a81b1916600160a81b179055600061121b6111bf565b90506000611227610b64565b60405163e6a4390560e01b815290915060009081906001600160a01b0384169063e6a439059061125d9089903090600401613ff0565b60206040518083038186803b15801561127557600080fd5b505afa158015611289573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ad9190613e30565b6001600160a01b03161415611343576040516364e329cb60e11b81526001600160a01b0383169063c9c65396906112ea9088903090600401613ff0565b602060405180830381600087803b15801561130457600080fd5b505af1158015611318573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061133c9190613e30565b90506113c4565b60405163e6a4390560e01b81526001600160a01b0383169063e6a43905906113719088903090600401613ff0565b60206040518083038186803b15801561138957600080fd5b505afa15801561139d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c19190613e30565b90505b60006001600160a01b0316826001600160a01b031663e6a4390587866001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561141857600080fd5b505afa15801561142c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114509190613e30565b6040518363ffffffff1660e01b815260040161146d929190613ff0565b60206040518083038186803b15801561148557600080fd5b505afa158015611499573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114bd9190613e30565b6001600160a01b031614156114e45760405162461bcd60e51b8152600401610bad906147a5565b836114ee30611901565b101561150c5760405162461bcd60e51b8152600401610bad9061440b565b60006115198560026127ca565b90506000611527868361284c565b90506000876001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016115579190613fdc565b60206040518083038186803b15801561156f57600080fd5b505afa158015611583573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115a79190613f73565b604080516003808252608082019092529192506060919060208201838036833701905050905030816000815181106115db57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050866001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561163457600080fd5b505afa158015611648573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061166c9190613e30565b8160018151811061167957fe5b60200260200101906001600160a01b031690816001600160a01b03168152505088816002815181106116a757fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506116d2308886612903565b604051635c11d79560e01b81526001600160a01b03881690635c11d7959061170790879060009086903090429060040161480e565b600060405180830381600087803b15801561172157600080fd5b505af1158015611735573d6000803e3d6000fd5b5050505060006117c1838b6001600160a01b03166370a08231306040518263ffffffff1660e01b815260040161176b9190613fdc565b60206040518083038186803b15801561178357600080fd5b505afa158015611797573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117bb9190613f73565b9061284c565b90506117ce308986612903565b60405163095ea7b360e01b81526001600160a01b038b169063095ea7b3906117fc908b908590600401614053565b602060405180830381600087803b15801561181657600080fd5b505af115801561182a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061184e9190613f3f565b5060405162e8e33760e81b81526001600160a01b0389169063e8e33700906118899030908e908990879060009081908690429060040161400a565b606060405180830381600087803b1580156118a357600080fd5b505af11580156118b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118db9190613faf565b5050506118e8868b61359b565b5050600f805460ff60a81b191690555050505050505050565b60008061190c611063565b905061191783610aa7565b156119355761105b81610d7b61192c86612172565b610b5e87611ef4565b61194281610d7b85611ef4565b9392505050565b6119516128ff565b6011546001600160a01b0390811691161461197e5760405162461bcd60e51b8152600401610bad906145b8565b6011546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3601180546001600160a01b0319169055565b6119d36104266128ff565b6119ef5760405162461bcd60e51b8152600401610bad906142d7565b6000806000806119fe85612716565b935093509350935042821115611a265760405162461bcd60e51b8152600401610bad9061437a565b611a2e6128ff565b6001600160a01b0316846001600160a01b031614611a5e5760405162461bcd60e51b8152600401610bad9061446e565b600181151514611a805760405162461bcd60e51b8152600401610bad9061475f565b600a54611a8d908461284c565b600a55611abf83600080611a9f6128ff565b6001600160a01b03168152602081019190915260400160002054906127a5565b600080611aca6128ff565b6001600160a01b03166001600160a01b0316815260200190815260200160002081905550611b1e8360086000611afe6128ff565b6001600160a01b031681526020810191909152604001600020549061284c565b60086000611b2a6128ff565b6001600160a01b03166001600160a01b0316815260200190815260200160002081905550600060086000611b5c6128ff565b6001600160a01b03166001600160a01b031681526020019081526020016000205411611bb957600060096000611b906128ff565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790555b600060078681548110611bc857fe5b906000526020600020906004020160010181905550600060078681548110611bec57fe5b60009182526020909120600490910201600301805460ff19169115159190911790555050505050565b600060028281548110611c2457fe5b6000918252602090912001546001600160a01b031692915050565b611c4a6108576128ff565b611c665760405162461bcd60e51b8152600401610bad906144b3565b600f8054911515600160a81b0260ff60a81b19909216919091179055565b600e546001600160a01b031690565b6001600160a01b03808216600090815260036020526040812054909182918291611cbf91869116611ff3565b6001600160a01b039096166000908152600360208190526040909120908101969096556001860191909155600290940193909355505050565b600d546001600160a01b031690565b611d0f6128ff565b6011546001600160a01b03908116911614611d3c5760405162461bcd60e51b8152600401610bad906145b8565b611d4581611f4a565b611d615760405162461bcd60e51b8152600401610bad90614553565b6001600160a01b03166000908152601060205260409020805460ff19169055565b600080611d8d611063565b905061194281610d7b85611ef4565b600080600080600080611dad613da2565b505050506001600160a01b03938416600090815260036020818152604092839020835160c0810185528154909816808952600182015492890183905260028201549489018590529281015460608901819052600482015460808a0181905260059092015460a090990189905292989197939650919450909250565b6011546001600160a01b031690565b600e54600160a01b900460ff1690565b600080611e52611063565b9050611e85611e62610608611c84565b6117bb611e6e30611901565b6117bb611e7d86610d7b6121d4565b6117bb61218d565b91505090565b6060610a7961372d565b6000610a93611ea26128ff565b84610b128560405180606001604052806025815260200161490e60259139610b0b611ecb6128ff565b8a611f1f565b6005546001600160a01b031690565b6000610a93611eed6128ff565b84846129aa565b6001600160a01b031660009081526020819052604090205490565b600f54600160a01b900460ff1690565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b031660009081526010602052604090205460ff1690565b600b5490565b60065490565b611f7c6128ff565b6011546001600160a01b03908116911614611fa95760405162461bcd60e51b8152600401610bad906145b8565b611fb281611f4a565b15611fcf5760405162461bcd60e51b8152600401610bad906143bd565b6001600160a01b03166000908152601060205260409020805460ff19166001179055565b600080600080856001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561203257600080fd5b505afa158015612046573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061206a9190613f73565b6040516370a0823160e01b815290915060009030906370a0823190612093908a90600401613fdc565b60206040518083038186803b1580156120ab57600080fd5b505afa1580156120bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120e39190613f73565b90506000866001600160a01b03166370a08231896040518263ffffffff1660e01b81526004016121139190613fdc565b60206040518083038186803b15801561212b57600080fd5b505afa15801561213f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121639190613f73565b91989197509195509350505050565b6001600160a01b031660009081526008602052604090205490565b600c5490565b61219b6128ff565b6011546001600160a01b039081169116146121c85760405162461bcd60e51b8152600401610bad906145b8565b6121d18161374b565b50565b600a5490565b6121e26128ff565b6011546001600160a01b0390811691161461220f5760405162461bcd60e51b8152600401610bad906145b8565b612217611e37565b156122345760405162461bcd60e51b8152600401610bad906144d8565b6121d18161388f565b6122456128ff565b6011546001600160a01b039081169116146122725760405162461bcd60e51b8152600401610bad906145b8565b61227a611e37565b156122975760405162461bcd60e51b8152600401610bad906141f3565b60006122a1611063565b905060006122af8383612812565b604080516080810182526001600160a01b0388811680835260208084018681528486018b8152600160608701818152600780549283018155600090815297517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688600490930292830180546001600160a01b031916919098161790965591517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c689830155517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68a82015592517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68b909301805460ff19169315159390931790925582526008905220549091506123c190826127a5565b6001600160a01b0386166000908152600860209081526040808320939093556009905220805460ff19166001179055600a546123fd90826127a5565b600a55600c5461240d90846127a5565b600c556040516001600160a01b038616906000906000805160206148ee8339815191529061243c908790614805565b60405180910390a35050505050565b6124536128ff565b6011546001600160a01b039081169116146124805760405162461bcd60e51b8152600401610bad906145b8565b600f805460ff60a81b1916600160a81b17905561249c8161279f565b6124b85760405162461bcd60e51b8152600401610bad906147dc565b600e80546001600160a01b039081166000908152601060205260408120805460ff1916905591546124e99116611901565b9050801561254057600e54612508906001600160a01b031683836129aa565b600e546040516001600160a01b038085169216906000805160206148ee83398151915290612537908590614805565b60405180910390a35b50600e80546001600160a01b039092166001600160a01b0319909216821790556000908152601060205260409020805460ff19166001179055600f805460ff60a81b19169055565b60006119428383611f1f565b61259c6128ff565b6011546001600160a01b039081169116146125c95760405162461bcd60e51b8152600401610bad906145b8565b600f8054911515600160a01b0260ff60a01b19909216919091179055565b6001600160a01b031660009081526004602052604090205460ff1690565b61260d6128ff565b6011546001600160a01b0390811691161461263a5760405162461bcd60e51b8152600401610bad906145b8565b612642611e37565b15610ce45760405162461bcd60e51b8152600401610bad906141f3565b6126676128ff565b6011546001600160a01b039081169116146126945760405162461bcd60e51b8152600401610bad906145b8565b6001600160a01b0381166126ba5760405162461bcd60e51b8152600401610bad9061422a565b6011546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3601180546001600160a01b0319166001600160a01b0392909216919091179055565b600080600080612724613de1565b6007868154811061273157fe5b60009182526020918290206040805160808101825260049390930290910180546001600160a01b03168084526001820154948401859052600282015492840183905260039091015460ff1615156060909301839052999298509650945092505050565b6511e22ddb7bff1990565b3b151590565b6000828201838110156119425760405162461bcd60e51b8152600401610bad9061430e565b600061194283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506138b1565b61384090565b60008261282157506000610a97565b8282028284828161282e57fe5b04146119425760405162461bcd60e51b8152600401610bad90614577565b600061194283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612fad565b73b4a43aed87902a24cd66afbd3349af812325ca0190565b6536fa9cc6d40090565b737a250d5630b4cf539739df2c5dacb4c659f2488d90565b606490565b60fa90565b6103e890565b603290565b6040805180820190915260088152675946537461626c6560c01b602082015290565b3390565b6001600160a01b0383166129295760405162461bcd60e51b8152600401610bad906146e4565b6001600160a01b03821661294f5760405162461bcd60e51b8152600401610bad90614270565b61295a8383836138e8565b816001600160a01b0316836001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161299d9190614805565b60405180910390a3505050565b6129b2611f0f565b156129cf5760405162461bcd60e51b8152600401610bad906141d3565b6001600160a01b0383166129f55760405162461bcd60e51b8152600401610bad9061469f565b6001600160a01b038216612a1b5760405162461bcd60e51b8152600401610bad90614190565b60008111612a3b5760405162461bcd60e51b8152600401610bad90614345565b612a4483611901565b811115612a635760405162461bcd60e51b8152600401610bad90614160565b612a6c83611d82565b811115612a8b5760405162461bcd60e51b8152600401610bad90614668565b612a93611e37565b612aaf5760405162461bcd60e51b8152600401610bad90614440565b612ac2612aba61280c565b610b5e611f6e565b421115612ad157612ad1613914565b6000612adb611063565b90506000612ae98383612812565b90506000612af5610b21565b15612b0257506003612b62565b6000612b0d876125e7565b15612b2257612b1b87613a4e565b9050612b53565b612b2b866125e7565b15612b3e57612b3986611c93565b612b53565b600554612b53906001600160a01b0316611c93565b612b5e878783613ab9565b9150505b8060011415612d3d576000806000612b7a8988613b0f565b6001600160a01b038c166000908152602081905260409020549295509093509150612ba5908661284c565b6001600160a01b03808b1660009081526020819052604080822093909355908a1681522054612bd490866127a5565b6001600160a01b038916600090815260208190526040902055612c05612bfa8488612812565b600080611a9f611c84565b600080612c10611c84565b6001600160a01b03168152602081019190915260400160002055612c42612c378388612812565b600080611a9f61288e565b600080612c4d61288e565b6001600160a01b03168152602081019190915260400160002055600c54612c7490826127a5565b600c81905550876001600160a01b0316896001600160a01b03166000805160206148ee83398151915289604051612cab9190614805565b60405180910390a3612cbb611c84565b6001600160a01b031660006001600160a01b03166000805160206148ee83398151915285604051612cec9190614805565b60405180910390a3612cfc61288e565b6001600160a01b031660006001600160a01b03166000805160206148ee83398151915284604051612d2d9190614805565b60405180910390a3505050612fa5565b8060021415612f0157600080612d538787613c02565b91509150600080612d6388613d55565b90925090506000612d78836117bb8b8861284c565b90506000612d86828a612812565b6001600160a01b038d16600090815260208190526040902054909150612dac908961284c565b6001600160a01b03808e1660009081526020819052604080822093909355908d1681522054612ddb90826127a5565b6001600160a01b03808d1660009081526020819052604080822093909355600d5490911681522054612e0d90846127a5565b600d546001600160a01b0316600090815260208190526040902055600c54612e35908761284c565b600c55600b54612e45908661284c565b600b819055508a6001600160a01b03168c6001600160a01b03166000805160206148ee83398151915284604051612e7c9190614805565b60405180910390a360006001600160a01b03168c6001600160a01b03166000805160206148ee83398151915288604051612eb69190614805565b60405180910390a3600d546040516001600160a01b03918216918e16906000805160206148ee83398151915290612eee908890614805565b60405180910390a3505050505050612fa5565b8060031415612fa5576001600160a01b038616600090815260208190526040902054612f2d908361284c565b6001600160a01b038088166000908152602081905260408082209390935590871681522054612f5c90836127a5565b6001600160a01b0380871660008181526020819052604090819020939093559151908816906000805160206148ee83398151915290612f9c908890614805565b60405180910390a35b505050505050565b60008184841115612fd15760405162461bcd60e51b8152600401610bad919061410d565b505050900390565b600990565b735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f90565b612ffe611e37565b1561301b5760405162461bcd60e51b8152600401610bad906141f3565b61302361288e565b6001600160a01b03166108fc61303a4760036127ca565b6040518115909202916000818181858888f19350505050158015613062573d6000803e3d6000fd5b506000613078613070610a9d565b6117bb6128a6565b90506000613096613087613d96565b610d754764174876e8006127ca565b9050808211156130e6576130b460006130af848461284c565b6136c0565b6000806000805160206148ee8339815191526130d0858561284c565b6040516130dd9190614805565b60405180910390a35b6130f030826136c0565b60405130906000906000805160206148ee83398151915290610d20908590614805565b600f805460ff60a81b1916600160a81b17905560006131306111bf565b9050600061313c610b64565b90506000806001600160a01b0316826001600160a01b031663e6a43905856001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561319257600080fd5b505afa1580156131a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131ca9190613e30565b306040518363ffffffff1660e01b81526004016131e8929190613ff0565b60206040518083038186803b15801561320057600080fd5b505afa158015613214573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132389190613e30565b6001600160a01b0316141561333e57816001600160a01b031663c9c65396846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561328f57600080fd5b505afa1580156132a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132c79190613e30565b306040518363ffffffff1660e01b81526004016132e5929190613ff0565b602060405180830381600087803b1580156132ff57600080fd5b505af1158015613313573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133379190613e30565b905061342f565b816001600160a01b031663e6a4390530856001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561338757600080fd5b505afa15801561339b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133bf9190613e30565b6040518363ffffffff1660e01b81526004016133dc929190613ff0565b60206040518083038186803b1580156133f457600080fd5b505afa158015613408573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061342c9190613e30565b90505b600061343a30611901565b905061345b30737a250d5630b4cf539739df2c5dacb4c659f2488d83612903565b836001600160a01b031663f305d71947308460008061347861288e565b426040518863ffffffff1660e01b815260040161349a9695949392919061406c565b6060604051808303818588803b1580156134b357600080fd5b505af11580156134c7573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906134ec9190613faf565b50505061356982856001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561352c57600080fd5b505afa158015613540573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135649190613e30565b61359b565b50600580546001600160a01b0319166001600160a01b03929092169190911790555050600f805460ff60a81b19169055565b6135a4826125e7565b156135c15760405162461bcd60e51b8152600401610bad90614728565b6001600160a01b0382166000818152600460205260408120805460ff1916600190811790915560028054918201815582527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0180546001600160a01b03191690921790915580806136328585611ff3565b6040805160c0810182526001600160a01b0398891681526020808201868152828401868152606084019586526080840197885260a084019687529b8b16600090815260039283905293909320915182546001600160a01b0319169a16999099178155905160018201559751600289015551958701959095555160048601555050905160059092019190915550565b60006136ca611063565b905060006136d88383612812565b6001600160a01b0385166000908152602081905260409020549091506136fe90826127a5565b6001600160a01b038516600090815260208190526040902055600c5461372490846127a5565b600c5550505050565b604080518082019091526004815263165194d560e21b602082015290565b613754816125e7565b6137705760405162461bcd60e51b8152600401610bad90614624565b60005b600254811015610c7c57816001600160a01b03166002828154811061379457fe5b6000918252602090912001546001600160a01b03161415613887576002805460001981019081106137c157fe5b600091825260209091200154600280546001600160a01b0390921691839081106137e757fe5b6000918252602080832090910180546001600160a01b039485166001600160a01b031991821617909155928516825260048082526040808420805460ff19169055600392839052832080549094168455600184018390556002808501849055918401839055830182905560059092015580548061386057fe5b600082815260209020810160001990810180546001600160a01b0319169055019055610c7c565b600101613773565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b600081836138d25760405162461bcd60e51b8152600401610bad919061410d565b5060008385816138de57fe5b0495945050505050565b6001600160a01b0392831660009081526001602090815260408083209490951682529290925291902055565b61391c613d9c565b60005b6002548110156121d157600360006002838154811061393a57fe5b9060005260206000200160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060010154600360006002848154811061398d57fe5b60009182526020808320909101546001600160a01b03168352820192909252604001812060040191909155600280546003929190849081106139cb57fe5b9060005260206000200160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b03168152602001908152602001600020600201546003600060028481548110613a1e57fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190206005015560010161391f565b6001600160a01b038082166000908152600360205260408120549091829182918291613a7c91879116611ff3565b6001600160a01b03979097166000908152600360208190526040909120908101805490899055600182019390935560020155909410949350505050565b60006002613ac6856125e7565b15613ae2578215613ad957506003613add565b5060015b613b07565b613aea6128b0565b6001600160a01b0316856001600160a01b03161415613b07575060035b949350505050565b6001600160a01b0382166000908152600360205260408120600181015460058201546004830154600290930154849384938493613b5a939192610d7b928391606491610d7591612812565b90506000613b716064610d7b612710610b5e6128c8565b821115613ba8576000613b848380612812565b9050613ba0612710610d7b613b99848361284c565b8a90612812565b915050613bc3565b613bc0612710610d7b613bb96128c8565b8990612812565b90505b613bdb612710610d7b613bd46128cd565b8490612812565b613bf3612710610d7b613bec6128cd565b8590612812565b90955093509150509250925092565b6000806000613c0f611063565b90506000613c1c866125e7565b15613c6c576001600160a01b0386166000908152600360205260409020600481015460028201546005830154600190930154613c6593610d7b92918391606491610d7591612812565b9050613cb7565b600580546001600160a01b031660009081526003602052604090206004810154600282015492820154600190920154613cb4939192610d7b92918391606491610d7591612812565b90505b6000613ccc6064610d7b612710610b5e6128c8565b821115613d28576000613cdf8380612812565b9050613cf4612710610d7b613b99848361284c565b9150613d07612710610d7b613b996128d2565b821115613d2257613d1f612710610d7b613b996128d2565b91505b50613d3c565b613d39612710610d7b613bb96128c8565b90505b80613d478185612812565b945094505050509250929050565b6000806000613d62611063565b90506000613d7e612710610d7b613d776128d8565b8890612812565b905080613d8b8184612812565b935093505050915091565b61718790565b42600655565b6040518060c0016040528060006001600160a01b0316815260200160008152602001600081526020016000815260200160008152602001600081525090565b604051806080016040528060006001600160a01b0316815260200160008152602001600081526020016000151581525090565b600060208284031215613e25578081fd5b8135611942816148a2565b600060208284031215613e41578081fd5b8151611942816148a2565b60008060408385031215613e5e578081fd5b8235613e69816148a2565b91506020830135613e79816148a2565b809150509250929050565b600080600060608486031215613e98578081fd5b8335613ea3816148a2565b92506020840135613eb3816148a2565b929592945050506040919091013590565b60008060408385031215613ed6578182fd5b8235613ee1816148a2565b946020939093013593505050565b600080600060608486031215613f03578283fd5b8335613f0e816148a2565b95602085013595506040909401359392505050565b600060208284031215613f34578081fd5b8135611942816148b7565b600060208284031215613f50578081fd5b8151611942816148b7565b600060208284031215613f6c578081fd5b5035919050565b600060208284031215613f84578081fd5b5051919050565b60008060408385031215613f9d578182fd5b823591506020830135613e79816148a2565b600080600060608486031215613fc3578283fd5b8351925060208401519150604084015190509250925092565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039889168152968816602088015260408701959095526060860193909352608085019190915260a084015290921660c082015260e08101919091526101000190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b6001600160a01b03949094168452602084019290925260408301521515606082015260800190565b6001600160a01b03969096168652602086019490945260408501929092526060840152608083015260a082015260c00190565b901515815260200190565b6000602080835283518082850152825b818110156141395785810183015185820160400152820161411d565b8181111561414a5783604083870101525b50601f01601f1916929092016040019392505050565b602080825260169082015275416d6f756e7420657863656564732062616c616e636560501b604082015260600190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526006908201526514185d5cd95960d21b604082015260600190565b60208082526018908201527f43616e6e6f74206d696e7420706f73742070726573616c650000000000000000604082015260600190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b60208082526022908201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604082015261737360f01b606082015260800190565b6020808252600b908201526a6e6f742070726573616c6560a81b604082015260600190565b6020808252601c908201527f43616c6c657220686173206e6f206c6f636b65642062616c616e636500000000604082015260600190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b6020808252818101527f416d6f756e74206d7573742062652067726561746572207468616e207a65726f604082015260600190565b60208082526023908201527f54686973207472616e6368652063616e6e6f7420626520756e6c6f636b6564206040820152621e595d60ea1b606082015260800190565b6020808252600e908201526d30b63932b0b23c9039b2ba3a32b960911b604082015260600190565b6020808252600c908201526b283932b9b0b6329037bb32b960a11b604082015260600190565b6020808252818101527f416d6f756e7420657863656564732074686520746f6b656e2062616c616e6365604082015260600190565b60208082526014908201527350726573616c652079657420746f20636c6f736560601b604082015260600190565b60208082526025908201527f596f7520617265206e6f7420746865206f776e6572206f662074686973207472604082015264616e63686560d81b606082015260800190565b6020808252600b908201526a6e6f74207461786c65737360a81b604082015260600190565b6020808252601c908201527f50726573616c6520697320616c726561647920636f6d706c6574656400000000604082015260600190565b60208082526024908201527f54686973207472616e6368652068617320616c7265616479206265656e2076656040820152631cdd195960e21b606082015260800190565b6020808252600a90820152693737ba1039b2ba3a32b960b11b604082015260600190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601e908201527f546f74616c20737570706c7920697320616c7265616479206d696e7465640000604082015260600190565b60208082526024908201527f5468697320706f6f6c2069732063757272656e746c79206e6f7420737570706f6040820152631c9d195960e21b606082015260800190565b6020808252601f908201527f416d6f756e74206578636565647320756e6c6f636b65642062616c616e636500604082015260600190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526024908201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646040820152637265737360e01b606082015260800190565b6020808252601e908201527f5468697320706f6f6c20697320616c726561647920737570706f727465640000604082015260600190565b60208082526026908201527f54686973207472616e6368652068617320616c7265616479206265656e20756e6040820152651b1bd8dad95960d21b606082015260800190565b6020808252601a908201527f4574682070616972696e6720646f6573206e6f74206578697374000000000000604082015260600190565b6020808252600f908201526e1399595908184818dbdb9d1c9858dd608a1b604082015260600190565b90815260200190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b8181101561485d5784516001600160a01b031683529383019391830191600101614838565b50506001600160a01b03969096166060850152505050608001529392505050565b9283526020830191909152604082015260600190565b60ff91909116815260200190565b6001600160a01b03811681146121d157600080fd5b80151581146121d157600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212201e768cb6c37a2b46f55e61e4b64928276ba756600cafdfdfc6264818572c989b64736f6c634300060c00336080604052348015600f57600080fd5b50603f80601d6000396000f3fe6080604052600080fdfea26469706673582212205e1eb9b2d308c2c2632e5011dfd091e0de2be62dbadd1d2a36d68475de01588264736f6c634300060c0033ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef
Deployed Bytecode
0x60806040526004361061038c5760003560e01c806384955c88116101dc578063bef2112411610102578063d825589b116100a0578063ec2b4e361161006f578063ec2b4e36146109df578063f0e0d14e146109ff578063f2fde38b14610a1f578063f9b7250c14610a3f5761038c565b8063d825589b1461095f578063db7f521a1461097f578063dd62ed3e1461099f578063e272b892146109bf5761038c565b8063c4e41b22116100dc578063c4e41b22146108f5578063cb4d31951461090a578063d5c258901461092a578063d5fcc7b61461093f5761038c565b8063bef2112414610886578063bf9a3a1b146108a6578063c4086893146108d55761038c565b8063a5a302d31161017a578063b21c327811610149578063b21c32781461081c578063b6333d831461083c578063b72455bd1461085c578063b97dd9e2146108715761038c565b8063a5a302d3146107b2578063a9059cbb146107c7578063ae2089ad146107e7578063b187bd26146108075761038c565b8063927ac386116101b6578063927ac386146107535780639358928b1461076857806395d89b411461077d578063a457c2d7146107925761038c565b806384955c88146106ec578063893987831461070c5780638da5cb5b1461073e5761038c565b80634cf73094116102c1578063715018a61161025f57806380af17991161022e57806380af17991461068257806380c2bbd21461069757806380dc74da146106b75780638484ed7e146106cc5761038c565b8063715018a61461060d5780637c2d0774146106225780637dff2680146106425780637e47d625146106625761038c565b8063522361461161029b5780635223614614610598578063524900b5146105b85780635d15d341146105cd57806370a08231146105ed5761038c565b80634cf73094146105435780634f78aa82146105635780635184cc43146105835761038c565b8063395093511161032e5780633f96440e116103085780633f96440e146104ce5780634028358a146104e357806340c10f191461050357806342b5f375146105235761038c565b806339509351146104825780633e6dfa36146104a25780633eedf63c146104c45761038c565b8063220659881161036a578063220659881461040b57806323b872dd1461042b57806323ecdf611461044b578063313ce567146104605761038c565b806306fdde0314610391578063095ea7b3146103bc57806318160ddd146103e9575b600080fd5b34801561039d57600080fd5b506103a6610a6f565b6040516103b3919061410d565b60405180910390f35b3480156103c857600080fd5b506103dc6103d7366004613ec4565b610a7f565b6040516103b39190614102565b3480156103f557600080fd5b506103fe610a9d565b6040516103b39190614805565b34801561041757600080fd5b506103dc610426366004613e14565b610aa7565b34801561043757600080fd5b506103dc610446366004613e84565b610ac9565b34801561045757600080fd5b506103dc610b21565b34801561046c57600080fd5b50610475610b31565b6040516103b39190614894565b34801561048e57600080fd5b506103dc61049d366004613ec4565b610b3b565b3480156104ae57600080fd5b506104b7610b64565b6040516103b39190613fdc565b6104cc610b6e565b005b3480156104da57600080fd5b506104b7610c2e565b3480156104ef57600080fd5b506104cc6104fe366004613e4c565b610c3d565b34801561050f57600080fd5b506104cc61051e366004613ec4565b610c80565b34801561052f57600080fd5b506103fe61053e366004613e14565b610d2c565b34801561054f57600080fd5b506104cc61055e366004613f8b565b610df7565b34801561056f57600080fd5b506103fe61057e366004613e14565b610fd4565b34801561058f57600080fd5b506103fe611063565b3480156105a457600080fd5b506104cc6105b3366004613e14565b6110a2565b3480156105c457600080fd5b506104b76111bf565b3480156105d957600080fd5b506104cc6105e8366004613ec4565b6111c9565b3480156105f957600080fd5b506103fe610608366004613e14565b611901565b34801561061957600080fd5b506104cc611949565b34801561062e57600080fd5b506104cc61063d366004613f5b565b6119c8565b34801561064e57600080fd5b506104b761065d366004613f5b565b611c15565b34801561066e57600080fd5b506104cc61067d366004613f23565b611c3f565b34801561068e57600080fd5b506104b7611c84565b3480156106a357600080fd5b506104cc6106b2366004613e14565b611c93565b3480156106c357600080fd5b506104b7611cf8565b3480156106d857600080fd5b506104cc6106e7366004613e14565b611d07565b3480156106f857600080fd5b506103fe610707366004613e14565b611d82565b34801561071857600080fd5b5061072c610727366004613e14565b611d9c565b6040516103b3969594939291906140cf565b34801561074a57600080fd5b506104b7611e28565b34801561075f57600080fd5b506103dc611e37565b34801561077457600080fd5b506103fe611e47565b34801561078957600080fd5b506103a6611e8b565b34801561079e57600080fd5b506103dc6107ad366004613ec4565b611e95565b3480156107be57600080fd5b506104b7611ed1565b3480156107d357600080fd5b506103dc6107e2366004613ec4565b611ee0565b3480156107f357600080fd5b506103fe610802366004613e14565b611ef4565b34801561081357600080fd5b506103dc611f0f565b34801561082857600080fd5b506103fe610837366004613e4c565b611f1f565b34801561084857600080fd5b506103dc610857366004613e14565b611f4a565b34801561086857600080fd5b506103fe611f68565b34801561087d57600080fd5b506103fe611f6e565b34801561089257600080fd5b506104cc6108a1366004613e14565b611f74565b3480156108b257600080fd5b506108c66108c1366004613e4c565b611ff3565b6040516103b39392919061487e565b3480156108e157600080fd5b506103fe6108f0366004613e14565b612172565b34801561090157600080fd5b506103fe61218d565b34801561091657600080fd5b506104cc610925366004613e14565b612193565b34801561093657600080fd5b506103fe6121d4565b34801561094b57600080fd5b506104cc61095a366004613e14565b6121da565b34801561096b57600080fd5b506104cc61097a366004613eef565b61223d565b34801561098b57600080fd5b506104cc61099a366004613e14565b61244b565b3480156109ab57600080fd5b506103fe6109ba366004613e4c565b612588565b3480156109cb57600080fd5b506104cc6109da366004613f23565b612594565b3480156109eb57600080fd5b506103dc6109fa366004613e14565b6125e7565b348015610a0b57600080fd5b506104cc610a1a366004613ec4565b612605565b348015610a2b57600080fd5b506104cc610a3a366004613e14565b61265f565b348015610a4b57600080fd5b50610a5f610a5a366004613f5b565b612716565b6040516103b394939291906140a7565b6060610a796128dd565b90505b90565b6000610a93610a8c6128ff565b8484612903565b5060015b92915050565b6000610a7961218d565b6001600160a01b03811660009081526009602052604090205460ff165b919050565b6000610ad68484846129aa565b610b1784610ae26128ff565b610b12856040518060600160405280602881526020016148c660289139610b0b8a6108376128ff565b9190612fad565b612903565b5060019392505050565b600f54600160a81b900460ff1690565b6000610a79612fd9565b6000610a93610b486128ff565b84610b1285610b5e610b586128ff565b89611f1f565b906127a5565b6000610a79612fde565b610b76610c2e565b6001600160a01b0316610b876128ff565b6001600160a01b031614610bb65760405162461bcd60e51b8152600401610bad906142b2565b60405180910390fd5b610bbe611e37565b15610bdb5760405162461bcd60e51b8152600401610bad906143e5565b610be36128a6565b610beb610a9d565b1115610c095760405162461bcd60e51b8152600401610bad906145ed565b610c11612ff6565b600e805460ff60a01b1916600160a01b179055610c2c613113565b565b600f546001600160a01b031690565b610c456128ff565b6011546001600160a01b03908116911614610c725760405162461bcd60e51b8152600401610bad906145b8565b610c7c828261359b565b5050565b610c88610c2e565b6001600160a01b0316610c996128ff565b6001600160a01b031614610cbf5760405162461bcd60e51b8152600401610bad906142b2565b610cc7611e37565b15610ce45760405162461bcd60e51b8152600401610bad906143e5565b610cee82826136c0565b816001600160a01b031660006001600160a01b03166000805160206148ee83398151915283604051610d209190614805565b60405180910390a35050565b6001600160a01b03811660009081526003602052604081206004810154600282015460058301546001909301548493610d819392610d7b9290918391606491610d759190612812565b90612812565b906127ca565b90506000610d986064610d7b612710610b5e6128c8565b821115610de6576000610dab8380612812565b9050610db98161271061284c565b9150610dc36128d2565b821115610ddc57610dd26128d2565b9350505050610ac4565b509150610ac49050565b610dee6128c8565b92505050610ac4565b610dff6128ff565b6011546001600160a01b03908116911614610e2c5760405162461bcd60e51b8152600401610bad906145b8565b600080600080610e3b86612716565b93509350935093508015156001151514610e675760405162461bcd60e51b8152600401610bad9061475f565b428211610e865760405162461bcd60e51b8152600401610bad9061450f565b6001600160a01b038416600090815260086020526040902054610ea9908461284c565b6001600160a01b038086166000908152600860205260408082209390935590871681522054610ed890846127a5565b6001600160a01b038087166000908152600860205260408082209390935590861681522054610f22576001600160a01b0384166000908152600960205260409020805460ff191690555b6001600160a01b0385166000908152600960205260409020805460ff191660011790556007805486919088908110610f5657fe5b6000918252602082206004919091020180546001600160a01b0319166001600160a01b039390931692909217909155610f8d611063565b90506001600160a01b038087169086166000805160206148ee833981519152610fb687856127ca565b604051610fc39190614805565b60405180910390a350505050505050565b6001600160a01b0381166000908152600360205260408120600181015460058201546004830154600290930154849361101d9392610d7b9290918391606491610d759190612812565b90506110326064610d7b612710610b5e6128c8565b8111156110535760006110458280612812565b9050610dee8161271061284c565b61105b6128c8565b915050610ac4565b600e54600090600160a01b900460ff161561108e57600c54600b54611087916127ca565b9050610a7c565b6110876110996128a6565b600b54906127ca565b6110aa6128ff565b6011546001600160a01b039081169116146110d75760405162461bcd60e51b8152600401610bad906145b8565b6110e08161279f565b6110fc5760405162461bcd60e51b8152600401610bad906147dc565b600d80546001600160a01b039081166000908152601060205260408120805460ff19169055915461112d9116611901565b9050801561118457600d5461114c906001600160a01b031683836129aa565b600d546040516001600160a01b038085169216906000805160206148ee8339815191529061117b908590614805565b60405180910390a35b50600d80546001600160a01b039092166001600160a01b0319909216821790556000908152601060205260409020805460ff19166001179055565b6000610a796128b0565b6111d16128ff565b6011546001600160a01b039081169116146111fe5760405162461bcd60e51b8152600401610bad906145b8565b600f805460ff60a81b1916600160a81b179055600061121b6111bf565b90506000611227610b64565b60405163e6a4390560e01b815290915060009081906001600160a01b0384169063e6a439059061125d9089903090600401613ff0565b60206040518083038186803b15801561127557600080fd5b505afa158015611289573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ad9190613e30565b6001600160a01b03161415611343576040516364e329cb60e11b81526001600160a01b0383169063c9c65396906112ea9088903090600401613ff0565b602060405180830381600087803b15801561130457600080fd5b505af1158015611318573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061133c9190613e30565b90506113c4565b60405163e6a4390560e01b81526001600160a01b0383169063e6a43905906113719088903090600401613ff0565b60206040518083038186803b15801561138957600080fd5b505afa15801561139d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c19190613e30565b90505b60006001600160a01b0316826001600160a01b031663e6a4390587866001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561141857600080fd5b505afa15801561142c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114509190613e30565b6040518363ffffffff1660e01b815260040161146d929190613ff0565b60206040518083038186803b15801561148557600080fd5b505afa158015611499573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114bd9190613e30565b6001600160a01b031614156114e45760405162461bcd60e51b8152600401610bad906147a5565b836114ee30611901565b101561150c5760405162461bcd60e51b8152600401610bad9061440b565b60006115198560026127ca565b90506000611527868361284c565b90506000876001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016115579190613fdc565b60206040518083038186803b15801561156f57600080fd5b505afa158015611583573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115a79190613f73565b604080516003808252608082019092529192506060919060208201838036833701905050905030816000815181106115db57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050866001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561163457600080fd5b505afa158015611648573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061166c9190613e30565b8160018151811061167957fe5b60200260200101906001600160a01b031690816001600160a01b03168152505088816002815181106116a757fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506116d2308886612903565b604051635c11d79560e01b81526001600160a01b03881690635c11d7959061170790879060009086903090429060040161480e565b600060405180830381600087803b15801561172157600080fd5b505af1158015611735573d6000803e3d6000fd5b5050505060006117c1838b6001600160a01b03166370a08231306040518263ffffffff1660e01b815260040161176b9190613fdc565b60206040518083038186803b15801561178357600080fd5b505afa158015611797573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117bb9190613f73565b9061284c565b90506117ce308986612903565b60405163095ea7b360e01b81526001600160a01b038b169063095ea7b3906117fc908b908590600401614053565b602060405180830381600087803b15801561181657600080fd5b505af115801561182a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061184e9190613f3f565b5060405162e8e33760e81b81526001600160a01b0389169063e8e33700906118899030908e908990879060009081908690429060040161400a565b606060405180830381600087803b1580156118a357600080fd5b505af11580156118b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118db9190613faf565b5050506118e8868b61359b565b5050600f805460ff60a81b191690555050505050505050565b60008061190c611063565b905061191783610aa7565b156119355761105b81610d7b61192c86612172565b610b5e87611ef4565b61194281610d7b85611ef4565b9392505050565b6119516128ff565b6011546001600160a01b0390811691161461197e5760405162461bcd60e51b8152600401610bad906145b8565b6011546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3601180546001600160a01b0319169055565b6119d36104266128ff565b6119ef5760405162461bcd60e51b8152600401610bad906142d7565b6000806000806119fe85612716565b935093509350935042821115611a265760405162461bcd60e51b8152600401610bad9061437a565b611a2e6128ff565b6001600160a01b0316846001600160a01b031614611a5e5760405162461bcd60e51b8152600401610bad9061446e565b600181151514611a805760405162461bcd60e51b8152600401610bad9061475f565b600a54611a8d908461284c565b600a55611abf83600080611a9f6128ff565b6001600160a01b03168152602081019190915260400160002054906127a5565b600080611aca6128ff565b6001600160a01b03166001600160a01b0316815260200190815260200160002081905550611b1e8360086000611afe6128ff565b6001600160a01b031681526020810191909152604001600020549061284c565b60086000611b2a6128ff565b6001600160a01b03166001600160a01b0316815260200190815260200160002081905550600060086000611b5c6128ff565b6001600160a01b03166001600160a01b031681526020019081526020016000205411611bb957600060096000611b906128ff565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790555b600060078681548110611bc857fe5b906000526020600020906004020160010181905550600060078681548110611bec57fe5b60009182526020909120600490910201600301805460ff19169115159190911790555050505050565b600060028281548110611c2457fe5b6000918252602090912001546001600160a01b031692915050565b611c4a6108576128ff565b611c665760405162461bcd60e51b8152600401610bad906144b3565b600f8054911515600160a81b0260ff60a81b19909216919091179055565b600e546001600160a01b031690565b6001600160a01b03808216600090815260036020526040812054909182918291611cbf91869116611ff3565b6001600160a01b039096166000908152600360208190526040909120908101969096556001860191909155600290940193909355505050565b600d546001600160a01b031690565b611d0f6128ff565b6011546001600160a01b03908116911614611d3c5760405162461bcd60e51b8152600401610bad906145b8565b611d4581611f4a565b611d615760405162461bcd60e51b8152600401610bad90614553565b6001600160a01b03166000908152601060205260409020805460ff19169055565b600080611d8d611063565b905061194281610d7b85611ef4565b600080600080600080611dad613da2565b505050506001600160a01b03938416600090815260036020818152604092839020835160c0810185528154909816808952600182015492890183905260028201549489018590529281015460608901819052600482015460808a0181905260059092015460a090990189905292989197939650919450909250565b6011546001600160a01b031690565b600e54600160a01b900460ff1690565b600080611e52611063565b9050611e85611e62610608611c84565b6117bb611e6e30611901565b6117bb611e7d86610d7b6121d4565b6117bb61218d565b91505090565b6060610a7961372d565b6000610a93611ea26128ff565b84610b128560405180606001604052806025815260200161490e60259139610b0b611ecb6128ff565b8a611f1f565b6005546001600160a01b031690565b6000610a93611eed6128ff565b84846129aa565b6001600160a01b031660009081526020819052604090205490565b600f54600160a01b900460ff1690565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b031660009081526010602052604090205460ff1690565b600b5490565b60065490565b611f7c6128ff565b6011546001600160a01b03908116911614611fa95760405162461bcd60e51b8152600401610bad906145b8565b611fb281611f4a565b15611fcf5760405162461bcd60e51b8152600401610bad906143bd565b6001600160a01b03166000908152601060205260409020805460ff19166001179055565b600080600080856001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561203257600080fd5b505afa158015612046573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061206a9190613f73565b6040516370a0823160e01b815290915060009030906370a0823190612093908a90600401613fdc565b60206040518083038186803b1580156120ab57600080fd5b505afa1580156120bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120e39190613f73565b90506000866001600160a01b03166370a08231896040518263ffffffff1660e01b81526004016121139190613fdc565b60206040518083038186803b15801561212b57600080fd5b505afa15801561213f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121639190613f73565b91989197509195509350505050565b6001600160a01b031660009081526008602052604090205490565b600c5490565b61219b6128ff565b6011546001600160a01b039081169116146121c85760405162461bcd60e51b8152600401610bad906145b8565b6121d18161374b565b50565b600a5490565b6121e26128ff565b6011546001600160a01b0390811691161461220f5760405162461bcd60e51b8152600401610bad906145b8565b612217611e37565b156122345760405162461bcd60e51b8152600401610bad906144d8565b6121d18161388f565b6122456128ff565b6011546001600160a01b039081169116146122725760405162461bcd60e51b8152600401610bad906145b8565b61227a611e37565b156122975760405162461bcd60e51b8152600401610bad906141f3565b60006122a1611063565b905060006122af8383612812565b604080516080810182526001600160a01b0388811680835260208084018681528486018b8152600160608701818152600780549283018155600090815297517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688600490930292830180546001600160a01b031916919098161790965591517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c689830155517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68a82015592517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68b909301805460ff19169315159390931790925582526008905220549091506123c190826127a5565b6001600160a01b0386166000908152600860209081526040808320939093556009905220805460ff19166001179055600a546123fd90826127a5565b600a55600c5461240d90846127a5565b600c556040516001600160a01b038616906000906000805160206148ee8339815191529061243c908790614805565b60405180910390a35050505050565b6124536128ff565b6011546001600160a01b039081169116146124805760405162461bcd60e51b8152600401610bad906145b8565b600f805460ff60a81b1916600160a81b17905561249c8161279f565b6124b85760405162461bcd60e51b8152600401610bad906147dc565b600e80546001600160a01b039081166000908152601060205260408120805460ff1916905591546124e99116611901565b9050801561254057600e54612508906001600160a01b031683836129aa565b600e546040516001600160a01b038085169216906000805160206148ee83398151915290612537908590614805565b60405180910390a35b50600e80546001600160a01b039092166001600160a01b0319909216821790556000908152601060205260409020805460ff19166001179055600f805460ff60a81b19169055565b60006119428383611f1f565b61259c6128ff565b6011546001600160a01b039081169116146125c95760405162461bcd60e51b8152600401610bad906145b8565b600f8054911515600160a01b0260ff60a01b19909216919091179055565b6001600160a01b031660009081526004602052604090205460ff1690565b61260d6128ff565b6011546001600160a01b0390811691161461263a5760405162461bcd60e51b8152600401610bad906145b8565b612642611e37565b15610ce45760405162461bcd60e51b8152600401610bad906141f3565b6126676128ff565b6011546001600160a01b039081169116146126945760405162461bcd60e51b8152600401610bad906145b8565b6001600160a01b0381166126ba5760405162461bcd60e51b8152600401610bad9061422a565b6011546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3601180546001600160a01b0319166001600160a01b0392909216919091179055565b600080600080612724613de1565b6007868154811061273157fe5b60009182526020918290206040805160808101825260049390930290910180546001600160a01b03168084526001820154948401859052600282015492840183905260039091015460ff1615156060909301839052999298509650945092505050565b6511e22ddb7bff1990565b3b151590565b6000828201838110156119425760405162461bcd60e51b8152600401610bad9061430e565b600061194283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506138b1565b61384090565b60008261282157506000610a97565b8282028284828161282e57fe5b04146119425760405162461bcd60e51b8152600401610bad90614577565b600061194283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612fad565b73b4a43aed87902a24cd66afbd3349af812325ca0190565b6536fa9cc6d40090565b737a250d5630b4cf539739df2c5dacb4c659f2488d90565b606490565b60fa90565b6103e890565b603290565b6040805180820190915260088152675946537461626c6560c01b602082015290565b3390565b6001600160a01b0383166129295760405162461bcd60e51b8152600401610bad906146e4565b6001600160a01b03821661294f5760405162461bcd60e51b8152600401610bad90614270565b61295a8383836138e8565b816001600160a01b0316836001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161299d9190614805565b60405180910390a3505050565b6129b2611f0f565b156129cf5760405162461bcd60e51b8152600401610bad906141d3565b6001600160a01b0383166129f55760405162461bcd60e51b8152600401610bad9061469f565b6001600160a01b038216612a1b5760405162461bcd60e51b8152600401610bad90614190565b60008111612a3b5760405162461bcd60e51b8152600401610bad90614345565b612a4483611901565b811115612a635760405162461bcd60e51b8152600401610bad90614160565b612a6c83611d82565b811115612a8b5760405162461bcd60e51b8152600401610bad90614668565b612a93611e37565b612aaf5760405162461bcd60e51b8152600401610bad90614440565b612ac2612aba61280c565b610b5e611f6e565b421115612ad157612ad1613914565b6000612adb611063565b90506000612ae98383612812565b90506000612af5610b21565b15612b0257506003612b62565b6000612b0d876125e7565b15612b2257612b1b87613a4e565b9050612b53565b612b2b866125e7565b15612b3e57612b3986611c93565b612b53565b600554612b53906001600160a01b0316611c93565b612b5e878783613ab9565b9150505b8060011415612d3d576000806000612b7a8988613b0f565b6001600160a01b038c166000908152602081905260409020549295509093509150612ba5908661284c565b6001600160a01b03808b1660009081526020819052604080822093909355908a1681522054612bd490866127a5565b6001600160a01b038916600090815260208190526040902055612c05612bfa8488612812565b600080611a9f611c84565b600080612c10611c84565b6001600160a01b03168152602081019190915260400160002055612c42612c378388612812565b600080611a9f61288e565b600080612c4d61288e565b6001600160a01b03168152602081019190915260400160002055600c54612c7490826127a5565b600c81905550876001600160a01b0316896001600160a01b03166000805160206148ee83398151915289604051612cab9190614805565b60405180910390a3612cbb611c84565b6001600160a01b031660006001600160a01b03166000805160206148ee83398151915285604051612cec9190614805565b60405180910390a3612cfc61288e565b6001600160a01b031660006001600160a01b03166000805160206148ee83398151915284604051612d2d9190614805565b60405180910390a3505050612fa5565b8060021415612f0157600080612d538787613c02565b91509150600080612d6388613d55565b90925090506000612d78836117bb8b8861284c565b90506000612d86828a612812565b6001600160a01b038d16600090815260208190526040902054909150612dac908961284c565b6001600160a01b03808e1660009081526020819052604080822093909355908d1681522054612ddb90826127a5565b6001600160a01b03808d1660009081526020819052604080822093909355600d5490911681522054612e0d90846127a5565b600d546001600160a01b0316600090815260208190526040902055600c54612e35908761284c565b600c55600b54612e45908661284c565b600b819055508a6001600160a01b03168c6001600160a01b03166000805160206148ee83398151915284604051612e7c9190614805565b60405180910390a360006001600160a01b03168c6001600160a01b03166000805160206148ee83398151915288604051612eb69190614805565b60405180910390a3600d546040516001600160a01b03918216918e16906000805160206148ee83398151915290612eee908890614805565b60405180910390a3505050505050612fa5565b8060031415612fa5576001600160a01b038616600090815260208190526040902054612f2d908361284c565b6001600160a01b038088166000908152602081905260408082209390935590871681522054612f5c90836127a5565b6001600160a01b0380871660008181526020819052604090819020939093559151908816906000805160206148ee83398151915290612f9c908890614805565b60405180910390a35b505050505050565b60008184841115612fd15760405162461bcd60e51b8152600401610bad919061410d565b505050900390565b600990565b735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f90565b612ffe611e37565b1561301b5760405162461bcd60e51b8152600401610bad906141f3565b61302361288e565b6001600160a01b03166108fc61303a4760036127ca565b6040518115909202916000818181858888f19350505050158015613062573d6000803e3d6000fd5b506000613078613070610a9d565b6117bb6128a6565b90506000613096613087613d96565b610d754764174876e8006127ca565b9050808211156130e6576130b460006130af848461284c565b6136c0565b6000806000805160206148ee8339815191526130d0858561284c565b6040516130dd9190614805565b60405180910390a35b6130f030826136c0565b60405130906000906000805160206148ee83398151915290610d20908590614805565b600f805460ff60a81b1916600160a81b17905560006131306111bf565b9050600061313c610b64565b90506000806001600160a01b0316826001600160a01b031663e6a43905856001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561319257600080fd5b505afa1580156131a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131ca9190613e30565b306040518363ffffffff1660e01b81526004016131e8929190613ff0565b60206040518083038186803b15801561320057600080fd5b505afa158015613214573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132389190613e30565b6001600160a01b0316141561333e57816001600160a01b031663c9c65396846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561328f57600080fd5b505afa1580156132a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132c79190613e30565b306040518363ffffffff1660e01b81526004016132e5929190613ff0565b602060405180830381600087803b1580156132ff57600080fd5b505af1158015613313573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133379190613e30565b905061342f565b816001600160a01b031663e6a4390530856001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561338757600080fd5b505afa15801561339b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133bf9190613e30565b6040518363ffffffff1660e01b81526004016133dc929190613ff0565b60206040518083038186803b1580156133f457600080fd5b505afa158015613408573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061342c9190613e30565b90505b600061343a30611901565b905061345b30737a250d5630b4cf539739df2c5dacb4c659f2488d83612903565b836001600160a01b031663f305d71947308460008061347861288e565b426040518863ffffffff1660e01b815260040161349a9695949392919061406c565b6060604051808303818588803b1580156134b357600080fd5b505af11580156134c7573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906134ec9190613faf565b50505061356982856001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561352c57600080fd5b505afa158015613540573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135649190613e30565b61359b565b50600580546001600160a01b0319166001600160a01b03929092169190911790555050600f805460ff60a81b19169055565b6135a4826125e7565b156135c15760405162461bcd60e51b8152600401610bad90614728565b6001600160a01b0382166000818152600460205260408120805460ff1916600190811790915560028054918201815582527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0180546001600160a01b03191690921790915580806136328585611ff3565b6040805160c0810182526001600160a01b0398891681526020808201868152828401868152606084019586526080840197885260a084019687529b8b16600090815260039283905293909320915182546001600160a01b0319169a16999099178155905160018201559751600289015551958701959095555160048601555050905160059092019190915550565b60006136ca611063565b905060006136d88383612812565b6001600160a01b0385166000908152602081905260409020549091506136fe90826127a5565b6001600160a01b038516600090815260208190526040902055600c5461372490846127a5565b600c5550505050565b604080518082019091526004815263165194d560e21b602082015290565b613754816125e7565b6137705760405162461bcd60e51b8152600401610bad90614624565b60005b600254811015610c7c57816001600160a01b03166002828154811061379457fe5b6000918252602090912001546001600160a01b03161415613887576002805460001981019081106137c157fe5b600091825260209091200154600280546001600160a01b0390921691839081106137e757fe5b6000918252602080832090910180546001600160a01b039485166001600160a01b031991821617909155928516825260048082526040808420805460ff19169055600392839052832080549094168455600184018390556002808501849055918401839055830182905560059092015580548061386057fe5b600082815260209020810160001990810180546001600160a01b0319169055019055610c7c565b600101613773565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b600081836138d25760405162461bcd60e51b8152600401610bad919061410d565b5060008385816138de57fe5b0495945050505050565b6001600160a01b0392831660009081526001602090815260408083209490951682529290925291902055565b61391c613d9c565b60005b6002548110156121d157600360006002838154811061393a57fe5b9060005260206000200160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060010154600360006002848154811061398d57fe5b60009182526020808320909101546001600160a01b03168352820192909252604001812060040191909155600280546003929190849081106139cb57fe5b9060005260206000200160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b03168152602001908152602001600020600201546003600060028481548110613a1e57fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190206005015560010161391f565b6001600160a01b038082166000908152600360205260408120549091829182918291613a7c91879116611ff3565b6001600160a01b03979097166000908152600360208190526040909120908101805490899055600182019390935560020155909410949350505050565b60006002613ac6856125e7565b15613ae2578215613ad957506003613add565b5060015b613b07565b613aea6128b0565b6001600160a01b0316856001600160a01b03161415613b07575060035b949350505050565b6001600160a01b0382166000908152600360205260408120600181015460058201546004830154600290930154849384938493613b5a939192610d7b928391606491610d7591612812565b90506000613b716064610d7b612710610b5e6128c8565b821115613ba8576000613b848380612812565b9050613ba0612710610d7b613b99848361284c565b8a90612812565b915050613bc3565b613bc0612710610d7b613bb96128c8565b8990612812565b90505b613bdb612710610d7b613bd46128cd565b8490612812565b613bf3612710610d7b613bec6128cd565b8590612812565b90955093509150509250925092565b6000806000613c0f611063565b90506000613c1c866125e7565b15613c6c576001600160a01b0386166000908152600360205260409020600481015460028201546005830154600190930154613c6593610d7b92918391606491610d7591612812565b9050613cb7565b600580546001600160a01b031660009081526003602052604090206004810154600282015492820154600190920154613cb4939192610d7b92918391606491610d7591612812565b90505b6000613ccc6064610d7b612710610b5e6128c8565b821115613d28576000613cdf8380612812565b9050613cf4612710610d7b613b99848361284c565b9150613d07612710610d7b613b996128d2565b821115613d2257613d1f612710610d7b613b996128d2565b91505b50613d3c565b613d39612710610d7b613bb96128c8565b90505b80613d478185612812565b945094505050509250929050565b6000806000613d62611063565b90506000613d7e612710610d7b613d776128d8565b8890612812565b905080613d8b8184612812565b935093505050915091565b61718790565b42600655565b6040518060c0016040528060006001600160a01b0316815260200160008152602001600081526020016000815260200160008152602001600081525090565b604051806080016040528060006001600160a01b0316815260200160008152602001600081526020016000151581525090565b600060208284031215613e25578081fd5b8135611942816148a2565b600060208284031215613e41578081fd5b8151611942816148a2565b60008060408385031215613e5e578081fd5b8235613e69816148a2565b91506020830135613e79816148a2565b809150509250929050565b600080600060608486031215613e98578081fd5b8335613ea3816148a2565b92506020840135613eb3816148a2565b929592945050506040919091013590565b60008060408385031215613ed6578182fd5b8235613ee1816148a2565b946020939093013593505050565b600080600060608486031215613f03578283fd5b8335613f0e816148a2565b95602085013595506040909401359392505050565b600060208284031215613f34578081fd5b8135611942816148b7565b600060208284031215613f50578081fd5b8151611942816148b7565b600060208284031215613f6c578081fd5b5035919050565b600060208284031215613f84578081fd5b5051919050565b60008060408385031215613f9d578182fd5b823591506020830135613e79816148a2565b600080600060608486031215613fc3578283fd5b8351925060208401519150604084015190509250925092565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039889168152968816602088015260408701959095526060860193909352608085019190915260a084015290921660c082015260e08101919091526101000190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b6001600160a01b03949094168452602084019290925260408301521515606082015260800190565b6001600160a01b03969096168652602086019490945260408501929092526060840152608083015260a082015260c00190565b901515815260200190565b6000602080835283518082850152825b818110156141395785810183015185820160400152820161411d565b8181111561414a5783604083870101525b50601f01601f1916929092016040019392505050565b602080825260169082015275416d6f756e7420657863656564732062616c616e636560501b604082015260600190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526006908201526514185d5cd95960d21b604082015260600190565b60208082526018908201527f43616e6e6f74206d696e7420706f73742070726573616c650000000000000000604082015260600190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b60208082526022908201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604082015261737360f01b606082015260800190565b6020808252600b908201526a6e6f742070726573616c6560a81b604082015260600190565b6020808252601c908201527f43616c6c657220686173206e6f206c6f636b65642062616c616e636500000000604082015260600190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b6020808252818101527f416d6f756e74206d7573742062652067726561746572207468616e207a65726f604082015260600190565b60208082526023908201527f54686973207472616e6368652063616e6e6f7420626520756e6c6f636b6564206040820152621e595d60ea1b606082015260800190565b6020808252600e908201526d30b63932b0b23c9039b2ba3a32b960911b604082015260600190565b6020808252600c908201526b283932b9b0b6329037bb32b960a11b604082015260600190565b6020808252818101527f416d6f756e7420657863656564732074686520746f6b656e2062616c616e6365604082015260600190565b60208082526014908201527350726573616c652079657420746f20636c6f736560601b604082015260600190565b60208082526025908201527f596f7520617265206e6f7420746865206f776e6572206f662074686973207472604082015264616e63686560d81b606082015260800190565b6020808252600b908201526a6e6f74207461786c65737360a81b604082015260600190565b6020808252601c908201527f50726573616c6520697320616c726561647920636f6d706c6574656400000000604082015260600190565b60208082526024908201527f54686973207472616e6368652068617320616c7265616479206265656e2076656040820152631cdd195960e21b606082015260800190565b6020808252600a90820152693737ba1039b2ba3a32b960b11b604082015260600190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601e908201527f546f74616c20737570706c7920697320616c7265616479206d696e7465640000604082015260600190565b60208082526024908201527f5468697320706f6f6c2069732063757272656e746c79206e6f7420737570706f6040820152631c9d195960e21b606082015260800190565b6020808252601f908201527f416d6f756e74206578636565647320756e6c6f636b65642062616c616e636500604082015260600190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526024908201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646040820152637265737360e01b606082015260800190565b6020808252601e908201527f5468697320706f6f6c20697320616c726561647920737570706f727465640000604082015260600190565b60208082526026908201527f54686973207472616e6368652068617320616c7265616479206265656e20756e6040820152651b1bd8dad95960d21b606082015260800190565b6020808252601a908201527f4574682070616972696e6720646f6573206e6f74206578697374000000000000604082015260600190565b6020808252600f908201526e1399595908184818dbdb9d1c9858dd608a1b604082015260600190565b90815260200190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b8181101561485d5784516001600160a01b031683529383019391830191600101614838565b50506001600160a01b03969096166060850152505050608001529392505050565b9283526020830191909152604082015260600190565b60ff91909116815260200190565b6001600160a01b03811681146121d157600080fd5b80151581146121d157600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212201e768cb6c37a2b46f55e61e4b64928276ba756600cafdfdfc6264818572c989b64736f6c634300060c0033
Deployed Bytecode Sourcemap
31985:16143:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32720:97;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34291:161;;;;;;;;;;-1:-1:-1;34291:161:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;33051:104::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;22265:122::-;;;;;;;;;;-1:-1:-1;22265:122:0;;;;;:::i;:::-;;:::i;34460:314::-;;;;;;;;;;-1:-1:-1;34460:314:0;;;;;:::i;:::-;;:::i;23197:82::-;;;;;;;;;;;;;:::i;32942:97::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;34782:219::-;;;;;;;;;;-1:-1:-1;34782:219:0;;;;;:::i;:::-;;:::i;23556:139::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;40007:243::-;;;:::i;:::-;;23009:96;;;;;;;;;;;;;:::i;46320:135::-;;;;;;;;;;-1:-1:-1;46320:135:0;;;;;:::i;:::-;;:::i;35287:149::-;;;;;;;;;;-1:-1:-1;35287:149:0;;;;;:::i;:::-;;:::i;27327:772::-;;;;;;;;;;-1:-1:-1;27327:772:0;;;;;:::i;:::-;;:::i;42731:843::-;;;;;;;;;;-1:-1:-1;42731:843:0;;;;;:::i;:::-;;:::i;26763:558::-;;;;;;;;;;-1:-1:-1;26763:558:0;;;;;:::i;:::-;;:::i;23701:233::-;;;;;;;;;;;;;:::i;47025:509::-;;;;;;;;;;-1:-1:-1;47025:509:0;;;;;:::i;:::-;;:::i;23411:139::-;;;;;;;;;;;;;:::i;44589:1723::-;;;;;;;;;;-1:-1:-1;44589:1723:0;;;;;:::i;:::-;;:::i;33436:317::-;;;;;;;;;;-1:-1:-1;33436:317:0;;;;;:::i;:::-;;:::i;13826:148::-;;;;;;;;;;;;;:::i;41827:896::-;;;;;;;;;;-1:-1:-1;41827:896:0;;;;;:::i;:::-;;:::i;21157:120::-;;;;;;;;;;-1:-1:-1;21157:120:0;;;;;:::i;:::-;;:::i;46758:84::-;;;;;;;;;;-1:-1:-1;46758:84:0;;;;;:::i;:::-;;:::i;22815:92::-;;;;;;;;;;;;;:::i;29864:369::-;;;;;;;;;;-1:-1:-1;29864:369:0;;;;;:::i;:::-;;:::i;22705:104::-;;;;;;;;;;;;;:::i;46850:167::-;;;;;;;;;;-1:-1:-1;46850:167:0;;;;;:::i;:::-;;:::i;33765:191::-;;;;;;;;;;-1:-1:-1;33765:191:0;;;;;:::i;:::-;;:::i;21283:308::-;;;;;;;;;;-1:-1:-1;21283:308:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;:::i;13616:79::-;;;;;;;;;;;;;:::i;22913:90::-;;;;;;;;;;;;;:::i;33167:257::-;;;;;;;;;;;;;:::i;32829:101::-;;;;;;;;;;;;;:::i;35009:270::-;;;;;;;;;;-1:-1:-1;35009:270:0;;;;;:::i;:::-;;:::i;21717:85::-;;;;;;;;;;;;;:::i;33964:167::-;;;;;;;;;;-1:-1:-1;33964:167:0;;;;;:::i;:::-;;:::i;20880:122::-;;;;;;;;;;-1:-1:-1;20880:122:0;;;;;:::i;:::-;;:::i;23111:80::-;;;;;;;;;;;;;:::i;21008:142::-;;;;;;;;;;-1:-1:-1;21008:142:0;;;;;:::i;:::-;;:::i;23285:120::-;;;;;;;;;;-1:-1:-1;23285:120:0;;;;;:::i;:::-;;:::i;22507:92::-;;;;;;;;;;;;;:::i;21808:96::-;;;;;;;;;;;;;:::i;46582:168::-;;;;;;;;;;-1:-1:-1;46582:168:0;;;;;:::i;:::-;;:::i;23940:390::-;;;;;;;;;;-1:-1:-1;23940:390:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;22137:122::-;;;;;;;;;;-1:-1:-1;22137:122:0;;;;;:::i;:::-;;:::i;22605:94::-;;;;;;;;;;;;;:::i;46463:111::-;;;;;;;;;;-1:-1:-1;46463:111:0;;;;;:::i;:::-;;:::i;22393:108::-;;;;;;;;;;;;;:::i;39819:180::-;;;;;;;;;;-1:-1:-1;39819:180:0;;;;;:::i;:::-;;:::i;40918:643::-;;;;;;;;;;-1:-1:-1;40918:643:0;;;;;:::i;:::-;;:::i;47542:481::-;;;;;;;;;;-1:-1:-1;47542:481:0;;;;;:::i;:::-;;:::i;34139:144::-;;;;;;;;;;-1:-1:-1;34139:144:0;;;;;:::i;:::-;;:::i;48035:88::-;;;;;;;;;;-1:-1:-1;48035:88:0;;;;;:::i;:::-;;:::i;21597:114::-;;;;;;;;;;-1:-1:-1;21597:114:0;;;;;:::i;:::-;;:::i;41573:246::-;;;;;;;;;;-1:-1:-1;41573:246:0;;;;;:::i;:::-;;:::i;13980:244::-;;;;;;;;;;-1:-1:-1;13980:244:0;;;;;:::i;:::-;;:::i;21910:221::-;;;;;;;;;;-1:-1:-1;21910:221:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;32720:97::-;32757:13;32790:19;:17;:19::i;:::-;32783:26;;32720:97;;:::o;34291:161::-;34366:4;34383:39;34392:12;:10;:12::i;:::-;34406:7;34415:6;34383:8;:39::i;:::-;-1:-1:-1;34440:4:0;34291:161;;;;;:::o;33051:104::-;33104:7;33131:16;:14;:16::i;22265:122::-;-1:-1:-1;;;;;22353:26:0;;22329:4;22353:26;;;:17;:26;;;;;;;;22265:122;;;;:::o;34460:314::-;34558:4;34575:36;34585:6;34593:9;34604:6;34575:9;:36::i;:::-;34622:122;34631:6;34639:12;:10;:12::i;:::-;34653:90;34692:6;34653:90;;;;;;;;;;;;;;;;;:34;34667:6;34674:12;:10;:12::i;34653:34::-;:38;:90;:38;:90::i;:::-;34622:8;:122::i;:::-;-1:-1:-1;34762:4:0;34460:314;;;;;:::o;23197:82::-;23263:8;;-1:-1:-1;;;23263:8:0;;;;;23197:82::o;32942:97::-;32983:5;33008:23;:21;:23::i;34782:219::-;34870:4;34887:84;34896:12;:10;:12::i;:::-;34910:7;34919:51;34959:10;34919:35;34933:12;:10;:12::i;:::-;34946:7;34919:13;:35::i;:::-;:39;;:51::i;23556:139::-;23606:17;23661:25;:23;:25::i;40007:243::-;32278:19;:17;:19::i;:::-;-1:-1:-1;;;;;32264:33:0;:12;:10;:12::i;:::-;-1:-1:-1;;;;;32264:33:0;;32256:56;;;;-1:-1:-1;;;32256:56:0;;;;;;;:::i;:::-;;;;;;;;;32332:15;:13;:15::i;:::-;32331:16;32323:41;;;;-1:-1:-1;;;32323:41:0;;;;;;;:::i;:::-;40096:27:::1;:25;:27::i;:::-;40079:13;:11;:13::i;:::-;:44;;40071:87;;;;-1:-1:-1::0;;;40071:87:0::1;;;;;;;:::i;:::-;40169:16;:14;:16::i;:::-;40196:12;:19:::0;;-1:-1:-1;;;;40196:19:0::1;-1:-1:-1::0;;;40196:19:0::1;::::0;;40226:16:::1;:14;:16::i;:::-;40007:243::o:0;23009:96::-;23086:11;;-1:-1:-1;;;;;23086:11:0;23009:96;:::o;46320:135::-;13751:12;:10;:12::i;:::-;13741:6;;-1:-1:-1;;;;;13741:6:0;;;:22;;;13733:67;;;;-1:-1:-1;;;13733:67:0;;;;;;;:::i;:::-;46414:33:::1;46431:4;46437:9;46414:16;:33::i;:::-;46320:135:::0;;:::o;35287:149::-;32278:19;:17;:19::i;:::-;-1:-1:-1;;;;;32264:33:0;:12;:10;:12::i;:::-;-1:-1:-1;;;;;32264:33:0;;32256:56;;;;-1:-1:-1;;;32256:56:0;;;;;;;:::i;:::-;32332:15;:13;:15::i;:::-;32331:16;32323:41;;;;-1:-1:-1;;;32323:41:0;;;;;;;:::i;:::-;35359:23:::1;35372:2;35375:6;35359:12;:23::i;:::-;35418:2;-1:-1:-1::0;;;;;35398:30:0::1;35415:1;-1:-1:-1::0;;;;;35398:30:0::1;-1:-1:-1::0;;;;;;;;;;;35421:6:0::1;35398:30;;;;;;:::i;:::-;;;;;;;;35287:149:::0;;:::o;27327:772::-;-1:-1:-1;;;;;27565:19:0;;27385:7;27565:19;;;:13;:19;;;;;:37;;;;27523:36;;;;27467:41;;;;27429:32;;;;;27385:7;;27428:175;;27565:37;27428:132;;27523:36;;27428:132;;27514:3;;27428:81;;27429:32;27428:38;:81::i;:::-;:85;;:90::i;:::-;:94;;:132::i;:175::-;27405:198;;27614:16;27660:58;27714:3;27661:47;27702:5;27661:36;:34;:36::i;27660:58::-;27645:12;:73;27641:451;;;27735:18;27756:30;27773:12;;27756:16;:30::i;:::-;27735:51;-1:-1:-1;27812:21:0;27735:51;27827:5;27812:14;:21::i;:::-;27801:32;;27863:33;:31;:33::i;:::-;27852:8;:44;27848:125;;;27924:33;:31;:33::i;:::-;27917:40;;;;;;;27848:125;-1:-1:-1;27994:8:0;-1:-1:-1;27987:15:0;;-1:-1:-1;27987:15:0;27641:451;28044:36;:34;:36::i;:::-;28037:43;;;;;;42731:843;13751:12;:10;:12::i;:::-;13741:6;;-1:-1:-1;;;;;13741:6:0;;;:22;;;13733:67;;;;-1:-1:-1;;;13733:67:0;;;;;;;:::i;:::-;42827:22:::1;42851:15:::0;42868:18:::1;42888:11:::0;42903:21:::1;42916:7;42903:12;:21::i;:::-;42826:98;;;;;;;;42943:6;:14;;42953:4;42943:14;;;42935:65;;;;-1:-1:-1::0;;;42935:65:0::1;;;;;;;:::i;:::-;43032:3;43019:10;:16;43011:64;;;;-1:-1:-1::0;;;43011:64:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;43119:30:0;::::1;;::::0;;;:14:::1;:30;::::0;;;;;:43:::1;::::0;43154:7;43119:34:::1;:43::i;:::-;-1:-1:-1::0;;;;;43086:30:0;;::::1;;::::0;;;:14:::1;:30;::::0;;;;;:76;;;;43203:27;;::::1;::::0;;;;:40:::1;::::0;43235:7;43203:31:::1;:40::i;:::-;-1:-1:-1::0;;;;;43173:27:0;;::::1;;::::0;;;:14:::1;:27;::::0;;;;;:70;;;;43258:30;;::::1;::::0;;;;43254:82:::1;;-1:-1:-1::0;;;;;43295:33:0;::::1;43331:5;43295:33:::0;;;:17:::1;:33;::::0;;;;:41;;-1:-1:-1;;43295:41:0::1;::::0;;43254:82:::1;-1:-1:-1::0;;;;;43347:30:0;::::1;;::::0;;;:17:::1;:30;::::0;;;;:37;;-1:-1:-1;;43347:37:0::1;43380:4;43347:37;::::0;;43396:10:::1;:19:::0;;43365:11;;43396:10;43407:7;;43396:19;::::1;;;;;;::::0;;;::::1;::::0;;::::1;::::0;;;::::1;;:45:::0;;-1:-1:-1;;;;;;43396:45:0::1;-1:-1:-1::0;;;;;43396:45:0;;;::::1;::::0;;;::::1;::::0;;;43476:11:::1;:9;:11::i;:::-;43452:35:::0;-1:-1:-1;;;;;;43503:63:0;;::::1;::::0;;::::1;-1:-1:-1::0;;;;;;;;;;;43539:26:0::1;:7:::0;43452:35;43539:11:::1;:26::i;:::-;43503:63;;;;;;:::i;:::-;;;;;;;;13811:1;;;;;42731:843:::0;;:::o;26763:558::-;-1:-1:-1;;;;;27004:19:0;;26821:7;27004:19;;;:13;:19;;;;;:32;;;;26957:41;;;;26905:37;;;;26863:36;;;;;26821:7;;26862:175;;27004:32;26862:137;;26957:41;;26862:137;;26948:3;;26862:81;;26863:36;26862:42;:81::i;:175::-;26841:196;;27065:56;27117:3;27065:47;27106:5;27066:34;:32;:34::i;27065:56::-;27052:10;:69;27048:266;;;27138:18;27159:26;27174:10;;27159:14;:26::i;:::-;27138:47;-1:-1:-1;27207:21:0;27138:47;27222:5;27207:14;:21::i;27048:266::-;27268:34;:32;:34::i;:::-;27261:41;;;;;23701:233;23766:12;;23742:7;;-1:-1:-1;;;23766:12:0;;;;23762:165;;;23818:12;;23802:11;;:29;;:15;:29::i;:::-;23795:36;;;;23762:165;23871:44;23887:27;:25;:27::i;:::-;23871:11;;;:15;:44::i;47025:509::-;13751:12;:10;:12::i;:::-;13741:6;;-1:-1:-1;;;;;13741:6:0;;;:22;;;13733:67;;;;-1:-1:-1;;;13733:67:0;;;;;;;:::i;:::-;47111:27:::1;47130:7;47111:18;:27::i;:::-;47103:54;;;;-1:-1:-1::0;;;47103:54:0::1;;;;;;;:::i;:::-;47185:17;::::0;;-1:-1:-1;;;;;47185:17:0;;::::1;47206:5;47168:35:::0;;;:16:::1;:35;::::0;;;;:43;;-1:-1:-1;;47168:43:0::1;::::0;;47253:17;;47243:28:::1;::::0;47253:17:::1;47243:9;:28::i;:::-;47222:49:::0;-1:-1:-1;47286:14:0;;47282:164:::1;;47327:17;::::0;47317:49:::1;::::0;-1:-1:-1;;;;;47327:17:0::1;47346:7:::0;47355:10;47317:9:::1;:49::i;:::-;47395:17;::::0;47386:48:::1;::::0;-1:-1:-1;;;;;47386:48:0;;::::1;::::0;47395:17:::1;::::0;-1:-1:-1;;;;;;;;;;;47386:48:0;::::1;::::0;47423:10;;47386:48:::1;:::i;:::-;;;;;;;;47282:164;-1:-1:-1::0;47456:17:0::1;:27:::0;;-1:-1:-1;;;;;47456:27:0;;::::1;-1:-1:-1::0;;;;;;47456:27:0;;::::1;::::0;::::1;::::0;;:17:::1;47494:25:::0;;;:16:::1;:25;::::0;;;;:32;;-1:-1:-1;;47494:32:0::1;47456:27:::0;47494:32:::1;::::0;;47025:509::o;23411:139::-;23460:18;23517:24;:22;:24::i;44589:1723::-;13751:12;:10;:12::i;:::-;13741:6;;-1:-1:-1;;;;;13741:6:0;;;:22;;;13733:67;;;;-1:-1:-1;;;13733:67:0;;;;;;;:::i;:::-;32505:8:::1;:15:::0;;-1:-1:-1;;;;32505:15:0::1;-1:-1:-1::0;;;32505:15:0::1;::::0;;;44728:18:::2;:16;:18::i;:::-;44691:55;;44757:32;44792:19;:17;:19::i;:::-;44861:48;::::0;-1:-1:-1;;;44861:48:0;;44757:54;;-1:-1:-1;44822:24:0::2;::::0;;;-1:-1:-1;;;;;44861:22:0;::::2;::::0;::::2;::::0;:48:::2;::::0;44884:9;;44903:4:::2;::::0;44861:48:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;44861:62:0::2;;44857:278;;;44959:65;::::0;-1:-1:-1;;;44959:65:0;;-1:-1:-1;;;;;44959:25:0;::::2;::::0;::::2;::::0;:65:::2;::::0;44999:9;;45018:4:::2;::::0;44959:65:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;44940:84;;44857:278;;;45076:47;::::0;-1:-1:-1;;;45076:47:0;;-1:-1:-1;;;;;45076:22:0;::::2;::::0;::::2;::::0;:47:::2;::::0;45099:9;;45117:4:::2;::::0;45076:47:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;45057:66;;44857:278;45230:1;-1:-1:-1::0;;;;;45153:79:0::2;:14;-1:-1:-1::0;;;;;45153:22:0::2;;45176:9;45194:15;-1:-1:-1::0;;;;;45194:20:0::2;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;45153:65;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;45153:79:0::2;;;45145:118;;;;-1:-1:-1::0;;;45145:118:0::2;;;;;;;:::i;:::-;45310:6;45282:24;45300:4;45282:9;:24::i;:::-;:34;;45274:79;;;;-1:-1:-1::0;;;45274:79:0::2;;;;;;;:::i;:::-;45364:17;45384:13;:6:::0;45395:1:::2;45384:10;:13::i;:::-;45364:33:::0;-1:-1:-1;45408:13:0::2;45424:21;:6:::0;45364:33;45424:10:::2;:21::i;:::-;45408:37;;45456:22;45488:9;-1:-1:-1::0;;;;;45481:27:0::2;;45517:4;45481:42;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;45558:16;::::0;;45572:1:::2;45558:16:::0;;;;;::::2;::::0;;;45456:67;;-1:-1:-1;45534:21:0::2;::::0;45558:16;::::2;::::0;::::2;45534:21:::0;;45558:16:::2;::::0;::::2;;::::0;-1:-1:-1;45558:16:0::2;45534:40;;45603:4;45585;45590:1;45585:7;;;;;;;;;;;;;:23;-1:-1:-1::0;;;;;45585:23:0::2;;;-1:-1:-1::0;;;;;45585:23:0::2;;;::::0;::::2;45629:15;-1:-1:-1::0;;;;;45629:20:0::2;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;45619:4;45624:1;45619:7;;;;;;;;;;;;;:32;-1:-1:-1::0;;;;;45619:32:0::2;;;-1:-1:-1::0;;;;;45619:32:0::2;;;::::0;::::2;45672:9;45662:4;45667:1;45662:7;;;;;;;;;;;;;:19;-1:-1:-1::0;;;;;45662:19:0::2;;;-1:-1:-1::0;;;;;45662:19:0::2;;;::::0;::::2;45692:60;45709:4;45724:15;45742:9;45692:8;:60::i;:::-;45763:135;::::0;-1:-1:-1;;;45763:135:0;;-1:-1:-1;;;;;45763:69:0;::::2;::::0;::::2;::::0;:135:::2;::::0;45847:9;;45858:1:::2;::::0;45861:4;;45875::::2;::::0;45882:15:::2;::::0;45763:135:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;45909:18;45930:62;45977:14;45937:9;-1:-1:-1::0;;;;;45930:27:0::2;;45966:4;45930:42;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:46:::0;::::2;:62::i;:::-;45909:83;;46003:56;46020:4;46035:15;46053:5;46003:8;:56::i;:::-;46070:63;::::0;-1:-1:-1;;;46070:63:0;;-1:-1:-1;;;;;46070:25:0;::::2;::::0;::::2;::::0;:63:::2;::::0;46104:15;;46122:10;;46070:63:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;46144:104:0::2;::::0;-1:-1:-1;;;46144:104:0;;-1:-1:-1;;;;;46144:28:0;::::2;::::0;::::2;::::0;:104:::2;::::0;46181:4:::2;::::0;46187:9;;46197:5;;46203:10;;46214:1:::2;::::0;;;46181:4;;46232:15:::2;::::0;46144:104:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;46259:45;46276:16;46294:9;46259:16;:45::i;:::-;-1:-1:-1::0;;32543:8:0::1;:16:::0;;-1:-1:-1;;;;32543:16:0::1;::::0;;-1:-1:-1;;;;;;;;44589:1723:0:o;33436:317::-;33502:7;33522:21;33546:11;:9;:11::i;:::-;33522:35;;33572:25;33589:7;33572:16;:25::i;:::-;33568:115;;;33607:75;33668:13;33607:56;33637:25;33654:7;33637:16;:25::i;:::-;33607;33624:7;33607:16;:25::i;33568:115::-;33701:44;33731:13;33701:25;33718:7;33701:16;:25::i;:44::-;33694:51;33436:317;-1:-1:-1;;;33436:317:0:o;13826:148::-;13751:12;:10;:12::i;:::-;13741:6;;-1:-1:-1;;;;;13741:6:0;;;:22;;;13733:67;;;;-1:-1:-1;;;13733:67:0;;;;;;;:::i;:::-;13917:6:::1;::::0;13896:40:::1;::::0;13933:1:::1;::::0;-1:-1:-1;;;;;13917:6:0::1;::::0;13896:40:::1;::::0;13933:1;;13896:40:::1;13947:6;:19:::0;;-1:-1:-1;;;;;;13947:19:0::1;::::0;;13826:148::o;41827:896::-;41895:30;41912:12;:10;:12::i;41895:30::-;41887:70;;;;-1:-1:-1;;;41887:70:0;;;;;;;:::i;:::-;41969:19;41990:15;42007:18;42027:11;42042:21;42055:7;42042:12;:21::i;:::-;41968:95;;;;;;;;42096:3;42082:10;:17;;42074:64;;;;-1:-1:-1;;;42074:64:0;;;;;;;:::i;:::-;42172:12;:10;:12::i;:::-;-1:-1:-1;;;;;42157:27:0;:11;-1:-1:-1;;;;;42157:27:0;;42149:76;;;;-1:-1:-1;;;42149:76:0;;;;;;;:::i;:::-;42255:4;42244:15;;;;42236:66;;;;-1:-1:-1;;;42236:66:0;;;;;;;:::i;:::-;42335:19;;:32;;42359:7;42335:23;:32::i;:::-;42313:19;:54;42409:41;42442:7;42409:14;;42424:12;:10;:12::i;:::-;-1:-1:-1;;;;;42409:28:0;;;;;;;;;;;;-1:-1:-1;42409:28:0;;;:32;:41::i;:::-;42378:14;:28;42393:12;:10;:12::i;:::-;-1:-1:-1;;;;;42378:28:0;-1:-1:-1;;;;;42378:28:0;;;;;;;;;;;;:72;;;;42492:41;42525:7;42492:14;:28;42507:12;:10;:12::i;:::-;-1:-1:-1;;;;;42492:28:0;;;;;;;;;;;;-1:-1:-1;42492:28:0;;;:32;:41::i;:::-;42461:14;:28;42476:12;:10;:12::i;:::-;-1:-1:-1;;;;;42461:28:0;-1:-1:-1;;;;;42461:28:0;;;;;;;;;;;;:72;;;;42580:1;42548:14;:28;42563:12;:10;:12::i;:::-;-1:-1:-1;;;;;42548:28:0;-1:-1:-1;;;;;42548:28:0;;;;;;;;;;;;;:33;42544:78;;42617:5;42583:17;:31;42601:12;:10;:12::i;:::-;-1:-1:-1;;;;;42583:31:0;;;;;;;;;;;;-1:-1:-1;42583:31:0;:39;;-1:-1:-1;;42583:39:0;;;;;;;;;;42544:78;42669:1;42633:10;42644:7;42633:19;;;;;;;;;;;;;;;;;;:33;;:37;;;;42710:5;42681:10;42692:7;42681:19;;;;;;;;;;;;;;;;;;;;;:26;;:34;;-1:-1:-1;;42681:34:0;;;;;;;;;;-1:-1:-1;;;;;41827:896:0:o;21157:120::-;21220:7;21247:15;21263:5;21247:22;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;21247:22:0;;21157:120;-1:-1:-1;;21157:120:0:o;46758:84::-;32154:29;32170:12;:10;:12::i;32154:29::-;32146:52;;;;-1:-1:-1;;;32146:52:0;;;;;;;:::i;:::-;46819:8:::1;:15:::0;;;::::1;;-1:-1:-1::0;;;46819:15:0::1;-1:-1:-1::0;;;;46819:15:0;;::::1;::::0;;;::::1;::::0;;46758:84::o;22815:92::-;22888:11;;-1:-1:-1;;;;;22888:11:0;22815:92;:::o;29864:369::-;-1:-1:-1;;;;;30019:19:0;;;29921:20;30019:19;;;:13;:19;;;;;:29;29921:20;;;;;;29990:59;;30013:4;;30019:29;29990:22;:59::i;:::-;-1:-1:-1;;;;;30060:19:0;;;;;;;:13;:19;;;;;;;;:29;;;:41;;;;30112:32;;;:47;;;;-1:-1:-1;30170:36:0;;;:55;;;;-1:-1:-1;;;29864:369:0:o;22705:104::-;22784:17;;-1:-1:-1;;;;;22784:17:0;22705:104;:::o;46850:167::-;13751:12;:10;:12::i;:::-;13741:6;;-1:-1:-1;;;;;13741:6:0;;;:22;;;13733:67;;;;-1:-1:-1;;;13733:67:0;;;;;;;:::i;:::-;46933:21:::1;46949:4;46933:15;:21::i;:::-;46925:43;;;;-1:-1:-1::0;;;46925:43:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;46979:22:0::1;47004:5;46979:22:::0;;;:16:::1;:22;::::0;;;;:30;;-1:-1:-1;;46979:30:0::1;::::0;;46850:167::o;33765:191::-;33830:7;33850:21;33874:11;:9;:11::i;:::-;33850:35;;33903:44;33933:13;33903:25;33920:7;33903:16;:25::i;21283:308::-;21343:7;21352;21361;21370;21379;21388;21408:21;;:::i;:::-;-1:-1:-1;;;;;;;;;21432:19:0;;;;;;;:13;:19;;;;;;;;;21408:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21408:43:0;;-1:-1:-1;21408:43:0;;-1:-1:-1;21283:308:0:o;13616:79::-;13681:6;;-1:-1:-1;;;;;13681:6:0;13616:79;:::o;22913:90::-;22983:12;;-1:-1:-1;;;22983:12:0;;;;;22913:90::o;33167:257::-;33217:7;33237:21;33261:11;:9;:11::i;:::-;33237:35;;33290:126;33389:26;33399:15;:13;:15::i;33389:26::-;33290:94;33359:24;33377:4;33359:9;:24::i;:::-;33290:64;33311:42;33339:13;33311:23;:21;:23::i;:42::-;33290:16;:14;:16::i;:126::-;33283:133;;;33167:257;:::o;32829:101::-;32868:13;32901:21;:19;:21::i;35009:270::-;35102:4;35119:130;35128:12;:10;:12::i;:::-;35142:7;35151:97;35191:15;35151:97;;;;;;;;;;;;;;;;;:35;35165:12;:10;:12::i;:::-;35178:7;35151:13;:35::i;21717:85::-;21785:9;;-1:-1:-1;;;;;21785:9:0;21717:85;:::o;33964:167::-;34042:4;34059:42;34069:12;:10;:12::i;:::-;34083:9;34094:6;34059:9;:42::i;20880:122::-;-1:-1:-1;;;;;20971:23:0;20944:7;20971:23;;;;;;;;;;;;20880:122::o;23111:80::-;23176:7;;-1:-1:-1;;;23176:7:0;;;;;23111:80::o;21008:142::-;-1:-1:-1;;;;;21113:20:0;;;21086:7;21113:20;;;:11;:20;;;;;;;;:29;;;;;;;;;;;;;21008:142::o;23285:120::-;-1:-1:-1;;;;;23372:25:0;23348:4;23372:25;;;:16;:25;;;;;;;;;23285:120::o;22507:92::-;22580:11;;22507:92;:::o;21808:96::-;21883:13;;21808:96;:::o;46582:168::-;13751:12;:10;:12::i;:::-;13741:6;;-1:-1:-1;;;;;13741:6:0;;;:22;;;13733:67;;;;-1:-1:-1;;;13733:67:0;;;;;;;:::i;:::-;46663:21:::1;46679:4;46663:15;:21::i;:::-;46662:22;46654:48;;;;-1:-1:-1::0;;;46654:48:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;46713:22:0::1;;::::0;;;:16:::1;:22;::::0;;;;:29;;-1:-1:-1;;46713:29:0::1;46738:4;46713:29;::::0;;46582:168::o;23940:390::-;24026:7;24035;24044;24064:17;24091:4;-1:-1:-1;;;;;24084:24:0;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24144:37;;-1:-1:-1;;;24144:37:0;;24064:46;;-1:-1:-1;24121:20:0;;24159:4;;24144:31;;:37;;24176:4;;24144:37;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24121:60;;24192:24;24234:9;-1:-1:-1;;;;;24219:36:0;;24256:4;24219:42;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24280:12;;;;-1:-1:-1;24312:9:0;;-1:-1:-1;23940:390:0;-1:-1:-1;;;;23940:390:0:o;22137:122::-;-1:-1:-1;;;;;22228:23:0;22201:7;22228:23;;;:14;:23;;;;;;;22137:122::o;22605:94::-;22679:12;;22605:94;:::o;46463:111::-;13751:12;:10;:12::i;:::-;13741:6;;-1:-1:-1;;;;;13741:6:0;;;:22;;;13733:67;;;;-1:-1:-1;;;13733:67:0;;;;;;;:::i;:::-;46541:25:::1;46561:4;46541:19;:25::i;:::-;46463:111:::0;:::o;22393:108::-;22474:19;;22393:108;:::o;39819:180::-;13751:12;:10;:12::i;:::-;13741:6;;-1:-1:-1;;;;;13741:6:0;;;:22;;;13733:67;;;;-1:-1:-1;;;13733:67:0;;;;;;;:::i;:::-;39900:15:::1;:13;:15::i;:::-;39899:16;39891:57;;;;-1:-1:-1::0;;;39891:57:0::1;;;;;;;:::i;:::-;39959:32;39980:10;39959:20;:32::i;40918:643::-:0;13751:12;:10;:12::i;:::-;13741:6;;-1:-1:-1;;;;;13741:6:0;;;:22;;;13733:67;;;;-1:-1:-1;;;13733:67:0;;;;;;;:::i;:::-;41039:15:::1;:13;:15::i;:::-;41038:16;41030:53;;;;-1:-1:-1::0;;;41030:53:0::1;;;;;;;:::i;:::-;41094:21;41118:11;:9;:11::i;:::-;41094:35:::0;-1:-1:-1;41140:19:0::1;41162:25;:6:::0;41094:35;41162:10:::1;:25::i;:::-;41214:47;::::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;;;;;41214:47:0;;::::1;::::0;;;::::1;::::0;;::::1;::::0;;;;;;;;;41256:4:::1;41214:47:::0;;;;;;41198:10:::1;:64:::0;;;;::::1;::::0;;-1:-1:-1;41198:64:0;;;;;;::::1;::::0;;::::1;::::0;;::::1;::::0;;-1:-1:-1;;;;;;41198:64:0::1;::::0;;;::::1;;::::0;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;41198:64:0::1;::::0;::::1;;::::0;;;::::1;::::0;;;41299:23;;:14:::1;:23:::0;;;;41214:47;;-1:-1:-1;41299:40:0::1;::::0;41214:47;41299:27:::1;:40::i;:::-;-1:-1:-1::0;;;;;41273:23:0;::::1;;::::0;;;:14:::1;:23;::::0;;;;;;;:66;;;;41350:17:::1;:26:::0;;;:33;;-1:-1:-1;;41350:33:0::1;41379:4;41350:33;::::0;;41416:19:::1;::::0;:36:::1;::::0;41440:11;41416:23:::1;:36::i;:::-;41394:19;:58:::0;41478:12:::1;::::0;:24:::1;::::0;41495:6;41478:16:::1;:24::i;:::-;41463:12;:39:::0;41518:35:::1;::::0;-1:-1:-1;;;;;41518:35:0;::::1;::::0;41535:1:::1;::::0;-1:-1:-1;;;;;;;;;;;41518:35:0;::::1;::::0;41546:6;;41518:35:::1;:::i;:::-;;;;;;;;13811:1;;40918:643:::0;;;:::o;47542:481::-;13751:12;:10;:12::i;:::-;13741:6;;-1:-1:-1;;;;;13741:6:0;;;:22;;;13733:67;;;;-1:-1:-1;;;13733:67:0;;;;;;;:::i;:::-;32505:8:::1;:15:::0;;-1:-1:-1;;;;32505:15:0::1;-1:-1:-1::0;;;32505:15:0::1;::::0;;47630:27:::2;47649:7:::0;47630:18:::2;:27::i;:::-;47622:54;;;;-1:-1:-1::0;;;47622:54:0::2;;;;;;;:::i;:::-;47704:11;::::0;;-1:-1:-1;;;;;47704:11:0;;::::2;47719:5;47687:29:::0;;;:16:::2;:29;::::0;;;;:37;;-1:-1:-1;;47687:37:0::2;::::0;;47766:11;;47756:22:::2;::::0;47766:11:::2;47756:9;:22::i;:::-;47735:43:::0;-1:-1:-1;47793:14:0;;47789:152:::2;;47834:11;::::0;47824:43:::2;::::0;-1:-1:-1;;;;;47834:11:0::2;47847:7:::0;47856:10;47824:9:::2;:43::i;:::-;47896:11;::::0;47887:42:::2;::::0;-1:-1:-1;;;;;47887:42:0;;::::2;::::0;47896:11:::2;::::0;-1:-1:-1;;;;;;;;;;;47887:42:0;::::2;::::0;47918:10;;47887:42:::2;:::i;:::-;;;;;;;;47789:152;-1:-1:-1::0;47951:11:0::2;:21:::0;;-1:-1:-1;;;;;47951:21:0;;::::2;-1:-1:-1::0;;;;;;47951:21:0;;::::2;::::0;::::2;::::0;;:11:::2;47983:25:::0;;;:16:::2;:25;::::0;;;;:32;;-1:-1:-1;;47983:32:0::2;47951:21:::0;47983:32:::2;::::0;;32543:8:::1;:16:::0;;-1:-1:-1;;;;32543:16:0::1;::::0;;47542:481::o;34139:144::-;34220:7;34247:28;34261:5;34267:7;34247:13;:28::i;48035:88::-;13751:12;:10;:12::i;:::-;13741:6;;-1:-1:-1;;;;;13741:6:0;;;:22;;;13733:67;;;;-1:-1:-1;;;13733:67:0;;;;;;;:::i;:::-;48101:7:::1;:14:::0;;;::::1;;-1:-1:-1::0;;;48101:14:0::1;-1:-1:-1::0;;;;48101:14:0;;::::1;::::0;;;::::1;::::0;;48035:88::o;21597:114::-;-1:-1:-1;;;;;21681:22:0;21657:4;21681:22;;;:16;:22;;;;;;;;;21597:114::o;41573:246::-;13751:12;:10;:12::i;:::-;13741:6;;-1:-1:-1;;;;;13741:6:0;;;:22;;;13733:67;;;;-1:-1:-1;;;13733:67:0;;;;;;;:::i;:::-;41676:15:::1;:13;:15::i;:::-;41675:16;41667:53;;;;-1:-1:-1::0;;;41667:53:0::1;;;;;;;:::i;13980:244::-:0;13751:12;:10;:12::i;:::-;13741:6;;-1:-1:-1;;;;;13741:6:0;;;:22;;;13733:67;;;;-1:-1:-1;;;13733:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14069:22:0;::::1;14061:73;;;;-1:-1:-1::0;;;14061:73:0::1;;;;;;;:::i;:::-;14171:6;::::0;14150:38:::1;::::0;-1:-1:-1;;;;;14150:38:0;;::::1;::::0;14171:6:::1;::::0;14150:38:::1;::::0;14171:6:::1;::::0;14150:38:::1;14199:6;:17:::0;;-1:-1:-1;;;;;;14199:17:0::1;-1:-1:-1::0;;;;;14199:17:0;;;::::1;::::0;;;::::1;::::0;;13980:244::o;21910:221::-;21966:7;21975;21984;21993:4;22010:17;;:::i;:::-;22030:10;22041:3;22030:15;;;;;;;;;;;;;;;;;22010:35;;;;;;;;22030:15;;;;;;;;22010:35;;-1:-1:-1;;;;;22010:35:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22010:35:0;-1:-1:-1;22010:35:0;-1:-1:-1;21910:221:0;-1:-1:-1;;;21910:221:0:o;16545:94::-;-1:-1:-1;;14406:27:0;16545:94::o;10137:174::-;10256:20;10295:8;;;10137:174::o;8699:179::-;8757:7;8789:5;;;8813:6;;;;8805:46;;;;-1:-1:-1;;;8805:46:0;;;;;;;:::i;9474:132::-;9532:7;9559:39;9563:1;9566;9559:39;;;;;;;;;;;;;;;;;:3;:39::i;18391:96::-;15374:7;18391:96;:::o;9222:246::-;9280:7;9304:6;9300:47;;-1:-1:-1;9334:1:0;9327:8;;9300:47;9369:5;;;9373:1;9369;:5;:1;9393:5;;;;;:10;9385:56;;;;-1:-1:-1;;;9385:56:0;;;;;;;:::i;8884:136::-;8942:7;8969:43;8973:1;8976;8969:43;;;;;;;;;;;;;;;;;:3;:43::i;19155:100::-;15908:42;19155:100;:::o;16441:98::-;14346:13;16441:98;:::o;18835:96::-;15622:42;18835:96;:::o;17103:112::-;14491:3;17103:112;:::o;17567:100::-;14715:3;17567:100;:::o;17343:110::-;14660:4;17343:110;:::o;17459:102::-;14604:2;17459:102;:::o;19261:89::-;19337:5;;;;;;;;;;;;-1:-1:-1;;;19337:5:0;;;;19261:89;:::o;12932:106::-;13020:10;12932:106;:::o;35444:336::-;-1:-1:-1;;;;;35537:19:0;;35529:68;;;;-1:-1:-1;;;35529:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;35616:21:0;;35608:68;;;;-1:-1:-1;;;35608:68:0;;;;;;;:::i;:::-;35687:37;35701:5;35708:7;35717:6;35687:13;:37::i;:::-;35756:7;-1:-1:-1;;;;;35740:32:0;35749:5;-1:-1:-1;;;;;35740:32:0;;35765:6;35740:32;;;;;;:::i;:::-;;;;;;;;35444:336;;;:::o;35788:3605::-;32428:10;:8;:10::i;:::-;32427:11;32419:30;;;;-1:-1:-1;;;32419:30:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;35894:20:0;::::1;35886:70;;;;-1:-1:-1::0;;;35886:70:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;35975:23:0;::::1;35967:71;;;;-1:-1:-1::0;;;35967:71:0::1;;;;;;;:::i;:::-;36066:1;36057:6;:10;36049:55;;;;-1:-1:-1::0;;;36049:55:0::1;;;;;;;:::i;:::-;36133:17;36143:6;36133:9;:17::i;:::-;36123:6;:27;;36115:61;;;;-1:-1:-1::0;;;36115:61:0::1;;;;;;;:::i;:::-;36205:25;36223:6;36205:17;:25::i;:::-;36195:6;:35;;36187:78;;;;-1:-1:-1::0;;;36187:78:0::1;;;;;;;:::i;:::-;36284:15;:13;:15::i;:::-;36276:47;;;;-1:-1:-1::0;;;36276:47:0::1;;;;;;;:::i;:::-;36344:49;36366:26;:24;:26::i;:::-;36344:17;:15;:17::i;:49::-;36338:3;:55;36334:74;;;36395:13;:11;:13::i;:::-;36419:21;36443:11;:9;:11::i;:::-;36419:35:::0;-1:-1:-1;36465:19:0::1;36487:25;:6:::0;36419:35;36487:10:::1;:25::i;:::-;36465:47;;36523:14;36552:11;:9;:11::i;:::-;36548:425;;;-1:-1:-1::0;36589:1:0::1;36548:425;;;36623:11;36653:23;36669:6;36653:15;:23::i;:::-;36649:252;;;36706:16;36715:6;36706:8;:16::i;:::-;36697:25;;36649:252;;;36748:26;36764:9;36748:15;:26::i;:::-;36744:157;;;36794:25;36809:9;36794:14;:25::i;:::-;36744:157;;;36875:9;::::0;36860:25:::1;::::0;-1:-1:-1;;;;;36875:9:0::1;36860:14;:25::i;:::-;36924:37;36935:6;36943:9;36954:6;36924:10;:37::i;:::-;36915:46;;36548:425;;37068:6;37078:1;37068:11;37064:2322;;;37097:22;37121:20:::0;37143:17:::1;37164:28;37177:6;37185;37164:12;:28::i;:::-;-1:-1:-1::0;;;;;37284:22:0;::::1;:14;:22:::0;;;::::1;::::0;;;;;;;37096:96;;-1:-1:-1;37096:96:0;;-1:-1:-1;37096:96:0;-1:-1:-1;37284:39:0::1;::::0;37311:11;37284:26:::1;:39::i;:::-;-1:-1:-1::0;;;;;37259:22:0;;::::1;:14;:22:::0;;;::::1;::::0;;;;;;;:64;;;;37366:25;;::::1;::::0;;;;:42:::1;::::0;37396:11;37366:29:::1;:42::i;:::-;-1:-1:-1::0;;;;;37338:25:0;::::1;:14;:25:::0;;;::::1;::::0;;;;;;:70;37457::::1;37493:33;:14:::0;37512:13;37493:18:::1;:33::i;:::-;37457:14;:31:::0;37472:15:::1;:13;:15::i;37457:70::-;37423:14;:31:::0;37438:15:::1;:13;:15::i;:::-;-1:-1:-1::0;;;;;37423:31:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;37423:31:0;:104;37587:79:::1;37634:31;:12:::0;37651:13;37634:16:::1;:31::i;:::-;37587:14;:42:::0;37602:26:::1;:24;:26::i;37587:79::-;37542:14;:42:::0;37557:26:::1;:24;:26::i;:::-;-1:-1:-1::0;;;;;37542:42:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;37542:42:0;:124;37696:12:::1;::::0;:27:::1;::::0;37713:9;37696:16:::1;:27::i;:::-;37681:12;:42;;;;37760:9;-1:-1:-1::0;;;;;37743:35:0::1;37752:6;-1:-1:-1::0;;;;;37743:35:0::1;-1:-1:-1::0;;;;;;;;;;;37771:6:0::1;37743:35;;;;;;:::i;:::-;;;;;;;;37818:15;:13;:15::i;:::-;-1:-1:-1::0;;;;;37798:51:0::1;37815:1;-1:-1:-1::0;;;;;37798:51:0::1;-1:-1:-1::0;;;;;;;;;;;37834:14:0::1;37798:51;;;;;;:::i;:::-;;;;;;;;37889:26;:24;:26::i;:::-;-1:-1:-1::0;;;;;37869:60:0::1;37886:1;-1:-1:-1::0;;;;;37869:60:0::1;-1:-1:-1::0;;;;;;;;;;;37916:12:0::1;37869:60;;;;;;:::i;:::-;;;;;;;;37064:2322;;;;;;38058:6;38068:1;38058:11;38054:1332;;;38087:16;38105:21:::0;38130:32:::1;38144:9;38155:6;38130:13;:32::i;:::-;38086:76;;;;38178:18;38198:23:::0;38225:21:::1;38239:6;38225:13;:21::i;:::-;38177:69:::0;;-1:-1:-1;38177:69:0;-1:-1:-1;38261:28:0::1;38292:36;38177:69:::0;38292:20:::1;:6:::0;38303:8;38292:10:::1;:20::i;:36::-;38261:67:::0;-1:-1:-1;38343:27:0::1;38373:39;38261:67:::0;38398:13;38373:24:::1;:39::i;:::-;-1:-1:-1::0;;;;;38452:22:0;::::1;:14;:22:::0;;;::::1;::::0;;;;;;;38343:69;;-1:-1:-1;38452:39:0::1;::::0;38479:11;38452:26:::1;:39::i;:::-;-1:-1:-1::0;;;;;38427:22:0;;::::1;:14;:22:::0;;;::::1;::::0;;;;;;;:64;;;;38534:25;;::::1;::::0;;;;:50:::1;::::0;38564:19;38534:29:::1;:50::i;:::-;-1:-1:-1::0;;;;;38506:25:0;;::::1;:14;:25:::0;;;::::1;::::0;;;;;;;:78;;;;38650:17:::1;::::0;;;::::1;38635:33:::0;;;;:54:::1;::::0;38673:15;38635:37:::1;:54::i;:::-;38614:17;::::0;-1:-1:-1;;;;;38614:17:0::1;38599:14;:33:::0;;;::::1;::::0;;;;;;:90;38719:12:::1;::::0;:26:::1;::::0;38736:8;38719:16:::1;:26::i;:::-;38704:12;:41:::0;38774:11:::1;::::0;:30:::1;::::0;38790:13;38774:15:::1;:30::i;:::-;38760:11;:44;;;;38841:9;-1:-1:-1::0;;;;;38824:49:0::1;38833:6;-1:-1:-1::0;;;;;38824:49:0::1;-1:-1:-1::0;;;;;;;;;;;38852:20:0::1;38824:49;;;;;;:::i;:::-;;;;;;;;38918:1;-1:-1:-1::0;;;;;38893:38:0::1;38902:6;-1:-1:-1::0;;;;;38893:38:0::1;-1:-1:-1::0;;;;;;;;;;;38922:8:0::1;38893:38;;;;;;:::i;:::-;;;;;;;;38968:17;::::0;38951:47:::1;::::0;-1:-1:-1;;;;;38968:17:0;;::::1;::::0;38951:47;::::1;::::0;-1:-1:-1;;;;;;;;;;;38951:47:0;::::1;::::0;38987:10;;38951:47:::1;:::i;:::-;;;;;;;;38054:1332;;;;;;;;;39142:6;39152:1;39142:11;39138:248;;;-1:-1:-1::0;;;;;39195:22:0;::::1;:14;:22:::0;;;::::1;::::0;;;;;;;:39:::1;::::0;39222:11;39195:26:::1;:39::i;:::-;-1:-1:-1::0;;;;;39170:22:0;;::::1;:14;:22:::0;;;::::1;::::0;;;;;;;:64;;;;39277:25;;::::1;::::0;;;;:42:::1;::::0;39307:11;39277:29:::1;:42::i;:::-;-1:-1:-1::0;;;;;39249:25:0;;::::1;:14;:25:::0;;;::::1;::::0;;;;;;;;:70;;;;39339:35;;;;::::1;::::0;-1:-1:-1;;;;;;;;;;;39339:35:0;::::1;::::0;39367:6;;39339:35:::1;:::i;:::-;;;;;;;;39138:248;32460:1;;;35788:3605:::0;;;:::o;9026:190::-;9112:7;9148:12;9140:6;;;;9132:29;;;;-1:-1:-1;;;9132:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;9184:5:0;;;9026:190::o;19454:88::-;16196:1;19454:88;:::o;18937:98::-;15714:42;18937:98;:::o;40258:652::-;40312:15;:13;:15::i;:::-;40311:16;40303:53;;;;-1:-1:-1;;;40303:53:0;;;;;;;:::i;:::-;40367:26;:24;:26::i;:::-;-1:-1:-1;;;;;40367:35:0;:65;40403:28;:21;40429:1;40403:25;:28::i;:::-;40367:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;40443:14;40460:46;40492:13;:11;:13::i;:::-;40460:27;:25;:27::i;:46::-;40443:63;;40517:19;40539:65;40577:26;:24;:26::i;:::-;40539:33;:21;40565:6;40539:25;:33::i;:65::-;40517:87;;40627:11;40618:6;:20;40615:175;;;40655:48;40676:1;40679:23;:6;40690:11;40679:10;:23::i;:::-;40655:12;:48::i;:::-;40751:1;;-1:-1:-1;;;;;;;;;;;40754:23:0;:6;40765:11;40754:10;:23::i;:::-;40723:55;;;;;;:::i;:::-;;;;;;;;40615:175;40800:40;40821:4;40828:11;40800:12;:40::i;:::-;40856:46;;40884:4;;40873:1;;-1:-1:-1;;;;;;;;;;;40856:46:0;;;40890:11;;40856:46;:::i;43582:999::-;32505:8;:15;;-1:-1:-1;;;;32505:15:0;-1:-1:-1;;;32505:15:0;;;;43674:18:::1;:16;:18::i;:::-;43637:55;;43703:32;43738:19;:17;:19::i;:::-;43703:54;;43768:24;43889:1:::0;-1:-1:-1;;;;;43807:84:0::1;:14;-1:-1:-1::0;;;;;43807:22:0::1;;43838:15;-1:-1:-1::0;;;;;43838:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;43871:4;43807:70;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;43807:84:0::1;;43803:335;;;43927:14;-1:-1:-1::0;;;;;43927:25:0::1;;43975:15;-1:-1:-1::0;;;;;43975:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;44008:4;43927:87;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;43908:106;;43803:335;;;44066:14;-1:-1:-1::0;;;;;44066:22:0::1;;44097:4;44103:15;-1:-1:-1::0;;;;;44103:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;44066:60;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;44047:79;;43803:335;44148:19;44170:24;44188:4;44170:9;:24::i;:::-;44148:46;;44213:80;44230:4;44237:42;44281:11;44213:8;:80::i;:::-;44304:15;-1:-1:-1::0;;;;;44304:31:0::1;;44343:21;44374:4;44393:11;44406:1;44409::::0;44412:26:::1;:24;:26::i;:::-;44440:15;44304:152;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;44467:67;44484:16;44510:15;-1:-1:-1::0;;;;;44510:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;44467:16;:67::i;:::-;-1:-1:-1::0;44545:9:0::1;:28:::0;;-1:-1:-1;;;;;;44545:28:0::1;-1:-1:-1::0;;;;;44545:28:0;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;32543:8:0;:16;;-1:-1:-1;;;;32543:16:0;;;43582:999::o;30239:478::-;30327:21;30343:4;30327:15;:21::i;:::-;30326:22;30318:64;;;;-1:-1:-1;;;30318:64:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;30393:22:0;;;;;;:16;:22;;;;;:29;;-1:-1:-1;;30393:29:0;30418:4;30393:29;;;;;;30433:15;:26;;;;;;;;;;;;;-1:-1:-1;;;;;;30433:26:0;;;;;;;30393:22;;30540:39;30410:4;30569:9;30540:22;:39::i;:::-;30612:97;;;;;;;;-1:-1:-1;;;;;30612:97:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30590:19;;;-1:-1:-1;30590:19:0;;;:13;:19;;;;;;;;:119;;;;-1:-1:-1;;;;;;30590:119:0;;;;;;;;;;;-1:-1:-1;30590:119:0;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;30590:119:0;;;;;;;;;;-1:-1:-1;30239:478:0:o;28403:303::-;28478:21;28502:11;:9;:11::i;:::-;28478:35;-1:-1:-1;28524:19:0;28546:25;:6;28478:35;28546:10;:25::i;:::-;-1:-1:-1;;;;;28608:23:0;;:14;:23;;;;;;;;;;;28524:47;;-1:-1:-1;28608:40:0;;28524:47;28608:27;:40::i;:::-;-1:-1:-1;;;;;28582:23:0;;:14;:23;;;;;;;;;;:66;28674:12;;:24;;28691:6;28674:16;:24::i;:::-;28659:12;:39;-1:-1:-1;;;;28403:303:0:o;19356:92::-;19433:7;;;;;;;;;;;;-1:-1:-1;;;19433:7:0;;;;19356:92;:::o;30723:519::-;30794:21;30810:4;30794:15;:21::i;:::-;30786:70;;;;-1:-1:-1;;;30786:70:0;;;;;;;:::i;:::-;30872:9;30867:368;30891:15;:22;30887:26;;30867:368;;;30961:4;-1:-1:-1;;;;;30939:26:0;:15;30955:1;30939:18;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;30939:18:0;:26;30935:289;;;31007:15;31023:22;;-1:-1:-1;;31023:26:0;;;31007:43;;;;;;;;;;;;;;;;30986:15;:18;;-1:-1:-1;;;;;31007:43:0;;;;31002:1;;30986:18;;;;;;;;;;;;;;;;;:64;;-1:-1:-1;;;;;30986:64:0;;;-1:-1:-1;;;;;;30986:64:0;;;;;;;31069:22;;;;;:16;:22;;;;;;;:30;;-1:-1:-1;;31069:30:0;;;31125:13;:19;;;;;;31118:26;;;;;;;30986:64;31118:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;31163:21;;;;;;;;;;;;;;;;-1:-1:-1;;31163:21:0;;;;;-1:-1:-1;;;;;;31163:21:0;;;;;;31203:5;;30935:289;30915:3;;30867:368;;28146:110;28220:11;:28;;-1:-1:-1;;;;;;28220:28:0;-1:-1:-1;;;;;28220:28:0;;;;;;;;;;28146:110::o;9612:189::-;9698:7;9733:12;9726:5;9718:28;;;;-1:-1:-1;;;9718:28:0;;;;;;;;:::i;:::-;;9757:9;9773:1;9769;:5;;;;;;;9612:189;-1:-1:-1;;;;;9612:189:0:o;28262:135::-;-1:-1:-1;;;;;28353:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;28262:135::o;28899:377::-;28942:17;:15;:17::i;:::-;28975:9;28970:299;28990:15;:22;28988:24;;28970:299;;;29088:13;:33;29102:15;29118:1;29102:18;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;29102:18:0;-1:-1:-1;;;;;29088:33:0;-1:-1:-1;;;;;29088:33:0;;;;;;;;;;;;:46;;;29034:13;:33;29048:15;29064:1;29048:18;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;29048:18:0;29034:33;;;;;;;;;;;;:51;;:100;;;;29221:15;:18;;29207:13;;29048:18;29221:15;29237:1;;29221:18;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;29221:18:0;-1:-1:-1;;;;;29207:33:0;-1:-1:-1;;;;;29207:33:0;;;;;;;;;;;;:50;;;29149:13;:33;29163:15;29179:1;29163:18;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;29163:18:0;29149:33;;;;;;;;;;;;:55;;:108;29163:18;29014:3;28970:299;;29387:471;-1:-1:-1;;;;;29552:19:0;;;29436:4;29552:19;;;:13;:19;;;;;:29;29436:4;;;;;;;;29523:59;;29546:4;;29552:29;29523:22;:59::i;:::-;-1:-1:-1;;;;;29619:19:0;;;;29593:11;29619:19;;;:13;:19;;;;;;;;:29;;;;;29659:41;;;;-1:-1:-1;29711:32:0;;:47;;;;-1:-1:-1;29769:36:0;:55;29607:41;;;;29387:471;-1:-1:-1;;;;29387:471:0:o;39401:410::-;39485:7;39522:1;39538:23;39554:6;39538:15;:23::i;:::-;39534:246;;;39582:6;39578:108;;;-1:-1:-1;39618:1:0;39578:108;;;-1:-1:-1;39669:1:0;39578:108;39534:246;;;39717:24;:22;:24::i;:::-;-1:-1:-1;;;;;39707:34:0;:6;-1:-1:-1;;;;;39707:34:0;;39703:77;;;-1:-1:-1;39767:1:0;39703:77;39797:6;39401:410;-1:-1:-1;;;;39401:410:0:o;24336:829::-;-1:-1:-1;;;;;24619:21:0;;24412:7;24619:21;;;:13;:21;;;;;:34;;;;24570:43;;;;24516:39;;;;24472:38;;;;;24412:7;;;;;;24471:183;;24619:34;;24471:143;;;;24561:3;;24471:85;;:44;:85::i;:183::-;24450:204;;24665:18;24711:56;24763:3;24711:47;24752:5;24712:34;:32;:34::i;24711:56::-;24698:10;:69;24694:324;;;24784:18;24805:26;24820:10;;24805:14;:26::i;:::-;24784:47;-1:-1:-1;24859:44:0;24897:5;24859:33;24870:21;24784:47;24897:5;24870:14;:21::i;:::-;24859:6;;:10;:33::i;:44::-;24846:57;;24694:324;;;;24949:57;25000:5;24949:46;24960:34;:32;:34::i;:::-;24949:6;;:10;:46::i;:57::-;24936:70;;24694:324;25036:55;25085:5;25036:44;25051:28;:26;:28::i;:::-;25036:10;;:14;:44::i;:55::-;25092:53;25139:5;25092:42;25107:26;:24;:26::i;:::-;25092:10;;:14;:42::i;:53::-;25028:129;;-1:-1:-1;25028:129:0;-1:-1:-1;25146:10:0;-1:-1:-1;;24336:829:0;;;;;:::o;25173:1298::-;25253:7;25262;25282:21;25306:11;:9;:11::i;:::-;25282:35;;25328:20;25363:26;25379:9;25363:15;:26::i;:::-;25359:512;;;-1:-1:-1;;;;;25573:24:0;;;;;;:13;:24;;;;;:42;;;;25526:41;;;;25465:46;;;;25422:37;;;;;25421:195;;:147;;25526:41;25421:147;;25517:3;;25421:91;;:43;:91::i;:195::-;25406:210;;25359:512;;;25830:9;;;-1:-1:-1;;;;;25830:9:0;25816:24;;;;:13;:24;;;;;:42;;;;25769:41;;;;25708:46;;;;25830:9;25665:37;;;;25664:195;;25816:42;;25664:147;;25769:41;25664:147;;25760:3;;25664:91;;:43;:91::i;:195::-;25649:210;;25359:512;25881:18;25929:58;25983:3;25930:47;25971:5;25930:36;:34;:36::i;25929:58::-;25914:12;:73;25910:493;;;26004:18;26025:30;26042:12;;26025:16;:30::i;:::-;26004:51;-1:-1:-1;26083:44:0;26121:5;26083:33;26094:21;26004:51;26121:5;26094:14;:21::i;26083:44::-;26070:57;;26159:56;26209:5;26159:45;26170:33;:31;:33::i;26159:56::-;26146:10;:69;26142:144;;;26230:56;26280:5;26230:45;26241:33;:31;:33::i;26230:56::-;26217:69;;26142:144;25910:493;;;;26332:59;26385:5;26332:48;26343:36;:34;:36::i;26332:59::-;26319:72;;25910:493;26421:10;26433:29;26421:10;26448:13;26433:14;:29::i;:::-;26413:50;;;;;;;25173:1298;;;;;:::o;26479:278::-;26540:7;26549;26569:21;26593:11;:9;:11::i;:::-;26569:35;;26615:18;26636:52;26682:5;26636:41;26647:29;:27;:29::i;:::-;26636:6;;:10;:41::i;:52::-;26615:73;-1:-1:-1;26615:73:0;26719:29;26615:73;26734:13;26719:14;:29::i;:::-;26699:50;;;;;;26479:278;;;:::o;16339:96::-;16051:5;16339:96;:::o;28819:74::-;28882:3;28866:13;:19;28819:74::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;827:241::-;;931:2;919:9;910:7;906:23;902:32;899:2;;;-1:-1;;937:12;899:2;85:6;72:20;97:33;124:5;97:33;:::i;1075:263::-;;1190:2;1178:9;1169:7;1165:23;1161:32;1158:2;;;-1:-1;;1196:12;1158:2;226:6;220:13;238:33;265:5;238:33;:::i;1345:366::-;;;1466:2;1454:9;1445:7;1441:23;1437:32;1434:2;;;-1:-1;;1472:12;1434:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;1524:63;-1:-1;1624:2;1663:22;;72:20;97:33;72:20;97:33;:::i;:::-;1632:63;;;;1428:283;;;;;:::o;1718:491::-;;;;1856:2;1844:9;1835:7;1831:23;1827:32;1824:2;;;-1:-1;;1862:12;1824:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;1914:63;-1:-1;2014:2;2053:22;;72:20;97:33;72:20;97:33;:::i;:::-;1818:391;;2022:63;;-1:-1;;;2122:2;2161:22;;;;616:20;;1818:391::o;2216:366::-;;;2337:2;2325:9;2316:7;2312:23;2308:32;2305:2;;;-1:-1;;2343:12;2305:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;2395:63;2495:2;2534:22;;;;616:20;;-1:-1;;;2299:283::o;2589:491::-;;;;2727:2;2715:9;2706:7;2702:23;2698:32;2695:2;;;-1:-1;;2733:12;2695:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;2785:63;2885:2;2924:22;;616:20;;-1:-1;2993:2;3032:22;;;616:20;;2689:391;-1:-1;;;2689:391::o;3087:235::-;;3188:2;3176:9;3167:7;3163:23;3159:32;3156:2;;;-1:-1;;3194:12;3156:2;360:6;347:20;372:30;396:5;372:30;:::i;3329:257::-;;3441:2;3429:9;3420:7;3416:23;3412:32;3409:2;;;-1:-1;;3447:12;3409:2;495:6;489:13;507:30;531:5;507:30;:::i;3593:241::-;;3697:2;3685:9;3676:7;3672:23;3668:32;3665:2;;;-1:-1;;3703:12;3665:2;-1:-1;616:20;;3659:175;-1:-1;3659:175::o;3841:263::-;;3956:2;3944:9;3935:7;3931:23;3927:32;3924:2;;;-1:-1;;3962:12;3924:2;-1:-1;764:13;;3918:186;-1:-1;3918:186::o;4111:366::-;;;4232:2;4220:9;4211:7;4207:23;4203:32;4200:2;;;-1:-1;;4238:12;4200:2;629:6;616:20;4290:63;;4390:2;4433:9;4429:22;72:20;97:33;124:5;97:33;:::i;4484:535::-;;;;4633:2;4621:9;4612:7;4608:23;4604:32;4601:2;;;-1:-1;;4639:12;4601:2;770:6;764:13;4691:74;;4802:2;4856:9;4852:22;764:13;4810:74;;4921:2;4975:9;4971:22;764:13;4929:74;;4595:424;;;;;:::o;18351:222::-;-1:-1;;;;;39578:54;;;;5418:37;;18478:2;18463:18;;18449:124::o;18580:333::-;-1:-1;;;;;39578:54;;;5418:37;;39578:54;;18899:2;18884:18;;5418:37;18735:2;18720:18;;18706:207::o;18920:1036::-;-1:-1;;;;;39578:54;;;5418:37;;39578:54;;;19424:2;19409:18;;5418:37;19507:2;19492:18;;18188:37;;;;19590:2;19575:18;;18188:37;;;;19681:3;19666:19;;6872:58;;;;39589:42;19758:19;;6872:58;39578:54;;;19857:3;19842:19;;5418:37;19941:3;19926:19;;18188:37;;;;19259:3;19244:19;;19230:726::o;19963:333::-;-1:-1;;;;;39578:54;;;;5418:37;;20282:2;20267:18;;18188:37;20118:2;20103:18;;20089:207::o;20303:828::-;-1:-1;;;;;39578:54;;;5418:37;;20759:2;20744:18;;18188:37;;;;20850:2;20835:18;;6872:58;;;;20941:2;20926:18;;6872:58;;;;39578:54;;;21032:3;21017:19;;5287:58;39589:42;21101:19;;18188:37;;;;20594:3;20579:19;;20565:566::o;21138:544::-;-1:-1;;;;;39578:54;;;;5418:37;;21508:2;21493:18;;18188:37;;;;21591:2;21576:18;;18188:37;39490:13;39483:21;21668:2;21653:18;;6381:34;21343:3;21328:19;;21314:368::o;21689:780::-;-1:-1;;;;;39578:54;;;;5418:37;;22121:2;22106:18;;18188:37;;;;22204:2;22189:18;;18188:37;;;;22287:2;22272:18;;18188:37;22370:3;22355:19;;18188:37;39589:42;22439:19;;18188:37;21956:3;21941:19;;21927:542::o;22476:210::-;39490:13;;39483:21;6381:34;;22597:2;22582:18;;22568:118::o;23251:310::-;;23398:2;;23419:17;23412:47;7087:5;38682:12;39098:6;23398:2;23387:9;23383:18;39086:19;-1:-1;41022:101;41036:6;41033:1;41030:13;41022:101;;;41103:11;;;;;41097:18;41084:11;;;39126:14;41084:11;41077:39;41051:10;;41022:101;;;41138:6;41135:1;41132:13;41129:2;;;-1:-1;39126:14;41194:6;23387:9;41185:16;;41178:27;41129:2;-1:-1;41310:7;41294:14;-1:-1;;41290:28;7245:39;;;;39126:14;7245:39;;23369:192;-1:-1;;;23369:192::o;23568:416::-;23768:2;23782:47;;;7521:2;23753:18;;;39086:19;-1:-1;;;39126:14;;;7537:45;7601:12;;;23739:245::o;23991:416::-;24191:2;24205:47;;;7852:2;24176:18;;;39086:19;7888:34;39126:14;;;7868:55;-1:-1;;;7943:12;;;7936:27;7982:12;;;24162:245::o;24414:416::-;24614:2;24628:47;;;8233:1;24599:18;;;39086:19;-1:-1;;;39126:14;;;8248:29;8296:12;;;24585:245::o;24837:416::-;25037:2;25051:47;;;8547:2;25022:18;;;39086:19;8583:26;39126:14;;;8563:47;8629:12;;;25008:245::o;25260:416::-;25460:2;25474:47;;;8880:2;25445:18;;;39086:19;8916:34;39126:14;;;8896:55;-1:-1;;;8971:12;;;8964:30;9013:12;;;25431:245::o;25683:416::-;25883:2;25897:47;;;9264:2;25868:18;;;39086:19;9300:34;39126:14;;;9280:55;-1:-1;;;9355:12;;;9348:26;9393:12;;;25854:245::o;26106:416::-;26306:2;26320:47;;;9644:2;26291:18;;;39086:19;-1:-1;;;39126:14;;;9660:34;9713:12;;;26277:245::o;26529:416::-;26729:2;26743:47;;;9964:2;26714:18;;;39086:19;10000:30;39126:14;;;9980:51;10050:12;;;26700:245::o;26952:416::-;27152:2;27166:47;;;10301:2;27137:18;;;39086:19;10337:29;39126:14;;;10317:50;10386:12;;;27123:245::o;27375:416::-;27575:2;27589:47;;;27560:18;;;39086:19;10673:34;39126:14;;;10653:55;10727:12;;;27546:245::o;27798:416::-;27998:2;28012:47;;;10978:2;27983:18;;;39086:19;11014:34;39126:14;;;10994:55;-1:-1;;;11069:12;;;11062:27;11108:12;;;27969:245::o;28221:416::-;28421:2;28435:47;;;11359:2;28406:18;;;39086:19;-1:-1;;;39126:14;;;11375:37;11431:12;;;28392:245::o;28644:416::-;28844:2;28858:47;;;11682:2;28829:18;;;39086:19;-1:-1;;;39126:14;;;11698:35;11752:12;;;28815:245::o;29067:416::-;29267:2;29281:47;;;29252:18;;;39086:19;12039:34;39126:14;;;12019:55;12093:12;;;29238:245::o;29490:416::-;29690:2;29704:47;;;12344:2;29675:18;;;39086:19;-1:-1;;;39126:14;;;12360:43;12422:12;;;29661:245::o;29913:416::-;30113:2;30127:47;;;12673:2;30098:18;;;39086:19;12709:34;39126:14;;;12689:55;-1:-1;;;12764:12;;;12757:29;12805:12;;;30084:245::o;30336:416::-;30536:2;30550:47;;;13056:2;30521:18;;;39086:19;-1:-1;;;39126:14;;;13072:34;13125:12;;;30507:245::o;30759:416::-;30959:2;30973:47;;;13376:2;30944:18;;;39086:19;13412:30;39126:14;;;13392:51;13462:12;;;30930:245::o;31182:416::-;31382:2;31396:47;;;13713:2;31367:18;;;39086:19;13749:34;39126:14;;;13729:55;-1:-1;;;13804:12;;;13797:28;13844:12;;;31353:245::o;31605:416::-;31805:2;31819:47;;;14095:2;31790:18;;;39086:19;-1:-1;;;39126:14;;;14111:33;14163:12;;;31776:245::o;32028:416::-;32228:2;32242:47;;;14414:2;32213:18;;;39086:19;14450:34;39126:14;;;14430:55;-1:-1;;;14505:12;;;14498:25;14542:12;;;32199:245::o;32451:416::-;32651:2;32665:47;;;32636:18;;;39086:19;14829:34;39126:14;;;14809:55;14883:12;;;32622:245::o;32874:416::-;33074:2;33088:47;;;15134:2;33059:18;;;39086:19;15170:32;39126:14;;;15150:53;15222:12;;;33045:245::o;33297:416::-;33497:2;33511:47;;;15473:2;33482:18;;;39086:19;15509:34;39126:14;;;15489:55;-1:-1;;;15564:12;;;15557:28;15604:12;;;33468:245::o;33720:416::-;33920:2;33934:47;;;15855:2;33905:18;;;39086:19;15891:33;39126:14;;;15871:54;15944:12;;;33891:245::o;34143:416::-;34343:2;34357:47;;;16195:2;34328:18;;;39086:19;16231:34;39126:14;;;16211:55;-1:-1;;;16286:12;;;16279:29;16327:12;;;34314:245::o;34566:416::-;34766:2;34780:47;;;16578:2;34751:18;;;39086:19;16614:34;39126:14;;;16594:55;-1:-1;;;16669:12;;;16662:28;16709:12;;;34737:245::o;34989:416::-;35189:2;35203:47;;;16960:2;35174:18;;;39086:19;16996:32;39126:14;;;16976:53;17048:12;;;35160:245::o;35412:416::-;35612:2;35626:47;;;17299:2;35597:18;;;39086:19;17335:34;39126:14;;;17315:55;-1:-1;;;17390:12;;;17383:30;17432:12;;;35583:245::o;35835:416::-;36035:2;36049:47;;;17683:2;36020:18;;;39086:19;17719:28;39126:14;;;17699:49;17767:12;;;36006:245::o;36258:416::-;36458:2;36472:47;;;18018:2;36443:18;;;39086:19;-1:-1;;;39126:14;;;18034:38;18091:12;;;36429:245::o;36681:222::-;18188:37;;;36808:2;36793:18;;36779:124::o;36910:832::-;;37207:3;37196:9;37192:19;18218:5;18195:3;18188:37;37380:2;40670:24;37380:2;37369:9;37365:18;6872:58;37207:3;37417:2;37406:9;37402:18;37395:48;37457:108;5811:5;38682:12;39098:6;39093:3;39086:19;39126:14;37196:9;39126:14;5823:93;;37380:2;5987:5;38536:14;5999:21;;-1:-1;6026:260;6051:6;6048:1;6045:13;6026:260;;;6112:13;;-1:-1;;;;;39578:54;5418:37;;38941:14;;;;5180;;;;39589:42;6066:9;6026:260;;;-1:-1;;;;;;;39578:54;;;;37644:2;37629:18;;5418:37;-1:-1;;;37727:3;37712:19;18188:37;37449:116;37178:564;-1:-1;;;37178:564::o;37749:444::-;18188:37;;;38096:2;38081:18;;18188:37;;;;38179:2;38164:18;;18188:37;37932:2;37917:18;;37903:290::o;38200:214::-;39794:4;39783:16;;;;18304:35;;38323:2;38308:18;;38294:120::o;41331:117::-;-1:-1;;;;;39578:54;;41390:35;;41380:2;;41439:1;;41429:12;41455:111;41536:5;39490:13;39483:21;41514:5;41511:32;41501:2;;41557:1;;41547:12
Swarm Source
ipfs://5e1eb9b2d308c2c2632e5011dfd091e0de2be62dbadd1d2a36d68475de015882
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.