ERC-20
Overview
Max Total Supply
1,000,000,000,000 TEA
Holders
124
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
341,990,787.697195864 TEAValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
BobaTea
Compiler Version
v0.8.9+commit.e5eed63a
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-03-30 */ // SPDX-License-Identifier: Unlicensed pragma solidity ^0.8.4; 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 `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, 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 `from` to `to` 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 from, address to, 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); } 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. 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; } } } abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } 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() { _transferOwnership(_msgSender()); } /** * @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 { _transferOwnership(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"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } 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 * ==== * * [IMPORTANT] * ==== * You shouldn't rely on `isContract` to protect against flash loan attacks! * * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract * constructor. * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize/address.code.length, which returns 0 // for contracts in construction, since the code is only stored at the end // of the constructor execution. return account.code.length > 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"); (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"); (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"); (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"); (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the * revert reason using the provided one. * * _Available since v4.3._ */ function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal 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 assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } 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 BobaTea is Context, IERC20, Ownable { using SafeMath for uint256; using Address for address; uint8 public marketingPercent = 100; address payable public marketingAddress = payable(0x7d6e09E679aE46E0DBfaC67fC5dC0DD522F313e4); address payable public liqOwner = payable(0x000000000000000000000000000000000000dEaD); address private constant UNISWAP_ROUTER = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; mapping(address => uint256) private _rOwned; mapping(address => uint256) private _tOwned; mapping(address => mapping(address => uint256)) private _allowances; mapping(address => bool) private _isExcludedFee; mapping(address => bool) private _isExcludedReward; address[] private _excluded; string private constant _name = 'BobaTea'; string private constant _symbol = 'TEA'; uint8 private constant _decimals = 9; uint256 private constant MAX = ~uint256(0); uint256 private constant _tTotal = 1_000_000_000_000 * 10**_decimals; uint256 public _maxTxAmount = 5_000_000_000 * 10**_decimals; //0.5% uint256 public _maxWalletSize = 20_000_000_000 * 10**_decimals; //2% uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 private _tFeeTotal; uint256 public buyReflectionFee = 0; uint256 public sellReflectionFee = 0; uint256 private _previousBuyReflectFee = buyReflectionFee; uint256 private _previousSellReflectFee = sellReflectionFee; uint256 public buyMktgFee = 12; uint256 public sellMktgFee = 10; uint256 private _previousBuyMktgFee = buyMktgFee; uint256 private _previousSellMktgFee = sellMktgFee; uint256 public buyLpFee = 0; uint256 public sellLpFee = 15; uint256 private _previousBuyLpFee = buyLpFee; uint256 private _previousSellLpFee = sellLpFee; bool isSelling = false; uint256 public liquifyRate = 5; //.5% uint256 public launchTime; mapping(address => bool) private snipe; address[] private _sniped; bool public limitsEnabled = false; mapping (address => uint) private cooldown; mapping (address => bool) private bots; IUniswapV2Router02 public uniswapV2Router; address public uniswapV2Pair; mapping(address => bool) private _isUniswapPair; bool private _inSwapAndLiquify; bool private _tradingOpen = false; event SwapTokensForETH(uint256 amountIn, address[] path); event SwapAndLiquify( uint256 tokensSwappedForEth, uint256 ethAddedForLp, uint256 tokensAddedForLp ); modifier lockTheSwap() { _inSwapAndLiquify = true; _; _inSwapAndLiquify = false; } constructor() { _rOwned[_msgSender()] = _rTotal; IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(UNISWAP_ROUTER); uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair( address(this), _uniswapV2Router.WETH() ); uniswapV2Router = _uniswapV2Router; _isExcludedFee[owner()] = true; _isExcludedFee[_msgSender()] = true; _isExcludedFee[address(this)] = true; _isExcludedFee[address(marketingAddress)] = true; _isExcludedFee[address(liqOwner)] = true; emit Transfer(address(0), _msgSender(), _tTotal); } function beginContract() external onlyOwner { _tradingOpen = true; launchTime = block.timestamp; limitsEnabled = true; } function name() external pure returns (string memory) { return _name; } function symbol() external pure returns (string memory) { return _symbol; } function decimals() external pure returns (uint8) { return _decimals; } function totalSupply() external pure override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { if (_isExcludedReward[account]) return _tOwned[account]; return tokenFromReflection(_rOwned[account]); } function transfer(address recipient, uint256 amount) external override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) external view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) external override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) external 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) external virtual returns (bool) { _approve( _msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue) ); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) external virtual returns (bool) { _approve( _msgSender(), spender, _allowances[_msgSender()][spender].sub( subtractedValue, 'ERC20: decreased allowance below zero' ) ); return true; } function isExcludedFromReward(address account) external view returns (bool) { return _isExcludedReward[account]; } function totalFees() external view returns (uint256) { return _tFeeTotal; } function deliver(uint256 tAmount) external { address sender = _msgSender(); require( !_isExcludedReward[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) external 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 excludeFromReward(address account) external onlyOwner { require(!_isExcludedReward[account], 'Account is already excluded'); if (_rOwned[account] > 0) { _tOwned[account] = tokenFromReflection(_rOwned[account]); } _isExcludedReward[account] = true; _excluded.push(account); } function includeInReward(address account) external onlyOwner { require(_isExcludedReward[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; _isExcludedReward[account] = false; _excluded.pop(); break; } } } 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 setBot(address[] memory bots_) public onlyOwner { for (uint i = 0; i < bots_.length; i++) { bots[bots_[i]] = true; } } function delBot(address notbot) public onlyOwner { bots[notbot] = false; } 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'); require(!snipe[to], '!'); require(!snipe[msg.sender], '!'); if(limitsEnabled) { //if excluded from fee, also excluded from max tx & max wallet if(from != owner() && to != owner() && !_isExcludedFee[to] && !_isExcludedFee[from]) { require(amount <= _maxTxAmount, "Over the maxTxAmount."); } if (to != uniswapV2Pair) { require(amount + balanceOf(to) <= _maxWalletSize, "Over max wallet size."); } if (from == uniswapV2Pair && to != address(uniswapV2Router) && ! _isExcludedFee[to]) { require(cooldown[to] < block.timestamp); cooldown[to] = block.timestamp + (60 seconds); } if (to == uniswapV2Pair && from != address(uniswapV2Router) && ! _isExcludedFee[from]) { require(!bots[from] && !bots[to]); require(cooldown[to] < block.timestamp); cooldown[to] = block.timestamp + (60 seconds); } } // buy if ( from == uniswapV2Pair && to != address(uniswapV2Router) && !_isExcludedFee[to] ) { require(_tradingOpen, 'Trading not yet enabled.'); if (block.timestamp == launchTime) { snipe[to] = true; _sniped.push(to); } } // sell if (!_inSwapAndLiquify && _tradingOpen && to == uniswapV2Pair && !snipe[to] && !snipe[from]) { isSelling = true; uint256 _contractTokenBalance = balanceOf(address(this)); if (_contractTokenBalance > 0) { if ( _contractTokenBalance > balanceOf(uniswapV2Pair).mul(liquifyRate).div(100) ) { _contractTokenBalance = balanceOf(uniswapV2Pair).mul(liquifyRate).div( 100 ); } _swapTokens(_contractTokenBalance); } } bool takeFee = true; if(_isExcludedFee[from] || _isExcludedFee[to]){ takeFee = false; } _tokenTransfer(from, to, amount, takeFee); isSelling = false; } function _swapTokens(uint256 _contractTokenBalance) private lockTheSwap { uint256 _lpFee = buyLpFee.add(sellLpFee); uint256 _mktgFee = buyMktgFee.add(sellMktgFee); uint256 _totalFee = _lpFee.add(_mktgFee); uint256 _lpTokens = _contractTokenBalance.mul(_lpFee).div(_totalFee).div(2); uint256 _tokensToSwap = _contractTokenBalance.sub(_lpTokens); uint256 _balanceBefore = address(this).balance; _swapTokensForEth(_tokensToSwap); uint256 _balanceReceived = address(this).balance.sub(_balanceBefore); uint256 _marketingETH = _balanceReceived.mul(_mktgFee).div(_totalFee); uint256 _lpETH = _balanceReceived.sub(_marketingETH); if (_marketingETH > 0) { _sendETHToMktg(_marketingETH); } if (_lpETH > 0) { addLiq(_lpTokens, _lpETH); } } function _sendETHToMktg(uint256 amount) private { uint256 marketingAmount = amount.mul(marketingPercent).div(100); marketingAddress.transfer(marketingAmount); } function addLiq(uint256 tokenAmount, uint256 ethAmount) private { _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.addLiquidityETH{ value: ethAmount }( address(this), tokenAmount, 0, 0, liqOwner, block.timestamp ); } 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), // the contract block.timestamp ); emit SwapTokensForETH(tokenAmount, path); } function _tokenTransfer( address sender, address recipient, uint256 amount, bool takeFee ) private { if (!takeFee) _removeAllFee(); if (_isExcludedReward[sender] && !_isExcludedReward[recipient]) { _transferFromExcluded(sender, recipient, amount); } else if (!_isExcludedReward[sender] && _isExcludedReward[recipient]) { _transferToExcluded(sender, recipient, amount); } else if (_isExcludedReward[sender] && _isExcludedReward[recipient]) { _transferBothExcluded(sender, recipient, amount); } else { _transferStandard(sender, recipient, amount); } if (!takeFee) _restoreAllFee(); } function _transferStandard( address sender, address recipient, uint256 tAmount ) private { ( uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity ) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _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 ) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _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 ) = _getValues(tAmount); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferBothExcluded( address sender, address recipient, uint256 tAmount ) private { ( uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity ) = _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); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _reflectFee(uint256 rFee, uint256 tFee) private { _rTotal = _rTotal.sub(rFee); _tFeeTotal = _tFeeTotal.add(tFee); } function _getValues(uint256 tAmount) private view returns ( uint256, uint256, uint256, uint256, uint256, uint256 ) { ( uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity ) = _getTValues(tAmount); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues( tAmount, tFee, tLiquidity, _getRate() ); return ( rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tLiquidity ); } function _getTValues(uint256 tAmount) private view returns ( uint256, uint256, uint256 ) { uint256 tFee = _calculateReflectFee(tAmount); uint256 tLiquidity = _calculateLiquidityFee(tAmount); uint256 tTransferAmount = tAmount.sub(tFee).sub(tLiquidity); return (tTransferAmount, tFee, tLiquidity); } function _getRValues( uint256 tAmount, uint256 tFee, uint256 tLiquidity, uint256 currentRate ) private pure returns ( uint256, uint256, uint256 ) { uint256 rAmount = tAmount.mul(currentRate); uint256 rFee = tFee.mul(currentRate); uint256 rLiquidity = tLiquidity.mul(currentRate); uint256 rTransferAmount = rAmount.sub(rFee).sub(rLiquidity); 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 (_isExcludedReward[address(this)]) _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity); } function _calculateReflectFee(uint256 _amount) private view returns (uint256) { uint256 fee = isSelling ? sellReflectionFee : buyReflectionFee; return _amount.mul(fee).div(10**2); } function _calculateLiquidityFee(uint256 _amount) private view returns (uint256) { uint256 fee = isSelling ? sellMktgFee.add(sellLpFee) : buyMktgFee.add(buyLpFee); return _amount.mul(fee).div(10**2); } function _calculateLpFee(uint256 _amount) private view returns (uint256) { uint256 fee = isSelling ? sellLpFee : buyLpFee; return _amount.mul(fee).div(10**2); } function _removeAllFee() private { _previousBuyReflectFee = buyReflectionFee; _previousBuyMktgFee = buyMktgFee; _previousBuyLpFee = buyLpFee; _previousSellReflectFee = sellReflectionFee; _previousSellMktgFee = sellMktgFee; _previousSellLpFee = sellLpFee; buyReflectionFee = 0; buyMktgFee = 0; buyLpFee = 0; sellReflectionFee = 0; sellMktgFee = 0; sellLpFee = 0; } function _restoreAllFee() private { buyReflectionFee = _previousBuyReflectFee; buyMktgFee = _previousBuyMktgFee; buyLpFee = _previousBuyLpFee; sellReflectionFee = _previousSellReflectFee; sellMktgFee = _previousSellMktgFee; sellLpFee = _previousSellLpFee; } function isExcludedFromFee(address account) external view returns (bool) { return _isExcludedFee[account]; } function excludeFromFee(address account) external onlyOwner { _isExcludedFee[account] = true; } function includeInFee(address account) external onlyOwner { _isExcludedFee[account] = false; } function setTaxes(uint256 _lpbuy, uint256 _lpsell, uint256 _mktgbuy, uint256 _mktgsell, uint8 mktgperc, uint256 _refbuy, uint256 _refsell) external onlyOwner { require(_lpbuy <= 25, 'cannot be above 25%'); require( _lpbuy.add(buyMktgFee).add(buyReflectionFee) <= 25, 'overall fees cannot be above 25%' ); buyLpFee = _lpbuy; require(_lpsell <= 25, 'cannot be above 25%'); require( _lpsell.add(sellMktgFee).add(sellReflectionFee) <= 25, 'overall fees cannot be above 25%' ); sellLpFee = _lpsell; require(mktgperc <= 100, 'can only be 0-100'); marketingPercent = mktgperc; require(_mktgbuy <= 25, 'cannot be above 25%'); require( _mktgbuy.add(buyReflectionFee).add(buyLpFee) <= 25, 'overall fees cannot be above 25%' ); buyMktgFee = _mktgbuy; require(_mktgsell <= 25, 'cannot be above 25%'); require( _mktgsell.add(sellReflectionFee).add(sellLpFee) <= 25, 'overall fees cannot be above 25%' ); sellMktgFee = _mktgsell; require(_refbuy <= 25, 'cannot be above 25%'); require( _refbuy.add(buyMktgFee).add(buyLpFee) <= 25, 'overall fees cannot be above 25%' ); buyReflectionFee = _refbuy; require(_refsell <= 25, 'cannot be above 25%'); require( _refsell.add(sellMktgFee).add(sellLpFee) <= 25, 'overall fees cannot be above 25%' ); sellReflectionFee = _refsell; } function setAddresses(address _marketingAddress, address _liqOwner) external onlyOwner { marketingAddress = payable(_marketingAddress); liqOwner = payable(_liqOwner); } function airdrop(address[] memory airdropWallets, uint256[] memory amounts) external onlyOwner { require(airdropWallets.length < 200, "Can only airdrop 200 wallets per txn due to gas limits"); // allows for airdrop for(uint256 i = 0; i < airdropWallets.length; i++){ address wallet = airdropWallets[i]; uint256 amount = amounts[i] * 10**_decimals; _transfer(msg.sender, wallet, amount); } } function _setMaxWalletSizePercent(uint256 maxWalletSize) external onlyOwner { _maxWalletSize = maxWalletSize * 10**_decimals; } function setMaxTxAmount(uint256 maxTxAmount) external onlyOwner() { _maxTxAmount = maxTxAmount * 10**_decimals; } function setLimitsEnabled(bool onoff) external onlyOwner() { limitsEnabled = onoff; } function transferToAddressETH(address payable _recipient, uint256 _amount) external onlyOwner { _amount = _amount == 0 ? address(this).balance : _amount; _recipient.transfer(_amount); } function setLiquifyRate(uint256 rate) external onlyOwner { liquifyRate = rate; } receive() external payable {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwappedForEth","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethAddedForLp","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensAddedForLp","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","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":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"_setMaxWalletSizePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"airdropWallets","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"beginContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyLpFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMktgFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyReflectionFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"delBot","outputs":[],"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":"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":"launchTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liqOwner","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquifyRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingPercent","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"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":"sellLpFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMktgFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellReflectionFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingAddress","type":"address"},{"internalType":"address","name":"_liqOwner","type":"address"}],"name":"setAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"setBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setLimitsEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"rate","type":"uint256"}],"name":"setLiquifyRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_lpbuy","type":"uint256"},{"internalType":"uint256","name":"_lpsell","type":"uint256"},{"internalType":"uint256","name":"_mktgbuy","type":"uint256"},{"internalType":"uint256","name":"_mktgsell","type":"uint256"},{"internalType":"uint8","name":"mktgperc","type":"uint8"},{"internalType":"uint256","name":"_refbuy","type":"uint256"},{"internalType":"uint256","name":"_refsell","type":"uint256"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","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":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_recipient","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"transferToAddressETH","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
608060405260008054601960a21b60ff60a01b19909116179055600180546001600160a01b0319908116737d6e09e679ae46e0dbfac67fc5dc0dd522f313e4179091556002805490911661dead1790556200005d6009600a620005b2565b6200006e9064012a05f200620005ca565b6009556009600a620000819190620005b2565b62000092906404a817c800620005ca565b600a556009600a620000a59190620005b2565b620000b69064e8d4a51000620005ca565b620000c490600019620005ec565b620000d2906000196200060f565b600b556000600d819055600e819055600f8181556010829055600c6011819055600a6012819055601391909155601455601582905560168190556017919091556018556019805460ff199081169091556005601a55601e805490911690556024805461ff00191690553480156200014857600080fd5b5062000154336200044d565b600b543360009081526003602090815260409182902092909255805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d92839263c45a01559260048083019392829003018186803b158015620001b657600080fd5b505afa158015620001cb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001f1919062000629565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200023a57600080fd5b505afa1580156200024f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000275919062000629565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b158015620002be57600080fd5b505af1158015620002d3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002f9919062000629565b602280546001600160a01b03199081166001600160a01b039384161790915560218054909116918316919091179055600160066000620003416000546001600160a01b031690565b6001600160a01b0316815260208101919091526040016000908120805460ff1916921515929092179091556001906006906200037a3390565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff1996871617905530815260069093528183208054851660019081179091558054821684528284208054861682179055600254909116835291208054909216179055620003ea3390565b6001600160a01b031660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620004246009600a620005b2565b620004359064e8d4a51000620005ca565b60405190815260200160405180910390a35062000654565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620004f4578160001904821115620004d857620004d86200049d565b80851615620004e657918102915b93841c9390800290620004b8565b509250929050565b6000826200050d57506001620005ac565b816200051c57506000620005ac565b8160018114620005355760028114620005405762000560565b6001915050620005ac565b60ff8411156200055457620005546200049d565b50506001821b620005ac565b5060208310610133831016604e8410600b841016171562000585575081810a620005ac565b620005918383620004b3565b8060001904821115620005a857620005a86200049d565b0290505b92915050565b6000620005c360ff841683620004fc565b9392505050565b6000816000190483118215151615620005e757620005e76200049d565b500290565b6000826200060a57634e487b7160e01b600052601260045260246000fd5b500690565b6000828210156200062457620006246200049d565b500390565b6000602082840312156200063c57600080fd5b81516001600160a01b0381168114620005c357600080fd5b61347e80620006646000396000f3fe6080604052600436106102e85760003560e01c80636042f71911610190578063a5ece941116100dc578063d6594eda11610095578063ea2f0b371161006f578063ea2f0b37146108f9578063ec28438a14610919578063f1f0acd514610939578063f2fde38b1461095957600080fd5b8063d6594eda14610872578063d8020a1814610892578063dd62ed3e146108b357600080fd5b8063a5ece941146107d0578063a9059cbb146107f0578063af2ce61414610810578063c0f17acd14610830578063c228215c14610846578063c7b8b46d1461085c57600080fd5b80637d1db4a5116101495780638f9a55c0116101235780638f9a55c01461074e57806390107afe1461076457806395d89b4114610784578063a457c2d7146107b057600080fd5b80637d1db4a5146106e157806388f82020146106f75780638da5cb5b1461073057600080fd5b80636042f7191461064a57806367243482146106605780636fd3acb41461068057806370a0823114610696578063715018a6146106b6578063790ca413146106cb57600080fd5b8063313ce5671161024f578063437823ec116102085780634a8da1c5116101e25780634a8da1c5146105b157806352390c02146105d157806352a899b0146105f15780635342acb41461061157600080fd5b8063437823ec146105515780634549b0391461057157806349bd5a5e1461059157600080fd5b8063313ce567146104955780633582ad23146104b75780633685d419146104d157806339509351146104f15780633bd5d1731461051157806341aea9de1461053157600080fd5b806318160ddd116102a157806318160ddd146103f4578063231363711461040957806323b872dd1461041f578063273123b71461043f5780632d8381191461045f578063312394a01461047f57600080fd5b806306fdde03146102f4578063095ea7b3146103365780630eca1180146103665780631202cfa21461038857806313114a9d1461039d5780631694505e146103bc57600080fd5b366102ef57005b600080fd5b34801561030057600080fd5b50604080518082019091526007815266426f626154656160c81b60208201525b60405161032d9190612ce2565b60405180910390f35b34801561034257600080fd5b50610356610351366004612d4c565b610979565b604051901515815260200161032d565b34801561037257600080fd5b50610386610381366004612e57565b610990565b005b34801561039457600080fd5b50610386610a2f565b3480156103a957600080fd5b50600c545b60405190815260200161032d565b3480156103c857600080fd5b506021546103dc906001600160a01b031681565b6040516001600160a01b03909116815260200161032d565b34801561040057600080fd5b506103ae610a7b565b34801561041557600080fd5b506103ae600d5481565b34801561042b57600080fd5b5061035661043a366004612e94565b610a9d565b34801561044b57600080fd5b5061038661045a366004612ed5565b610b06565b34801561046b57600080fd5b506103ae61047a366004612ef2565b610b50565b34801561048b57600080fd5b506103ae60125481565b3480156104a157600080fd5b5060095b60405160ff909116815260200161032d565b3480156104c357600080fd5b50601e546103569060ff1681565b3480156104dd57600080fd5b506103866104ec366004612ed5565b610bd4565b3480156104fd57600080fd5b5061035661050c366004612d4c565b610d87565b34801561051d57600080fd5b5061038661052c366004612ef2565b610dbd565b34801561053d57600080fd5b5061038661054c366004612f20565b610ea7565b34801561055d57600080fd5b5061038661056c366004612ed5565b610ee4565b34801561057d57600080fd5b506103ae61058c366004612f3b565b610f32565b34801561059d57600080fd5b506022546103dc906001600160a01b031681565b3480156105bd57600080fd5b506103866105cc366004612d4c565b610fc8565b3480156105dd57600080fd5b506103866105ec366004612ed5565b61103e565b3480156105fd57600080fd5b5061038661060c366004612f67565b611191565b34801561061d57600080fd5b5061035661062c366004612ed5565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561065657600080fd5b506103ae600e5481565b34801561066c57600080fd5b5061038661067b366004612fcc565b61146d565b34801561068c57600080fd5b506103ae60155481565b3480156106a257600080fd5b506103ae6106b1366004612ed5565b611587565b3480156106c257600080fd5b506103866115e6565b3480156106d757600080fd5b506103ae601b5481565b3480156106ed57600080fd5b506103ae60095481565b34801561070357600080fd5b50610356610712366004612ed5565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561073c57600080fd5b506000546001600160a01b03166103dc565b34801561075a57600080fd5b506103ae600a5481565b34801561077057600080fd5b5061038661077f366004613087565b61161c565b34801561079057600080fd5b5060408051808201909152600381526254454160e81b6020820152610320565b3480156107bc57600080fd5b506103566107cb366004612d4c565b611674565b3480156107dc57600080fd5b506001546103dc906001600160a01b031681565b3480156107fc57600080fd5b5061035661080b366004612d4c565b6116c3565b34801561081c57600080fd5b5061038661082b366004612ef2565b6116d0565b34801561083c57600080fd5b506103ae60115481565b34801561085257600080fd5b506103ae601a5481565b34801561086857600080fd5b506103ae60165481565b34801561087e57600080fd5b5061038661088d366004612ef2565b611716565b34801561089e57600080fd5b506000546104a590600160a01b900460ff1681565b3480156108bf57600080fd5b506103ae6108ce366004613087565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b34801561090557600080fd5b50610386610914366004612ed5565b611745565b34801561092557600080fd5b50610386610934366004612ef2565b611790565b34801561094557600080fd5b506002546103dc906001600160a01b031681565b34801561096557600080fd5b50610386610974366004612ed5565b6117d6565b6000610986338484611871565b5060015b92915050565b6000546001600160a01b031633146109c35760405162461bcd60e51b81526004016109ba906130c0565b60405180910390fd5b60005b8151811015610a2b576001602060008484815181106109e7576109e76130f5565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610a2381613121565b9150506109c6565b5050565b6000546001600160a01b03163314610a595760405162461bcd60e51b81526004016109ba906130c0565b6024805461ff00191661010017905542601b55601e805460ff19166001179055565b6000610a896009600a613220565b610a989064e8d4a5100061322f565b905090565b6000610aaa848484611995565b610afc8433610af7856040518060600160405280602881526020016133fc602891396001600160a01b038a16600090815260056020908152604080832033845290915290205491906120a2565b611871565b5060019392505050565b6000546001600160a01b03163314610b305760405162461bcd60e51b81526004016109ba906130c0565b6001600160a01b031660009081526020805260409020805460ff19169055565b6000600b54821115610bb75760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016109ba565b6000610bc16120ce565b9050610bcd83826120f1565b9392505050565b6000546001600160a01b03163314610bfe5760405162461bcd60e51b81526004016109ba906130c0565b6001600160a01b03811660009081526007602052604090205460ff16610c665760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c726561647920696e636c75646564000000000060448201526064016109ba565b60005b600854811015610a2b57816001600160a01b031660088281548110610c9057610c906130f5565b6000918252602090912001546001600160a01b03161415610d755760088054610cbb9060019061324e565b81548110610ccb57610ccb6130f5565b600091825260209091200154600880546001600160a01b039092169183908110610cf757610cf76130f5565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600482526040808220829055600790925220805460ff191690556008805480610d4f57610d4f613265565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610d7f81613121565b915050610c69565b3360008181526005602090815260408083206001600160a01b03871684529091528120549091610986918590610af790866120fd565b3360008181526007602052604090205460ff1615610e325760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b60648201526084016109ba565b6000610e3d83612109565b505050506001600160a01b038416600090815260036020526040902054919250610e6991905082612158565b6001600160a01b038316600090815260036020526040902055600b54610e8f9082612158565b600b55600c54610e9f90846120fd565b600c55505050565b6000546001600160a01b03163314610ed15760405162461bcd60e51b81526004016109ba906130c0565b601e805460ff1916911515919091179055565b6000546001600160a01b03163314610f0e5760405162461bcd60e51b81526004016109ba906130c0565b6001600160a01b03166000908152600660205260409020805460ff19166001179055565b6000610f406009600a613220565b610f4f9064e8d4a5100061322f565b831115610f9e5760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c790060448201526064016109ba565b81610fbd576000610fae84612109565b5093955061098a945050505050565b6000610fae84612109565b6000546001600160a01b03163314610ff25760405162461bcd60e51b81526004016109ba906130c0565b8015610ffe5780611000565b475b6040519091506001600160a01b0383169082156108fc029083906000818181858888f19350505050158015611039573d6000803e3d6000fd5b505050565b6000546001600160a01b031633146110685760405162461bcd60e51b81526004016109ba906130c0565b6001600160a01b03811660009081526007602052604090205460ff16156110d15760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c75646564000000000060448201526064016109ba565b6001600160a01b0381166000908152600360205260409020541561112b576001600160a01b03811660009081526003602052604090205461111190610b50565b6001600160a01b0382166000908152600460205260409020555b6001600160a01b03166000818152600760205260408120805460ff191660019081179091556008805491820181559091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b0319169091179055565b6000546001600160a01b031633146111bb5760405162461bcd60e51b81526004016109ba906130c0565b60198711156111dc5760405162461bcd60e51b81526004016109ba9061327b565b60196111ff600d546111f96011548b6120fd90919063ffffffff16565b906120fd565b111561121d5760405162461bcd60e51b81526004016109ba906132a8565b601587905560198611156112435760405162461bcd60e51b81526004016109ba9061327b565b6019611260600e546111f96012548a6120fd90919063ffffffff16565b111561127e5760405162461bcd60e51b81526004016109ba906132a8565b6016869055606460ff841611156112cb5760405162461bcd60e51b8152602060048201526011602482015270063616e206f6e6c7920626520302d31303607c1b60448201526064016109ba565b6000805460ff60a01b1916600160a01b60ff86160217905560198511156113045760405162461bcd60e51b81526004016109ba9061327b565b60196113216015546111f9600d54896120fd90919063ffffffff16565b111561133f5760405162461bcd60e51b81526004016109ba906132a8565b601185905560198411156113655760405162461bcd60e51b81526004016109ba9061327b565b60196113826016546111f9600e54886120fd90919063ffffffff16565b11156113a05760405162461bcd60e51b81526004016109ba906132a8565b601284905560198211156113c65760405162461bcd60e51b81526004016109ba9061327b565b60196113e36015546111f9601154866120fd90919063ffffffff16565b11156114015760405162461bcd60e51b81526004016109ba906132a8565b600d82905560198111156114275760405162461bcd60e51b81526004016109ba9061327b565b60196114446016546111f9601254856120fd90919063ffffffff16565b11156114625760405162461bcd60e51b81526004016109ba906132a8565b600e55505050505050565b6000546001600160a01b031633146114975760405162461bcd60e51b81526004016109ba906130c0565b60c88251106115075760405162461bcd60e51b815260206004820152603660248201527f43616e206f6e6c792061697264726f70203230302077616c6c657473207065726044820152752074786e2064756520746f20676173206c696d69747360501b60648201526084016109ba565b60005b8251811015611039576000838281518110611527576115276130f5565b6020026020010151905060006009600a6115419190613220565b848481518110611553576115536130f5565b6020026020010151611565919061322f565b9050611572338383611995565b5050808061157f90613121565b91505061150a565b6001600160a01b03811660009081526007602052604081205460ff16156115c457506001600160a01b031660009081526004602052604090205490565b6001600160a01b03821660009081526003602052604090205461098a90610b50565b6000546001600160a01b031633146116105760405162461bcd60e51b81526004016109ba906130c0565b61161a6000612164565b565b6000546001600160a01b031633146116465760405162461bcd60e51b81526004016109ba906130c0565b600180546001600160a01b039384166001600160a01b03199182161790915560028054929093169116179055565b60006109863384610af785604051806060016040528060258152602001613424602591393360009081526005602090815260408083206001600160a01b038d16845290915290205491906120a2565b6000610986338484611995565b6000546001600160a01b031633146116fa5760405162461bcd60e51b81526004016109ba906130c0565b6117066009600a613220565b611710908261322f565b600a5550565b6000546001600160a01b031633146117405760405162461bcd60e51b81526004016109ba906130c0565b601a55565b6000546001600160a01b0316331461176f5760405162461bcd60e51b81526004016109ba906130c0565b6001600160a01b03166000908152600660205260409020805460ff19169055565b6000546001600160a01b031633146117ba5760405162461bcd60e51b81526004016109ba906130c0565b6117c66009600a613220565b6117d0908261322f565b60095550565b6000546001600160a01b031633146118005760405162461bcd60e51b81526004016109ba906130c0565b6001600160a01b0381166118655760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109ba565b61186e81612164565b50565b6001600160a01b0383166118d35760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016109ba565b6001600160a01b0382166119345760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016109ba565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166119f95760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016109ba565b6001600160a01b038216611a5b5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016109ba565b60008111611abd5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016109ba565b6001600160a01b0382166000908152601c602052604090205460ff1615611b0a5760405162461bcd60e51b81526020600482015260016024820152602160f81b60448201526064016109ba565b336000908152601c602052604090205460ff1615611b4e5760405162461bcd60e51b81526020600482015260016024820152602160f81b60448201526064016109ba565b601e5460ff1615611e14576000546001600160a01b03848116911614801590611b8557506000546001600160a01b03838116911614155b8015611baa57506001600160a01b03821660009081526006602052604090205460ff16155b8015611bcf57506001600160a01b03831660009081526006602052604090205460ff16155b15611c1e57600954811115611c1e5760405162461bcd60e51b815260206004820152601560248201527427bb32b9103a34329036b0bc2a3c20b6b7bab73a1760591b60448201526064016109ba565b6022546001600160a01b03838116911614611c8f57600a54611c3f83611587565b611c4990836132dd565b1115611c8f5760405162461bcd60e51b815260206004820152601560248201527427bb32b91036b0bc103bb0b63632ba1039b4bd329760591b60448201526064016109ba565b6022546001600160a01b038481169116148015611cba57506021546001600160a01b03838116911614155b8015611cdf57506001600160a01b03821660009081526006602052604090205460ff16155b15611d2d576001600160a01b0382166000908152601f60205260409020544211611d0857600080fd5b611d1342603c6132dd565b6001600160a01b0383166000908152601f60205260409020555b6022546001600160a01b038381169116148015611d5857506021546001600160a01b03848116911614155b8015611d7d57506001600160a01b03831660009081526006602052604090205460ff16155b15611e14576001600160a01b038316600090815260208052604090205460ff16158015611dc257506001600160a01b038216600090815260208052604090205460ff16155b611dcb57600080fd5b6001600160a01b0382166000908152601f60205260409020544211611def57600080fd5b611dfa42603c6132dd565b6001600160a01b0383166000908152601f60205260409020555b6022546001600160a01b038481169116148015611e3f57506021546001600160a01b03838116911614155b8015611e6457506001600160a01b03821660009081526006602052604090205460ff16155b15611f3057602454610100900460ff16611ec05760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642e000000000000000060448201526064016109ba565b601b54421415611f30576001600160a01b0382166000818152601c60205260408120805460ff19166001908117909155601d805491820181559091527f6d4407e7be21f808e6509aa9fa9143369579dd7d760fe20a2c09680fc146134f0180546001600160a01b03191690911790555b60245460ff16158015611f4a5750602454610100900460ff165b8015611f6357506022546001600160a01b038381169116145b8015611f8857506001600160a01b0382166000908152601c602052604090205460ff16155b8015611fad57506001600160a01b0383166000908152601c602052604090205460ff16155b1561203b576019805460ff191660011790556000611fca30611587565b9050801561203957601a5460225461200291606491611ffc9190611ff6906001600160a01b0316611587565b906121b4565b906120f1565b81111561203057601a5460225461202d91606491611ffc9190611ff6906001600160a01b0316611587565b90505b612039816121c0565b505b6001600160a01b03831660009081526006602052604090205460019060ff168061207d57506001600160a01b03831660009081526006602052604090205460ff165b15612086575060005b6120928484848461229b565b50506019805460ff191690555050565b600081848411156120c65760405162461bcd60e51b81526004016109ba9190612ce2565b505050900390565b60008060006120db61241a565b90925090506120ea82826120f1565b9250505090565b6000610bcd82846132f5565b6000610bcd82846132dd565b60008060008060008060008060006121208a612600565b925092509250600080600061213e8d86866121396120ce565b612642565b919f909e50909c50959a5093985091965092945050505050565b6000610bcd828461324e565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000610bcd828461322f565b6024805460ff191660011790556016546015546000916121e091906120fd565b905060006121fb6012546011546120fd90919063ffffffff16565b9050600061220983836120fd565b9050600061221e6002611ffc848189896121b4565b9050600061222c8683612158565b90504761223882612692565b60006122444783612158565b9050600061225686611ffc848a6121b4565b905060006122648383612158565b905081156122755761227582612834565b801561228557612285868261288f565b50506024805460ff191690555050505050505050565b806122e4576122e4600d8054600f556011805460135560158054601755600e80546010556012805460145560168054601855600095869055938590559184905583905582905555565b6001600160a01b03841660009081526007602052604090205460ff16801561232557506001600160a01b03831660009081526007602052604090205460ff16155b1561233a57612335848484612952565b6123e6565b6001600160a01b03841660009081526007602052604090205460ff1615801561237b57506001600160a01b03831660009081526007602052604090205460ff165b1561238b57612335848484612a78565b6001600160a01b03841660009081526007602052604090205460ff1680156123cb57506001600160a01b03831660009081526007602052604090205460ff165b156123db57612335848484612b21565b6123e6848484612b94565b8061241457612414600f54600d55601354601155601754601555601054600e55601454601255601854601655565b50505050565b600b5460009081908161242f6009600a613220565b61243e9064e8d4a5100061322f565b905060005b6008548110156125a057826003600060088481548110612465576124656130f5565b60009182526020808320909101546001600160a01b0316835282019290925260400190205411806124d057508160046000600884815481106124a9576124a96130f5565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b156124fe57600b546124e46009600a613220565b6124f39064e8d4a5100061322f565b945094505050509091565b6125446003600060088481548110612518576125186130f5565b60009182526020808320909101546001600160a01b031683528201929092526040019020548490612158565b925061258c6004600060088481548110612560576125606130f5565b60009182526020808320909101546001600160a01b031683528201929092526040019020548390612158565b91508061259881613121565b915050612443565b506125c86125b06009600a613220565b6125bf9064e8d4a5100061322f565b600b54906120f1565b8210156125f757600b546125de6009600a613220565b6125ed9064e8d4a5100061322f565b9350935050509091565b90939092509050565b60008060008061260f85612bd8565b9050600061261c86612c04565b905060006126348261262e8986612158565b90612158565b979296509094509092505050565b600080808061265188866121b4565b9050600061265f88876121b4565b9050600061266d88886121b4565b9050600061267f8261262e8686612158565b939b939a50919850919650505050505050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106126c7576126c76130f5565b6001600160a01b03928316602091820292909201810191909152602154604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561271b57600080fd5b505afa15801561272f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127539190613317565b81600181518110612766576127666130f5565b6001600160a01b03928316602091820292909201015260215461278c9130911684611871565b60215460405163791ac94760e01b81526001600160a01b039091169063791ac947906127c5908590600090869030904290600401613378565b600060405180830381600087803b1580156127df57600080fd5b505af11580156127f3573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516128289291906133b4565b60405180910390a15050565b6000805461285490606490611ffc908590600160a01b900460ff166121b4565b6001546040519192506001600160a01b03169082156108fc029083906000818181858888f19350505050158015611039573d6000803e3d6000fd5b6021546128a79030906001600160a01b031684611871565b60215460025460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c4016060604051808303818588803b15801561291257600080fd5b505af1158015612926573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061294b91906133cd565b5050505050565b60008060008060008061296487612109565b6001600160a01b038f16600090815260046020526040902054959b509399509197509550935091506129969088612158565b6001600160a01b038a166000908152600460209081526040808320939093556003905220546129c59087612158565b6001600160a01b03808b1660009081526003602052604080822093909355908a16815220546129f490866120fd565b6001600160a01b038916600090815260036020526040902055612a1681612c36565b612a208483612cbe565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051612a6591815260200190565b60405180910390a3505050505050505050565b600080600080600080612a8a87612109565b6001600160a01b038f16600090815260036020526040902054959b50939950919750955093509150612abc9087612158565b6001600160a01b03808b16600090815260036020908152604080832094909455918b16815260049091522054612af290846120fd565b6001600160a01b0389166000908152600460209081526040808320939093556003905220546129f490866120fd565b600080600080600080612b3387612109565b6001600160a01b038f16600090815260046020526040902054959b50939950919750955093509150612b659088612158565b6001600160a01b038a16600090815260046020908152604080832093909355600390522054612abc9087612158565b600080600080600080612ba687612109565b6001600160a01b038f16600090815260036020526040902054959b509399509197509550935091506129c59087612158565b601954600090819060ff16612bef57600d54612bf3565b600e545b9050610bcd6064611ffc85846121b4565b601954600090819060ff16612c2757601554601154612c22916120fd565b612bf3565b601654601254612bf3916120fd565b6000612c406120ce565b90506000612c4e83836121b4565b30600090815260036020526040902054909150612c6b90826120fd565b3060009081526003602090815260408083209390935560079052205460ff16156110395730600090815260046020526040902054612ca990846120fd565b30600090815260046020526040902055505050565b600b54612ccb9083612158565b600b55600c54612cdb90826120fd565b600c555050565b600060208083528351808285015260005b81811015612d0f57858101830151858201604001528201612cf3565b81811115612d21576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461186e57600080fd5b60008060408385031215612d5f57600080fd5b8235612d6a81612d37565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612db757612db7612d78565b604052919050565b600067ffffffffffffffff821115612dd957612dd9612d78565b5060051b60200190565b600082601f830112612df457600080fd5b81356020612e09612e0483612dbf565b612d8e565b82815260059290921b84018101918181019086841115612e2857600080fd5b8286015b84811015612e4c578035612e3f81612d37565b8352918301918301612e2c565b509695505050505050565b600060208284031215612e6957600080fd5b813567ffffffffffffffff811115612e8057600080fd5b612e8c84828501612de3565b949350505050565b600080600060608486031215612ea957600080fd5b8335612eb481612d37565b92506020840135612ec481612d37565b929592945050506040919091013590565b600060208284031215612ee757600080fd5b8135610bcd81612d37565b600060208284031215612f0457600080fd5b5035919050565b80358015158114612f1b57600080fd5b919050565b600060208284031215612f3257600080fd5b610bcd82612f0b565b60008060408385031215612f4e57600080fd5b82359150612f5e60208401612f0b565b90509250929050565b600080600080600080600060e0888a031215612f8257600080fd5b87359650602088013595506040880135945060608801359350608088013560ff81168114612faf57600080fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215612fdf57600080fd5b823567ffffffffffffffff80821115612ff757600080fd5b61300386838701612de3565b935060209150818501358181111561301a57600080fd5b85019050601f8101861361302d57600080fd5b803561303b612e0482612dbf565b81815260059190911b8201830190838101908883111561305a57600080fd5b928401925b828410156130785783358252928401929084019061305f565b80955050505050509250929050565b6000806040838503121561309a57600080fd5b82356130a581612d37565b915060208301356130b581612d37565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156131355761313561310b565b5060010190565b600181815b8085111561317757816000190482111561315d5761315d61310b565b8085161561316a57918102915b93841c9390800290613141565b509250929050565b60008261318e5750600161098a565b8161319b5750600061098a565b81600181146131b157600281146131bb576131d7565b600191505061098a565b60ff8411156131cc576131cc61310b565b50506001821b61098a565b5060208310610133831016604e8410600b84101617156131fa575081810a61098a565b613204838361313c565b80600019048211156132185761321861310b565b029392505050565b6000610bcd60ff84168361317f565b60008160001904831182151516156132495761324961310b565b500290565b6000828210156132605761326061310b565b500390565b634e487b7160e01b600052603160045260246000fd5b60208082526013908201527263616e6e6f742062652061626f76652032352560681b604082015260600190565b6020808252818101527f6f766572616c6c20666565732063616e6e6f742062652061626f766520323525604082015260600190565b600082198211156132f0576132f061310b565b500190565b60008261331257634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561332957600080fd5b8151610bcd81612d37565b600081518084526020808501945080840160005b8381101561336d5781516001600160a01b031687529582019590820190600101613348565b509495945050505050565b85815284602082015260a06040820152600061339760a0830186613334565b6001600160a01b0394909416606083015250608001529392505050565b828152604060208201526000612e8c6040830184613334565b6000806000606084860312156133e257600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122026489eceeace243e65e1f4c1776316863c853fa8fa020a48a70b131abdbdcd0864736f6c63430008090033
Deployed Bytecode
0x6080604052600436106102e85760003560e01c80636042f71911610190578063a5ece941116100dc578063d6594eda11610095578063ea2f0b371161006f578063ea2f0b37146108f9578063ec28438a14610919578063f1f0acd514610939578063f2fde38b1461095957600080fd5b8063d6594eda14610872578063d8020a1814610892578063dd62ed3e146108b357600080fd5b8063a5ece941146107d0578063a9059cbb146107f0578063af2ce61414610810578063c0f17acd14610830578063c228215c14610846578063c7b8b46d1461085c57600080fd5b80637d1db4a5116101495780638f9a55c0116101235780638f9a55c01461074e57806390107afe1461076457806395d89b4114610784578063a457c2d7146107b057600080fd5b80637d1db4a5146106e157806388f82020146106f75780638da5cb5b1461073057600080fd5b80636042f7191461064a57806367243482146106605780636fd3acb41461068057806370a0823114610696578063715018a6146106b6578063790ca413146106cb57600080fd5b8063313ce5671161024f578063437823ec116102085780634a8da1c5116101e25780634a8da1c5146105b157806352390c02146105d157806352a899b0146105f15780635342acb41461061157600080fd5b8063437823ec146105515780634549b0391461057157806349bd5a5e1461059157600080fd5b8063313ce567146104955780633582ad23146104b75780633685d419146104d157806339509351146104f15780633bd5d1731461051157806341aea9de1461053157600080fd5b806318160ddd116102a157806318160ddd146103f4578063231363711461040957806323b872dd1461041f578063273123b71461043f5780632d8381191461045f578063312394a01461047f57600080fd5b806306fdde03146102f4578063095ea7b3146103365780630eca1180146103665780631202cfa21461038857806313114a9d1461039d5780631694505e146103bc57600080fd5b366102ef57005b600080fd5b34801561030057600080fd5b50604080518082019091526007815266426f626154656160c81b60208201525b60405161032d9190612ce2565b60405180910390f35b34801561034257600080fd5b50610356610351366004612d4c565b610979565b604051901515815260200161032d565b34801561037257600080fd5b50610386610381366004612e57565b610990565b005b34801561039457600080fd5b50610386610a2f565b3480156103a957600080fd5b50600c545b60405190815260200161032d565b3480156103c857600080fd5b506021546103dc906001600160a01b031681565b6040516001600160a01b03909116815260200161032d565b34801561040057600080fd5b506103ae610a7b565b34801561041557600080fd5b506103ae600d5481565b34801561042b57600080fd5b5061035661043a366004612e94565b610a9d565b34801561044b57600080fd5b5061038661045a366004612ed5565b610b06565b34801561046b57600080fd5b506103ae61047a366004612ef2565b610b50565b34801561048b57600080fd5b506103ae60125481565b3480156104a157600080fd5b5060095b60405160ff909116815260200161032d565b3480156104c357600080fd5b50601e546103569060ff1681565b3480156104dd57600080fd5b506103866104ec366004612ed5565b610bd4565b3480156104fd57600080fd5b5061035661050c366004612d4c565b610d87565b34801561051d57600080fd5b5061038661052c366004612ef2565b610dbd565b34801561053d57600080fd5b5061038661054c366004612f20565b610ea7565b34801561055d57600080fd5b5061038661056c366004612ed5565b610ee4565b34801561057d57600080fd5b506103ae61058c366004612f3b565b610f32565b34801561059d57600080fd5b506022546103dc906001600160a01b031681565b3480156105bd57600080fd5b506103866105cc366004612d4c565b610fc8565b3480156105dd57600080fd5b506103866105ec366004612ed5565b61103e565b3480156105fd57600080fd5b5061038661060c366004612f67565b611191565b34801561061d57600080fd5b5061035661062c366004612ed5565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561065657600080fd5b506103ae600e5481565b34801561066c57600080fd5b5061038661067b366004612fcc565b61146d565b34801561068c57600080fd5b506103ae60155481565b3480156106a257600080fd5b506103ae6106b1366004612ed5565b611587565b3480156106c257600080fd5b506103866115e6565b3480156106d757600080fd5b506103ae601b5481565b3480156106ed57600080fd5b506103ae60095481565b34801561070357600080fd5b50610356610712366004612ed5565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561073c57600080fd5b506000546001600160a01b03166103dc565b34801561075a57600080fd5b506103ae600a5481565b34801561077057600080fd5b5061038661077f366004613087565b61161c565b34801561079057600080fd5b5060408051808201909152600381526254454160e81b6020820152610320565b3480156107bc57600080fd5b506103566107cb366004612d4c565b611674565b3480156107dc57600080fd5b506001546103dc906001600160a01b031681565b3480156107fc57600080fd5b5061035661080b366004612d4c565b6116c3565b34801561081c57600080fd5b5061038661082b366004612ef2565b6116d0565b34801561083c57600080fd5b506103ae60115481565b34801561085257600080fd5b506103ae601a5481565b34801561086857600080fd5b506103ae60165481565b34801561087e57600080fd5b5061038661088d366004612ef2565b611716565b34801561089e57600080fd5b506000546104a590600160a01b900460ff1681565b3480156108bf57600080fd5b506103ae6108ce366004613087565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b34801561090557600080fd5b50610386610914366004612ed5565b611745565b34801561092557600080fd5b50610386610934366004612ef2565b611790565b34801561094557600080fd5b506002546103dc906001600160a01b031681565b34801561096557600080fd5b50610386610974366004612ed5565b6117d6565b6000610986338484611871565b5060015b92915050565b6000546001600160a01b031633146109c35760405162461bcd60e51b81526004016109ba906130c0565b60405180910390fd5b60005b8151811015610a2b576001602060008484815181106109e7576109e76130f5565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610a2381613121565b9150506109c6565b5050565b6000546001600160a01b03163314610a595760405162461bcd60e51b81526004016109ba906130c0565b6024805461ff00191661010017905542601b55601e805460ff19166001179055565b6000610a896009600a613220565b610a989064e8d4a5100061322f565b905090565b6000610aaa848484611995565b610afc8433610af7856040518060600160405280602881526020016133fc602891396001600160a01b038a16600090815260056020908152604080832033845290915290205491906120a2565b611871565b5060019392505050565b6000546001600160a01b03163314610b305760405162461bcd60e51b81526004016109ba906130c0565b6001600160a01b031660009081526020805260409020805460ff19169055565b6000600b54821115610bb75760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016109ba565b6000610bc16120ce565b9050610bcd83826120f1565b9392505050565b6000546001600160a01b03163314610bfe5760405162461bcd60e51b81526004016109ba906130c0565b6001600160a01b03811660009081526007602052604090205460ff16610c665760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c726561647920696e636c75646564000000000060448201526064016109ba565b60005b600854811015610a2b57816001600160a01b031660088281548110610c9057610c906130f5565b6000918252602090912001546001600160a01b03161415610d755760088054610cbb9060019061324e565b81548110610ccb57610ccb6130f5565b600091825260209091200154600880546001600160a01b039092169183908110610cf757610cf76130f5565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600482526040808220829055600790925220805460ff191690556008805480610d4f57610d4f613265565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610d7f81613121565b915050610c69565b3360008181526005602090815260408083206001600160a01b03871684529091528120549091610986918590610af790866120fd565b3360008181526007602052604090205460ff1615610e325760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b60648201526084016109ba565b6000610e3d83612109565b505050506001600160a01b038416600090815260036020526040902054919250610e6991905082612158565b6001600160a01b038316600090815260036020526040902055600b54610e8f9082612158565b600b55600c54610e9f90846120fd565b600c55505050565b6000546001600160a01b03163314610ed15760405162461bcd60e51b81526004016109ba906130c0565b601e805460ff1916911515919091179055565b6000546001600160a01b03163314610f0e5760405162461bcd60e51b81526004016109ba906130c0565b6001600160a01b03166000908152600660205260409020805460ff19166001179055565b6000610f406009600a613220565b610f4f9064e8d4a5100061322f565b831115610f9e5760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c790060448201526064016109ba565b81610fbd576000610fae84612109565b5093955061098a945050505050565b6000610fae84612109565b6000546001600160a01b03163314610ff25760405162461bcd60e51b81526004016109ba906130c0565b8015610ffe5780611000565b475b6040519091506001600160a01b0383169082156108fc029083906000818181858888f19350505050158015611039573d6000803e3d6000fd5b505050565b6000546001600160a01b031633146110685760405162461bcd60e51b81526004016109ba906130c0565b6001600160a01b03811660009081526007602052604090205460ff16156110d15760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c75646564000000000060448201526064016109ba565b6001600160a01b0381166000908152600360205260409020541561112b576001600160a01b03811660009081526003602052604090205461111190610b50565b6001600160a01b0382166000908152600460205260409020555b6001600160a01b03166000818152600760205260408120805460ff191660019081179091556008805491820181559091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b0319169091179055565b6000546001600160a01b031633146111bb5760405162461bcd60e51b81526004016109ba906130c0565b60198711156111dc5760405162461bcd60e51b81526004016109ba9061327b565b60196111ff600d546111f96011548b6120fd90919063ffffffff16565b906120fd565b111561121d5760405162461bcd60e51b81526004016109ba906132a8565b601587905560198611156112435760405162461bcd60e51b81526004016109ba9061327b565b6019611260600e546111f96012548a6120fd90919063ffffffff16565b111561127e5760405162461bcd60e51b81526004016109ba906132a8565b6016869055606460ff841611156112cb5760405162461bcd60e51b8152602060048201526011602482015270063616e206f6e6c7920626520302d31303607c1b60448201526064016109ba565b6000805460ff60a01b1916600160a01b60ff86160217905560198511156113045760405162461bcd60e51b81526004016109ba9061327b565b60196113216015546111f9600d54896120fd90919063ffffffff16565b111561133f5760405162461bcd60e51b81526004016109ba906132a8565b601185905560198411156113655760405162461bcd60e51b81526004016109ba9061327b565b60196113826016546111f9600e54886120fd90919063ffffffff16565b11156113a05760405162461bcd60e51b81526004016109ba906132a8565b601284905560198211156113c65760405162461bcd60e51b81526004016109ba9061327b565b60196113e36015546111f9601154866120fd90919063ffffffff16565b11156114015760405162461bcd60e51b81526004016109ba906132a8565b600d82905560198111156114275760405162461bcd60e51b81526004016109ba9061327b565b60196114446016546111f9601254856120fd90919063ffffffff16565b11156114625760405162461bcd60e51b81526004016109ba906132a8565b600e55505050505050565b6000546001600160a01b031633146114975760405162461bcd60e51b81526004016109ba906130c0565b60c88251106115075760405162461bcd60e51b815260206004820152603660248201527f43616e206f6e6c792061697264726f70203230302077616c6c657473207065726044820152752074786e2064756520746f20676173206c696d69747360501b60648201526084016109ba565b60005b8251811015611039576000838281518110611527576115276130f5565b6020026020010151905060006009600a6115419190613220565b848481518110611553576115536130f5565b6020026020010151611565919061322f565b9050611572338383611995565b5050808061157f90613121565b91505061150a565b6001600160a01b03811660009081526007602052604081205460ff16156115c457506001600160a01b031660009081526004602052604090205490565b6001600160a01b03821660009081526003602052604090205461098a90610b50565b6000546001600160a01b031633146116105760405162461bcd60e51b81526004016109ba906130c0565b61161a6000612164565b565b6000546001600160a01b031633146116465760405162461bcd60e51b81526004016109ba906130c0565b600180546001600160a01b039384166001600160a01b03199182161790915560028054929093169116179055565b60006109863384610af785604051806060016040528060258152602001613424602591393360009081526005602090815260408083206001600160a01b038d16845290915290205491906120a2565b6000610986338484611995565b6000546001600160a01b031633146116fa5760405162461bcd60e51b81526004016109ba906130c0565b6117066009600a613220565b611710908261322f565b600a5550565b6000546001600160a01b031633146117405760405162461bcd60e51b81526004016109ba906130c0565b601a55565b6000546001600160a01b0316331461176f5760405162461bcd60e51b81526004016109ba906130c0565b6001600160a01b03166000908152600660205260409020805460ff19169055565b6000546001600160a01b031633146117ba5760405162461bcd60e51b81526004016109ba906130c0565b6117c66009600a613220565b6117d0908261322f565b60095550565b6000546001600160a01b031633146118005760405162461bcd60e51b81526004016109ba906130c0565b6001600160a01b0381166118655760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109ba565b61186e81612164565b50565b6001600160a01b0383166118d35760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016109ba565b6001600160a01b0382166119345760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016109ba565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166119f95760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016109ba565b6001600160a01b038216611a5b5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016109ba565b60008111611abd5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016109ba565b6001600160a01b0382166000908152601c602052604090205460ff1615611b0a5760405162461bcd60e51b81526020600482015260016024820152602160f81b60448201526064016109ba565b336000908152601c602052604090205460ff1615611b4e5760405162461bcd60e51b81526020600482015260016024820152602160f81b60448201526064016109ba565b601e5460ff1615611e14576000546001600160a01b03848116911614801590611b8557506000546001600160a01b03838116911614155b8015611baa57506001600160a01b03821660009081526006602052604090205460ff16155b8015611bcf57506001600160a01b03831660009081526006602052604090205460ff16155b15611c1e57600954811115611c1e5760405162461bcd60e51b815260206004820152601560248201527427bb32b9103a34329036b0bc2a3c20b6b7bab73a1760591b60448201526064016109ba565b6022546001600160a01b03838116911614611c8f57600a54611c3f83611587565b611c4990836132dd565b1115611c8f5760405162461bcd60e51b815260206004820152601560248201527427bb32b91036b0bc103bb0b63632ba1039b4bd329760591b60448201526064016109ba565b6022546001600160a01b038481169116148015611cba57506021546001600160a01b03838116911614155b8015611cdf57506001600160a01b03821660009081526006602052604090205460ff16155b15611d2d576001600160a01b0382166000908152601f60205260409020544211611d0857600080fd5b611d1342603c6132dd565b6001600160a01b0383166000908152601f60205260409020555b6022546001600160a01b038381169116148015611d5857506021546001600160a01b03848116911614155b8015611d7d57506001600160a01b03831660009081526006602052604090205460ff16155b15611e14576001600160a01b038316600090815260208052604090205460ff16158015611dc257506001600160a01b038216600090815260208052604090205460ff16155b611dcb57600080fd5b6001600160a01b0382166000908152601f60205260409020544211611def57600080fd5b611dfa42603c6132dd565b6001600160a01b0383166000908152601f60205260409020555b6022546001600160a01b038481169116148015611e3f57506021546001600160a01b03838116911614155b8015611e6457506001600160a01b03821660009081526006602052604090205460ff16155b15611f3057602454610100900460ff16611ec05760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642e000000000000000060448201526064016109ba565b601b54421415611f30576001600160a01b0382166000818152601c60205260408120805460ff19166001908117909155601d805491820181559091527f6d4407e7be21f808e6509aa9fa9143369579dd7d760fe20a2c09680fc146134f0180546001600160a01b03191690911790555b60245460ff16158015611f4a5750602454610100900460ff165b8015611f6357506022546001600160a01b038381169116145b8015611f8857506001600160a01b0382166000908152601c602052604090205460ff16155b8015611fad57506001600160a01b0383166000908152601c602052604090205460ff16155b1561203b576019805460ff191660011790556000611fca30611587565b9050801561203957601a5460225461200291606491611ffc9190611ff6906001600160a01b0316611587565b906121b4565b906120f1565b81111561203057601a5460225461202d91606491611ffc9190611ff6906001600160a01b0316611587565b90505b612039816121c0565b505b6001600160a01b03831660009081526006602052604090205460019060ff168061207d57506001600160a01b03831660009081526006602052604090205460ff165b15612086575060005b6120928484848461229b565b50506019805460ff191690555050565b600081848411156120c65760405162461bcd60e51b81526004016109ba9190612ce2565b505050900390565b60008060006120db61241a565b90925090506120ea82826120f1565b9250505090565b6000610bcd82846132f5565b6000610bcd82846132dd565b60008060008060008060008060006121208a612600565b925092509250600080600061213e8d86866121396120ce565b612642565b919f909e50909c50959a5093985091965092945050505050565b6000610bcd828461324e565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000610bcd828461322f565b6024805460ff191660011790556016546015546000916121e091906120fd565b905060006121fb6012546011546120fd90919063ffffffff16565b9050600061220983836120fd565b9050600061221e6002611ffc848189896121b4565b9050600061222c8683612158565b90504761223882612692565b60006122444783612158565b9050600061225686611ffc848a6121b4565b905060006122648383612158565b905081156122755761227582612834565b801561228557612285868261288f565b50506024805460ff191690555050505050505050565b806122e4576122e4600d8054600f556011805460135560158054601755600e80546010556012805460145560168054601855600095869055938590559184905583905582905555565b6001600160a01b03841660009081526007602052604090205460ff16801561232557506001600160a01b03831660009081526007602052604090205460ff16155b1561233a57612335848484612952565b6123e6565b6001600160a01b03841660009081526007602052604090205460ff1615801561237b57506001600160a01b03831660009081526007602052604090205460ff165b1561238b57612335848484612a78565b6001600160a01b03841660009081526007602052604090205460ff1680156123cb57506001600160a01b03831660009081526007602052604090205460ff165b156123db57612335848484612b21565b6123e6848484612b94565b8061241457612414600f54600d55601354601155601754601555601054600e55601454601255601854601655565b50505050565b600b5460009081908161242f6009600a613220565b61243e9064e8d4a5100061322f565b905060005b6008548110156125a057826003600060088481548110612465576124656130f5565b60009182526020808320909101546001600160a01b0316835282019290925260400190205411806124d057508160046000600884815481106124a9576124a96130f5565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b156124fe57600b546124e46009600a613220565b6124f39064e8d4a5100061322f565b945094505050509091565b6125446003600060088481548110612518576125186130f5565b60009182526020808320909101546001600160a01b031683528201929092526040019020548490612158565b925061258c6004600060088481548110612560576125606130f5565b60009182526020808320909101546001600160a01b031683528201929092526040019020548390612158565b91508061259881613121565b915050612443565b506125c86125b06009600a613220565b6125bf9064e8d4a5100061322f565b600b54906120f1565b8210156125f757600b546125de6009600a613220565b6125ed9064e8d4a5100061322f565b9350935050509091565b90939092509050565b60008060008061260f85612bd8565b9050600061261c86612c04565b905060006126348261262e8986612158565b90612158565b979296509094509092505050565b600080808061265188866121b4565b9050600061265f88876121b4565b9050600061266d88886121b4565b9050600061267f8261262e8686612158565b939b939a50919850919650505050505050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106126c7576126c76130f5565b6001600160a01b03928316602091820292909201810191909152602154604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561271b57600080fd5b505afa15801561272f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127539190613317565b81600181518110612766576127666130f5565b6001600160a01b03928316602091820292909201015260215461278c9130911684611871565b60215460405163791ac94760e01b81526001600160a01b039091169063791ac947906127c5908590600090869030904290600401613378565b600060405180830381600087803b1580156127df57600080fd5b505af11580156127f3573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516128289291906133b4565b60405180910390a15050565b6000805461285490606490611ffc908590600160a01b900460ff166121b4565b6001546040519192506001600160a01b03169082156108fc029083906000818181858888f19350505050158015611039573d6000803e3d6000fd5b6021546128a79030906001600160a01b031684611871565b60215460025460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c4016060604051808303818588803b15801561291257600080fd5b505af1158015612926573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061294b91906133cd565b5050505050565b60008060008060008061296487612109565b6001600160a01b038f16600090815260046020526040902054959b509399509197509550935091506129969088612158565b6001600160a01b038a166000908152600460209081526040808320939093556003905220546129c59087612158565b6001600160a01b03808b1660009081526003602052604080822093909355908a16815220546129f490866120fd565b6001600160a01b038916600090815260036020526040902055612a1681612c36565b612a208483612cbe565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051612a6591815260200190565b60405180910390a3505050505050505050565b600080600080600080612a8a87612109565b6001600160a01b038f16600090815260036020526040902054959b50939950919750955093509150612abc9087612158565b6001600160a01b03808b16600090815260036020908152604080832094909455918b16815260049091522054612af290846120fd565b6001600160a01b0389166000908152600460209081526040808320939093556003905220546129f490866120fd565b600080600080600080612b3387612109565b6001600160a01b038f16600090815260046020526040902054959b50939950919750955093509150612b659088612158565b6001600160a01b038a16600090815260046020908152604080832093909355600390522054612abc9087612158565b600080600080600080612ba687612109565b6001600160a01b038f16600090815260036020526040902054959b509399509197509550935091506129c59087612158565b601954600090819060ff16612bef57600d54612bf3565b600e545b9050610bcd6064611ffc85846121b4565b601954600090819060ff16612c2757601554601154612c22916120fd565b612bf3565b601654601254612bf3916120fd565b6000612c406120ce565b90506000612c4e83836121b4565b30600090815260036020526040902054909150612c6b90826120fd565b3060009081526003602090815260408083209390935560079052205460ff16156110395730600090815260046020526040902054612ca990846120fd565b30600090815260046020526040902055505050565b600b54612ccb9083612158565b600b55600c54612cdb90826120fd565b600c555050565b600060208083528351808285015260005b81811015612d0f57858101830151858201604001528201612cf3565b81811115612d21576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461186e57600080fd5b60008060408385031215612d5f57600080fd5b8235612d6a81612d37565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612db757612db7612d78565b604052919050565b600067ffffffffffffffff821115612dd957612dd9612d78565b5060051b60200190565b600082601f830112612df457600080fd5b81356020612e09612e0483612dbf565b612d8e565b82815260059290921b84018101918181019086841115612e2857600080fd5b8286015b84811015612e4c578035612e3f81612d37565b8352918301918301612e2c565b509695505050505050565b600060208284031215612e6957600080fd5b813567ffffffffffffffff811115612e8057600080fd5b612e8c84828501612de3565b949350505050565b600080600060608486031215612ea957600080fd5b8335612eb481612d37565b92506020840135612ec481612d37565b929592945050506040919091013590565b600060208284031215612ee757600080fd5b8135610bcd81612d37565b600060208284031215612f0457600080fd5b5035919050565b80358015158114612f1b57600080fd5b919050565b600060208284031215612f3257600080fd5b610bcd82612f0b565b60008060408385031215612f4e57600080fd5b82359150612f5e60208401612f0b565b90509250929050565b600080600080600080600060e0888a031215612f8257600080fd5b87359650602088013595506040880135945060608801359350608088013560ff81168114612faf57600080fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215612fdf57600080fd5b823567ffffffffffffffff80821115612ff757600080fd5b61300386838701612de3565b935060209150818501358181111561301a57600080fd5b85019050601f8101861361302d57600080fd5b803561303b612e0482612dbf565b81815260059190911b8201830190838101908883111561305a57600080fd5b928401925b828410156130785783358252928401929084019061305f565b80955050505050509250929050565b6000806040838503121561309a57600080fd5b82356130a581612d37565b915060208301356130b581612d37565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156131355761313561310b565b5060010190565b600181815b8085111561317757816000190482111561315d5761315d61310b565b8085161561316a57918102915b93841c9390800290613141565b509250929050565b60008261318e5750600161098a565b8161319b5750600061098a565b81600181146131b157600281146131bb576131d7565b600191505061098a565b60ff8411156131cc576131cc61310b565b50506001821b61098a565b5060208310610133831016604e8410600b84101617156131fa575081810a61098a565b613204838361313c565b80600019048211156132185761321861310b565b029392505050565b6000610bcd60ff84168361317f565b60008160001904831182151516156132495761324961310b565b500290565b6000828210156132605761326061310b565b500390565b634e487b7160e01b600052603160045260246000fd5b60208082526013908201527263616e6e6f742062652061626f76652032352560681b604082015260600190565b6020808252818101527f6f766572616c6c20666565732063616e6e6f742062652061626f766520323525604082015260600190565b600082198211156132f0576132f061310b565b500190565b60008261331257634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561332957600080fd5b8151610bcd81612d37565b600081518084526020808501945080840160005b8381101561336d5781516001600160a01b031687529582019590820190600101613348565b509495945050505050565b85815284602082015260a06040820152600061339760a0830186613334565b6001600160a01b0394909416606083015250608001529392505050565b828152604060208201526000612e8c6040830184613334565b6000806000606084860312156133e257600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122026489eceeace243e65e1f4c1776316863c853fa8fa020a48a70b131abdbdcd0864736f6c63430008090033
Deployed Bytecode Sourcemap
27592:22609:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30952:79;;;;;;;;;;-1:-1:-1;31020:5:0;;;;;;;;;;;;-1:-1:-1;;;31020:5:0;;;;30952:79;;;;;;;:::i;:::-;;;;;;;;31859:171;;;;;;;;;;-1:-1:-1;31859:171:0;;;;;:::i;:::-;;:::i;:::-;;;1237:14:1;;1230:22;1212:41;;1200:2;1185:18;31859:171:0;1072:187:1;35401:147:0;;;;;;;;;;-1:-1:-1;35401:147:0;;;;;:::i;:::-;;:::i;:::-;;30808:138;;;;;;;;;;;;;:::i;33148:83::-;;;;;;;;;;-1:-1:-1;33215:10:0;;33148:83;;;3105:25:1;;;3093:2;3078:18;33148:83:0;2959:177:1;29699:41:0;;;;;;;;;;-1:-1:-1;29699:41:0;;;;-1:-1:-1;;;;;29699:41:0;;;;;;-1:-1:-1;;;;;3332:32:1;;;3314:51;;3302:2;3287:18;29699:41:0;3141:230:1;31211:91:0;;;;;;;;;;;;;:::i;28835:35::-;;;;;;;;;;;;;;;;32036:376;;;;;;;;;;-1:-1:-1;32036:376:0;;;;;:::i;:::-;;:::i;35558:82::-;;;;;;;;;;-1:-1:-1;35558:82:0;;;;;:::i;:::-;;:::i;34056:239::-;;;;;;;;;;-1:-1:-1;34056:239:0;;;;;:::i;:::-;;:::i;29080:31::-;;;;;;;;;;;;;;;;31126:79;;;;;;;;;;-1:-1:-1;28477:1:0;31126:79;;;4446:4:1;4434:17;;;4416:36;;4404:2;4389:18;31126:79:0;4274:184:1;29567:33:0;;;;;;;;;;-1:-1:-1;29567:33:0;;;;;;;;34625:423;;;;;;;;;;-1:-1:-1;34625:423:0;;;;;:::i;:::-;;:::i;32418:256::-;;;;;;;;;;-1:-1:-1;32418:256:0;;;;;:::i;:::-;;:::i;33237:385::-;;;;;;;;;;-1:-1:-1;33237:385:0;;;;;:::i;:::-;;:::i;49755:93::-;;;;;;;;;;-1:-1:-1;49755:93:0;;;;;:::i;:::-;;:::i;47151:103::-;;;;;;;;;;-1:-1:-1;47151:103:0;;;;;:::i;:::-;;:::i;33628:422::-;;;;;;;;;;-1:-1:-1;33628:422:0;;;;;:::i;:::-;;:::i;29745:28::-;;;;;;;;;;-1:-1:-1;29745:28:0;;;;-1:-1:-1;;;;;29745:28:0;;;49858:211;;;;;;;;;;-1:-1:-1;49858:211:0;;;;;:::i;:::-;;:::i;34301:318::-;;;;;;;;;;-1:-1:-1;34301:318:0;;;;;:::i;:::-;;:::i;47368:1488::-;;;;;;;;;;-1:-1:-1;47368:1488:0;;;;;:::i;:::-;;:::i;47029:116::-;;;;;;;;;;-1:-1:-1;47029:116:0;;;;;:::i;:::-;-1:-1:-1;;;;;47116:23:0;47096:4;47116:23;;;:14;:23;;;;;;;;;47029:116;28875:36;;;;;;;;;;;;;;;;49051:427;;;;;;;;;;-1:-1:-1;49051:427:0;;;;;:::i;:::-;;:::i;29226:27::-;;;;;;;;;;;;;;;;31308:194;;;;;;;;;;-1:-1:-1;31308:194:0;;;;;:::i;:::-;;:::i;10534:103::-;;;;;;;;;;;;;:::i;29464:25::-;;;;;;;;;;;;;;;;28605:59;;;;;;;;;;;;;;;;33020:122;;;;;;;;;;-1:-1:-1;33020:122:0;;;;;:::i;:::-;-1:-1:-1;;;;;33110:26:0;33090:4;33110:26;;;:17;:26;;;;;;;;;33020:122;9883:87;;;;;;;;;;-1:-1:-1;9929:7:0;9956:6;-1:-1:-1;;;;;9956:6:0;9883:87;;28676:62;;;;;;;;;;;;;;;;48862:183;;;;;;;;;;-1:-1:-1;48862:183:0;;;;;:::i;:::-;;:::i;31037:83::-;;;;;;;;;;-1:-1:-1;31107:7:0;;;;;;;;;;;;-1:-1:-1;;;31107:7:0;;;;31037:83;;32680:334;;;;;;;;;;-1:-1:-1;32680:334:0;;;;;:::i;:::-;;:::i;27746:98::-;;;;;;;;;;-1:-1:-1;27746:98:0;;;;-1:-1:-1;;;;;27746:98:0;;;31508:177;;;;;;;;;;-1:-1:-1;31508:177:0;;;;;:::i;:::-;;:::i;49484:135::-;;;;;;;;;;-1:-1:-1;49484:135:0;;;;;:::i;:::-;;:::i;29044:30::-;;;;;;;;;;;;;;;;29421;;;;;;;;;;;;;;;;29258:29;;;;;;;;;;;;;;;;50075:88;;;;;;;;;;-1:-1:-1;50075:88:0;;;;;:::i;:::-;;:::i;27705:35::-;;;;;;;;;;-1:-1:-1;27705:35:0;;;;-1:-1:-1;;;27705:35:0;;;;;;31691:162;;;;;;;;;;-1:-1:-1;31691:162:0;;;;;:::i;:::-;-1:-1:-1;;;;;31820:18:0;;;31794:7;31820:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;31691:162;47260:102;;;;;;;;;;-1:-1:-1;47260:102:0;;;;;:::i;:::-;;:::i;49628:121::-;;;;;;;;;;-1:-1:-1;49628:121:0;;;;;:::i;:::-;;:::i;27851:85::-;;;;;;;;;;-1:-1:-1;27851:85:0;;;;-1:-1:-1;;;;;27851:85:0;;;10792:201;;;;;;;;;;-1:-1:-1;10792:201:0;;;;;:::i;:::-;;:::i;31859:171::-;31951:4;31967:39;9337:10;31990:7;31999:6;31967:8;:39::i;:::-;-1:-1:-1;32020:4:0;31859:171;;;;;:::o;35401:147::-;9929:7;9956:6;-1:-1:-1;;;;;9956:6:0;9337:10;10103:23;10095:68;;;;-1:-1:-1;;;10095:68:0;;;;;;;:::i;:::-;;;;;;;;;35470:6:::1;35465:78;35486:5;:12;35482:1;:16;35465:78;;;35531:4;35514;:14;35519:5;35525:1;35519:8;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;35514:14:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;35514:14:0;:21;;-1:-1:-1;;35514:21:0::1;::::0;::::1;;::::0;;;::::1;::::0;;35500:3;::::1;::::0;::::1;:::i;:::-;;;;35465:78;;;;35401:147:::0;:::o;30808:138::-;9929:7;9956:6;-1:-1:-1;;;;;9956:6:0;9337:10;10103:23;10095:68;;;;-1:-1:-1;;;10095:68:0;;;;;;;:::i;:::-;30859:12:::1;:19:::0;;-1:-1:-1;;30859:19:0::1;;;::::0;;30898:15:::1;30885:10;:28:::0;30920:13:::1;:20:::0;;-1:-1:-1;;30920:20:0::1;30874:4;30920:20;::::0;;30808:138::o;31211:91::-;31266:7;28587:13;28477:1;28587:2;:13;:::i;:::-;28567:33;;:17;:33;:::i;:::-;31282:14;;31211:91;:::o;32036:376::-;32156:4;32169:36;32179:6;32187:9;32198:6;32169:9;:36::i;:::-;32212:176;32229:6;9337:10;32265:116;32313:6;32265:116;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;32265:19:0;;;;;;:11;:19;;;;;;;;9337:10;32265:33;;;;;;;;;;:37;:116::i;:::-;32212:8;:176::i;:::-;-1:-1:-1;32402:4:0;32036:376;;;;;:::o;35558:82::-;9929:7;9956:6;-1:-1:-1;;;;;9956:6:0;9337:10;10103:23;10095:68;;;;-1:-1:-1;;;10095:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;35614:12:0::1;35629:5;35614:12:::0;;;:4:::1;:12:::0;;;;;:20;;-1:-1:-1;;35614:20:0::1;::::0;;35558:82::o;34056:239::-;34123:7;34158;;34147;:18;;34139:73;;;;-1:-1:-1;;;34139:73:0;;10571:2:1;34139:73:0;;;10553:21:1;10610:2;10590:18;;;10583:30;10649:34;10629:18;;;10622:62;-1:-1:-1;;;10700:18:1;;;10693:40;10750:19;;34139:73:0;10369:406:1;34139:73:0;34219:19;34241:10;:8;:10::i;:::-;34219:32;-1:-1:-1;34265:24:0;:7;34219:32;34265:11;:24::i;:::-;34258:31;34056:239;-1:-1:-1;;;34056:239:0:o;34625:423::-;9929:7;9956:6;-1:-1:-1;;;;;9956:6:0;9337:10;10103:23;10095:68;;;;-1:-1:-1;;;10095:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;34701:26:0;::::1;;::::0;;;:17:::1;:26;::::0;;;;;::::1;;34693:66;;;::::0;-1:-1:-1;;;34693:66:0;;10982:2:1;34693:66:0::1;::::0;::::1;10964:21:1::0;11021:2;11001:18;;;10994:30;11060:29;11040:18;;;11033:57;11107:18;;34693:66:0::1;10780:351:1::0;34693:66:0::1;34771:9;34766:277;34790:9;:16:::0;34786:20;::::1;34766:277;;;34842:7;-1:-1:-1::0;;;;;34826:23:0::1;:9;34836:1;34826:12;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;34826:12:0::1;:23;34822:214;;;34877:9;34887:16:::0;;:20:::1;::::0;34906:1:::1;::::0;34887:20:::1;:::i;:::-;34877:31;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;34862:9:::1;:12:::0;;-1:-1:-1;;;;;34877:31:0;;::::1;::::0;34872:1;;34862:12;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;34862:46:0::1;-1:-1:-1::0;;;;;34862:46:0;;::::1;;::::0;;34919:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;34950:17:::1;:26:::0;;;;:34;;-1:-1:-1;;34950:34:0::1;::::0;;34995:9:::1;:15:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;34995:15:0;;;;;-1:-1:-1;;;;;;34995:15:0::1;::::0;;;;;35465:78:::1;35401:147:::0;:::o;34822:214::-:1;34808:3:::0;::::1;::::0;::::1;:::i;:::-;;;;34766:277;;32418:256:::0;9337:10;32523:4;32593:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;32593:34:0;;;;;;;;;;32523:4;;32539:111;;32577:7;;32593:50;;32632:10;32593:38;:50::i;33237:385::-;9337:10;33287:14;33340:25;;;:17;:25;;;;;;;;33339:26;33323:104;;;;-1:-1:-1;;;33323:104:0;;11600:2:1;33323:104:0;;;11582:21:1;11639:2;11619:18;;;11612:30;11678:34;11658:18;;;11651:62;-1:-1:-1;;;11729:18:1;;;11722:42;11781:19;;33323:104:0;11398:408:1;33323:104:0;33435:15;33464:19;33475:7;33464:10;:19::i;:::-;-1:-1:-1;;;;;;;;;33508:15:0;;;;;;:7;:15;;;;;;33434:49;;-1:-1:-1;33508:28:0;;:15;-1:-1:-1;33434:49:0;33508:19;:28::i;:::-;-1:-1:-1;;;;;33490:15:0;;;;;;:7;:15;;;;;:46;33553:7;;:20;;33565:7;33553:11;:20::i;:::-;33543:7;:30;33593:10;;:23;;33608:7;33593:14;:23::i;:::-;33580:10;:36;-1:-1:-1;;;33237:385:0:o;49755:93::-;9929:7;9956:6;-1:-1:-1;;;;;9956:6:0;9337:10;10103:23;10095:68;;;;-1:-1:-1;;;10095:68:0;;;;;;;:::i;:::-;49821:13:::1;:21:::0;;-1:-1:-1;;49821:21:0::1;::::0;::::1;;::::0;;;::::1;::::0;;49755:93::o;47151:103::-;9929:7;9956:6;-1:-1:-1;;;;;9956:6:0;9337:10;10103:23;10095:68;;;;-1:-1:-1;;;10095:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;47218:23:0::1;;::::0;;;:14:::1;:23;::::0;;;;:30;;-1:-1:-1;;47218:30:0::1;47244:4;47218:30;::::0;;47151:103::o;33628:422::-;33736:7;28587:13;28477:1;28587:2;:13;:::i;:::-;28567:33;;:17;:33;:::i;:::-;33760:7;:18;;33752:62;;;;-1:-1:-1;;;33752:62:0;;12013:2:1;33752:62:0;;;11995:21:1;12052:2;12032:18;;;12025:30;12091:33;12071:18;;;12064:61;12142:18;;33752:62:0;11811:355:1;33752:62:0;33826:17;33821:224;;33855:15;33884:19;33895:7;33884:10;:19::i;:::-;-1:-1:-1;33854:49:0;;-1:-1:-1;33912:14:0;;-1:-1:-1;;;;;33912:14:0;33821:224;33950:23;33987:19;33998:7;33987:10;:19::i;49858:211::-;9929:7;9956:6;-1:-1:-1;;;;;9956:6:0;9337:10;10103:23;10095:68;;;;-1:-1:-1;;;10095:68:0;;;;;;;:::i;:::-;49982:12;;:46:::1;;50021:7;49982:46;;;49997:21;49982:46;50035:28;::::0;49972:56;;-1:-1:-1;;;;;;50035:19:0;::::1;::::0;:28;::::1;;;::::0;49972:56;;50035:28:::1;::::0;;;49972:56;50035:19;:28;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;49858:211:::0;;:::o;34301:318::-;9929:7;9956:6;-1:-1:-1;;;;;9956:6:0;9337:10;10103:23;10095:68;;;;-1:-1:-1;;;10095:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;34380:26:0;::::1;;::::0;;;:17:::1;:26;::::0;;;;;::::1;;34379:27;34371:67;;;::::0;-1:-1:-1;;;34371:67:0;;12373:2:1;34371:67:0::1;::::0;::::1;12355:21:1::0;12412:2;12392:18;;;12385:30;12451:29;12431:18;;;12424:57;12498:18;;34371:67:0::1;12171:351:1::0;34371:67:0::1;-1:-1:-1::0;;;;;34449:16:0;::::1;34468:1;34449:16:::0;;;:7:::1;:16;::::0;;;;;:20;34445:99:::1;;-1:-1:-1::0;;;;;34519:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;34499:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;34480:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;34445:99:::1;-1:-1:-1::0;;;;;34550:26:0::1;;::::0;;;:17:::1;:26;::::0;;;;:33;;-1:-1:-1;;34550:33:0::1;34579:4;34550:33:::0;;::::1;::::0;;;34590:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;34590:23:0::1;::::0;;::::1;::::0;;34301:318::o;47368:1488::-;9929:7;9956:6;-1:-1:-1;;;;;9956:6:0;9337:10;10103:23;10095:68;;;;-1:-1:-1;;;10095:68:0;;;;;;;:::i;:::-;47551:2:::1;47541:6;:12;;47533:44;;;;-1:-1:-1::0;;;47533:44:0::1;;;;;;;:::i;:::-;47648:2;47600:44;47627:16;;47600:22;47611:10;;47600:6;:10;;:22;;;;:::i;:::-;:26:::0;::::1;:44::i;:::-;:50;;47584:116;;;;-1:-1:-1::0;;;47584:116:0::1;;;;;;;:::i;:::-;47707:8;:17:::0;;;47752:2:::1;47741:13:::0;::::1;;47733:45;;;;-1:-1:-1::0;;;47733:45:0::1;;;;;;;:::i;:::-;47852:2;47801:47;47830:17;;47801:24;47813:11;;47801:7;:11;;:24;;;;:::i;:47::-;:53;;47785:119;;;;-1:-1:-1::0;;;47785:119:0::1;;;;;;;:::i;:::-;47911:9;:19:::0;;;47959:3:::1;47947:15;::::0;::::1;;;47939:45;;;::::0;-1:-1:-1;;;47939:45:0;;13438:2:1;47939:45:0::1;::::0;::::1;13420:21:1::0;13477:2;13457:18;;;13450:30;-1:-1:-1;;;13496:18:1;;;13489:47;13553:18;;47939:45:0::1;13236:341:1::0;47939:45:0::1;47991:16;:27:::0;;-1:-1:-1;;;;47991:27:0::1;-1:-1:-1::0;;;47991:27:0::1;::::0;::::1;;;::::0;;48047:2:::1;48035:14:::0;::::1;;48027:46;;;;-1:-1:-1::0;;;48027:46:0::1;;;;;;;:::i;:::-;48144:2;48096:44;48131:8;;48096:30;48109:16;;48096:8;:12;;:30;;;;:::i;:44::-;:50;;48080:116;;;;-1:-1:-1::0;;;48080:116:0::1;;;;;;;:::i;:::-;48203:10;:21:::0;;;48254:2:::1;48241:15:::0;::::1;;48233:47;;;;-1:-1:-1::0;;;48233:47:0::1;;;;;;;:::i;:::-;48354:2;48303:47;48340:9;;48303:32;48317:17;;48303:9;:13;;:32;;;;:::i;:47::-;:53;;48287:119;;;;-1:-1:-1::0;;;48287:119:0::1;;;;;;;:::i;:::-;48413:11;:23:::0;;;48464:2:::1;48453:13:::0;::::1;;48445:45;;;;-1:-1:-1::0;;;48445:45:0::1;;;;;;;:::i;:::-;48554:2;48513:37;48541:8;;48513:23;48525:10;;48513:7;:11;;:23;;;;:::i;:37::-;:43;;48497:109;;;;-1:-1:-1::0;;;48497:109:0::1;;;;;;;:::i;:::-;48613:16;:26:::0;;;48668:2:::1;48656:14:::0;::::1;;48648:46;;;;-1:-1:-1::0;;;48648:46:0::1;;;;;;;:::i;:::-;48761:2;48717:40;48747:9;;48717:25;48730:11;;48717:8;:12;;:25;;;;:::i;:40::-;:46;;48701:112;;;;-1:-1:-1::0;;;48701:112:0::1;;;;;;;:::i;:::-;48820:17;:28:::0;-1:-1:-1;;;;;;47368:1488:0:o;49051:427::-;9929:7;9956:6;-1:-1:-1;;;;;9956:6:0;9337:10;10103:23;10095:68;;;;-1:-1:-1;;;10095:68:0;;;;;;;:::i;:::-;49185:3:::1;49161:14;:21;:27;49153:94;;;::::0;-1:-1:-1;;;49153:94:0;;13784:2:1;49153:94:0::1;::::0;::::1;13766:21:1::0;13823:2;13803:18;;;13796:30;13862:34;13842:18;;;13835:62;-1:-1:-1;;;13913:18:1;;;13906:52;13975:19;;49153:94:0::1;13582:418:1::0;49153:94:0::1;49280:9;49276:197;49299:14;:21;49295:1;:25;49276:197;;;49335:14;49352;49367:1;49352:17;;;;;;;;:::i;:::-;;;;;;;49335:34;;49378:14;28477:1;49408:2;:13;;;;:::i;:::-;49395:7;49403:1;49395:10;;;;;;;;:::i;:::-;;;;;;;:26;;;;:::i;:::-;49378:43;;49428:37;49438:10;49450:6;49458;49428:9;:37::i;:::-;49326:147;;49322:3;;;;;:::i;:::-;;;;49276:197;;31308:194:::0;-1:-1:-1;;;;;31394:26:0;;31374:7;31394:26;;;:17;:26;;;;;;;;31390:55;;;-1:-1:-1;;;;;;31429:16:0;;;;;:7;:16;;;;;;;31308:194::o;31390:55::-;-1:-1:-1;;;;;31479:16:0;;;;;;:7;:16;;;;;;31459:37;;:19;:37::i;10534:103::-;9929:7;9956:6;-1:-1:-1;;;;;9956:6:0;9337:10;10103:23;10095:68;;;;-1:-1:-1;;;10095:68:0;;;;;;;:::i;:::-;10599:30:::1;10626:1;10599:18;:30::i;:::-;10534:103::o:0;48862:183::-;9929:7;9956:6;-1:-1:-1;;;;;9956:6:0;9337:10;10103:23;10095:68;;;;-1:-1:-1;;;10095:68:0;;;;;;;:::i;:::-;48956:16:::1;:45:::0;;-1:-1:-1;;;;;48956:45:0;;::::1;-1:-1:-1::0;;;;;;48956:45:0;;::::1;;::::0;;;49008:8:::1;:29:::0;;;;;::::1;::::0;::::1;;::::0;;48862:183::o;32680:334::-;32790:4;32806:184;9337:10;32844:7;32860:123;32909:15;32860:123;;;;;;;;;;;;;;;;;9337:10;32860:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;32860:34:0;;;;;;;;;;;;:38;:123::i;31508:177::-;31603:4;31619:42;9337:10;31643:9;31654:6;31619:9;:42::i;49484:135::-;9929:7;9956:6;-1:-1:-1;;;;;9956:6:0;9337:10;10103:23;10095:68;;;;-1:-1:-1;;;10095:68:0;;;;;;;:::i;:::-;49600:13:::1;28477:1;49600:2;:13;:::i;:::-;49584:29;::::0;:13;:29:::1;:::i;:::-;49567:14;:46:::0;-1:-1:-1;49484:135:0:o;50075:88::-;9929:7;9956:6;-1:-1:-1;;;;;9956:6:0;9337:10;10103:23;10095:68;;;;-1:-1:-1;;;10095:68:0;;;;;;;:::i;:::-;50139:11:::1;:18:::0;50075:88::o;47260:102::-;9929:7;9956:6;-1:-1:-1;;;;;9956:6:0;9337:10;10103:23;10095:68;;;;-1:-1:-1;;;10095:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;47325:23:0::1;47351:5;47325:23:::0;;;:14:::1;:23;::::0;;;;:31;;-1:-1:-1;;47325:31:0::1;::::0;;47260:102::o;49628:121::-;9929:7;9956:6;-1:-1:-1;;;;;9956:6:0;9337:10;10103:23;10095:68;;;;-1:-1:-1;;;10095:68:0;;;;;;;:::i;:::-;49730:13:::1;28477:1;49730:2;:13;:::i;:::-;49716:27;::::0;:11;:27:::1;:::i;:::-;49701:12;:42:::0;-1:-1:-1;49628:121:0:o;10792:201::-;9929:7;9956:6;-1:-1:-1;;;;;9956:6:0;9337:10;10103:23;10095:68;;;;-1:-1:-1;;;10095:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10881:22:0;::::1;10873:73;;;::::0;-1:-1:-1;;;10873:73:0;;14207:2:1;10873:73:0::1;::::0;::::1;14189:21:1::0;14246:2;14226:18;;;14219:30;14285:34;14265:18;;;14258:62;-1:-1:-1;;;14336:18:1;;;14329:36;14382:19;;10873:73:0::1;14005:402:1::0;10873:73:0::1;10957:28;10976:8;10957:18;:28::i;:::-;10792:201:::0;:::o;35054:341::-;-1:-1:-1;;;;;35165:19:0;;35157:68;;;;-1:-1:-1;;;35157:68:0;;14614:2:1;35157:68:0;;;14596:21:1;14653:2;14633:18;;;14626:30;14692:34;14672:18;;;14665:62;-1:-1:-1;;;14743:18:1;;;14736:34;14787:19;;35157:68:0;14412:400:1;35157:68:0;-1:-1:-1;;;;;35240:21:0;;35232:68;;;;-1:-1:-1;;;35232:68:0;;15019:2:1;35232:68:0;;;15001:21:1;15058:2;15038:18;;;15031:30;15097:34;15077:18;;;15070:62;-1:-1:-1;;;15148:18:1;;;15141:32;15190:19;;35232:68:0;14817:398:1;35232:68:0;-1:-1:-1;;;;;35309:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;35357:32;;3105:25:1;;;35357:32:0;;3078:18:1;35357:32:0;;;;;;;35054:341;;;:::o;35646:2326::-;-1:-1:-1;;;;;35752:18:0;;35744:68;;;;-1:-1:-1;;;35744:68:0;;15422:2:1;35744:68:0;;;15404:21:1;15461:2;15441:18;;;15434:30;15500:34;15480:18;;;15473:62;-1:-1:-1;;;15551:18:1;;;15544:35;15596:19;;35744:68:0;15220:401:1;35744:68:0;-1:-1:-1;;;;;35827:16:0;;35819:64;;;;-1:-1:-1;;;35819:64:0;;15828:2:1;35819:64:0;;;15810:21:1;15867:2;15847:18;;;15840:30;15906:34;15886:18;;;15879:62;-1:-1:-1;;;15957:18:1;;;15950:33;16000:19;;35819:64:0;15626:399:1;35819:64:0;35907:1;35898:6;:10;35890:64;;;;-1:-1:-1;;;35890:64:0;;16232:2:1;35890:64:0;;;16214:21:1;16271:2;16251:18;;;16244:30;16310:34;16290:18;;;16283:62;-1:-1:-1;;;16361:18:1;;;16354:39;16410:19;;35890:64:0;16030:405:1;35890:64:0;-1:-1:-1;;;;;35970:9:0;;;;;;:5;:9;;;;;;;;35969:10;35961:24;;;;-1:-1:-1;;;35961:24:0;;16642:2:1;35961:24:0;;;16624:21:1;16681:1;16661:18;;;16654:29;-1:-1:-1;;;16699:18:1;;;16692:31;16740:18;;35961:24:0;16440:324:1;35961:24:0;36007:10;36001:17;;;;:5;:17;;;;;;;;36000:18;35992:32;;;;-1:-1:-1;;;35992:32:0;;16642:2:1;35992:32:0;;;16624:21:1;16681:1;16661:18;;;16654:29;-1:-1:-1;;;16699:18:1;;;16692:31;16740:18;;35992:32:0;16440:324:1;35992:32:0;36036:13;;;;36033:879;;;9929:7;9956:6;-1:-1:-1;;;;;36126:15:0;;;9956:6;;36126:15;;;;:32;;-1:-1:-1;9929:7:0;9956:6;-1:-1:-1;;;;;36145:13:0;;;9956:6;;36145:13;;36126:32;:55;;;;-1:-1:-1;;;;;;36163:18:0;;;;;;:14;:18;;;;;;;;36162:19;36126:55;:80;;;;-1:-1:-1;;;;;;36186:20:0;;;;;;:14;:20;;;;;;;;36185:21;36126:80;36123:162;;;36237:12;;36227:6;:22;;36219:56;;;;-1:-1:-1;;;36219:56:0;;16971:2:1;36219:56:0;;;16953:21:1;17010:2;16990:18;;;16983:30;-1:-1:-1;;;17029:18:1;;;17022:51;17090:18;;36219:56:0;16769:345:1;36219:56:0;36303:13;;-1:-1:-1;;;;;36297:19:0;;;36303:13;;36297:19;36293:120;;36363:14;;36346:13;36356:2;36346:9;:13::i;:::-;36337:22;;:6;:22;:::i;:::-;:40;;36329:74;;;;-1:-1:-1;;;36329:74:0;;17454:2:1;36329:74:0;;;17436:21:1;17493:2;17473:18;;;17466:30;-1:-1:-1;;;17512:18:1;;;17505:51;17573:18;;36329:74:0;17252:345:1;36329:74:0;36447:13;;-1:-1:-1;;;;;36439:21:0;;;36447:13;;36439:21;:55;;;;-1:-1:-1;36478:15:0;;-1:-1:-1;;;;;36464:30:0;;;36478:15;;36464:30;;36439:55;:79;;;;-1:-1:-1;;;;;;36500:18:0;;;;;;:14;:18;;;;;;;;36498:20;36439:79;36435:201;;;-1:-1:-1;;;;;36539:12:0;;;;;;:8;:12;;;;;;36554:15;-1:-1:-1;36531:39:0;;;;;;36596:30;:15;36615:10;36596:30;:::i;:::-;-1:-1:-1;;;;;36581:12:0;;;;;;:8;:12;;;;;:45;36435:201;36668:13;;-1:-1:-1;;;;;36662:19:0;;;36668:13;;36662:19;:55;;;;-1:-1:-1;36701:15:0;;-1:-1:-1;;;;;36685:32:0;;;36701:15;;36685:32;;36662:55;:81;;;;-1:-1:-1;;;;;;36723:20:0;;;;;;:14;:20;;;;;;;;36721:22;36662:81;36658:247;;;-1:-1:-1;;;;;36765:10:0;;;;;;:4;:10;;;;;;;;36764:11;:24;;;;-1:-1:-1;;;;;;36780:8:0;;;;;;:4;:8;;;;;;;;36779:9;36764:24;36756:33;;;;;;-1:-1:-1;;;;;36808:12:0;;;;;;:8;:12;;;;;;36823:15;-1:-1:-1;36800:39:0;;;;;;36865:30;:15;36884:10;36865:30;:::i;:::-;-1:-1:-1;;;;;36850:12:0;;;;;;:8;:12;;;;;:45;36658:247;36952:13;;-1:-1:-1;;;;;36944:21:0;;;36952:13;;36944:21;:62;;;;-1:-1:-1;36990:15:0;;-1:-1:-1;;;;;36976:30:0;;;36990:15;;36976:30;;36944:62;:92;;;;-1:-1:-1;;;;;;37018:18:0;;;;;;:14;:18;;;;;;;;37017:19;36944:92;36932:289;;;37061:12;;;;;;;37053:49;;;;-1:-1:-1;;;37053:49:0;;17804:2:1;37053:49:0;;;17786:21:1;17843:2;17823:18;;;17816:30;17882:26;17862:18;;;17855:54;17926:18;;37053:49:0;17602:348:1;37053:49:0;37136:10;;37117:15;:29;37113:99;;;-1:-1:-1;;;;;37159:9:0;;;;;;:5;:9;;;;;:16;;-1:-1:-1;;37159:16:0;37171:4;37159:16;;;;;;37186:7;:16;;;;;;;;;;;;;;-1:-1:-1;;;;;;37186:16:0;;;;;;37113:99;37247:17;;;;37246:18;:34;;;;-1:-1:-1;37268:12:0;;;;;;;37246:34;:57;;;;-1:-1:-1;37290:13:0;;-1:-1:-1;;;;;37284:19:0;;;37290:13;;37284:19;37246:57;:71;;;;-1:-1:-1;;;;;;37308:9:0;;;;;;:5;:9;;;;;;;;37307:10;37246:71;:87;;;;-1:-1:-1;;;;;;37322:11:0;;;;;;:5;:11;;;;;;;;37321:12;37246:87;37242:537;;;37344:9;:16;;-1:-1:-1;;37344:16:0;37356:4;37344:16;;;:9;37401:24;37419:4;37401:9;:24::i;:::-;37369:56;-1:-1:-1;37438:25:0;;37434:338;;37556:11;;37537:13;;37527:50;;37573:3;;37527:41;;37556:11;37527:24;;-1:-1:-1;;;;;37537:13:0;37527:9;:24::i;:::-;:28;;:41::i;:::-;:45;;:50::i;:::-;37492:21;:85;37476:242;;;37655:11;;37636:13;;37626:80;;37688:3;;37626:41;;37655:11;37626:24;;-1:-1:-1;;;;;37636:13:0;37626:9;:24::i;:80::-;37602:104;;37476:242;37728:34;37740:21;37728:11;:34::i;:::-;37335:444;37242:537;-1:-1:-1;;;;;37818:20:0;;37787:12;37818:20;;;:14;:20;;;;;;37802:4;;37818:20;;;:42;;-1:-1:-1;;;;;;37842:18:0;;;;;;:14;:18;;;;;;;;37818:42;37815:78;;;-1:-1:-1;37880:5:0;37815:78;37901:41;37916:4;37922:2;37926:6;37934:7;37901:14;:41::i;:::-;-1:-1:-1;;37949:9:0;:17;;-1:-1:-1;;37949:17:0;;;-1:-1:-1;;35646:2326:0:o;7338:240::-;7458:7;7519:12;7511:6;;;;7503:29;;;;-1:-1:-1;;;7503:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;7554:5:0;;;7338:240::o;44615:154::-;44657:7;44674:15;44691;44710:19;:17;:19::i;:::-;44673:56;;-1:-1:-1;44673:56:0;-1:-1:-1;44743:20:0;44673:56;;44743:11;:20::i;:::-;44736:27;;;;44615:154;:::o;6196:98::-;6254:7;6281:5;6285:1;6281;:5;:::i;5059:98::-;5117:7;5144:5;5148:1;5144;:5;:::i;43171:584::-;43253:7;43269;43285;43301;43317;43333;43367:23;43399:12;43420:18;43448:20;43460:7;43448:11;:20::i;:::-;43358:110;;;;;;43476:15;43493:23;43518:12;43534:85;43554:7;43570:4;43583:10;43602;:8;:10::i;:::-;43534:11;:85::i;:::-;43475:144;;;;-1:-1:-1;43475:144:0;;-1:-1:-1;43695:15:0;;-1:-1:-1;43719:4:0;;-1:-1:-1;43732:10:0;;-1:-1:-1;43171:584:0;;-1:-1:-1;;;;;43171:584:0:o;5440:98::-;5498:7;5525:5;5529:1;5525;:5;:::i;11153:191::-;11227:16;11246:6;;-1:-1:-1;;;;;11263:17:0;;;-1:-1:-1;;;;;;11263:17:0;;;;;;11296:40;;11246:6;;;;;;;11296:40;;11227:16;11296:40;11216:128;11153:191;:::o;5797:98::-;5855:7;5882:5;5886:1;5882;:5;:::i;37978:817::-;30123:17;:24;;-1:-1:-1;;30123:24:0;30143:4;30123:24;;;38087:9:::1;::::0;38074:8:::1;::::0;30123:17;;38074:23:::1;::::0;:8;:12:::1;:23::i;:::-;38057:40;;38104:16;38123:27;38138:11;;38123:10;;:14;;:27;;;;:::i;:::-;38104:46:::0;-1:-1:-1;38157:17:0::1;38177:20;:6:::0;38104:46;38177:10:::1;:20::i;:::-;38157:40:::0;-1:-1:-1;38204:17:0::1;38224:55;38277:1;38224:48;38157:40:::0;38224:48;:21;38250:6;38224:25:::1;:33::i;:55::-;38204:75:::0;-1:-1:-1;38286:21:0::1;38310:36;:21:::0;38204:75;38310:25:::1;:36::i;:::-;38286:60:::0;-1:-1:-1;38378:21:0::1;38406:32;38286:60:::0;38406:17:::1;:32::i;:::-;38445:24;38472:41;:21;38498:14:::0;38472:25:::1;:41::i;:::-;38445:68:::0;-1:-1:-1;38522:21:0::1;38546:45;38581:9:::0;38546:30:::1;38445:68:::0;38567:8;38546:20:::1;:30::i;:45::-;38522:69:::0;-1:-1:-1;38598:14:0::1;38615:35;:16:::0;38522:69;38615:20:::1;:35::i;:::-;38598:52:::0;-1:-1:-1;38661:17:0;;38657:69:::1;;38689:29;38704:13;38689:14;:29::i;:::-;38736:10:::0;;38732:58:::1;;38757:25;38764:9;38775:6;38757;:25::i;:::-;-1:-1:-1::0;;30162:17:0;:25;;-1:-1:-1;;30162:25:0;;;-1:-1:-1;;;;;;;;37978:817:0:o;39890:676::-;40026:7;40021:29;;40035:15;46358:16;;;46333:22;:41;46403:10;;;46381:19;:32;46440:8;;;46420:17;:28;46483:17;;;46457:23;:43;46530:11;;;46507:20;:34;46569:9;;;46548:18;:30;-1:-1:-1;46587:20:0;;;;46614:14;;;;46635:12;;;;46656:21;;;46684:15;;;46706:13;46293:432;40035:15;-1:-1:-1;;;;;40063:25:0;;;;;;:17;:25;;;;;;;;:58;;;;-1:-1:-1;;;;;;40093:28:0;;;;;;:17;:28;;;;;;;;40092:29;40063:58;40059:463;;;40132:48;40154:6;40162:9;40173:6;40132:21;:48::i;:::-;40059:463;;;-1:-1:-1;;;;;40199:25:0;;;;;;:17;:25;;;;;;;;40198:26;:58;;;;-1:-1:-1;;;;;;40228:28:0;;;;;;:17;:28;;;;;;;;40198:58;40194:328;;;40267:46;40287:6;40295:9;40306:6;40267:19;:46::i;40194:328::-;-1:-1:-1;;;;;40331:25:0;;;;;;:17;:25;;;;;;;;:57;;;;-1:-1:-1;;;;;;40360:28:0;;;;;;:17;:28;;;;;;;;40331:57;40327:195;;;40399:48;40421:6;40429:9;40440:6;40399:21;:48::i;40327:195::-;40470:44;40488:6;40496:9;40507:6;40470:17;:44::i;:::-;40535:7;40530:30;;40544:16;46791:22;;46772:16;:41;46833:19;;46820:10;:32;46870:17;;46859:8;:28;46916:23;;46896:17;:43;46960:20;;46946:11;:34;46999:18;;46987:9;:30;46731:292;40544:16;39890:676;;;;:::o;44775:521::-;44869:7;;44826;;;;;28587:13;28477:1;28587:2;:13;:::i;:::-;28567:33;;:17;:33;:::i;:::-;44883:25;;44920:9;44915:276;44939:9;:16;44935:20;;44915:276;;;44999:7;44975;:21;44983:9;44993:1;44983:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;44983:12:0;44975:21;;;;;;;;;;;;;:31;;:66;;;45034:7;45010;:21;45018:9;45028:1;45018:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;45018:12:0;45010:21;;;;;;;;;;;;;:31;44975:66;44971:106;;;45060:7;;28587:13;28477:1;28587:2;:13;:::i;:::-;28567:33;;:17;:33;:::i;:::-;45052:25;;;;;;;44775:521;;:::o;44971:106::-;45096:34;45108:7;:21;45116:9;45126:1;45116:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;45116:12:0;45108:21;;;;;;;;;;;;;45096:7;;:11;:34::i;:::-;45086:44;;45149:34;45161:7;:21;45169:9;45179:1;45169:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;45169:12:0;45161:21;;;;;;;;;;;;;45149:7;;:11;:34::i;:::-;45139:44;-1:-1:-1;44957:3:0;;;;:::i;:::-;;;;44915:276;;;-1:-1:-1;45211:20:0;28587:13;28477:1;28587:2;:13;:::i;:::-;28567:33;;:17;:33;:::i;:::-;45211:7;;;:11;:20::i;:::-;45201:7;:30;45197:61;;;45241:7;;28587:13;28477:1;28587:2;:13;:::i;:::-;28567:33;;:17;:33;:::i;:::-;45233:25;;;;;;44775:521;;:::o;45197:61::-;45273:7;;45282;;-1:-1:-1;44775:521:0;-1:-1:-1;44775:521:0:o;43761:364::-;43844:7;43860;43876;43901:12;43916:29;43937:7;43916:20;:29::i;:::-;43901:44;;43952:18;43973:31;43996:7;43973:22;:31::i;:::-;43952:52;-1:-1:-1;44011:23:0;44037:33;43952:52;44037:17;:7;44049:4;44037:11;:17::i;:::-;:21;;:33::i;:::-;44011:59;44102:4;;-1:-1:-1;44108:10:0;;-1:-1:-1;43761:364:0;;-1:-1:-1;;;43761:364:0:o;44131:478::-;44294:7;;;;44369:24;:7;44381:11;44369;:24::i;:::-;44351:42;-1:-1:-1;44400:12:0;44415:21;:4;44424:11;44415:8;:21::i;:::-;44400:36;-1:-1:-1;44443:18:0;44464:27;:10;44479:11;44464:14;:27::i;:::-;44443:48;-1:-1:-1;44498:23:0;44524:33;44443:48;44524:17;:7;44536:4;44524:11;:17::i;:33::-;44572:7;;;;-1:-1:-1;44598:4:0;;-1:-1:-1;44131:478:0;;-1:-1:-1;;;;;;;44131:478:0:o;39293:591::-;39436:16;;;39450:1;39436:16;;;;;;;;39412:21;;39436:16;;;;;;;;;;-1:-1:-1;39436:16:0;39412:40;;39477:4;39459;39464:1;39459:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;39459:23:0;;;:7;;;;;;;;;;:23;;;;39499:15;;:22;;;-1:-1:-1;;;39499:22:0;;;;:15;;;;;:20;;:22;;;;;39459:7;;39499:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;39489:4;39494:1;39489:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;39489:32:0;;;:7;;;;;;;;;:32;39562:15;;39530:62;;39547:4;;39562:15;39580:11;39530:8;:62::i;:::-;39623:15;;:206;;-1:-1:-1;;;39623:206:0;;-1:-1:-1;;;;;39623:15:0;;;;:66;;:206;;39698:11;;39623:15;;39756:4;;39777;;39807:15;;39623:206;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39843:35;39860:11;39873:4;39843:35;;;;;;;:::i;:::-;;;;;;;;39349:535;39293:591;:::o;38801:173::-;38856:23;38893:16;;38882:37;;38915:3;;38882:28;;:6;;-1:-1:-1;;;38893:16:0;;;;38882:10;:28::i;:37::-;38926:16;;:42;;38856:63;;-1:-1:-1;;;;;;38926:16:0;;:42;;;;;38856:63;;38926:16;:42;:16;:42;38856:63;38926:16;:42;;;;;;;;;;;;;;;;;;;38980:307;39083:15;;39051:62;;39068:4;;-1:-1:-1;;;;;39083:15:0;39101:11;39051:8;:62::i;:::-;39120:15;;39242:8;;39120:161;;-1:-1:-1;;;39120:161:0;;39188:4;39120:161;;;20172:34:1;20222:18;;;20215:34;;;39120:15:0;20265:18:1;;;20258:34;;;20308:18;;;20301:34;-1:-1:-1;;;;;39242:8:0;;;20351:19:1;;;20344:44;39259:15:0;20404:19:1;;;20397:35;39120:15:0;;;:31;;39160:9;;20106:19:1;;39120:161:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;38980:307;;:::o;41745:602::-;41872:15;41896:23;41928:12;41949:23;41981:12;42002:18;42030:19;42041:7;42030:10;:19::i;:::-;-1:-1:-1;;;;;42074:15:0;;;;;;:7;:15;;;;;;41863:186;;-1:-1:-1;41863:186:0;;-1:-1:-1;41863:186:0;;-1:-1:-1;41863:186:0;-1:-1:-1;41863:186:0;-1:-1:-1;41863:186:0;-1:-1:-1;42074:28:0;;42094:7;42074:19;:28::i;:::-;-1:-1:-1;;;;;42056:15:0;;;;;;:7;:15;;;;;;;;:46;;;;42127:7;:15;;;;:28;;42147:7;42127:19;:28::i;:::-;-1:-1:-1;;;;;42109:15:0;;;;;;;:7;:15;;;;;;:46;;;;42183:18;;;;;;;:39;;42206:15;42183:22;:39::i;:::-;-1:-1:-1;;;;;42162:18:0;;;;;;:7;:18;;;;;:60;42229:26;42244:10;42229:14;:26::i;:::-;42262:23;42274:4;42280;42262:11;:23::i;:::-;42314:9;-1:-1:-1;;;;;42297:44:0;42306:6;-1:-1:-1;;;;;42297:44:0;;42325:15;42297:44;;;;3105:25:1;;3093:2;3078:18;;2959:177;42297:44:0;;;;;;;;41856:491;;;;;;41745:602;;;:::o;41125:614::-;41250:15;41274:23;41306:12;41327:23;41359:12;41380:18;41408:19;41419:7;41408:10;:19::i;:::-;-1:-1:-1;;;;;41452:15:0;;;;;;:7;:15;;;;;;41241:186;;-1:-1:-1;41241:186:0;;-1:-1:-1;41241:186:0;;-1:-1:-1;41241:186:0;-1:-1:-1;41241:186:0;-1:-1:-1;41241:186:0;-1:-1:-1;41452:28:0;;41241:186;41452:19;:28::i;:::-;-1:-1:-1;;;;;41434:15:0;;;;;;;:7;:15;;;;;;;;:46;;;;41508:18;;;;;:7;:18;;;;;:39;;41531:15;41508:22;:39::i;:::-;-1:-1:-1;;;;;41487:18:0;;;;;;:7;:18;;;;;;;;:60;;;;41575:7;:18;;;;:39;;41598:15;41575:22;:39::i;42353:669::-;42480:15;42504:23;42536:12;42557:23;42589:12;42610:18;42638:19;42649:7;42638:10;:19::i;:::-;-1:-1:-1;;;;;42682:15:0;;;;;;:7;:15;;;;;;42471:186;;-1:-1:-1;42471:186:0;;-1:-1:-1;42471:186:0;;-1:-1:-1;42471:186:0;-1:-1:-1;42471:186:0;-1:-1:-1;42471:186:0;-1:-1:-1;42682:28:0;;42702:7;42682:19;:28::i;:::-;-1:-1:-1;;;;;42664:15:0;;;;;;:7;:15;;;;;;;;:46;;;;42735:7;:15;;;;:28;;42755:7;42735:19;:28::i;40572:547::-;40697:15;40721:23;40753:12;40774:23;40806:12;40827:18;40855:19;40866:7;40855:10;:19::i;:::-;-1:-1:-1;;;;;40899:15:0;;;;;;:7;:15;;;;;;40688:186;;-1:-1:-1;40688:186:0;;-1:-1:-1;40688:186:0;;-1:-1:-1;40688:186:0;-1:-1:-1;40688:186:0;-1:-1:-1;40688:186:0;-1:-1:-1;40899:28:0;;40688:186;40899:19;:28::i;45645:212::-;45762:9;;45729:7;;;;45762:9;;:48;;45794:16;;45762:48;;;45774:17;;45762:48;45748:62;-1:-1:-1;45824:27:0;45845:5;45824:16;:7;45748:62;45824:11;:16::i;45863:245::-;45982:9;;45949:7;;;;45982:9;;:79;;46052:8;;46037:10;;:24;;:14;:24::i;:::-;45982:79;;;46017:9;;46001:11;;:26;;:15;:26::i;45302:337::-;45361:19;45383:10;:8;:10::i;:::-;45361:32;-1:-1:-1;45400:18:0;45421:27;:10;45361:32;45421:14;:27::i;:::-;45496:4;45480:22;;;;:7;:22;;;;;;45400:48;;-1:-1:-1;45480:38:0;;45400:48;45480:26;:38::i;:::-;45471:4;45455:22;;;;:7;:22;;;;;;;;:63;;;;45529:17;:32;;;;;;45525:108;;;45611:4;45595:22;;;;:7;:22;;;;;;:38;;45622:10;45595:26;:38::i;:::-;45586:4;45570:22;;;;:7;:22;;;;;:63;45354:285;;45302:337;:::o;43028:137::-;43102:7;;:17;;43114:4;43102:11;:17::i;:::-;43092:7;:27;43139:10;;:20;;43154:4;43139:14;:20::i;:::-;43126:10;:33;-1:-1:-1;;43028:137:0:o;14:597:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;595:2:1;574:15;-1:-1:-1;;570:29:1;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:1:o;616:131::-;-1:-1:-1;;;;;691:31:1;;681:42;;671:70;;737:1;734;727:12;752:315;820:6;828;881:2;869:9;860:7;856:23;852:32;849:52;;;897:1;894;887:12;849:52;936:9;923:23;955:31;980:5;955:31;:::i;:::-;1005:5;1057:2;1042:18;;;;1029:32;;-1:-1:-1;;;752:315:1:o;1264:127::-;1325:10;1320:3;1316:20;1313:1;1306:31;1356:4;1353:1;1346:15;1380:4;1377:1;1370:15;1396:275;1467:2;1461:9;1532:2;1513:13;;-1:-1:-1;;1509:27:1;1497:40;;1567:18;1552:34;;1588:22;;;1549:62;1546:88;;;1614:18;;:::i;:::-;1650:2;1643:22;1396:275;;-1:-1:-1;1396:275:1:o;1676:183::-;1736:4;1769:18;1761:6;1758:30;1755:56;;;1791:18;;:::i;:::-;-1:-1:-1;1836:1:1;1832:14;1848:4;1828:25;;1676:183::o;1864:737::-;1918:5;1971:3;1964:4;1956:6;1952:17;1948:27;1938:55;;1989:1;1986;1979:12;1938:55;2025:6;2012:20;2051:4;2075:60;2091:43;2131:2;2091:43;:::i;:::-;2075:60;:::i;:::-;2169:15;;;2255:1;2251:10;;;;2239:23;;2235:32;;;2200:12;;;;2279:15;;;2276:35;;;2307:1;2304;2297:12;2276:35;2343:2;2335:6;2331:15;2355:217;2371:6;2366:3;2363:15;2355:217;;;2451:3;2438:17;2468:31;2493:5;2468:31;:::i;:::-;2512:18;;2550:12;;;;2388;;2355:217;;;-1:-1:-1;2590:5:1;1864:737;-1:-1:-1;;;;;;1864:737:1:o;2606:348::-;2690:6;2743:2;2731:9;2722:7;2718:23;2714:32;2711:52;;;2759:1;2756;2749:12;2711:52;2799:9;2786:23;2832:18;2824:6;2821:30;2818:50;;;2864:1;2861;2854:12;2818:50;2887:61;2940:7;2931:6;2920:9;2916:22;2887:61;:::i;:::-;2877:71;2606:348;-1:-1:-1;;;;2606:348:1:o;3376:456::-;3453:6;3461;3469;3522:2;3510:9;3501:7;3497:23;3493:32;3490:52;;;3538:1;3535;3528:12;3490:52;3577:9;3564:23;3596:31;3621:5;3596:31;:::i;:::-;3646:5;-1:-1:-1;3703:2:1;3688:18;;3675:32;3716:33;3675:32;3716:33;:::i;:::-;3376:456;;3768:7;;-1:-1:-1;;;3822:2:1;3807:18;;;;3794:32;;3376:456::o;3837:247::-;3896:6;3949:2;3937:9;3928:7;3924:23;3920:32;3917:52;;;3965:1;3962;3955:12;3917:52;4004:9;3991:23;4023:31;4048:5;4023:31;:::i;4089:180::-;4148:6;4201:2;4189:9;4180:7;4176:23;4172:32;4169:52;;;4217:1;4214;4207:12;4169:52;-1:-1:-1;4240:23:1;;4089:180;-1:-1:-1;4089:180:1:o;4463:160::-;4528:20;;4584:13;;4577:21;4567:32;;4557:60;;4613:1;4610;4603:12;4557:60;4463:160;;;:::o;4628:180::-;4684:6;4737:2;4725:9;4716:7;4712:23;4708:32;4705:52;;;4753:1;4750;4743:12;4705:52;4776:26;4792:9;4776:26;:::i;4813:248::-;4878:6;4886;4939:2;4927:9;4918:7;4914:23;4910:32;4907:52;;;4955:1;4952;4945:12;4907:52;4991:9;4978:23;4968:33;;5020:35;5051:2;5040:9;5036:18;5020:35;:::i;:::-;5010:45;;4813:248;;;;;:::o;5602:681::-;5713:6;5721;5729;5737;5745;5753;5761;5814:3;5802:9;5793:7;5789:23;5785:33;5782:53;;;5831:1;5828;5821:12;5782:53;5867:9;5854:23;5844:33;;5924:2;5913:9;5909:18;5896:32;5886:42;;5975:2;5964:9;5960:18;5947:32;5937:42;;6026:2;6015:9;6011:18;5998:32;5988:42;;6080:3;6069:9;6065:19;6052:33;6125:4;6118:5;6114:16;6107:5;6104:27;6094:55;;6145:1;6142;6135:12;6094:55;5602:681;;;;-1:-1:-1;5602:681:1;;;;6168:5;6220:3;6205:19;;6192:33;;-1:-1:-1;6272:3:1;6257:19;;;6244:33;;5602:681;-1:-1:-1;;5602:681:1:o;6288:1138::-;6406:6;6414;6467:2;6455:9;6446:7;6442:23;6438:32;6435:52;;;6483:1;6480;6473:12;6435:52;6523:9;6510:23;6552:18;6593:2;6585:6;6582:14;6579:34;;;6609:1;6606;6599:12;6579:34;6632:61;6685:7;6676:6;6665:9;6661:22;6632:61;:::i;:::-;6622:71;;6712:2;6702:12;;6767:2;6756:9;6752:18;6739:32;6796:2;6786:8;6783:16;6780:36;;;6812:1;6809;6802:12;6780:36;6835:24;;;-1:-1:-1;6890:4:1;6882:13;;6878:27;-1:-1:-1;6868:55:1;;6919:1;6916;6909:12;6868:55;6955:2;6942:16;6978:60;6994:43;7034:2;6994:43;:::i;6978:60::-;7072:15;;;7154:1;7150:10;;;;7142:19;;7138:28;;;7103:12;;;;7178:19;;;7175:39;;;7210:1;7207;7200:12;7175:39;7234:11;;;;7254:142;7270:6;7265:3;7262:15;7254:142;;;7336:17;;7324:30;;7287:12;;;;7374;;;;7254:142;;;7415:5;7405:15;;;;;;;6288:1138;;;;;:::o;7431:388::-;7499:6;7507;7560:2;7548:9;7539:7;7535:23;7531:32;7528:52;;;7576:1;7573;7566:12;7528:52;7615:9;7602:23;7634:31;7659:5;7634:31;:::i;:::-;7684:5;-1:-1:-1;7741:2:1;7726:18;;7713:32;7754:33;7713:32;7754:33;:::i;:::-;7806:7;7796:17;;;7431:388;;;;;:::o;8048:356::-;8250:2;8232:21;;;8269:18;;;8262:30;8328:34;8323:2;8308:18;;8301:62;8395:2;8380:18;;8048:356::o;8409:127::-;8470:10;8465:3;8461:20;8458:1;8451:31;8501:4;8498:1;8491:15;8525:4;8522:1;8515:15;8541:127;8602:10;8597:3;8593:20;8590:1;8583:31;8633:4;8630:1;8623:15;8657:4;8654:1;8647:15;8673:135;8712:3;-1:-1:-1;;8733:17:1;;8730:43;;;8753:18;;:::i;:::-;-1:-1:-1;8800:1:1;8789:13;;8673:135::o;8813:422::-;8902:1;8945:5;8902:1;8959:270;8980:7;8970:8;8967:21;8959:270;;;9039:4;9035:1;9031:6;9027:17;9021:4;9018:27;9015:53;;;9048:18;;:::i;:::-;9098:7;9088:8;9084:22;9081:55;;;9118:16;;;;9081:55;9197:22;;;;9157:15;;;;8959:270;;;8963:3;8813:422;;;;;:::o;9240:806::-;9289:5;9319:8;9309:80;;-1:-1:-1;9360:1:1;9374:5;;9309:80;9408:4;9398:76;;-1:-1:-1;9445:1:1;9459:5;;9398:76;9490:4;9508:1;9503:59;;;;9576:1;9571:130;;;;9483:218;;9503:59;9533:1;9524:10;;9547:5;;;9571:130;9608:3;9598:8;9595:17;9592:43;;;9615:18;;:::i;:::-;-1:-1:-1;;9671:1:1;9657:16;;9686:5;;9483:218;;9785:2;9775:8;9772:16;9766:3;9760:4;9757:13;9753:36;9747:2;9737:8;9734:16;9729:2;9723:4;9720:12;9716:35;9713:77;9710:159;;;-1:-1:-1;9822:19:1;;;9854:5;;9710:159;9901:34;9926:8;9920:4;9901:34;:::i;:::-;9971:6;9967:1;9963:6;9959:19;9950:7;9947:32;9944:58;;;9982:18;;:::i;:::-;10020:20;;9240:806;-1:-1:-1;;;9240:806:1:o;10051:140::-;10109:5;10138:47;10179:4;10169:8;10165:19;10159:4;10138:47;:::i;10196:168::-;10236:7;10302:1;10298;10294:6;10290:14;10287:1;10284:21;10279:1;10272:9;10265:17;10261:45;10258:71;;;10309:18;;:::i;:::-;-1:-1:-1;10349:9:1;;10196:168::o;11136:125::-;11176:4;11204:1;11201;11198:8;11195:34;;;11209:18;;:::i;:::-;-1:-1:-1;11246:9:1;;11136:125::o;11266:127::-;11327:10;11322:3;11318:20;11315:1;11308:31;11358:4;11355:1;11348:15;11382:4;11379:1;11372:15;12527:343;12729:2;12711:21;;;12768:2;12748:18;;;12741:30;-1:-1:-1;;;12802:2:1;12787:18;;12780:49;12861:2;12846:18;;12527:343::o;12875:356::-;13077:2;13059:21;;;13096:18;;;13089:30;13155:34;13150:2;13135:18;;13128:62;13222:2;13207:18;;12875:356::o;17119:128::-;17159:3;17190:1;17186:6;17183:1;17180:13;17177:39;;;17196:18;;:::i;:::-;-1:-1:-1;17232:9:1;;17119:128::o;17955:217::-;17995:1;18021;18011:132;;18065:10;18060:3;18056:20;18053:1;18046:31;18100:4;18097:1;18090:15;18128:4;18125:1;18118:15;18011:132;-1:-1:-1;18157:9:1;;17955:217::o;18177:251::-;18247:6;18300:2;18288:9;18279:7;18275:23;18271:32;18268:52;;;18316:1;18313;18306:12;18268:52;18348:9;18342:16;18367:31;18392:5;18367:31;:::i;18433:461::-;18486:3;18524:5;18518:12;18551:6;18546:3;18539:19;18577:4;18606:2;18601:3;18597:12;18590:19;;18643:2;18636:5;18632:14;18664:1;18674:195;18688:6;18685:1;18682:13;18674:195;;;18753:13;;-1:-1:-1;;;;;18749:39:1;18737:52;;18809:12;;;;18844:15;;;;18785:1;18703:9;18674:195;;;-1:-1:-1;18885:3:1;;18433:461;-1:-1:-1;;;;;18433:461:1:o;18899:582::-;19198:6;19187:9;19180:25;19241:6;19236:2;19225:9;19221:18;19214:34;19284:3;19279:2;19268:9;19264:18;19257:31;19161:4;19305:57;19357:3;19346:9;19342:19;19334:6;19305:57;:::i;:::-;-1:-1:-1;;;;;19398:32:1;;;;19393:2;19378:18;;19371:60;-1:-1:-1;19462:3:1;19447:19;19440:35;19297:65;18899:582;-1:-1:-1;;;18899:582:1:o;19486:332::-;19693:6;19682:9;19675:25;19736:2;19731;19720:9;19716:18;19709:30;19656:4;19756:56;19808:2;19797:9;19793:18;19785:6;19756:56;:::i;20443:306::-;20531:6;20539;20547;20600:2;20588:9;20579:7;20575:23;20571:32;20568:52;;;20616:1;20613;20606:12;20568:52;20645:9;20639:16;20629:26;;20695:2;20684:9;20680:18;20674:25;20664:35;;20739:2;20728:9;20724:18;20718:25;20708:35;;20443:306;;;;;:::o
Swarm Source
ipfs://26489eceeace243e65e1f4c1776316863c853fa8fa020a48a70b131abdbdcd08
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.