ERC-20
Overview
Max Total Supply
100,000,000,000,000,000 PolyMusk
Holders
5,354
Market
Price
$0.00 @ 0.000000 MATIC
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
55,047,769,706.801736226 PolyMuskValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
Contract Name:
PolyMusk
Compiler Version
v0.8.3+commit.8d00100c
Contract Source Code (Solidity)
/** *Submitted for verification at polygonscan.com on 2021-07-04 */ pragma solidity ^0.8.3; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } // CAUTION // This version of SafeMath should only be used with Solidity 0.8 or later, // because it relies on the compiler's built in overflow checks. /** * @dev Wrappers over Solidity's arithmetic operations. * * NOTE: `SafeMath` is no longer needed starting with Solidity 0.8. The compiler * now has built in overflow checking. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } /** * @dev Returns the substraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } /** * @dev Returns the integer division of two unsigned integers, reverting on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } /** * @dev Returns the integer division of two unsigned integers, reverting with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } /* * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. uint256 size; // solhint-disable-next-line no-inline-assembly assembly { size := extcodesize(account) } return size > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ 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"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain`call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ 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"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ 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"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.call{ value: value }(data); return _verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.staticcall(data); return _verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.delegatecall(data); return _verifyCallResult(success, returndata, errorMessage); } function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly // solhint-disable-next-line no-inline-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor () { _owner = 0xC01cc26194B66AB6C7942dC0FF9AF7aA0711BBA9; emit OwnershipTransferred(address(0), _owner); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } 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 IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, 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; } contract PolyMusk is Context, IERC20, Ownable { using SafeMath for uint256; using Address for address; address[] private _addressList; uint256 public _devFee = 2; uint256 private _previousDevFee = _devFee; mapping (address => bool) private _AddressExists; mapping (address => uint256) private _rOwned; mapping (address => uint256) private _tOwned; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) private _isExcludedFromFee; mapping (address => bool) private _isExcluded; address[] private _excluded; uint256 private constant MAX = ~uint256(0); uint256 private _tTotal = 1 * 10**8 * 10**9 * 10**9; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 private _tFeeTotal; address payable private _devWallet; address public _lottoWalletAddress; uint256 private _minLottoBalance = 1 * 10**3* 10**9 * 10**9; string private _name = "PolyMusk"; string private _symbol = "PolyMusk"; uint8 private _decimals = 9; uint256 public _taxFee = 2; uint256 private _previousTaxFee = _taxFee; uint256 public _lottoFee = 6; uint256 private _previousLottoFee = _lottoFee; uint256 public _liquidityFee = 2; uint256 private _previousLiquidityFee = _liquidityFee; address public fomoAdmin; address public _lastBuyAddress; uint256 public openTimeFoMo; uint256 private _minFoMoBalance = 1 * 10**3* 10**9 * 10**9; address[] public fomoAddress; address[] public lottoAddress; IUniswapV2Router02 public immutable uniswapV2Router; address public immutable uniswapV2Pair; address public router = 0xa5E0829CaCEd8fFDD4De3c43696c57F7D7A678ff; bool public inSwapAndLiquify; bool public _shouldSwapToBNB = false; bool public swapAndLiquifyEnabled = true; bool public limitStatus = true; uint256 public _maxTxAmount = 5* 10**6 * 10**9 * 10**9; uint256 private numTokensSellToAddToLiquidity = 50000 * 10**9 * 10**9; event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap); event SwapAndLiquifyEnabledUpdated(bool enabled); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiqudity ); modifier lockTheSwap { inSwapAndLiquify = true; _; inSwapAndLiquify = false; } constructor () { _rOwned[owner()] = _rTotal; addAddress(owner()); IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(router); // Create a uniswap pair for this new token uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); // set the rest of the contract variables uniswapV2Router = _uniswapV2Router; //exclude owner and this contract from fee _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; emit Transfer(address(0), owner(), _tTotal); } function setFomoAdmin(address _fomoAdmin) public onlyOwner { fomoAdmin = _fomoAdmin; } function name() public view returns (string memory) { return _name; } function symbol() public view returns (string memory) { return _symbol; } function decimals() public view returns (uint8) { return _decimals; } function totalSupply() public view override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { if (_isExcluded[account]) return _tOwned[account]; return tokenFromReflection(_rOwned[account]); } 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 _allowances[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(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } function isExcludedFromReward(address account) public view returns (bool) { return _isExcluded[account]; } function totalFees() public view returns (uint256) { return _tFeeTotal; } function getFomoAddress() public view returns (address[] memory) { return fomoAddress; } function getLottoAddresss() public view returns (address[] memory) { return lottoAddress; } function deliver(uint256 tAmount) public { address sender = _msgSender(); require(!_isExcluded[sender], "Excluded addresses cannot call this function"); (uint256 rAmount,,,,,,,) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rTotal = _rTotal.sub(rAmount); _tFeeTotal = _tFeeTotal.add(tAmount); } function reflectionFromToken(uint256 tAmount, bool deductTransferFee) public view returns(uint256) { require(tAmount <= _tTotal, "Amount must be less than supply"); if (!deductTransferFee) { (uint256 rAmount,,,,,,,) = _getValues(tAmount); return rAmount; } else { (,uint256 rTransferAmount,,,,,,) = _getValues(tAmount); return rTransferAmount; } } function tokenFromReflection(uint256 rAmount) public view returns(uint256) { require(rAmount <= _rTotal, "Amount must be less than total reflections"); uint256 currentRate = _getRate(); return rAmount.div(currentRate); } function setDevAddress(address payable dev) public onlyOwner() { _devWallet = dev; } function setMinFoMoBalance(uint256 minFoMoBalance) public onlyOwner() { _minFoMoBalance = minFoMoBalance; } function setMinLottoBalance(uint256 minBalance) public onlyOwner() { _minLottoBalance = minBalance; } function setLimitStatus(bool enabled) public onlyOwner() { limitStatus = enabled; } function setshouldSwapToBNB(bool enabled) public onlyOwner() { _shouldSwapToBNB = enabled; } function excludeFromReward(address account) public onlyOwner() { // require(account != 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D, 'We can not exclude Uniswap router.'); require(!_isExcluded[account], "Account is already excluded"); if(_rOwned[account] > 0) { _tOwned[account] = tokenFromReflection(_rOwned[account]); } _isExcluded[account] = true; _excluded.push(account); } function includeInReward(address account) external onlyOwner() { require(_isExcluded[account], "Account is already included"); for (uint256 i = 0; i < _excluded.length; i++) { if (_excluded[i] == account) { _excluded[i] = _excluded[_excluded.length - 1]; _tOwned[account] = 0; _isExcluded[account] = false; _excluded.pop(); break; } } } function _transferBothExcluded(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity, uint256 tLotto, uint256 tDev) = _getValues(tAmount); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _takeLotto(tLotto); _takeDev(tDev); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function excludeFromFee(address account) public onlyOwner { _isExcludedFromFee[account] = true; } function includeInFee(address account) public onlyOwner { _isExcludedFromFee[account] = false; } function setTaxFeePercent(uint256 taxFee) external onlyOwner() { _taxFee = taxFee; } function setLottoFeePercent(uint256 lottoFee) external onlyOwner() { _lottoFee = lottoFee; } function setDevFeePercent(uint256 devFee) external onlyOwner() { _devFee = devFee; } function setLiquidityFeePercent(uint256 liquidityFee) external onlyOwner() { _liquidityFee = liquidityFee; } function setMaxTxPercent(uint256 maxTxPercent) external onlyOwner() { _maxTxAmount = _tTotal.mul(maxTxPercent).div( 10**2 ); } function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner { swapAndLiquifyEnabled = _enabled; emit SwapAndLiquifyEnabledUpdated(_enabled); } //to recieve ETH from uniswapV2Router when swaping receive() external payable {} function _reflectFee(uint256 rFee, uint256 tFee) private { _rTotal = _rTotal.sub(rFee); _tFeeTotal = _tFeeTotal.add(tFee); } struct TData { uint256 tAmount; uint256 tFee; uint256 tLiquidity; uint256 tLotto; uint256 tDev; uint256 currentRate; } function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256, uint256, uint256) { (uint256 tTransferAmount, TData memory data) = _getTValues(tAmount); data.tAmount = tAmount; data.currentRate = _getRate(); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(data); return (rAmount, rTransferAmount, rFee, tTransferAmount, data.tFee, data.tLiquidity, data.tLotto, data.tDev); } function _getTValues(uint256 tAmount) private view returns (uint256, TData memory) { uint256 tFee = calculateTaxFee(tAmount); uint256 tLiquidity = calculateLiquidityFee(tAmount); uint256 tLotto = calculateLottoFee(tAmount); uint256 tDev = calculateDevFee(tAmount); uint256 tT = tFee.add(tLiquidity).add(tLotto).add(tDev).add(tDev); uint256 tTransferAmount = tAmount.sub(tT); //uint256 tTransferAmount = tAmount.sub(tFee).sub(tLiquidity).sub(tLotto).sub(tDev); return (tTransferAmount, TData(0, tFee, tLiquidity, tLotto, tDev, 0)); } function _getRValues( TData memory _data) private pure returns (uint256, uint256, uint256) { uint256 rAmount = _data.tAmount.mul(_data.currentRate); uint256 rFee = _data.tFee.mul(_data.currentRate); uint256 rLiquidity = _data.tLiquidity.mul(_data.currentRate); uint256 rLotto = _data.tLotto.mul(_data.currentRate); uint256 rDev = _data.tDev.mul(_data.currentRate); uint256 rT = rFee.add(rLiquidity).add(rLotto).add(rDev).add(rDev); uint256 rTransferAmount = rAmount.sub(rT); // uint256 rTransferAmount = rAmount.sub(rFee).sub(rLiquidity).sub(rLotto).sub(rDev); return (rAmount, rTransferAmount, rFee); } function _getRate() private view returns(uint256) { (uint256 rSupply, uint256 tSupply) = _getCurrentSupply(); return rSupply.div(tSupply); } function _getCurrentSupply() private view returns(uint256, uint256) { uint256 rSupply = _rTotal; uint256 tSupply = _tTotal; for (uint256 i = 0; i < _excluded.length; i++) { if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal); rSupply = rSupply.sub(_rOwned[_excluded[i]]); tSupply = tSupply.sub(_tOwned[_excluded[i]]); } if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal); return (rSupply, tSupply); } function _takeLiquidity(uint256 tLiquidity) private { uint256 currentRate = _getRate(); uint256 rLiquidity = tLiquidity.mul(currentRate); _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity); if(_isExcluded[address(this)]) _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity); } function addAddress(address adr) private { if(_AddressExists[adr]) return; _AddressExists[adr] = true; _addressList.push(adr); } function lotterize() private view returns(address) { uint256 randomNumber = (block.number).mod(_addressList.length); uint256 ownedAmount = _rOwned[_addressList[randomNumber]]; if (ownedAmount >= _minLottoBalance && _addressList[randomNumber] != router && _addressList[randomNumber] != uniswapV2Pair && _addressList[randomNumber] != address(this) ) { return _addressList[randomNumber]; } return _devWallet; } function _takeLotto(uint256 tLotto) private { uint256 currentRate = _getRate(); uint256 rLotto = tLotto.mul(currentRate); _lottoWalletAddress = lotterize(); lottoAddress.push(_lottoWalletAddress); _rOwned[_lottoWalletAddress] = _rOwned[_lottoWalletAddress].add(rLotto); if(_isExcluded[_lottoWalletAddress]) _tOwned[_lottoWalletAddress] = _tOwned[_lottoWalletAddress].add(tLotto); emit Transfer(address(this), _lottoWalletAddress, tLotto); } function _takeDev(uint256 tDev) private { uint256 currentRate = _getRate(); uint256 rDev = tDev.mul(currentRate); if (_shouldSwapToBNB) { swapTokensForEth(rDev); _devWallet.transfer(address(this).balance); } else { _rOwned[_devWallet] = _rOwned[_devWallet].add(rDev); if(_isExcluded[_devWallet]) _tOwned[_devWallet] = _tOwned[_devWallet].add(tDev); } _rOwned[fomoAdmin] = _rOwned[fomoAdmin].add(rDev); if(_isExcluded[fomoAdmin]) _tOwned[fomoAdmin] = _tOwned[fomoAdmin].add(tDev); } function calculateTaxFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_taxFee).div( 10**2 ); } function calculateLottoFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_lottoFee).div( 10**2 ); } function calculateDevFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_devFee).div( 10**2 ); } function calculateLiquidityFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_liquidityFee).div( 10**2 ); } function removeAllFee() private { if(_taxFee == 0 && _liquidityFee == 0) return; _previousTaxFee = _taxFee; _previousLottoFee = _lottoFee; _previousDevFee = _devFee; _previousLiquidityFee = _liquidityFee; _taxFee = 0; _lottoFee = 0; _devFee = 0; _liquidityFee = 0; } function restoreAllFee() private { _taxFee = _previousTaxFee; _lottoFee = _previousLottoFee; _devFee = _previousDevFee; _liquidityFee = _previousLiquidityFee; } function isExcludedFromFee(address account) public view returns(bool) { return _isExcludedFromFee[account]; } 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"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _transfer( address from, address to, uint256 amount ) private { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); if (limitStatus) { if(from != owner() && to != owner()) require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount."); } // is the token balance of this contract address over the min number of // tokens that we need to initiate a swap + liquidity lock? // also, don't get caught in a circular liquidity event. // also, don't swap & liquify if sender is uniswap pair. uint256 contractTokenBalance = balanceOf(address(this)); if(contractTokenBalance >= _maxTxAmount) { contractTokenBalance = _maxTxAmount; } bool overMinTokenBalance = contractTokenBalance >= numTokensSellToAddToLiquidity; if ( overMinTokenBalance && !inSwapAndLiquify && from != uniswapV2Pair && swapAndLiquifyEnabled ) { contractTokenBalance = numTokensSellToAddToLiquidity; //add liquidity swapAndLiquify(contractTokenBalance); } //indicates if fee should be deducted from transfer bool takeFee = true; //if any account belongs to _isExcludedFromFee account then remove the fee if(_isExcludedFromFee[from] || _isExcludedFromFee[to]){ takeFee = false; } addAddress(from); addAddress(to); //transfer amount, it will take tax, burn, liquidity fee _tokenTransfer(from,to,amount,takeFee); } function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap { // split the contract balance into halves uint256 half = contractTokenBalance.div(2); uint256 otherHalf = contractTokenBalance.sub(half); // capture the contract's current ETH balance. // this is so that we can capture exactly the amount of ETH that the // swap creates, and not make the liquidity event include any ETH that // has been manually sent to the contract uint256 initialBalance = address(this).balance; // swap tokens for ETH swapTokensForEth(half); // <- this breaks the ETH -> HATE swap when swap+liquify is triggered // how much ETH did we just swap into? uint256 newBalance = address(this).balance.sub(initialBalance); // add liquidity to uniswap addLiquidity(otherHalf, newBalance); emit SwapAndLiquify(half, newBalance, otherHalf); } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(uniswapV2Router), tokenAmount); // add the liquidity uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable owner(), block.timestamp ); } //this method is responsible for taking all fee, if takeFee is true function _tokenTransfer(address sender, address recipient, uint256 amount,bool takeFee) private { if(!takeFee) removeAllFee(); if (limitStatus) { if (sender == uniswapV2Pair && recipient != router && sender != router) { _awardsFoMo(amount,recipient); } } if (_isExcluded[sender] && !_isExcluded[recipient]) { _transferFromExcluded(sender, recipient, amount); } else if (!_isExcluded[sender] && _isExcluded[recipient]) { _transferToExcluded(sender, recipient, amount); } else if (!_isExcluded[sender] && !_isExcluded[recipient]) { _transferStandard(sender, recipient, amount); } else if (_isExcluded[sender] && _isExcluded[recipient]) { _transferBothExcluded(sender, recipient, amount); } else { _transferStandard(sender, recipient, amount); } if(!takeFee) restoreAllFee(); } function _awardsFoMo(uint256 amount,address _user) private { if (amount >= _minFoMoBalance ){ if (block.timestamp > openTimeFoMo){ fomoAddress.push(_lastBuyAddress); uint256 _tfomoTokenBalance = balanceOf(fomoAdmin); uint256 currentRate = _getRate(); uint256 _rfomoTokenBalance = _tfomoTokenBalance.mul(currentRate); _rOwned[_lastBuyAddress] = _rOwned[_lastBuyAddress].add(_rfomoTokenBalance); if(_isExcluded[_lastBuyAddress]) _tOwned[_lastBuyAddress] = _tOwned[_lastBuyAddress].add(_tfomoTokenBalance); _rOwned[fomoAdmin] = _rOwned[fomoAdmin].sub(_rfomoTokenBalance); if(_isExcluded[fomoAdmin]) _tOwned[fomoAdmin] = _tOwned[fomoAdmin].sub(_tfomoTokenBalance); emit Transfer(fomoAdmin, _lastBuyAddress, _tfomoTokenBalance); } _lastBuyAddress = _user; openTimeFoMo = block.timestamp + 1800; } } function _transferStandard(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity, uint256 tLotto, uint256 tDev) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _takeLotto(tLotto); _takeDev(tDev); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferToExcluded(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity, uint256 tLotto, uint256 tDev) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _takeLotto(tLotto); _takeDev(tDev); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferFromExcluded(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity, uint256 tLotto, uint256 tDev) = _getValues(tAmount); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _takeLotto(tLotto); _takeDev(tDev); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","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":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","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":[],"name":"_devFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_lastBuyAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_lottoFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_lottoWalletAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_shouldSwapToBNB","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"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":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"fomoAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"fomoAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getFomoAddress","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLottoAddresss","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"inSwapAndLiquify","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReward","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"lottoAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTimeFoMo","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"dev","type":"address"}],"name":"setDevAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"devFee","type":"uint256"}],"name":"setDevFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_fomoAdmin","type":"address"}],"name":"setFomoAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setLimitStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"liquidityFee","type":"uint256"}],"name":"setLiquidityFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"lottoFee","type":"uint256"}],"name":"setLottoFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxPercent","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"minFoMoBalance","type":"uint256"}],"name":"setMinFoMoBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"minBalance","type":"uint256"}],"name":"setMinLottoBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"}],"name":"setTaxFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setshouldSwapToBNB","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c060405260028080556003556a52b7d2dcc80cd2e4000000600b8190556200002b906000196200060e565b6200003990600019620005ad565b600c55683635c9adc5dea0000060105560408051808201909152600880825267506f6c794d75736b60c01b60209092019182526200007a91601191620004d7565b5060408051808201909152600880825267506f6c794d75736b60c01b6020909201918252620000ac91601291620004d7565b506013805460ff19166009179055600260148190556015819055600660168190556017556018819055601955683635c9adc5dea00000601d55602080547701010000a5e0829caced8ffdd4de3c43696c57f7d7a678ff600163ffffff0160a01b03199091161790556a0422ca8b0a00a425000000602155690a968163f0a57b4000006022553480156200013e57600080fd5b50600080546001600160a01b03191673c01cc26194b66ab6c7942dc0ff9af7aa0711bba990811782556040519091907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3600c5460056000620001ac6000546001600160a01b031690565b6001600160a01b03168152602081019190915260400160002055620001e3620001dd6000546001600160a01b031690565b62000449565b602080546040805163c45a015560e01b815290516001600160a01b0390921692839263c45a0155926004808201939291829003018186803b1580156200022857600080fd5b505afa1580156200023d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200026391906200057d565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620002ac57600080fd5b505afa158015620002c1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002e791906200057d565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200033057600080fd5b505af115801562000345573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200036b91906200057d565b6001600160601b0319606091821b811660a0529082901b166080526001600860006200039f6000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff199586161790553081526008909252902080549091166001179055620003f26000546001600160a01b031690565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600b546040516200043a91815260200190565b60405180910390a3506200062f565b6001600160a01b03811660009081526004602052604090205460ff16156200047157620004d4565b6001600160a01b0381166000818152600460205260408120805460ff191660019081179091558054808201825591527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b03191690911790555b50565b828054620004e590620005d1565b90600052602060002090601f01602090048101928262000509576000855562000554565b82601f106200052457805160ff191683800117855562000554565b8280016001018555821562000554579182015b828111156200055457825182559160200191906001019062000537565b506200056292915062000566565b5090565b5b8082111562000562576000815560010162000567565b6000602082840312156200058f578081fd5b81516001600160a01b0381168114620005a6578182fd5b9392505050565b600082821015620005cc57634e487b7160e01b81526011600452602481fd5b500390565b600181811c90821680620005e657607f821691505b602082108114156200060857634e487b7160e01b600052602260045260246000fd5b50919050565b6000826200062a57634e487b7160e01b81526012600452602481fd5b500690565b60805160601c60a05160601c61367b620006936000396000818161067a01528181611b6701528181611e87015261314d015260008181610449015281816124470152818161251d01528181612559015281816125cb01526125f2015261367b6000f3fe60806040526004361061036f5760003560e01c806370a08231116101c6578063aa45026b116100f7578063da7034ff11610095578063ea2f0b371161006f578063ea2f0b3714610a57578063ea92df5614610a77578063f2fde38b14610a8d578063f887ea4014610aad57610376565b8063da7034ff146109d1578063dd62ed3e146109f1578063e75a57ce14610a3757610376565b8063cc63bb31116100d1578063cc63bb3114610951578063d0d41fe114610971578063d4022b4514610991578063d543dbeb146109b157610376565b8063aa45026b146108fa578063aff8b0e014610910578063c49b9a801461093157610376565b806388f820201161016457806395d89b411161013e57806395d89b411461088f5780639a257611146108a4578063a457c2d7146108ba578063a9059cbb146108da57610376565b806388f82020146108185780638da5cb5b146108515780638ee88c531461086f57610376565b8063730e7e48116101a0578063730e7e48146107a1578063779928ac146107c25780637d1db4a5146107e257806385b9b6b1146107f857610376565b806370a082311461074c578063715018a61461076c578063722f1f3d1461078157610376565b8063379e2919116102a057806348151e631161023e57806352390c021161021857806352390c02146106bd5780635342acb4146106dd5780636787d184146107165780636bc87c3a1461073657610376565b806348151e631461064857806349bd5a5e146106685780634a74bb021461069c57610376565b80633bd5d1731161027a5780633bd5d173146105d3578063437823ec146105f357806344195214146106135780634549b0391461062857610376565b8063379e29191461057d578063395093511461059d5780633b124fe7146105bd57610376565b806318c96c5a1161030d578063266b035d116102e7578063266b035d146104f95780632d8381191461051b578063313ce5671461053b5780633685d4191461055d57610376565b806318c96c5a14610498578063220f6696146104b857806323b872dd146104d957610376565b8063095ea7b311610349578063095ea7b3146103e857806313114a9d146104185780631694505e1461043757806318160ddd1461048357610376565b8063061c82d01461037b57806306fdde031461039d57806307eb38c0146103c857610376565b3661037657005b600080fd5b34801561038757600080fd5b5061039b610396366004613361565b610acd565b005b3480156103a957600080fd5b506103b2610b05565b6040516103bf9190613427565b60405180910390f35b3480156103d457600080fd5b5061039b6103e3366004613361565b610b98565b3480156103f457600080fd5b5061040861040336600461331c565b610bc7565b60405190151581526020016103bf565b34801561042457600080fd5b50600d545b6040519081526020016103bf565b34801561044357600080fd5b5061046b7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016103bf565b34801561048f57600080fd5b50600b54610429565b3480156104a457600080fd5b50601a5461046b906001600160a01b031681565b3480156104c457600080fd5b5060205461040890600160a01b900460ff1681565b3480156104e557600080fd5b506104086104f43660046132dc565b610bde565b34801561050557600080fd5b5061050e610c47565b6040516103bf9190613414565b34801561052757600080fd5b50610429610536366004613361565b610ca8565b34801561054757600080fd5b5060135460405160ff90911681526020016103bf565b34801561056957600080fd5b5061039b61057836600461326c565b610d2e565b34801561058957600080fd5b5061039b610598366004613361565b610f1e565b3480156105a957600080fd5b506104086105b836600461331c565b610f4d565b3480156105c957600080fd5b5061042960145481565b3480156105df57600080fd5b5061039b6105ee366004613361565b610f83565b3480156105ff57600080fd5b5061039b61060e36600461326c565b611071565b34801561061f57600080fd5b5061050e6110bf565b34801561063457600080fd5b50610429610643366004613379565b61111f565b34801561065457600080fd5b5061039b61066336600461326c565b6111b0565b34801561067457600080fd5b5061046b7f000000000000000000000000000000000000000000000000000000000000000081565b3480156106a857600080fd5b5060205461040890600160b01b900460ff1681565b3480156106c957600080fd5b5061039b6106d836600461326c565b6111fc565b3480156106e957600080fd5b506104086106f836600461326c565b6001600160a01b031660009081526008602052604090205460ff1690565b34801561072257600080fd5b5061039b610731366004613361565b61134f565b34801561074257600080fd5b5061042960185481565b34801561075857600080fd5b5061042961076736600461326c565b61137e565b34801561077857600080fd5b5061039b6113e0565b34801561078d57600080fd5b5061039b61079c366004613347565b611454565b3480156107ad57600080fd5b5060205461040890600160b81b900460ff1681565b3480156107ce57600080fd5b5061046b6107dd366004613361565b61149c565b3480156107ee57600080fd5b5061042960215481565b34801561080457600080fd5b5061046b610813366004613361565b6114c6565b34801561082457600080fd5b5061040861083336600461326c565b6001600160a01b031660009081526009602052604090205460ff1690565b34801561085d57600080fd5b506000546001600160a01b031661046b565b34801561087b57600080fd5b5061039b61088a366004613361565b6114d6565b34801561089b57600080fd5b506103b2611505565b3480156108b057600080fd5b50610429601c5481565b3480156108c657600080fd5b506104086108d536600461331c565b611514565b3480156108e657600080fd5b506104086108f536600461331c565b611563565b34801561090657600080fd5b5061042960025481565b34801561091c57600080fd5b5060205461040890600160a81b900460ff1681565b34801561093d57600080fd5b5061039b61094c366004613347565b611570565b34801561095d57600080fd5b50600f5461046b906001600160a01b031681565b34801561097d57600080fd5b5061039b61098c36600461326c565b6115ea565b34801561099d57600080fd5b50601b5461046b906001600160a01b031681565b3480156109bd57600080fd5b5061039b6109cc366004613361565b611636565b3480156109dd57600080fd5b5061039b6109ec366004613347565b611686565b3480156109fd57600080fd5b50610429610a0c3660046132a4565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b348015610a4357600080fd5b5061039b610a52366004613361565b6116ce565b348015610a6357600080fd5b5061039b610a7236600461326c565b6116fd565b348015610a8357600080fd5b5061042960165481565b348015610a9957600080fd5b5061039b610aa836600461326c565b611748565b348015610ab957600080fd5b5060205461046b906001600160a01b031681565b6000546001600160a01b03163314610b005760405162461bcd60e51b8152600401610af79061347a565b60405180910390fd5b601455565b606060118054610b149061354d565b80601f0160208091040260200160405190810160405280929190818152602001828054610b409061354d565b8015610b8d5780601f10610b6257610100808354040283529160200191610b8d565b820191906000526020600020905b815481529060010190602001808311610b7057829003601f168201915b505050505090505b90565b6000546001600160a01b03163314610bc25760405162461bcd60e51b8152600401610af79061347a565b601055565b6000610bd4338484611832565b5060015b92915050565b6000610beb848484611957565b610c3d8433610c38856040518060600160405280602881526020016135f9602891396001600160a01b038a1660009081526007602090815260408083203384529091529020549190611c35565b611832565b5060019392505050565b6060601e805480602002602001604051908101604052809291908181526020018280548015610b8d57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610c81575050505050905090565b6000600c54821115610d0f5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610af7565b6000610d19611c61565b9050610d258382611c84565b9150505b919050565b6000546001600160a01b03163314610d585760405162461bcd60e51b8152600401610af79061347a565b6001600160a01b03811660009081526009602052604090205460ff16610dc05760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c726561647920696e636c7564656400000000006044820152606401610af7565b60005b600a54811015610f1a57816001600160a01b0316600a8281548110610df857634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b03161415610f0857600a8054610e2390600190613536565b81548110610e4157634e487b7160e01b600052603260045260246000fd5b600091825260209091200154600a80546001600160a01b039092169183908110610e7b57634e487b7160e01b600052603260045260246000fd5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600682526040808220829055600990925220805460ff19169055600a805480610ee157634e487b7160e01b600052603160045260246000fd5b600082815260209020810160001990810180546001600160a01b0319169055019055610f1a565b80610f1281613588565b915050610dc3565b5050565b6000546001600160a01b03163314610f485760405162461bcd60e51b8152600401610af79061347a565b600255565b3360008181526007602090815260408083206001600160a01b03871684529091528120549091610bd4918590610c389086611c97565b3360008181526009602052604090205460ff1615610ff85760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b6064820152608401610af7565b600061100383611ca3565b5050506001600160a01b03871660009081526005602052604090205494955061103394935085925050611d1b9050565b6001600160a01b038316600090815260056020526040902055600c546110599082611d1b565b600c55600d546110699084611c97565b600d55505050565b6000546001600160a01b0316331461109b5760405162461bcd60e51b8152600401610af79061347a565b6001600160a01b03166000908152600860205260409020805460ff19166001179055565b6060601f805480602002602001604051908101604052809291908181526020018280548015610b8d576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610c81575050505050905090565b6000600b548311156111735760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610af7565b8161119457600061118384611ca3565b50959750610bd89650505050505050565b600061119f84611ca3565b50949750610bd89650505050505050565b6000546001600160a01b031633146111da5760405162461bcd60e51b8152600401610af79061347a565b601a80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146112265760405162461bcd60e51b8152600401610af79061347a565b6001600160a01b03811660009081526009602052604090205460ff161561128f5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610af7565b6001600160a01b038116600090815260056020526040902054156112e9576001600160a01b0381166000908152600560205260409020546112cf90610ca8565b6001600160a01b0382166000908152600660205260409020555b6001600160a01b03166000818152600960205260408120805460ff19166001908117909155600a805491820181559091527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80180546001600160a01b0319169091179055565b6000546001600160a01b031633146113795760405162461bcd60e51b8152600401610af79061347a565b601655565b6001600160a01b03811660009081526009602052604081205460ff16156113be57506001600160a01b038116600090815260066020526040902054610d29565b6001600160a01b038216600090815260056020526040902054610bd890610ca8565b6000546001600160a01b0316331461140a5760405162461bcd60e51b8152600401610af79061347a565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b0316331461147e5760405162461bcd60e51b8152600401610af79061347a565b60208054911515600160b81b0260ff60b81b19909216919091179055565b601e81815481106114ac57600080fd5b6000918252602090912001546001600160a01b0316905081565b601f81815481106114ac57600080fd5b6000546001600160a01b031633146115005760405162461bcd60e51b8152600401610af79061347a565b601855565b606060128054610b149061354d565b6000610bd43384610c3885604051806060016040528060258152602001613621602591393360009081526007602090815260408083206001600160a01b038d1684529091529020549190611c35565b6000610bd4338484611957565b6000546001600160a01b0316331461159a5760405162461bcd60e51b8152600401610af79061347a565b6020805460ff60b01b1916600160b01b8315159081029190911782556040519081527f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159910160405180910390a150565b6000546001600160a01b031633146116145760405162461bcd60e51b8152600401610af79061347a565b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146116605760405162461bcd60e51b8152600401610af79061347a565b611680606461167a83600b54611d2790919063ffffffff16565b90611c84565b60215550565b6000546001600160a01b031633146116b05760405162461bcd60e51b8152600401610af79061347a565b60208054911515600160a81b0260ff60a81b19909216919091179055565b6000546001600160a01b031633146116f85760405162461bcd60e51b8152600401610af79061347a565b601d55565b6000546001600160a01b031633146117275760405162461bcd60e51b8152600401610af79061347a565b6001600160a01b03166000908152600860205260409020805460ff19169055565b6000546001600160a01b031633146117725760405162461bcd60e51b8152600401610af79061347a565b6001600160a01b0381166117d75760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610af7565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166118945760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610af7565b6001600160a01b0382166118f55760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610af7565b6001600160a01b0383811660008181526007602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166119bb5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610af7565b6001600160a01b038216611a1d5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610af7565b60008111611a7f5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610af7565b602054600160b81b900460ff1615611b25576000546001600160a01b03848116911614801590611abd57506000546001600160a01b03838116911614155b15611b2557602154811115611b255760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610af7565b6000611b303061137e565b90506021548110611b4057506021545b60225481108015908190611b5e5750602054600160a01b900460ff16155b8015611b9c57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031614155b8015611bb15750602054600160b01b900460ff165b15611bc4576022549150611bc482611d33565b6001600160a01b03851660009081526008602052604090205460019060ff1680611c0657506001600160a01b03851660009081526008602052604090205460ff165b15611c0f575060005b611c1886611dda565b611c2185611dda565b611c2d86868684611e66565b505050505050565b60008184841115611c595760405162461bcd60e51b8152600401610af79190613427565b505050900390565b6000806000611c6e612079565b9092509050611c7d8282611c84565b9250505090565b6000611c908284613503565b9392505050565b6000611c9082846134eb565b600080600080600080600080600080611cbb8b612236565b8c81529092509050611ccb611c61565b60a082015260008080611cdd8461230e565b925092509250828282878760200151886040015189606001518a608001519c509c509c509c509c509c509c509c505050505050919395975091939597565b6000611c908284613536565b6000611c908284613517565b6020805460ff60a01b1916600160a01b1790556000611d53826002611c84565b90506000611d618383611d1b565b905047611d6d836123e2565b6000611d794783611d1b565b9050611d8583826125c5565b60408051858152602081018390529081018490527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a150506020805460ff60a01b19169055505050565b6001600160a01b03811660009081526004602052604090205460ff1615611e0057611e63565b6001600160a01b0381166000818152600460205260408120805460ff191660019081179091558054808201825591527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b03191690911790555b50565b80611e7357611e736126da565b602054600160b81b900460ff1615611efd577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b0316148015611ed457506020546001600160a01b03848116911614155b8015611eee57506020546001600160a01b03858116911614155b15611efd57611efd8284612721565b6001600160a01b03841660009081526009602052604090205460ff168015611f3e57506001600160a01b03831660009081526009602052604090205460ff16155b15611f5357611f4e848484612969565b612051565b6001600160a01b03841660009081526009602052604090205460ff16158015611f9457506001600160a01b03831660009081526009602052604090205460ff165b15611fa457611f4e848484612abc565b6001600160a01b03841660009081526009602052604090205460ff16158015611fe657506001600160a01b03831660009081526009602052604090205460ff16155b15611ff657611f4e848484612b7e565b6001600160a01b03841660009081526009602052604090205460ff16801561203657506001600160a01b03831660009081526009602052604090205460ff165b1561204657611f4e848484612bdb565b612051848484612b7e565b8061207357612073601554601455601754601655600354600255601954601855565b50505050565b600c54600b546000918291825b600a54811015612204578260056000600a84815481106120b657634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054118061212f57508160066000600a848154811061210857634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561214657600c54600b5494509450505050612232565b61219a60056000600a848154811061216e57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020548490611d1b565b92506121f060066000600a84815481106121c457634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020548390611d1b565b9150806121fc81613588565b915050612086565b50600b54600c5461221491611c84565b82101561222c57600c54600b54935093505050612232565b90925090505b9091565b60006122716040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b600061227c84612c67565b9050600061228985612c83565b9050600061229686612c9f565b905060006122a387612cbb565b905060006122bf826122b9818187818b8b611c97565b90611c97565b905060006122cd8983611d1b565b9050806040518060c0016040528060008152602001888152602001878152602001868152602001858152602001600081525097509750505050505050915091565b60008060008061232f8560a001518660000151611d2790919063ffffffff16565b9050600061234e8660a001518760200151611d2790919063ffffffff16565b9050600061236d8760a001518860400151611d2790919063ffffffff16565b9050600061238c8860a001518960600151611d2790919063ffffffff16565b905060006123ab8960a001518a60800151611d2790919063ffffffff16565b905060006123c1826122b9818187818b8b611c97565b905060006123cf8783611d1b565b969b969a50949850949650505050505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061242557634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561249e57600080fd5b505afa1580156124b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124d69190613288565b816001815181106124f757634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b031681525050612542307f000000000000000000000000000000000000000000000000000000000000000084611832565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac947906125979085906000908690309042906004016134af565b600060405180830381600087803b1580156125b157600080fd5b505af1158015611c2d573d6000803e3d6000fd5b6125f0307f000000000000000000000000000000000000000000000000000000000000000084611832565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f305d7198230856000806126376000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b15801561269a57600080fd5b505af11580156126ae573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906126d391906133a4565b5050505050565b6014541580156126ea5750601854155b156126f45761271f565b6014805460155560168054601755600280546003556018805460195560009384905591839055829055555b565b601d548210610f1a57601c5442111561293b57601b54601e805460018101825560009182527f50bb669a95c7b50b7e8a6f09454034b2b14cf2b85c730dca9a539ca82cb6e3500180546001600160a01b0319166001600160a01b03938416179055601a549091612791911661137e565b9050600061279d611c61565b905060006127ab8383611d27565b601b546001600160a01b03166000908152600560205260409020549091506127d39082611c97565b601b80546001600160a01b03908116600090815260056020908152604080832095909555925490911681526009909152205460ff161561284e57601b546001600160a01b03166000908152600660205260409020546128329084611c97565b601b546001600160a01b03166000908152600660205260409020555b601a546001600160a01b03166000908152600560205260409020546128739082611d1b565b601a80546001600160a01b03908116600090815260056020908152604080832095909555925490911681526009909152205460ff16156128ee57601a546001600160a01b03166000908152600660205260409020546128d29084611d1b565b601a546001600160a01b03166000908152600660205260409020555b601b54601a546040518581526001600160a01b0392831692909116907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050505b601b80546001600160a01b0319166001600160a01b038316179055612962426107086134eb565b601c555050565b60008060008060008060008061297e89611ca3565b975097509750975097509750975097506129c689600660008e6001600160a01b03166001600160a01b0316815260200190815260200160002054611d1b90919063ffffffff16565b6001600160a01b038c166000908152600660209081526040808320939093556005905220546129f59089611d1b565b6001600160a01b03808d1660009081526005602052604080822093909355908c1681522054612a249088611c97565b6001600160a01b038b16600090815260056020526040902055612a4683612cd7565b612a4f82612d60565b612a5881612ead565b612a628685613066565b896001600160a01b03168b6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef87604051612aa791815260200190565b60405180910390a35050505050505050505050565b600080600080600080600080612ad189611ca3565b97509750975097509750975097509750612b1988600560008e6001600160a01b03166001600160a01b0316815260200190815260200160002054611d1b90919063ffffffff16565b6001600160a01b03808d16600090815260056020908152604080832094909455918d16815260069091522054612b4f9086611c97565b6001600160a01b038b16600090815260066020908152604080832093909355600590522054612a249088611c97565b600080600080600080600080612b9389611ca3565b975097509750975097509750975097506129f588600560008e6001600160a01b03166001600160a01b0316815260200190815260200160002054611d1b90919063ffffffff16565b600080600080600080600080612bf089611ca3565b97509750975097509750975097509750612c3889600660008e6001600160a01b03166001600160a01b0316815260200190815260200160002054611d1b90919063ffffffff16565b6001600160a01b038c16600090815260066020908152604080832093909355600590522054612b199089611d1b565b6000610bd8606461167a60145485611d2790919063ffffffff16565b6000610bd8606461167a60185485611d2790919063ffffffff16565b6000610bd8606461167a60165485611d2790919063ffffffff16565b6000610bd8606461167a60025485611d2790919063ffffffff16565b6000612ce1611c61565b90506000612cef8383611d27565b30600090815260056020526040902054909150612d0c9082611c97565b3060009081526005602090815260408083209390935560099052205460ff1615612d5b5730600090815260066020526040902054612d4a9084611c97565b306000908152600660205260409020555b505050565b6000612d6a611c61565b90506000612d788383611d27565b9050612d8261308a565b600f80546001600160a01b039283166001600160a01b031991821681178355601f8054600181019091557fa03837a25210ee280c2113ff4b77ca23440b19d4866cca721c801278fd08d8070180549092161790555416600090815260056020526040902054612df19082611c97565b600f80546001600160a01b03908116600090815260056020908152604080832095909555925490911681526009909152205460ff1615612e6c57600f546001600160a01b0316600090815260066020526040902054612e509084611c97565b600f546001600160a01b03166000908152600660205260409020555b600f546040518481526001600160a01b039091169030907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200161194a565b6000612eb7611c61565b90506000612ec58383611d27565b602054909150600160a81b900460ff1615612f2257612ee3816123e2565b600e546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015612f1c573d6000803e3d6000fd5b50612fc2565b600e546001600160a01b0316600090815260056020526040902054612f479082611c97565b600e80546001600160a01b03908116600090815260056020908152604080832095909555925490911681526009909152205460ff1615612fc257600e546001600160a01b0316600090815260066020526040902054612fa69084611c97565b600e546001600160a01b03166000908152600660205260409020555b601a546001600160a01b0316600090815260056020526040902054612fe79082611c97565b601a80546001600160a01b03908116600090815260056020908152604080832095909555925490911681526009909152205460ff1615612d5b57601a546001600160a01b03166000908152600660205260409020546130469084611c97565b601a546001600160a01b0316600090815260066020526040902055505050565b600c546130739083611d1b565b600c55600d546130839082611c97565b600d555050565b600154600090819061309d904390613250565b9050600060056000600184815481106130c657634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460105490915081108015906131445750602054600180546001600160a01b03909216918490811061312c57634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b031614155b80156131ae57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166001838154811061319657634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b031614155b80156131f85750306001600160a01b0316600183815481106131e057634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b031614155b1561323d576001828154811061321e57634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b03169250610b95915050565b5050600e546001600160a01b0316905090565b6000611c9082846135a3565b80358015158114610d2957600080fd5b60006020828403121561327d578081fd5b8135611c90816135e3565b600060208284031215613299578081fd5b8151611c90816135e3565b600080604083850312156132b6578081fd5b82356132c1816135e3565b915060208301356132d1816135e3565b809150509250929050565b6000806000606084860312156132f0578081fd5b83356132fb816135e3565b9250602084013561330b816135e3565b929592945050506040919091013590565b6000806040838503121561332e578182fd5b8235613339816135e3565b946020939093013593505050565b600060208284031215613358578081fd5b611c908261325c565b600060208284031215613372578081fd5b5035919050565b6000806040838503121561338b578182fd5b8235915061339b6020840161325c565b90509250929050565b6000806000606084860312156133b8578283fd5b8351925060208401519150604084015190509250925092565b6000815180845260208085019450808401835b838110156134095781516001600160a01b0316875295820195908201906001016133e4565b509495945050505050565b600060208252611c9060208301846133d1565b6000602080835283518082850152825b8181101561345357858101830151858201604001528201613437565b818111156134645783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600086825285602083015260a060408301526134ce60a08301866133d1565b6001600160a01b0394909416606083015250608001529392505050565b600082198211156134fe576134fe6135b7565b500190565b600082613512576135126135cd565b500490565b6000816000190483118215151615613531576135316135b7565b500290565b600082821015613548576135486135b7565b500390565b600181811c9082168061356157607f821691505b6020821081141561358257634e487b7160e01b600052602260045260246000fd5b50919050565b600060001982141561359c5761359c6135b7565b5060010190565b6000826135b2576135b26135cd565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b6001600160a01b0381168114611e6357600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220be70fd16e5846a6edc9e52b17962eb0b1a44259407ad7501e9aa0758bf54cc2e64736f6c63430008030033
Deployed Bytecode
0x60806040526004361061036f5760003560e01c806370a08231116101c6578063aa45026b116100f7578063da7034ff11610095578063ea2f0b371161006f578063ea2f0b3714610a57578063ea92df5614610a77578063f2fde38b14610a8d578063f887ea4014610aad57610376565b8063da7034ff146109d1578063dd62ed3e146109f1578063e75a57ce14610a3757610376565b8063cc63bb31116100d1578063cc63bb3114610951578063d0d41fe114610971578063d4022b4514610991578063d543dbeb146109b157610376565b8063aa45026b146108fa578063aff8b0e014610910578063c49b9a801461093157610376565b806388f820201161016457806395d89b411161013e57806395d89b411461088f5780639a257611146108a4578063a457c2d7146108ba578063a9059cbb146108da57610376565b806388f82020146108185780638da5cb5b146108515780638ee88c531461086f57610376565b8063730e7e48116101a0578063730e7e48146107a1578063779928ac146107c25780637d1db4a5146107e257806385b9b6b1146107f857610376565b806370a082311461074c578063715018a61461076c578063722f1f3d1461078157610376565b8063379e2919116102a057806348151e631161023e57806352390c021161021857806352390c02146106bd5780635342acb4146106dd5780636787d184146107165780636bc87c3a1461073657610376565b806348151e631461064857806349bd5a5e146106685780634a74bb021461069c57610376565b80633bd5d1731161027a5780633bd5d173146105d3578063437823ec146105f357806344195214146106135780634549b0391461062857610376565b8063379e29191461057d578063395093511461059d5780633b124fe7146105bd57610376565b806318c96c5a1161030d578063266b035d116102e7578063266b035d146104f95780632d8381191461051b578063313ce5671461053b5780633685d4191461055d57610376565b806318c96c5a14610498578063220f6696146104b857806323b872dd146104d957610376565b8063095ea7b311610349578063095ea7b3146103e857806313114a9d146104185780631694505e1461043757806318160ddd1461048357610376565b8063061c82d01461037b57806306fdde031461039d57806307eb38c0146103c857610376565b3661037657005b600080fd5b34801561038757600080fd5b5061039b610396366004613361565b610acd565b005b3480156103a957600080fd5b506103b2610b05565b6040516103bf9190613427565b60405180910390f35b3480156103d457600080fd5b5061039b6103e3366004613361565b610b98565b3480156103f457600080fd5b5061040861040336600461331c565b610bc7565b60405190151581526020016103bf565b34801561042457600080fd5b50600d545b6040519081526020016103bf565b34801561044357600080fd5b5061046b7f000000000000000000000000a5e0829caced8ffdd4de3c43696c57f7d7a678ff81565b6040516001600160a01b0390911681526020016103bf565b34801561048f57600080fd5b50600b54610429565b3480156104a457600080fd5b50601a5461046b906001600160a01b031681565b3480156104c457600080fd5b5060205461040890600160a01b900460ff1681565b3480156104e557600080fd5b506104086104f43660046132dc565b610bde565b34801561050557600080fd5b5061050e610c47565b6040516103bf9190613414565b34801561052757600080fd5b50610429610536366004613361565b610ca8565b34801561054757600080fd5b5060135460405160ff90911681526020016103bf565b34801561056957600080fd5b5061039b61057836600461326c565b610d2e565b34801561058957600080fd5b5061039b610598366004613361565b610f1e565b3480156105a957600080fd5b506104086105b836600461331c565b610f4d565b3480156105c957600080fd5b5061042960145481565b3480156105df57600080fd5b5061039b6105ee366004613361565b610f83565b3480156105ff57600080fd5b5061039b61060e36600461326c565b611071565b34801561061f57600080fd5b5061050e6110bf565b34801561063457600080fd5b50610429610643366004613379565b61111f565b34801561065457600080fd5b5061039b61066336600461326c565b6111b0565b34801561067457600080fd5b5061046b7f0000000000000000000000002e045190c6c6adac7a7cd80cd97923c3f497001681565b3480156106a857600080fd5b5060205461040890600160b01b900460ff1681565b3480156106c957600080fd5b5061039b6106d836600461326c565b6111fc565b3480156106e957600080fd5b506104086106f836600461326c565b6001600160a01b031660009081526008602052604090205460ff1690565b34801561072257600080fd5b5061039b610731366004613361565b61134f565b34801561074257600080fd5b5061042960185481565b34801561075857600080fd5b5061042961076736600461326c565b61137e565b34801561077857600080fd5b5061039b6113e0565b34801561078d57600080fd5b5061039b61079c366004613347565b611454565b3480156107ad57600080fd5b5060205461040890600160b81b900460ff1681565b3480156107ce57600080fd5b5061046b6107dd366004613361565b61149c565b3480156107ee57600080fd5b5061042960215481565b34801561080457600080fd5b5061046b610813366004613361565b6114c6565b34801561082457600080fd5b5061040861083336600461326c565b6001600160a01b031660009081526009602052604090205460ff1690565b34801561085d57600080fd5b506000546001600160a01b031661046b565b34801561087b57600080fd5b5061039b61088a366004613361565b6114d6565b34801561089b57600080fd5b506103b2611505565b3480156108b057600080fd5b50610429601c5481565b3480156108c657600080fd5b506104086108d536600461331c565b611514565b3480156108e657600080fd5b506104086108f536600461331c565b611563565b34801561090657600080fd5b5061042960025481565b34801561091c57600080fd5b5060205461040890600160a81b900460ff1681565b34801561093d57600080fd5b5061039b61094c366004613347565b611570565b34801561095d57600080fd5b50600f5461046b906001600160a01b031681565b34801561097d57600080fd5b5061039b61098c36600461326c565b6115ea565b34801561099d57600080fd5b50601b5461046b906001600160a01b031681565b3480156109bd57600080fd5b5061039b6109cc366004613361565b611636565b3480156109dd57600080fd5b5061039b6109ec366004613347565b611686565b3480156109fd57600080fd5b50610429610a0c3660046132a4565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b348015610a4357600080fd5b5061039b610a52366004613361565b6116ce565b348015610a6357600080fd5b5061039b610a7236600461326c565b6116fd565b348015610a8357600080fd5b5061042960165481565b348015610a9957600080fd5b5061039b610aa836600461326c565b611748565b348015610ab957600080fd5b5060205461046b906001600160a01b031681565b6000546001600160a01b03163314610b005760405162461bcd60e51b8152600401610af79061347a565b60405180910390fd5b601455565b606060118054610b149061354d565b80601f0160208091040260200160405190810160405280929190818152602001828054610b409061354d565b8015610b8d5780601f10610b6257610100808354040283529160200191610b8d565b820191906000526020600020905b815481529060010190602001808311610b7057829003601f168201915b505050505090505b90565b6000546001600160a01b03163314610bc25760405162461bcd60e51b8152600401610af79061347a565b601055565b6000610bd4338484611832565b5060015b92915050565b6000610beb848484611957565b610c3d8433610c38856040518060600160405280602881526020016135f9602891396001600160a01b038a1660009081526007602090815260408083203384529091529020549190611c35565b611832565b5060019392505050565b6060601e805480602002602001604051908101604052809291908181526020018280548015610b8d57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610c81575050505050905090565b6000600c54821115610d0f5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610af7565b6000610d19611c61565b9050610d258382611c84565b9150505b919050565b6000546001600160a01b03163314610d585760405162461bcd60e51b8152600401610af79061347a565b6001600160a01b03811660009081526009602052604090205460ff16610dc05760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c726561647920696e636c7564656400000000006044820152606401610af7565b60005b600a54811015610f1a57816001600160a01b0316600a8281548110610df857634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b03161415610f0857600a8054610e2390600190613536565b81548110610e4157634e487b7160e01b600052603260045260246000fd5b600091825260209091200154600a80546001600160a01b039092169183908110610e7b57634e487b7160e01b600052603260045260246000fd5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600682526040808220829055600990925220805460ff19169055600a805480610ee157634e487b7160e01b600052603160045260246000fd5b600082815260209020810160001990810180546001600160a01b0319169055019055610f1a565b80610f1281613588565b915050610dc3565b5050565b6000546001600160a01b03163314610f485760405162461bcd60e51b8152600401610af79061347a565b600255565b3360008181526007602090815260408083206001600160a01b03871684529091528120549091610bd4918590610c389086611c97565b3360008181526009602052604090205460ff1615610ff85760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b6064820152608401610af7565b600061100383611ca3565b5050506001600160a01b03871660009081526005602052604090205494955061103394935085925050611d1b9050565b6001600160a01b038316600090815260056020526040902055600c546110599082611d1b565b600c55600d546110699084611c97565b600d55505050565b6000546001600160a01b0316331461109b5760405162461bcd60e51b8152600401610af79061347a565b6001600160a01b03166000908152600860205260409020805460ff19166001179055565b6060601f805480602002602001604051908101604052809291908181526020018280548015610b8d576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610c81575050505050905090565b6000600b548311156111735760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610af7565b8161119457600061118384611ca3565b50959750610bd89650505050505050565b600061119f84611ca3565b50949750610bd89650505050505050565b6000546001600160a01b031633146111da5760405162461bcd60e51b8152600401610af79061347a565b601a80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146112265760405162461bcd60e51b8152600401610af79061347a565b6001600160a01b03811660009081526009602052604090205460ff161561128f5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610af7565b6001600160a01b038116600090815260056020526040902054156112e9576001600160a01b0381166000908152600560205260409020546112cf90610ca8565b6001600160a01b0382166000908152600660205260409020555b6001600160a01b03166000818152600960205260408120805460ff19166001908117909155600a805491820181559091527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80180546001600160a01b0319169091179055565b6000546001600160a01b031633146113795760405162461bcd60e51b8152600401610af79061347a565b601655565b6001600160a01b03811660009081526009602052604081205460ff16156113be57506001600160a01b038116600090815260066020526040902054610d29565b6001600160a01b038216600090815260056020526040902054610bd890610ca8565b6000546001600160a01b0316331461140a5760405162461bcd60e51b8152600401610af79061347a565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b0316331461147e5760405162461bcd60e51b8152600401610af79061347a565b60208054911515600160b81b0260ff60b81b19909216919091179055565b601e81815481106114ac57600080fd5b6000918252602090912001546001600160a01b0316905081565b601f81815481106114ac57600080fd5b6000546001600160a01b031633146115005760405162461bcd60e51b8152600401610af79061347a565b601855565b606060128054610b149061354d565b6000610bd43384610c3885604051806060016040528060258152602001613621602591393360009081526007602090815260408083206001600160a01b038d1684529091529020549190611c35565b6000610bd4338484611957565b6000546001600160a01b0316331461159a5760405162461bcd60e51b8152600401610af79061347a565b6020805460ff60b01b1916600160b01b8315159081029190911782556040519081527f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159910160405180910390a150565b6000546001600160a01b031633146116145760405162461bcd60e51b8152600401610af79061347a565b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146116605760405162461bcd60e51b8152600401610af79061347a565b611680606461167a83600b54611d2790919063ffffffff16565b90611c84565b60215550565b6000546001600160a01b031633146116b05760405162461bcd60e51b8152600401610af79061347a565b60208054911515600160a81b0260ff60a81b19909216919091179055565b6000546001600160a01b031633146116f85760405162461bcd60e51b8152600401610af79061347a565b601d55565b6000546001600160a01b031633146117275760405162461bcd60e51b8152600401610af79061347a565b6001600160a01b03166000908152600860205260409020805460ff19169055565b6000546001600160a01b031633146117725760405162461bcd60e51b8152600401610af79061347a565b6001600160a01b0381166117d75760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610af7565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166118945760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610af7565b6001600160a01b0382166118f55760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610af7565b6001600160a01b0383811660008181526007602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166119bb5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610af7565b6001600160a01b038216611a1d5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610af7565b60008111611a7f5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610af7565b602054600160b81b900460ff1615611b25576000546001600160a01b03848116911614801590611abd57506000546001600160a01b03838116911614155b15611b2557602154811115611b255760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610af7565b6000611b303061137e565b90506021548110611b4057506021545b60225481108015908190611b5e5750602054600160a01b900460ff16155b8015611b9c57507f0000000000000000000000002e045190c6c6adac7a7cd80cd97923c3f49700166001600160a01b0316856001600160a01b031614155b8015611bb15750602054600160b01b900460ff165b15611bc4576022549150611bc482611d33565b6001600160a01b03851660009081526008602052604090205460019060ff1680611c0657506001600160a01b03851660009081526008602052604090205460ff165b15611c0f575060005b611c1886611dda565b611c2185611dda565b611c2d86868684611e66565b505050505050565b60008184841115611c595760405162461bcd60e51b8152600401610af79190613427565b505050900390565b6000806000611c6e612079565b9092509050611c7d8282611c84565b9250505090565b6000611c908284613503565b9392505050565b6000611c9082846134eb565b600080600080600080600080600080611cbb8b612236565b8c81529092509050611ccb611c61565b60a082015260008080611cdd8461230e565b925092509250828282878760200151886040015189606001518a608001519c509c509c509c509c509c509c509c505050505050919395975091939597565b6000611c908284613536565b6000611c908284613517565b6020805460ff60a01b1916600160a01b1790556000611d53826002611c84565b90506000611d618383611d1b565b905047611d6d836123e2565b6000611d794783611d1b565b9050611d8583826125c5565b60408051858152602081018390529081018490527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a150506020805460ff60a01b19169055505050565b6001600160a01b03811660009081526004602052604090205460ff1615611e0057611e63565b6001600160a01b0381166000818152600460205260408120805460ff191660019081179091558054808201825591527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b03191690911790555b50565b80611e7357611e736126da565b602054600160b81b900460ff1615611efd577f0000000000000000000000002e045190c6c6adac7a7cd80cd97923c3f49700166001600160a01b0316846001600160a01b0316148015611ed457506020546001600160a01b03848116911614155b8015611eee57506020546001600160a01b03858116911614155b15611efd57611efd8284612721565b6001600160a01b03841660009081526009602052604090205460ff168015611f3e57506001600160a01b03831660009081526009602052604090205460ff16155b15611f5357611f4e848484612969565b612051565b6001600160a01b03841660009081526009602052604090205460ff16158015611f9457506001600160a01b03831660009081526009602052604090205460ff165b15611fa457611f4e848484612abc565b6001600160a01b03841660009081526009602052604090205460ff16158015611fe657506001600160a01b03831660009081526009602052604090205460ff16155b15611ff657611f4e848484612b7e565b6001600160a01b03841660009081526009602052604090205460ff16801561203657506001600160a01b03831660009081526009602052604090205460ff165b1561204657611f4e848484612bdb565b612051848484612b7e565b8061207357612073601554601455601754601655600354600255601954601855565b50505050565b600c54600b546000918291825b600a54811015612204578260056000600a84815481106120b657634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054118061212f57508160066000600a848154811061210857634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561214657600c54600b5494509450505050612232565b61219a60056000600a848154811061216e57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020548490611d1b565b92506121f060066000600a84815481106121c457634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020548390611d1b565b9150806121fc81613588565b915050612086565b50600b54600c5461221491611c84565b82101561222c57600c54600b54935093505050612232565b90925090505b9091565b60006122716040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b600061227c84612c67565b9050600061228985612c83565b9050600061229686612c9f565b905060006122a387612cbb565b905060006122bf826122b9818187818b8b611c97565b90611c97565b905060006122cd8983611d1b565b9050806040518060c0016040528060008152602001888152602001878152602001868152602001858152602001600081525097509750505050505050915091565b60008060008061232f8560a001518660000151611d2790919063ffffffff16565b9050600061234e8660a001518760200151611d2790919063ffffffff16565b9050600061236d8760a001518860400151611d2790919063ffffffff16565b9050600061238c8860a001518960600151611d2790919063ffffffff16565b905060006123ab8960a001518a60800151611d2790919063ffffffff16565b905060006123c1826122b9818187818b8b611c97565b905060006123cf8783611d1b565b969b969a50949850949650505050505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061242557634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000a5e0829caced8ffdd4de3c43696c57f7d7a678ff6001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561249e57600080fd5b505afa1580156124b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124d69190613288565b816001815181106124f757634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b031681525050612542307f000000000000000000000000a5e0829caced8ffdd4de3c43696c57f7d7a678ff84611832565b60405163791ac94760e01b81526001600160a01b037f000000000000000000000000a5e0829caced8ffdd4de3c43696c57f7d7a678ff169063791ac947906125979085906000908690309042906004016134af565b600060405180830381600087803b1580156125b157600080fd5b505af1158015611c2d573d6000803e3d6000fd5b6125f0307f000000000000000000000000a5e0829caced8ffdd4de3c43696c57f7d7a678ff84611832565b7f000000000000000000000000a5e0829caced8ffdd4de3c43696c57f7d7a678ff6001600160a01b031663f305d7198230856000806126376000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b15801561269a57600080fd5b505af11580156126ae573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906126d391906133a4565b5050505050565b6014541580156126ea5750601854155b156126f45761271f565b6014805460155560168054601755600280546003556018805460195560009384905591839055829055555b565b601d548210610f1a57601c5442111561293b57601b54601e805460018101825560009182527f50bb669a95c7b50b7e8a6f09454034b2b14cf2b85c730dca9a539ca82cb6e3500180546001600160a01b0319166001600160a01b03938416179055601a549091612791911661137e565b9050600061279d611c61565b905060006127ab8383611d27565b601b546001600160a01b03166000908152600560205260409020549091506127d39082611c97565b601b80546001600160a01b03908116600090815260056020908152604080832095909555925490911681526009909152205460ff161561284e57601b546001600160a01b03166000908152600660205260409020546128329084611c97565b601b546001600160a01b03166000908152600660205260409020555b601a546001600160a01b03166000908152600560205260409020546128739082611d1b565b601a80546001600160a01b03908116600090815260056020908152604080832095909555925490911681526009909152205460ff16156128ee57601a546001600160a01b03166000908152600660205260409020546128d29084611d1b565b601a546001600160a01b03166000908152600660205260409020555b601b54601a546040518581526001600160a01b0392831692909116907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050505b601b80546001600160a01b0319166001600160a01b038316179055612962426107086134eb565b601c555050565b60008060008060008060008061297e89611ca3565b975097509750975097509750975097506129c689600660008e6001600160a01b03166001600160a01b0316815260200190815260200160002054611d1b90919063ffffffff16565b6001600160a01b038c166000908152600660209081526040808320939093556005905220546129f59089611d1b565b6001600160a01b03808d1660009081526005602052604080822093909355908c1681522054612a249088611c97565b6001600160a01b038b16600090815260056020526040902055612a4683612cd7565b612a4f82612d60565b612a5881612ead565b612a628685613066565b896001600160a01b03168b6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef87604051612aa791815260200190565b60405180910390a35050505050505050505050565b600080600080600080600080612ad189611ca3565b97509750975097509750975097509750612b1988600560008e6001600160a01b03166001600160a01b0316815260200190815260200160002054611d1b90919063ffffffff16565b6001600160a01b03808d16600090815260056020908152604080832094909455918d16815260069091522054612b4f9086611c97565b6001600160a01b038b16600090815260066020908152604080832093909355600590522054612a249088611c97565b600080600080600080600080612b9389611ca3565b975097509750975097509750975097506129f588600560008e6001600160a01b03166001600160a01b0316815260200190815260200160002054611d1b90919063ffffffff16565b600080600080600080600080612bf089611ca3565b97509750975097509750975097509750612c3889600660008e6001600160a01b03166001600160a01b0316815260200190815260200160002054611d1b90919063ffffffff16565b6001600160a01b038c16600090815260066020908152604080832093909355600590522054612b199089611d1b565b6000610bd8606461167a60145485611d2790919063ffffffff16565b6000610bd8606461167a60185485611d2790919063ffffffff16565b6000610bd8606461167a60165485611d2790919063ffffffff16565b6000610bd8606461167a60025485611d2790919063ffffffff16565b6000612ce1611c61565b90506000612cef8383611d27565b30600090815260056020526040902054909150612d0c9082611c97565b3060009081526005602090815260408083209390935560099052205460ff1615612d5b5730600090815260066020526040902054612d4a9084611c97565b306000908152600660205260409020555b505050565b6000612d6a611c61565b90506000612d788383611d27565b9050612d8261308a565b600f80546001600160a01b039283166001600160a01b031991821681178355601f8054600181019091557fa03837a25210ee280c2113ff4b77ca23440b19d4866cca721c801278fd08d8070180549092161790555416600090815260056020526040902054612df19082611c97565b600f80546001600160a01b03908116600090815260056020908152604080832095909555925490911681526009909152205460ff1615612e6c57600f546001600160a01b0316600090815260066020526040902054612e509084611c97565b600f546001600160a01b03166000908152600660205260409020555b600f546040518481526001600160a01b039091169030907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200161194a565b6000612eb7611c61565b90506000612ec58383611d27565b602054909150600160a81b900460ff1615612f2257612ee3816123e2565b600e546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015612f1c573d6000803e3d6000fd5b50612fc2565b600e546001600160a01b0316600090815260056020526040902054612f479082611c97565b600e80546001600160a01b03908116600090815260056020908152604080832095909555925490911681526009909152205460ff1615612fc257600e546001600160a01b0316600090815260066020526040902054612fa69084611c97565b600e546001600160a01b03166000908152600660205260409020555b601a546001600160a01b0316600090815260056020526040902054612fe79082611c97565b601a80546001600160a01b03908116600090815260056020908152604080832095909555925490911681526009909152205460ff1615612d5b57601a546001600160a01b03166000908152600660205260409020546130469084611c97565b601a546001600160a01b0316600090815260066020526040902055505050565b600c546130739083611d1b565b600c55600d546130839082611c97565b600d555050565b600154600090819061309d904390613250565b9050600060056000600184815481106130c657634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460105490915081108015906131445750602054600180546001600160a01b03909216918490811061312c57634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b031614155b80156131ae57507f0000000000000000000000002e045190c6c6adac7a7cd80cd97923c3f49700166001600160a01b03166001838154811061319657634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b031614155b80156131f85750306001600160a01b0316600183815481106131e057634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b031614155b1561323d576001828154811061321e57634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b03169250610b95915050565b5050600e546001600160a01b0316905090565b6000611c9082846135a3565b80358015158114610d2957600080fd5b60006020828403121561327d578081fd5b8135611c90816135e3565b600060208284031215613299578081fd5b8151611c90816135e3565b600080604083850312156132b6578081fd5b82356132c1816135e3565b915060208301356132d1816135e3565b809150509250929050565b6000806000606084860312156132f0578081fd5b83356132fb816135e3565b9250602084013561330b816135e3565b929592945050506040919091013590565b6000806040838503121561332e578182fd5b8235613339816135e3565b946020939093013593505050565b600060208284031215613358578081fd5b611c908261325c565b600060208284031215613372578081fd5b5035919050565b6000806040838503121561338b578182fd5b8235915061339b6020840161325c565b90509250929050565b6000806000606084860312156133b8578283fd5b8351925060208401519150604084015190509250925092565b6000815180845260208085019450808401835b838110156134095781516001600160a01b0316875295820195908201906001016133e4565b509495945050505050565b600060208252611c9060208301846133d1565b6000602080835283518082850152825b8181101561345357858101830151858201604001528201613437565b818111156134645783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600086825285602083015260a060408301526134ce60a08301866133d1565b6001600160a01b0394909416606083015250608001529392505050565b600082198211156134fe576134fe6135b7565b500190565b600082613512576135126135cd565b500490565b6000816000190483118215151615613531576135316135b7565b500290565b600082821015613548576135486135b7565b500390565b600181811c9082168061356157607f821691505b6020821081141561358257634e487b7160e01b600052602260045260246000fd5b50919050565b600060001982141561359c5761359c6135b7565b5060010190565b6000826135b2576135b26135cd565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b6001600160a01b0381168114611e6357600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220be70fd16e5846a6edc9e52b17962eb0b1a44259407ad7501e9aa0758bf54cc2e64736f6c63430008030033
Deployed Bytecode Sourcemap
28721:25119:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37949:98;;;;;;;;;;-1:-1:-1;37949:98:0;;;;;:::i;:::-;;:::i;:::-;;32024:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35709:115;;;;;;;;;;-1:-1:-1;35709:115:0;;;;;:::i;:::-;;:::i;32936:161::-;;;;;;;;;;-1:-1:-1;32936:161:0;;;;;:::i;:::-;;:::i;:::-;;;4874:14:1;;4867:22;4849:41;;4837:2;4822:18;32936:161:0;4804:92:1;34057:87:0;;;;;;;;;;-1:-1:-1;34126:10:0;;34057:87;;;10991:25:1;;;10979:2;10964:18;34057:87:0;10946:76:1;30361:51:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3787:32:1;;;3769:51;;3757:2;3742:18;30361:51:0;3724:102:1;32301:95:0;;;;;;;;;;-1:-1:-1;32381:7:0;;32301:95;;30103:24;;;;;;;;;;-1:-1:-1;30103:24:0;;;;-1:-1:-1;;;;;30103:24:0;;;30544:28;;;;;;;;;;-1:-1:-1;30544:28:0;;;;-1:-1:-1;;;30544:28:0;;;;;;33105:313;;;;;;;;;;-1:-1:-1;33105:313:0;;;;;:::i;:::-;;:::i;34156:102::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;35218:253::-;;;;;;;;;;-1:-1:-1;35218:253:0;;;;;:::i;:::-;;:::i;32210:83::-;;;;;;;;;;-1:-1:-1;32276:9:0;;32210:83;;32276:9;;;;12080:36:1;;12068:2;12053:18;32210:83:0;12035:87:1;36505:479:0;;;;;;;;;;-1:-1:-1;36505:479:0;;;;;:::i;:::-;;:::i;38166:98::-;;;;;;;;;;-1:-1:-1;38166:98:0;;;;;:::i;:::-;;:::i;33426:218::-;;;;;;;;;;-1:-1:-1;33426:218:0;;;;;:::i;:::-;;:::i;29815:26::-;;;;;;;;;;;;;;;;34383:379;;;;;;;;;;-1:-1:-1;34383:379:0;;;;;:::i;:::-;;:::i;37712:111::-;;;;;;;;;;-1:-1:-1;37712:111:0;;;;;:::i;:::-;;:::i;34268:105::-;;;;;;;;;;;;;:::i;34770:440::-;;;;;;;;;;-1:-1:-1;34770:440:0;;;;;:::i;:::-;;:::i;31916:100::-;;;;;;;;;;-1:-1:-1;31916:100:0;;;;;:::i;:::-;;:::i;30419:38::-;;;;;;;;;;;;;;;30622:40;;;;;;;;;;-1:-1:-1;30622:40:0;;;;-1:-1:-1;;;30622:40:0;;;;;;36050:447;;;;;;;;;;-1:-1:-1;36050:447:0;;;;;:::i;:::-;;:::i;45183:123::-;;;;;;;;;;-1:-1:-1;45183:123:0;;;;;:::i;:::-;-1:-1:-1;;;;;45271:27:0;45247:4;45271:27;;;:18;:27;;;;;;;;;45183:123;38055:106;;;;;;;;;;-1:-1:-1;38055:106:0;;;;;:::i;:::-;;:::i;29992:32::-;;;;;;;;;;;;;;;;32404:198;;;;;;;;;;-1:-1:-1;32404:198:0;;;;;:::i;:::-;;:::i;20204:148::-;;;;;;;;;;;;;:::i;35831:97::-;;;;;;;;;;-1:-1:-1;35831:97:0;;;;;:::i;:::-;;:::i;30675:31::-;;;;;;;;;;-1:-1:-1;30675:31:0;;;;-1:-1:-1;;;30675:31:0;;;;;;30282:28;;;;;;;;;;-1:-1:-1;30282:28:0;;;;;:::i;:::-;;:::i;30715:54::-;;;;;;;;;;;;;;;;30323:29;;;;;;;;;;-1:-1:-1;30323:29:0;;;;;:::i;:::-;;:::i;33929:120::-;;;;;;;;;;-1:-1:-1;33929:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;34021:20:0;33997:4;34021:20;;;:11;:20;;;;;;;;;33929:120;19553:87;;;;;;;;;;-1:-1:-1;19599:7:0;19626:6;-1:-1:-1;;;;;19626:6:0;19553:87;;38272:122;;;;;;;;;;-1:-1:-1;38272:122:0;;;;;:::i;:::-;;:::i;32115:87::-;;;;;;;;;;;;;:::i;30173:27::-;;;;;;;;;;;;;;;;33652:269;;;;;;;;;;-1:-1:-1;33652:269:0;;;;;:::i;:::-;;:::i;32610:167::-;;;;;;;;;;-1:-1:-1;32610:167:0;;;;;:::i;:::-;;:::i;28875:26::-;;;;;;;;;;;;;;;;30579:36;;;;;;;;;;-1:-1:-1;30579:36:0;;;;-1:-1:-1;;;30579:36:0;;;;;;38572:171;;;;;;;;;;-1:-1:-1;38572:171:0;;;;;:::i;:::-;;:::i;29580:34::-;;;;;;;;;;-1:-1:-1;29580:34:0;;;;-1:-1:-1;;;;;29580:34:0;;;35477:98;;;;;;;;;;-1:-1:-1;35477:98:0;;;;;:::i;:::-;;:::i;30134:30::-;;;;;;;;;;-1:-1:-1;30134:30:0;;;;-1:-1:-1;;;;;30134:30:0;;;38402:162;;;;;;;;;;-1:-1:-1;38402:162:0;;;;;:::i;:::-;;:::i;35936:106::-;;;;;;;;;;-1:-1:-1;35936:106:0;;;;;:::i;:::-;;:::i;32785:143::-;;;;;;;;;;-1:-1:-1;32785:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;32893:18:0;;;32866:7;32893:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;32785:143;35582:121;;;;;;;;;;-1:-1:-1;35582:121:0;;;;;:::i;:::-;;:::i;37831:110::-;;;;;;;;;;-1:-1:-1;37831:110:0;;;;;:::i;:::-;;:::i;29902:28::-;;;;;;;;;;;;;;;;20507:244;;;;;;;;;;-1:-1:-1;20507:244:0;;;;;:::i;:::-;;:::i;30464:67::-;;;;;;;;;;-1:-1:-1;30464:67:0;;;;-1:-1:-1;;;;;30464:67:0;;;37949:98;19599:7;19626:6;-1:-1:-1;;;;;19626:6:0;10350:10;19773:23;19765:68;;;;-1:-1:-1;;;19765:68:0;;;;;;;:::i;:::-;;;;;;;;;38023:7:::1;:16:::0;37949:98::o;32024:83::-;32061:13;32094:5;32087:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32024:83;;:::o;35709:115::-;19599:7;19626:6;-1:-1:-1;;;;;19626:6:0;10350:10;19773:23;19765:68;;;;-1:-1:-1;;;19765:68:0;;;;;;;:::i;:::-;35787:16:::1;:29:::0;35709:115::o;32936:161::-;33011:4;33028:39;10350:10;33051:7;33060:6;33028:8;:39::i;:::-;-1:-1:-1;33085:4:0;32936:161;;;;;:::o;33105:313::-;33203:4;33220:36;33230:6;33238:9;33249:6;33220:9;:36::i;:::-;33267:121;33276:6;10350:10;33298:89;33336:6;33298:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;33298:19:0;;;;;;:11;:19;;;;;;;;10350:10;33298:33;;;;;;;;;;:37;:89::i;:::-;33267:8;:121::i;:::-;-1:-1:-1;33406:4:0;33105:313;;;;;:::o;34156:102::-;34203:16;34239:11;34232:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;34232:18:0;;;;;;;;;;;;;;;;;;;;;;34156:102;:::o;35218:253::-;35284:7;35323;;35312;:18;;35304:73;;;;-1:-1:-1;;;35304:73:0;;6350:2:1;35304:73:0;;;6332:21:1;6389:2;6369:18;;;6362:30;6428:34;6408:18;;;6401:62;-1:-1:-1;;;6479:18:1;;;6472:40;6529:19;;35304:73:0;6322:232:1;35304:73:0;35388:19;35411:10;:8;:10::i;:::-;35388:33;-1:-1:-1;35439:24:0;:7;35388:33;35439:11;:24::i;:::-;35432:31;;;35218:253;;;;:::o;36505:479::-;19599:7;19626:6;-1:-1:-1;;;;;19626:6:0;10350:10;19773:23;19765:68;;;;-1:-1:-1;;;19765:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;36587:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;36579:60;;;::::0;-1:-1:-1;;;36579:60:0;;7927:2:1;36579:60:0::1;::::0;::::1;7909:21:1::0;7966:2;7946:18;;;7939:30;8005:29;7985:18;;;7978:57;8052:18;;36579:60:0::1;7899:177:1::0;36579:60:0::1;36655:9;36650:327;36674:9;:16:::0;36670:20;::::1;36650:327;;;36732:7;-1:-1:-1::0;;;;;36716:23:0::1;:9;36726:1;36716:12;;;;;;-1:-1:-1::0;;;36716:12:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;36716:12:0::1;:23;36712:254;;;36775:9;36785:16:::0;;:20:::1;::::0;36804:1:::1;::::0;36785:20:::1;:::i;:::-;36775:31;;;;;;-1:-1:-1::0;;;36775:31:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;36760:9:::1;:12:::0;;-1:-1:-1;;;;;36775:31:0;;::::1;::::0;36770:1;;36760:12;::::1;;;-1:-1:-1::0;;;36760:12:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;36760:46:0::1;-1:-1:-1::0;;;;;36760:46:0;;::::1;;::::0;;36825:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;36864:11:::1;:20:::0;;;;:28;;-1:-1:-1;;36864:28:0::1;::::0;;36911:9:::1;:15:::0;;;::::1;;-1:-1:-1::0;;;36911:15:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;;-1:-1:-1;;36911:15:0;;;;;-1:-1:-1;;;;;;36911:15:0::1;::::0;;;;;36945:5:::1;;36712:254;36692:3:::0;::::1;::::0;::::1;:::i;:::-;;;;36650:327;;;;36505:479:::0;:::o;38166:98::-;19599:7;19626:6;-1:-1:-1;;;;;19626:6:0;10350:10;19773:23;19765:68;;;;-1:-1:-1;;;19765:68:0;;;;;;;:::i;:::-;38240:7:::1;:16:::0;38166:98::o;33426:218::-;10350:10;33514:4;33563:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;33563:34:0;;;;;;;;;;33514:4;;33531:83;;33554:7;;33563:50;;33602:10;33563:38;:50::i;34383:379::-;10350:10;34435:14;34484:19;;;:11;:19;;;;;;;;34483:20;34475:77;;;;-1:-1:-1;;;34475:77:0;;10634:2:1;34475:77:0;;;10616:21:1;10673:2;10653:18;;;10646:30;10712:34;10692:18;;;10685:62;-1:-1:-1;;;10763:18:1;;;10756:42;10815:19;;34475:77:0;10606:234:1;34475:77:0;34564:15;34590:19;34601:7;34590:10;:19::i;:::-;-1:-1:-1;;;;;;;;34638:15:0;;;;;;:7;:15;;;;;;34563:46;;-1:-1:-1;34638:28:0;;:15;-1:-1:-1;34563:46:0;;-1:-1:-1;;34638:19:0;:28;-1:-1:-1;34638:28:0:i;:::-;-1:-1:-1;;;;;34620:15:0;;;;;;:7;:15;;;;;:46;34687:7;;:20;;34699:7;34687:11;:20::i;:::-;34677:7;:30;34731:10;;:23;;34746:7;34731:14;:23::i;:::-;34718:10;:36;-1:-1:-1;;;34383:379:0:o;37712:111::-;19599:7;19626:6;-1:-1:-1;;;;;19626:6:0;10350:10;19773:23;19765:68;;;;-1:-1:-1;;;19765:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;37781:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;37781:34:0::1;37811:4;37781:34;::::0;;37712:111::o;34268:105::-;34317:16;34353:12;34346:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;34346:19:0;;;;;;;;;;;;;;;;;;;;;;34268:105;:::o;34770:440::-;34860:7;34899;;34888;:18;;34880:62;;;;-1:-1:-1;;;34880:62:0;;8283:2:1;34880:62:0;;;8265:21:1;8322:2;8302:18;;;8295:30;8361:33;8341:18;;;8334:61;8412:18;;34880:62:0;8255:181:1;34880:62:0;34958:17;34953:250;;34993:15;35019:19;35030:7;35019:10;:19::i;:::-;-1:-1:-1;34992:46:0;;-1:-1:-1;35053:14:0;;-1:-1:-1;;;;;;;35053:14:0;34953:250;35102:23;35135:19;35146:7;35135:10;:19::i;:::-;-1:-1:-1;35100:54:0;;-1:-1:-1;35169:22:0;;-1:-1:-1;;;;;;;35169:22:0;31916:100;19599:7;19626:6;-1:-1:-1;;;;;19626:6:0;10350:10;19773:23;19765:68;;;;-1:-1:-1;;;19765:68:0;;;;;;;:::i;:::-;31986:9:::1;:22:::0;;-1:-1:-1;;;;;;31986:22:0::1;-1:-1:-1::0;;;;;31986:22:0;;;::::1;::::0;;;::::1;::::0;;31916:100::o;36050:447::-;19599:7;19626:6;-1:-1:-1;;;;;19626:6:0;10350:10;19773:23;19765:68;;;;-1:-1:-1;;;19765:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;36247:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;36246:21;36238:61;;;::::0;-1:-1:-1;;;36238:61:0;;7571:2:1;36238:61:0::1;::::0;::::1;7553:21:1::0;7610:2;7590:18;;;7583:30;7649:29;7629:18;;;7622:57;7696:18;;36238:61:0::1;7543:177:1::0;36238:61:0::1;-1:-1:-1::0;;;;;36313:16:0;::::1;36332:1;36313:16:::0;;;:7:::1;:16;::::0;;;;;:20;36310:108:::1;;-1:-1:-1::0;;;;;36389:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;36369:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;36350:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;36310:108:::1;-1:-1:-1::0;;;;;36428:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;36428:27:0::1;36451:4;36428:27:::0;;::::1;::::0;;;36466:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;36466:23:0::1;::::0;;::::1;::::0;;36050:447::o;38055:106::-;19599:7;19626:6;-1:-1:-1;;;;;19626:6:0;10350:10;19773:23;19765:68;;;;-1:-1:-1;;;19765:68:0;;;;;;;:::i;:::-;38133:9:::1;:20:::0;38055:106::o;32404:198::-;-1:-1:-1;;;;;32494:20:0;;32470:7;32494:20;;;:11;:20;;;;;;;;32490:49;;;-1:-1:-1;;;;;;32523:16:0;;;;;;:7;:16;;;;;;32516:23;;32490:49;-1:-1:-1;;;;;32577:16:0;;;;;;:7;:16;;;;;;32557:37;;:19;:37::i;20204:148::-;19599:7;19626:6;-1:-1:-1;;;;;19626:6:0;10350:10;19773:23;19765:68;;;;-1:-1:-1;;;19765:68:0;;;;;;;:::i;:::-;20311:1:::1;20295:6:::0;;20274:40:::1;::::0;-1:-1:-1;;;;;20295:6:0;;::::1;::::0;20274:40:::1;::::0;20311:1;;20274:40:::1;20342:1;20325:19:::0;;-1:-1:-1;;;;;;20325:19:0::1;::::0;;20204:148::o;35831:97::-;19599:7;19626:6;-1:-1:-1;;;;;19626:6:0;10350:10;19773:23;19765:68;;;;-1:-1:-1;;;19765:68:0;;;;;;;:::i;:::-;35899:11:::1;:21:::0;;;::::1;;-1:-1:-1::0;;;35899:21:0::1;-1:-1:-1::0;;;;35899:21:0;;::::1;::::0;;;::::1;::::0;;35831:97::o;30282:28::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;30282:28:0;;-1:-1:-1;30282:28:0;:::o;30323:29::-;;;;;;;;;;;;38272:122;19599:7;19626:6;-1:-1:-1;;;;;19626:6:0;10350:10;19773:23;19765:68;;;;-1:-1:-1;;;19765:68:0;;;;;;;:::i;:::-;38358:13:::1;:28:::0;38272:122::o;32115:87::-;32154:13;32187:7;32180:14;;;;;:::i;33652:269::-;33745:4;33762:129;10350:10;33785:7;33794:96;33833:15;33794:96;;;;;;;;;;;;;;;;;10350:10;33794:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;33794:34:0;;;;;;;;;;;;:38;:96::i;32610:167::-;32688:4;32705:42;10350:10;32729:9;32740:6;32705:9;:42::i;38572:171::-;19599:7;19626:6;-1:-1:-1;;;;;19626:6:0;10350:10;19773:23;19765:68;;;;-1:-1:-1;;;19765:68:0;;;;;;;:::i;:::-;38649:21:::1;:32:::0;;-1:-1:-1;;;;38649:32:0::1;-1:-1:-1::0;;;38649:32:0;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;38697:38:::1;::::0;4849:41:1;;;38697:38:0::1;::::0;4822:18:1;38697:38:0::1;;;;;;;38572:171:::0;:::o;35477:98::-;19599:7;19626:6;-1:-1:-1;;;;;19626:6:0;10350:10;19773:23;19765:68;;;;-1:-1:-1;;;19765:68:0;;;;;;;:::i;:::-;35551:10:::1;:16:::0;;-1:-1:-1;;;;;;35551:16:0::1;-1:-1:-1::0;;;;;35551:16:0;;;::::1;::::0;;;::::1;::::0;;35477:98::o;38402:162::-;19599:7;19626:6;-1:-1:-1;;;;;19626:6:0;10350:10;19773:23;19765:68;;;;-1:-1:-1;;;19765:68:0;;;;;;;:::i;:::-;38496:60:::1;38540:5;38496:25;38508:12;38496:7;;:11;;:25;;;;:::i;:::-;:29:::0;::::1;:60::i;:::-;38481:12;:75:::0;-1:-1:-1;38402:162:0:o;35936:106::-;19599:7;19626:6;-1:-1:-1;;;;;19626:6:0;10350:10;19773:23;19765:68;;;;-1:-1:-1;;;19765:68:0;;;;;;;:::i;:::-;36008:16:::1;:26:::0;;;::::1;;-1:-1:-1::0;;;36008:26:0::1;-1:-1:-1::0;;;;36008:26:0;;::::1;::::0;;;::::1;::::0;;35936:106::o;35582:121::-;19599:7;19626:6;-1:-1:-1;;;;;19626:6:0;10350:10;19773:23;19765:68;;;;-1:-1:-1;;;19765:68:0;;;;;;;:::i;:::-;35663:15:::1;:32:::0;35582:121::o;37831:110::-;19599:7;19626:6;-1:-1:-1;;;;;19626:6:0;10350:10;19773:23;19765:68;;;;-1:-1:-1;;;19765:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;37898:27:0::1;37928:5;37898:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;37898:35:0::1;::::0;;37831:110::o;20507:244::-;19599:7;19626:6;-1:-1:-1;;;;;19626:6:0;10350:10;19773:23;19765:68;;;;-1:-1:-1;;;19765:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20596:22:0;::::1;20588:73;;;::::0;-1:-1:-1;;;20588:73:0;;6761:2:1;20588:73:0::1;::::0;::::1;6743:21:1::0;6800:2;6780:18;;;6773:30;6839:34;6819:18;;;6812:62;-1:-1:-1;;;6890:18:1;;;6883:36;6936:19;;20588:73:0::1;6733:228:1::0;20588:73:0::1;20698:6;::::0;;20677:38:::1;::::0;-1:-1:-1;;;;;20677:38:0;;::::1;::::0;20698:6;::::1;::::0;20677:38:::1;::::0;::::1;20726:6;:17:::0;;-1:-1:-1;;;;;;20726:17:0::1;-1:-1:-1::0;;;;;20726:17:0;;;::::1;::::0;;;::::1;::::0;;20507:244::o;45314:337::-;-1:-1:-1;;;;;45407:19:0;;45399:68;;;;-1:-1:-1;;;45399:68:0;;10229:2:1;45399:68:0;;;10211:21:1;10268:2;10248:18;;;10241:30;10307:34;10287:18;;;10280:62;-1:-1:-1;;;10358:18:1;;;10351:34;10402:19;;45399:68:0;10201:226:1;45399:68:0;-1:-1:-1;;;;;45486:21:0;;45478:68;;;;-1:-1:-1;;;45478:68:0;;7168:2:1;45478:68:0;;;7150:21:1;7207:2;7187:18;;;7180:30;7246:34;7226:18;;;7219:62;-1:-1:-1;;;7297:18:1;;;7290:32;7339:19;;45478:68:0;7140:224:1;45478:68:0;-1:-1:-1;;;;;45559:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;45611:32;;10991:25:1;;;45611:32:0;;10964:18:1;45611:32:0;;;;;;;;45314:337;;;:::o;45659:1897::-;-1:-1:-1;;;;;45781:18:0;;45773:68;;;;-1:-1:-1;;;45773:68:0;;9823:2:1;45773:68:0;;;9805:21:1;9862:2;9842:18;;;9835:30;9901:34;9881:18;;;9874:62;-1:-1:-1;;;9952:18:1;;;9945:35;9997:19;;45773:68:0;9795:227:1;45773:68:0;-1:-1:-1;;;;;45860:16:0;;45852:64;;;;-1:-1:-1;;;45852:64:0;;5946:2:1;45852:64:0;;;5928:21:1;5985:2;5965:18;;;5958:30;6024:34;6004:18;;;5997:62;-1:-1:-1;;;6075:18:1;;;6068:33;6118:19;;45852:64:0;5918:225:1;45852:64:0;45944:1;45935:6;:10;45927:64;;;;-1:-1:-1;;;45927:64:0;;9413:2:1;45927:64:0;;;9395:21:1;9452:2;9432:18;;;9425:30;9491:34;9471:18;;;9464:62;-1:-1:-1;;;9542:18:1;;;9535:39;9591:19;;45927:64:0;9385:231:1;45927:64:0;46007:11;;-1:-1:-1;;;46007:11:0;;;;46002:168;;;19599:7;19626:6;-1:-1:-1;;;;;46036:15:0;;;19626:6;;46036:15;;;;:32;;-1:-1:-1;19599:7:0;19626:6;-1:-1:-1;;;;;46055:13:0;;;19626:6;;46055:13;;46036:32;46033:125;;;46101:12;;46091:6;:22;;46083:75;;;;-1:-1:-1;;;46083:75:0;;8643:2:1;46083:75:0;;;8625:21:1;8682:2;8662:18;;;8655:30;8721:34;8701:18;;;8694:62;-1:-1:-1;;;8772:18:1;;;8765:38;8820:19;;46083:75:0;8615:230:1;46083:75:0;46462:28;46493:24;46511:4;46493:9;:24::i;:::-;46462:55;;46565:12;;46541:20;:36;46538:112;;-1:-1:-1;46626:12:0;;46538:112;46721:29;;46697:53;;;;;;;46779;;-1:-1:-1;46816:16:0;;-1:-1:-1;;;46816:16:0;;;;46815:17;46779:53;:91;;;;;46857:13;-1:-1:-1;;;;;46849:21:0;:4;-1:-1:-1;;;;;46849:21:0;;;46779:91;:129;;;;-1:-1:-1;46887:21:0;;-1:-1:-1;;;46887:21:0;;;;46779:129;46761:318;;;46958:29;;46935:52;;47031:36;47046:20;47031:14;:36::i;:::-;-1:-1:-1;;;;;47287:24:0;;47160:12;47287:24;;;:18;:24;;;;;;47175:4;;47287:24;;;:50;;-1:-1:-1;;;;;;47315:22:0;;;;;;:18;:22;;;;;;;;47287:50;47284:96;;;-1:-1:-1;47363:5:0;47284:96;47388:16;47399:4;47388:10;:16::i;:::-;47409:14;47420:2;47409:10;:14::i;:::-;47510:38;47525:4;47530:2;47533:6;47540:7;47510:14;:38::i;:::-;45659:1897;;;;;;:::o;7720:206::-;7806:7;7867:12;7859:6;;;;7851:29;;;;-1:-1:-1;;;7851:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;7902:5:0;;;7720:206::o;40992:163::-;41033:7;41054:15;41071;41090:19;:17;:19::i;:::-;41053:56;;-1:-1:-1;41053:56:0;-1:-1:-1;41127:20:0;41053:56;;41127:11;:20::i;:::-;41120:27;;;;40992:163;:::o;6578:98::-;6636:7;6663:5;6667:1;6663;:5;:::i;:::-;6656:12;6578:98;-1:-1:-1;;;6578:98:0:o;5441:::-;5499:7;5526:5;5530:1;5526;:5;:::i;39187:496::-;39246:7;39255;39264;39273;39282;39291;39300;39309;39330:23;39355:17;39376:20;39388:7;39376:11;:20::i;:::-;39407:22;;;39329:67;;-1:-1:-1;39329:67:0;-1:-1:-1;39459:10:0;:8;:10::i;:::-;39440:16;;;:29;39481:15;;;39539:17;39440:4;39539:11;:17::i;:::-;39480:76;;;;;;39575:7;39584:15;39601:4;39607:15;39624:4;:9;;;39635:4;:15;;;39652:4;:11;;;39665:4;:9;;;39567:108;;;;;;;;;;;;;;;;;;;;;39187:496;;;;;;;;;:::o;5822:98::-;5880:7;5907:5;5911:1;5907;:5;:::i;6179:98::-;6237:7;6264:5;6268:1;6264;:5;:::i;47564:985::-;31158:16;:23;;-1:-1:-1;;;;31158:23:0;-1:-1:-1;;;31158:23:0;;;;47715:27:::1;:20:::0;47740:1:::1;47715:24;:27::i;:::-;47700:42:::0;-1:-1:-1;47753:17:0::1;47773:30;:20:::0;47700:42;47773:24:::1;:30::i;:::-;47753:50:::0;-1:-1:-1;48106:21:0::1;48172:22;48189:4:::0;48172:16:::1;:22::i;:::-;48325:18;48346:41;:21;48372:14:::0;48346:25:::1;:41::i;:::-;48325:62;;48437:35;48450:9;48461:10;48437:12;:35::i;:::-;48498:43;::::0;;11816:25:1;;;11872:2;11857:18;;11850:34;;;11900:18;;;11893:34;;;48498:43:0::1;::::0;11804:2:1;11789:18;48498:43:0::1;;;;;;;-1:-1:-1::0;;31204:16:0;:24;;-1:-1:-1;;;;31204:24:0;;;-1:-1:-1;;;47564:985:0:o;42086:173::-;-1:-1:-1;;;;;42141:19:0;;;;;;:14;:19;;;;;;;;42138:44;;;42175:7;;42138:44;-1:-1:-1;;;;;42192:19:0;;;;;;:14;:19;;;;;:26;;-1:-1:-1;;42192:26:0;42214:4;42192:26;;;;;;42229:22;;;;;;;;;;;;;-1:-1:-1;;;;;;42229:22:0;;;;;;42086:173;;:::o;49748:1036::-;49859:7;49855:40;;49881:14;:12;:14::i;:::-;49931:11;;-1:-1:-1;;;49931:11:0;;;;49926:180;;;49974:13;-1:-1:-1;;;;;49964:23:0;:6;-1:-1:-1;;;;;49964:23:0;;:46;;;;-1:-1:-1;50004:6:0;;-1:-1:-1;;;;;49991:19:0;;;50004:6;;49991:19;;49964:46;:66;;;;-1:-1:-1;50024:6:0;;-1:-1:-1;;;;;50014:16:0;;;50024:6;;50014:16;;49964:66;49960:135;;;50050:29;50062:6;50069:9;50050:11;:29::i;:::-;-1:-1:-1;;;;;50122:19:0;;;;;;:11;:19;;;;;;;;:46;;;;-1:-1:-1;;;;;;50146:22:0;;;;;;:11;:22;;;;;;;;50145:23;50122:46;50118:597;;;50185:48;50207:6;50215:9;50226:6;50185:21;:48::i;:::-;50118:597;;;-1:-1:-1;;;;;50256:19:0;;;;;;:11;:19;;;;;;;;50255:20;:46;;;;-1:-1:-1;;;;;;50279:22:0;;;;;;:11;:22;;;;;;;;50255:46;50251:464;;;50318:46;50338:6;50346:9;50357:6;50318:19;:46::i;50251:464::-;-1:-1:-1;;;;;50387:19:0;;;;;;:11;:19;;;;;;;;50386:20;:47;;;;-1:-1:-1;;;;;;50411:22:0;;;;;;:11;:22;;;;;;;;50410:23;50386:47;50382:333;;;50450:44;50468:6;50476:9;50487:6;50450:17;:44::i;50382:333::-;-1:-1:-1;;;;;50516:19:0;;;;;;:11;:19;;;;;;;;:45;;;;-1:-1:-1;;;;;;50539:22:0;;;;;;:11;:22;;;;;;;;50516:45;50512:203;;;50578:48;50600:6;50608:9;50619:6;50578:21;:48::i;50512:203::-;50659:44;50677:6;50685:9;50696:6;50659:17;:44::i;:::-;50739:7;50735:41;;50761:15;45030;;45020:7;:25;45068:17;;45056:9;:29;45100:15;;45090:7;:25;45142:21;;45126:13;:37;44976:195;50761:15;49748:1036;;;;:::o;41163:555::-;41260:7;;41296;;41213;;;;;41314:289;41338:9;:16;41334:20;;41314:289;;;41404:7;41380;:21;41388:9;41398:1;41388:12;;;;;;-1:-1:-1;;;41388:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;41388:12:0;41380:21;;;;;;;;;;;;;:31;;:66;;;41439:7;41415;:21;41423:9;41433:1;41423:12;;;;;;-1:-1:-1;;;41423:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;41423:12:0;41415:21;;;;;;;;;;;;;:31;41380:66;41376:97;;;41456:7;;41465;;41448:25;;;;;;;;;41376:97;41498:34;41510:7;:21;41518:9;41528:1;41518:12;;;;;;-1:-1:-1;;;41518:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;41518:12:0;41510:21;;;;;;;;;;;;;41498:7;;:11;:34::i;:::-;41488:44;;41557:34;41569:7;:21;41577:9;41587:1;41577:12;;;;;;-1:-1:-1;;;41577:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;41577:12:0;41569:21;;;;;;;;;;;;;41557:7;;:11;:34::i;:::-;41547:44;-1:-1:-1;41356:3:0;;;;:::i;:::-;;;;41314:289;;;-1:-1:-1;41639:7:0;;41627;;:20;;:11;:20::i;:::-;41617:7;:30;41613:61;;;41657:7;;41666;;41649:25;;;;;;;;41613:61;41693:7;;-1:-1:-1;41702:7:0;-1:-1:-1;41163:555:0;;;:::o;39691:609::-;39751:7;39760:12;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39760:12:0;39785;39800:24;39816:7;39800:15;:24::i;:::-;39785:39;;39835:18;39856:30;39878:7;39856:21;:30::i;:::-;39835:51;;39899:14;39916:26;39934:7;39916:17;:26::i;:::-;39899:43;;39947:12;39962:24;39978:7;39962:15;:24::i;:::-;39947:39;-1:-1:-1;39999:10:0;40012:52;39947:39;40012:42;39947:39;40012:42;40037:6;40012:42;:4;40021:10;40012:8;:20::i;:::-;:24;;:32::i;:52::-;39999:65;-1:-1:-1;40075:23:0;40101:15;:7;39999:65;40101:11;:15::i;:::-;40075:41;;40231:15;40248:43;;;;;;;;40254:1;40248:43;;;;40257:4;40248:43;;;;40263:10;40248:43;;;;40275:6;40248:43;;;;40283:4;40248:43;;;;40289:1;40248:43;;;40223:69;;;;;;;;;;39691:609;;;:::o;40308:676::-;40372:7;40381;40390;40410:15;40428:36;40446:5;:17;;;40428:5;:13;;;:17;;:36;;;;:::i;:::-;40410:54;;40475:12;40490:33;40505:5;:17;;;40490:5;:10;;;:14;;:33;;;;:::i;:::-;40475:48;;40534:18;40555:39;40576:5;:17;;;40555:5;:16;;;:20;;:39;;;;:::i;:::-;40534:60;;40605:14;40622:35;40639:5;:17;;;40622:5;:12;;;:16;;:35;;;;:::i;:::-;40605:52;;40662:12;40677:33;40692:5;:17;;;40677:5;:10;;;:14;;:33;;;;:::i;:::-;40662:48;-1:-1:-1;40715:10:0;40728:52;40662:48;40728:42;40662:48;40728:42;40753:6;40728:42;:4;40737:10;40728:8;:20::i;:52::-;40715:65;-1:-1:-1;40791:23:0;40817:15;:7;40715:65;40817:11;:15::i;:::-;40945:7;;;;-1:-1:-1;40971:4:0;;-1:-1:-1;40308:676:0;;-1:-1:-1;;;;;;;40308:676:0:o;48557:589::-;48707:16;;;48721:1;48707:16;;;;;;;;48683:21;;48707:16;;;;;;;;;;-1:-1:-1;48707:16:0;48683:40;;48752:4;48734;48739:1;48734:7;;;;;;-1:-1:-1;;;48734:7:0;;;;;;;;;;;;;;:23;-1:-1:-1;;;;;48734:23:0;;;-1:-1:-1;;;;;48734:23:0;;;;;48778:15;-1:-1:-1;;;;;48778:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;48768:4;48773:1;48768:7;;;;;;-1:-1:-1;;;48768:7:0;;;;;;;;;;;;;;:32;-1:-1:-1;;;;;48768:32:0;;;-1:-1:-1;;;;;48768:32:0;;;;;48813:62;48830:4;48845:15;48863:11;48813:8;:62::i;:::-;48914:224;;-1:-1:-1;;;48914:224:0;;-1:-1:-1;;;;;48914:15:0;:66;;;;:224;;48995:11;;49021:1;;49065:4;;49092;;49112:15;;48914:224;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49154:513;49302:62;49319:4;49334:15;49352:11;49302:8;:62::i;:::-;49407:15;-1:-1:-1;;;;;49407:31:0;;49446:9;49479:4;49499:11;49525:1;49568;49611:7;19599;19626:6;-1:-1:-1;;;;;19626:6:0;19553:87;;49611:7;49407:252;;;;;;-1:-1:-1;;;;;;49407:252:0;;;-1:-1:-1;;;;;4190:15:1;;;49407:252:0;;;4172:34:1;4222:18;;;4215:34;;;;4265:18;;;4258:34;;;;4308:18;;;4301:34;4372:15;;;4351:19;;;4344:44;49633:15:0;4404:19:1;;;4397:35;4106:19;;49407:252:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;49154:513;;:::o;44604:360::-;44650:7;;:12;:34;;;;-1:-1:-1;44666:13:0;;:18;44650:34;44647:46;;;44686:7;;44647:46;44731:7;;;44713:15;:25;44769:9;;;44749:17;:29;44801:7;;;44783:15;:25;44843:13;;;44819:21;:37;-1:-1:-1;44877:11:0;;;;44899:13;;;;44917:11;;;44939:17;44604:360;:::o;50798:1117::-;50882:15;;50872:6;:25;50868:1025;;50936:12;;50918:15;:30;50914:882;;;50985:15;;50968:11;:33;;50985:15;50968:33;;;;50985:15;50968:33;;;;;;;-1:-1:-1;;;;;;50968:33:0;-1:-1:-1;;;;;50985:15:0;;;50968:33;;;51072:9;;50985:15;;51062:20;;51072:9;51062;:20::i;:::-;51033:49;;51117:19;51140:10;:8;:10::i;:::-;51117:33;-1:-1:-1;51167:26:0;51196:35;:18;51117:33;51196:22;:35::i;:::-;51295:15;;-1:-1:-1;;;;;51295:15:0;51287:24;;;;:7;:24;;;;;;51167:64;;-1:-1:-1;51287:48:0;;51167:64;51287:28;:48::i;:::-;51268:15;;;-1:-1:-1;;;;;51268:15:0;;;51260:24;;;;:7;:24;;;;;;;;:75;;;;51365:15;;;;;51353:28;;:11;:28;;;;;;;51350:121;;;51431:15;;-1:-1:-1;;;;;51431:15:0;51423:24;;;;:7;:24;;;;;;:48;;51452:18;51423:28;:48::i;:::-;51404:15;;-1:-1:-1;;;;;51404:15:0;51396:24;;;;:7;:24;;;;;:75;51350:121;51529:9;;-1:-1:-1;;;;;51529:9:0;51521:18;;;;:7;:18;;;;;;:42;;51544:18;51521:22;:42::i;:::-;51508:9;;;-1:-1:-1;;;;;51508:9:0;;;51500:18;;;;:7;:18;;;;;;;;:63;;;;51593:9;;;;;51581:22;;:11;:22;;;;;;;51578:103;;;51647:9;;-1:-1:-1;;;;;51647:9:0;51639:18;;;;:7;:18;;;;;;:42;;51662:18;51639:22;:42::i;:::-;51626:9;;-1:-1:-1;;;;;51626:9:0;51618:18;;;;:7;:18;;;;;:63;51578:103;51737:15;;51726:9;;51717:56;;10991:25:1;;;-1:-1:-1;;;;;51737:15:0;;;;51726:9;;;;51717:56;;10979:2:1;10964:18;51717:56:0;;;;;;;50914:882;;;;51807:15;:23;;-1:-1:-1;;;;;;51807:23:0;-1:-1:-1;;;;;51807:23:0;;;;;51857:22;:15;51875:4;51857:22;:::i;:::-;51842:12;:37;50798:1117;;:::o;53191:644::-;53294:15;53311:23;53336:12;53350:23;53375:12;53389:18;53409:14;53425:12;53441:19;53452:7;53441:10;:19::i;:::-;53293:167;;;;;;;;;;;;;;;;53489:28;53509:7;53489;:15;53497:6;-1:-1:-1;;;;;53489:15:0;-1:-1:-1;;;;;53489:15:0;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;-1:-1:-1;;;;;53471:15:0;;;;;;:7;:15;;;;;;;;:46;;;;53546:7;:15;;;;:28;;53566:7;53546:19;:28::i;:::-;-1:-1:-1;;;;;53528:15:0;;;;;;;:7;:15;;;;;;:46;;;;53606:18;;;;;;;:39;;53629:15;53606:22;:39::i;:::-;-1:-1:-1;;;;;53585:18:0;;;;;;:7;:18;;;;;:60;53659:26;53674:10;53659:14;:26::i;:::-;53696:18;53707:6;53696:10;:18::i;:::-;53719:14;53728:4;53719:8;:14::i;:::-;53744:23;53756:4;53762;53744:11;:23::i;:::-;53800:9;-1:-1:-1;;;;;53783:44:0;53792:6;-1:-1:-1;;;;;53783:44:0;;53811:15;53783:44;;;;10991:25:1;;10979:2;10964:18;;10946:76;53783:44:0;;;;;;;;53191:644;;;;;;;;;;;:::o;52519:664::-;52620:15;52637:23;52662:12;52676:23;52701:12;52715:18;52735:14;52751:12;52767:19;52778:7;52767:10;:19::i;:::-;52619:167;;;;;;;;;;;;;;;;52815:28;52835:7;52815;:15;52823:6;-1:-1:-1;;;;;52815:15:0;-1:-1:-1;;;;;52815:15:0;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;-1:-1:-1;;;;;52797:15:0;;;;;;;:7;:15;;;;;;;;:46;;;;52875:18;;;;;:7;:18;;;;;:39;;52898:15;52875:22;:39::i;:::-;-1:-1:-1;;;;;52854:18:0;;;;;;:7;:18;;;;;;;;:60;;;;52946:7;:18;;;;:39;;52969:15;52946:22;:39::i;51923:588::-;52022:15;52039:23;52064:12;52078:23;52103:12;52117:18;52137:14;52153:12;52169:19;52180:7;52169:10;:19::i;:::-;52021:167;;;;;;;;;;;;;;;;52217:28;52237:7;52217;:15;52225:6;-1:-1:-1;;;;;52217:15:0;-1:-1:-1;;;;;52217:15:0;;;;;;;;;;;;;:19;;:28;;;;:::i;36992:712::-;37095:15;37112:23;37137:12;37151:23;37176:12;37190:18;37210:14;37226:12;37242:19;37253:7;37242:10;:19::i;:::-;37094:167;;;;;;;;;;;;;;;;37290:28;37310:7;37290;:15;37298:6;-1:-1:-1;;;;;37290:15:0;-1:-1:-1;;;;;37290:15:0;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;-1:-1:-1;;;;;37272:15:0;;;;;;:7;:15;;;;;;;;:46;;;;37347:7;:15;;;;:28;;37367:7;37347:19;:28::i;43938:154::-;44002:7;44029:55;44068:5;44029:20;44041:7;;44029;:11;;:20;;;;:::i;44426:166::-;44496:7;44523:61;44568:5;44523:26;44535:13;;44523:7;:11;;:26;;;;:::i;44100:158::-;44166:7;44193:57;44234:5;44193:22;44205:9;;44193:7;:11;;:22;;;;:::i;44264:154::-;44328:7;44355:55;44394:5;44355:20;44367:7;;44355;:11;;:20;;;;:::i;41726:355::-;41789:19;41812:10;:8;:10::i;:::-;41789:33;-1:-1:-1;41833:18:0;41854:27;:10;41789:33;41854:14;:27::i;:::-;41933:4;41917:22;;;;:7;:22;;;;;;41833:48;;-1:-1:-1;41917:38:0;;41833:48;41917:26;:38::i;:::-;41908:4;41892:22;;;;:7;:22;;;;;;;;:63;;;;41969:11;:26;;;;;;41966:107;;;42051:4;42035:22;;;;:7;:22;;;;;;:38;;42062:10;42035:26;:38::i;:::-;42026:4;42010:22;;;;:7;:22;;;;;:63;41966:107;41726:355;;;:::o;42720:543::-;42775:19;42798:10;:8;:10::i;:::-;42775:33;-1:-1:-1;42819:14:0;42836:23;:6;42775:33;42836:10;:23::i;:::-;42819:40;;42888:11;:9;:11::i;:::-;42866:19;:33;;-1:-1:-1;;;;;42866:33:0;;;-1:-1:-1;;;;;;42866:33:0;;;;;;;42910:12;:38;;42866:33;42910:38;;;;;;;;;;;;;;;43008:19;;42866;43000:28;;;:7;42910:38;43000:28;;;;;:40;;43033:6;43000:32;:40::i;:::-;42977:19;;;-1:-1:-1;;;;;42977:19:0;;;42969:28;;;;:7;:28;;;;;;;;:71;;;;43066:19;;;;;43054:32;;:11;:32;;;;;;;43051:121;;;43140:19;;-1:-1:-1;;;;;43140:19:0;43132:28;;;;:7;:28;;;;;;:40;;43165:6;43132:32;:40::i;:::-;43109:19;;-1:-1:-1;;;;;43109:19:0;43101:28;;;;:7;:28;;;;;:71;43051:121;43227:19;;43203:52;;10991:25:1;;;-1:-1:-1;;;;;43227:19:0;;;;43220:4;;43203:52;;10979:2:1;10964:18;43203:52:0;10946:76:1;43268:658:0;43319:19;43342:10;:8;:10::i;:::-;43319:33;-1:-1:-1;43363:12:0;43378:21;:4;43319:33;43378:8;:21::i;:::-;43416:16;;43363:36;;-1:-1:-1;;;;43416:16:0;;;;43412:323;;;43449:22;43466:4;43449:16;:22::i;:::-;43486:10;;:42;;-1:-1:-1;;;;;43486:10:0;;;;43506:21;43486:42;;;;;:10;:42;:10;:42;43506:21;43486:10;:42;;;;;;;;;;;;;;;;;;;;;43412:323;;;43591:10;;-1:-1:-1;;;;;43591:10:0;43583:19;;;;:7;:19;;;;;;:29;;43607:4;43583:23;:29::i;:::-;43569:10;;;-1:-1:-1;;;;;43569:10:0;;;43561:19;;;;:7;:19;;;;;;;;:51;;;;43642:10;;;;;43630:23;;:11;:23;;;;;;;43627:96;;;43702:10;;-1:-1:-1;;;;;43702:10:0;43694:19;;;;:7;:19;;;;;;:29;;43718:4;43694:23;:29::i;:::-;43680:10;;-1:-1:-1;;;;;43680:10:0;43672:19;;;;:7;:19;;;;;:51;43627:96;43786:9;;-1:-1:-1;;;;;43786:9:0;43778:18;;;;:7;:18;;;;;;:28;;43801:4;43778:22;:28::i;:::-;43765:9;;;-1:-1:-1;;;;;43765:9:0;;;43757:18;;;;:7;:18;;;;;;;;:49;;;;43836:9;;;;;43824:22;;:11;:22;;;;;;;43821:90;;;43891:9;;-1:-1:-1;;;;;43891:9:0;43883:18;;;;:7;:18;;;;;;:28;;43906:4;43883:22;:28::i;:::-;43870:9;;-1:-1:-1;;;;;43870:9:0;43862:18;;;;:7;:18;;;;;:49;43268:658;;;:::o;38845:147::-;38923:7;;:17;;38935:4;38923:11;:17::i;:::-;38913:7;:27;38964:10;;:20;;38979:4;38964:14;:20::i;:::-;38951:10;:33;-1:-1:-1;;38845:147:0:o;42264:448::-;42362:12;:19;42306:7;;;;42343:39;;42344:12;;42343:18;:39::i;:::-;42320:62;;42387:19;42409:7;:35;42417:12;42430;42417:26;;;;;;-1:-1:-1;;;42417:26:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;42417:26:0;42409:35;;;;;;;;;;;;;42476:16;;42409:35;;-1:-1:-1;42461:31:0;;;;;:71;;-1:-1:-1;42526:6:0;;;42496:26;;-1:-1:-1;;;;;42526:6:0;;;;42509:12;;42496:26;;;;-1:-1:-1;;;42496:26:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;42496:26:0;:36;;42461:71;:118;;;;;42566:13;-1:-1:-1;;;;;42536:43:0;:12;42549;42536:26;;;;;;-1:-1:-1;;;42536:26:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;42536:26:0;:43;;42461:118;:166;;;;;42622:4;-1:-1:-1;;;;;42584:43:0;:12;42597;42584:26;;;;;;-1:-1:-1;;;42584:26:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;42584:26:0;:43;;42461:166;42457:220;;;42644:12;42657;42644:26;;;;;;-1:-1:-1;;;42644:26:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;42644:26:0;;-1:-1:-1;42637:33:0;;-1:-1:-1;;42637:33:0;42457:220;-1:-1:-1;;42694:10:0;;-1:-1:-1;;;;;42694:10:0;;-1:-1:-1;42264:448:0;:::o;7143:98::-;7201:7;7228:5;7232:1;7228;:5;:::i;14:160:1:-;79:20;;135:13;;128:21;118:32;;108:2;;164:1;161;154:12;179:257;;291:2;279:9;270:7;266:23;262:32;259:2;;;312:6;304;297:22;259:2;356:9;343:23;375:31;400:5;375:31;:::i;441:261::-;;564:2;552:9;543:7;539:23;535:32;532:2;;;585:6;577;570:22;532:2;622:9;616:16;641:31;666:5;641:31;:::i;977:398::-;;;1106:2;1094:9;1085:7;1081:23;1077:32;1074:2;;;1127:6;1119;1112:22;1074:2;1171:9;1158:23;1190:31;1215:5;1190:31;:::i;:::-;1240:5;-1:-1:-1;1297:2:1;1282:18;;1269:32;1310:33;1269:32;1310:33;:::i;:::-;1362:7;1352:17;;;1064:311;;;;;:::o;1380:466::-;;;;1526:2;1514:9;1505:7;1501:23;1497:32;1494:2;;;1547:6;1539;1532:22;1494:2;1591:9;1578:23;1610:31;1635:5;1610:31;:::i;:::-;1660:5;-1:-1:-1;1717:2:1;1702:18;;1689:32;1730:33;1689:32;1730:33;:::i;:::-;1484:362;;1782:7;;-1:-1:-1;;;1836:2:1;1821:18;;;;1808:32;;1484:362::o;1851:325::-;;;1980:2;1968:9;1959:7;1955:23;1951:32;1948:2;;;2001:6;1993;1986:22;1948:2;2045:9;2032:23;2064:31;2089:5;2064:31;:::i;:::-;2114:5;2166:2;2151:18;;;;2138:32;;-1:-1:-1;;;1938:238:1:o;2181:190::-;;2290:2;2278:9;2269:7;2265:23;2261:32;2258:2;;;2311:6;2303;2296:22;2258:2;2339:26;2355:9;2339:26;:::i;2376:190::-;;2488:2;2476:9;2467:7;2463:23;2459:32;2456:2;;;2509:6;2501;2494:22;2456:2;-1:-1:-1;2537:23:1;;2446:120;-1:-1:-1;2446:120:1:o;2571:258::-;;;2697:2;2685:9;2676:7;2672:23;2668:32;2665:2;;;2718:6;2710;2703:22;2665:2;2759:9;2746:23;2736:33;;2788:35;2819:2;2808:9;2804:18;2788:35;:::i;:::-;2778:45;;2655:174;;;;;:::o;2834:316::-;;;;2991:2;2979:9;2970:7;2966:23;2962:32;2959:2;;;3012:6;3004;2997:22;2959:2;3046:9;3040:16;3030:26;;3096:2;3085:9;3081:18;3075:25;3065:35;;3140:2;3129:9;3125:18;3119:25;3109:35;;2949:201;;;;;:::o;3155:463::-;;3246:5;3240:12;3273:6;3268:3;3261:19;3299:4;3328:2;3323:3;3319:12;3312:19;;3365:2;3358:5;3354:14;3386:3;3398:195;3412:6;3409:1;3406:13;3398:195;;;3477:13;;-1:-1:-1;;;;;3473:39:1;3461:52;;3533:12;;;;3568:15;;;;3509:1;3427:9;3398:195;;;-1:-1:-1;3609:3:1;;3216:402;-1:-1:-1;;;;;3216:402:1:o;4443:261::-;;4622:2;4611:9;4604:21;4642:56;4694:2;4683:9;4679:18;4671:6;4642:56;:::i;5136:603::-;;5277:2;5306;5295:9;5288:21;5338:6;5332:13;5381:6;5376:2;5365:9;5361:18;5354:34;5406:4;5419:140;5433:6;5430:1;5427:13;5419:140;;;5528:14;;;5524:23;;5518:30;5494:17;;;5513:2;5490:26;5483:66;5448:10;;5419:140;;;5577:6;5574:1;5571:13;5568:2;;;5647:4;5642:2;5633:6;5622:9;5618:22;5614:31;5607:45;5568:2;-1:-1:-1;5723:2:1;5702:15;-1:-1:-1;;5698:29:1;5683:45;;;;5730:2;5679:54;;5257:482;-1:-1:-1;;;5257:482:1:o;8850:356::-;9052:2;9034:21;;;9071:18;;;9064:30;9130:34;9125:2;9110:18;;9103:62;9197:2;9182:18;;9024:182::o;11027:582::-;;11326:6;11315:9;11308:25;11369:6;11364:2;11353:9;11349:18;11342:34;11412:3;11407:2;11396:9;11392:18;11385:31;11433:57;11485:3;11474:9;11470:19;11462:6;11433:57;:::i;:::-;-1:-1:-1;;;;;11526:32:1;;;;11521:2;11506:18;;11499:60;-1:-1:-1;11590:3:1;11575:19;11568:35;11425:65;11298:311;-1:-1:-1;;;11298:311:1:o;12127:128::-;;12198:1;12194:6;12191:1;12188:13;12185:2;;;12204:18;;:::i;:::-;-1:-1:-1;12240:9:1;;12175:80::o;12260:120::-;;12326:1;12316:2;;12331:18;;:::i;:::-;-1:-1:-1;12365:9:1;;12306:74::o;12385:168::-;;12491:1;12487;12483:6;12479:14;12476:1;12473:21;12468:1;12461:9;12454:17;12450:45;12447:2;;;12498:18;;:::i;:::-;-1:-1:-1;12538:9:1;;12437:116::o;12558:125::-;;12626:1;12623;12620:8;12617:2;;;12631:18;;:::i;:::-;-1:-1:-1;12668:9:1;;12607:76::o;12688:380::-;12767:1;12763:12;;;;12810;;;12831:2;;12885:4;12877:6;12873:17;12863:27;;12831:2;12938;12930:6;12927:14;12907:18;12904:38;12901:2;;;12984:10;12979:3;12975:20;12972:1;12965:31;13019:4;13016:1;13009:15;13047:4;13044:1;13037:15;12901:2;;12743:325;;;:::o;13073:135::-;;-1:-1:-1;;13133:17:1;;13130:2;;;13153:18;;:::i;:::-;-1:-1:-1;13200:1:1;13189:13;;13120:88::o;13213:112::-;;13271:1;13261:2;;13276:18;;:::i;:::-;-1:-1:-1;13310:9:1;;13251:74::o;13330:127::-;13391:10;13386:3;13382:20;13379:1;13372:31;13422:4;13419:1;13412:15;13446:4;13443:1;13436:15;13462:127;13523:10;13518:3;13514:20;13511:1;13504:31;13554:4;13551:1;13544:15;13578:4;13575:1;13568:15;13594:131;-1:-1:-1;;;;;13669:31:1;;13659:42;;13649:2;;13715:1;13712;13705:12
Swarm Source
ipfs://be70fd16e5846a6edc9e52b17962eb0b1a44259407ad7501e9aa0758bf54cc2e
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.