ERC-20
Overview
Max Total Supply
100,000 TLDR
Holders
2
Market
Price
-
Onchain Market Cap
-
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 10 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
Contract Name:
DxFeeToken
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at SonicScan.org on 2024-12-30 */ /* // Official DxFee Token // To Mint your own token visit https://dx.app // DxMint verified tokens are unruggable through code // To view the audit certificate for this token search it in https://dx.app/dxmint // Please ensure one wallet doesn't hold too much supply of tokens! */ // SPDX-License-Identifier: MIT pragma solidity 0.8.7; pragma experimental ABIEncoderV2; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @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); /** * @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 Interface for the optional metadata functions from the ERC20 standard. * * _Available since v4.1._ */ interface IERC20Metadata is IERC20 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); } /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } /** * @dev Wrappers over Solidity's arithmetic operations. * * NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler * now has built in overflow checking. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } /** * @dev Returns the subtraction 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; } } } /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { require(owner() == _msgSender(), "Ownable: caller is not the owner"); } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby disabling 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); } } /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * * Furthermore, `isContract` will also return true if the target contract within * the same transaction is already scheduled for destruction by `SELFDESTRUCT`, * which only has an effect at the end of a transaction. * ==== * * [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://consensys.net/diligence/blog/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.8.0/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 functionCallWithValue(target, data, 0, "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"); (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResultFromTarget(target, 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) { (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResultFromTarget(target, 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) { (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResultFromTarget(target, success, returndata, errorMessage); } /** * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract. * * _Available since v4.8._ */ function verifyCallResultFromTarget( address target, bool success, bytes memory returndata, string memory errorMessage ) internal view returns (bytes memory) { if (success) { if (returndata.length == 0) { // only check isContract if the call was successful and the return data is empty // otherwise we already know that it was a contract require(isContract(target), "Address: call to non-contract"); } return returndata; } else { _revert(returndata, errorMessage); } } /** * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the * revert reason or 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 { _revert(returndata, errorMessage); } } function _revert(bytes memory returndata, string memory errorMessage) private pure { // 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 /// @solidity memory-safe-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } interface UniSwapFactory { 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 IIUniSwapPair { 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 WBNB() external pure returns (address); function WAVAX() external pure returns (address); function WHT() 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 addLiquidityBNB( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function addLiquidityAVAX( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function addLiquidityHT( 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; function swapExactTokensForBNBSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactTokensForAVAXSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactTokensForHTSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } contract DxFeeToken is Context, IERC20, Ownable { using SafeMath for uint256; address private dead = 0x000000000000000000000000000000000000dEaD; uint256 public maxLiqFee = 10; uint256 public maxTaxFee = 10; uint256 public maxDevFee = 10; uint256 public minMxTxPercentage = 50; uint256 public maxSellTaxFee = 20; uint256 public maxSellLiqFee = 20; mapping (address => uint256) private _rOwned; mapping (address => uint256) private _tOwned; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) private _isExcludedFromFee; mapping (address => bool) private _isExcluded; mapping (address => bool) private _isdevWallet; address[] private _excluded; address public _devWalletAddress; // team wallet here address public router; address public basePair; uint256 private constant MAX = ~uint256(0); uint256 private _tTotal; uint256 private _rTotal; uint256 private _tFeeTotal; bool public mintedByDxsale = true; string private _name; string private _symbol; uint8 private _decimals; uint256 public _taxFee; uint256 private _previousTaxFee; uint256 public _liquidityFee; uint256 private _previousLiquidityFee; uint256 public _devFee; uint256 private _previousDevFee; uint256 public _sellTaxFee; uint256 private _previousSellTaxFee; uint256 public _sellLiqFee; uint256 private _previousSellLiqFee; IUniswapV2Router02 public uniswapV2Router; address public uniswapV2Pair; bool inSwapAndLiquify; bool public swapAndLiquifyEnabled; uint256 public _maxTxAmount; uint256 public numTokensSellToAddToLiquidity; event SwapAndLiquifyEnabledUpdated(bool enabled); event SwapAndLiquifyAmountUpdated(uint256 amount); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiqudity ); modifier lockTheSwap { inSwapAndLiquify = true; _; inSwapAndLiquify = false; } constructor (address tokenOwner,string memory name_, string memory symbol_,uint8 decimal_, uint256 amountOfTokenWei,uint8[5] memory setFees, uint256[6] memory maxFees, address devWalletAddress_, address _router, address _basePair) { _name = name_; _symbol = symbol_; _decimals = decimal_; _tTotal = amountOfTokenWei; _rTotal = (MAX - (MAX % _tTotal)); router = _router; basePair = _basePair; _rOwned[tokenOwner] = _rTotal; maxTaxFee = maxFees[0]; maxLiqFee = maxFees[1]; maxDevFee = maxFees[2]; minMxTxPercentage = maxFees[3]; maxSellTaxFee = maxFees[4]; maxSellLiqFee = maxFees[5]; _taxFee = setFees[0]; _previousTaxFee = _taxFee; _liquidityFee = setFees[1]; _previousLiquidityFee = _liquidityFee; _devFee = setFees[2]; _previousDevFee = _devFee; _sellTaxFee = setFees[3]; _previousSellTaxFee = _sellTaxFee; _sellLiqFee = setFees[4]; _previousSellLiqFee = _sellLiqFee; _devWalletAddress = devWalletAddress_; _maxTxAmount = amountOfTokenWei; numTokensSellToAddToLiquidity = amountOfTokenWei.mul(1).div(1000); //0.1% swapAndLiquifyEnabled = true; IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(router); // Create a uniswap pair for this new token uniswapV2Pair = UniSwapFactory(_uniswapV2Router.factory()) .createPair(address(this), basePair); // set the rest of the contract variables uniswapV2Router = _uniswapV2Router; //exclude owner and this contract from fee _isExcludedFromFee[tokenOwner] = true; _isExcludedFromFee[address(this)] = true; _isExcludedFromFee[_devWalletAddress] = true; //set wallet provided to true _isdevWallet[_devWalletAddress] = true; emit Transfer(address(0), tokenOwner, _tTotal); } function name() public view returns (string memory) { return _name; } function symbol() public view returns (string memory) { return _symbol; } function decimals() public view returns (uint8) { return _decimals; } function totalSupply() public view override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { if (_isExcluded[account]) return _tOwned[account]; return tokenFromReflection(_rOwned[account]); } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } function isExcludedFromReward(address account) public view returns (bool) { return _isExcluded[account]; } function totalFees() public view returns (uint256) { return _tFeeTotal; } function reflectionFromToken(uint256 tAmount, bool deductTransferFee) public view returns(uint256) { require(tAmount <= _tTotal, "Amount must be less than supply"); if (!deductTransferFee) { (uint256 rAmount,,,,,,) = _getValues(tAmount); return rAmount; } else { (,uint256 rTransferAmount,,,,,) = _getValues(tAmount); return rTransferAmount; } } function tokenFromReflection(uint256 rAmount) public view returns(uint256) { require(rAmount <= _rTotal, "Amount must be less than total reflections"); uint256 currentRate = _getRate(); return rAmount.div(currentRate); } function excludeFromReward(address account) public onlyOwner { require(!_isExcluded[account], "Account is already excluded"); if (_rOwned[account] > 0) { _tOwned[account] = tokenFromReflection(_rOwned[account]); } _isExcluded[account] = true; _excluded.push(account); } function includeInReward(address account) external onlyOwner { require(_isExcluded[account], "Account is already excluded"); for (uint256 i = 0; i < _excluded.length; i++) { if (_excluded[i] == account) { _excluded[i] = _excluded[_excluded.length - 1]; _tOwned[account] = 0; _isExcluded[account] = false; _excluded.pop(); break; } } } function excludeFromFee(address account) public onlyOwner { require(!_isExcludedFromFee[account], "Account is already excluded"); _isExcludedFromFee[account] = true; } function includeInFee(address account) public onlyOwner { require(_isExcludedFromFee[account], "Account is already included"); _isExcludedFromFee[account] = false; } function setTaxFeePercent(uint256 taxFee) external onlyOwner() { require(taxFee >= 0 && taxFee <=maxTaxFee,"taxFee out of range"); _taxFee = taxFee; _previousTaxFee = _taxFee; } function setLiquidityFeePercent(uint256 liquidityFee) external onlyOwner() { require(liquidityFee >= 0 && liquidityFee <=maxLiqFee,"liquidityFee out of range"); _liquidityFee = liquidityFee; _previousLiquidityFee = _liquidityFee; } function setDevFeePercent(uint256 devFee) external onlyOwner() { require(devFee >= 0 && devFee <=maxDevFee,"teamFee out of range"); _devFee = devFee; _previousDevFee = _devFee; } function setSellTaxFeePercent(uint256 sellTaxFee) external onlyOwner() { require(sellTaxFee >= 0 && sellTaxFee <=maxSellTaxFee,"taxFee out of range"); _sellTaxFee = sellTaxFee; _previousSellTaxFee = _sellTaxFee; } function setSellLiqFeePercent(uint256 sellLiqFee) external onlyOwner() { require(sellLiqFee >= 0 && sellLiqFee <=maxSellLiqFee,"taxFee out of range"); _sellLiqFee = sellLiqFee; _previousSellLiqFee = _sellLiqFee; } function setMaxTxPercent(uint256 maxTxPercent) external onlyOwner() { require(maxTxPercent >= minMxTxPercentage && maxTxPercent <=100,"maxTxPercent out of range"); _maxTxAmount = _tTotal.mul(maxTxPercent).div(10**2); } function setDevWalletAddress(address _addr) internal virtual { if (!_isExcludedFromFee[_addr]) { excludeFromFee(_addr); } _isdevWallet[_addr] = true; _devWalletAddress = _addr; } function replaceDevWalletAddress(address _addr, address _newAddr) public onlyOwner { require(_isdevWallet[_addr], "Wallet address not set previously"); require(!_isdevWallet[_newAddr], "Wallet address already set"); if (_isExcludedFromFee[_addr]) { includeInFee(_addr); } _isdevWallet[_addr] = false; setDevWalletAddress(_newAddr); } function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner { swapAndLiquifyEnabled = _enabled; emit SwapAndLiquifyEnabledUpdated(_enabled); } function setSwapBackSettings(uint256 _amount) external onlyOwner { require(_amount >= totalSupply().mul(5).div(10**4), "Swapback amount should be at least 0.05% of total supply"); numTokensSellToAddToLiquidity = _amount; emit SwapAndLiquifyAmountUpdated(_amount); } //to recieve ETH from uniswapV2Router when swaping receive() external payable {} function _reflectFee(uint256 rFee, uint256 tFee) private { _rTotal = _rTotal.sub(rFee); _tFeeTotal = _tFeeTotal.add(tFee); } function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256, uint256) { (uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity, uint256 tDev) = _getTValues(tAmount); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tLiquidity, tDev, _getRate()); return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tLiquidity, tDev); } function _getTValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256) { uint256 tFee = calculateTaxFee(tAmount); uint256 tLiquidity = calculateLiquidityFee(tAmount); uint256 tDev = calculateDevFee(tAmount); uint256 tTransferAmount = tAmount.sub(tFee).sub(tLiquidity).sub(tDev); return (tTransferAmount, tFee, tLiquidity, tDev); } function _getRValues(uint256 tAmount, uint256 tFee, uint256 tLiquidity, uint256 tDev, uint256 currentRate) private pure returns (uint256, uint256, uint256) { uint256 rAmount = tAmount.mul(currentRate); uint256 rFee = tFee.mul(currentRate); uint256 rLiquidity = tLiquidity.mul(currentRate); uint256 rDev = tDev.mul(currentRate); uint256 rTransferAmount = rAmount.sub(rFee).sub(rLiquidity).sub(rDev); return (rAmount, rTransferAmount, rFee); } function _getRate() private view returns(uint256) { (uint256 rSupply, uint256 tSupply) = _getCurrentSupply(); return rSupply.div(tSupply); } function _getCurrentSupply() private view returns(uint256, uint256) { uint256 rSupply = _rTotal; uint256 tSupply = _tTotal; for (uint256 i = 0; i < _excluded.length; i++) { if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal); rSupply = rSupply.sub(_rOwned[_excluded[i]]); tSupply = tSupply.sub(_tOwned[_excluded[i]]); } if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal); return (rSupply, tSupply); } function _takeLiquidity(uint256 tLiquidity) private { uint256 currentRate = _getRate(); uint256 rLiquidity = tLiquidity.mul(currentRate); _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity); if(_isExcluded[address(this)]) _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity); emit Transfer(_msgSender(), address(this), tLiquidity); } function _takeDev(uint256 tDev) private { uint256 currentRate = _getRate(); uint256 rDev = tDev.mul(currentRate); _rOwned[_devWalletAddress] = _rOwned[_devWalletAddress].add(rDev); if(_isExcluded[_devWalletAddress]) _tOwned[_devWalletAddress] = _tOwned[_devWalletAddress].add(tDev); emit Transfer(_msgSender(), _devWalletAddress, tDev); } function calculateTaxFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_taxFee).div(10**2); } function calculateLiquidityFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_liquidityFee).div(10**2); } function calculateDevFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_devFee).div(10**2); } function removeAllFee() public { if(_taxFee == 0 && _liquidityFee == 0 && _devFee == 0) return; _taxFee = 0; _liquidityFee = 0; _devFee = 0; _sellTaxFee = 0; _sellLiqFee = 0; } function restoreAllFee() public { _taxFee = _previousTaxFee; _liquidityFee = _previousLiquidityFee; _devFee = _previousDevFee; _sellTaxFee = _previousSellTaxFee; _sellLiqFee = _previousSellLiqFee; } function isExcludedFromFee(address account) public view returns(bool) { return _isExcludedFromFee[account]; } function _approve(address owner, address spender, uint256 amount) private { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _transfer( address from, address to, uint256 amount ) private { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); if(!_isExcludedFromFee[from]){ require(amount > 0, "Transfer amount must be greater than zero"); } //Special case when sell is uniswapV2Pair if (to == uniswapV2Pair){ _taxFee = _sellTaxFee; _liquidityFee = _sellLiqFee; } if(from != owner() && to != owner()) require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount."); // is the token balance of this contract address over the min number of // tokens that we need to initiate a swap + liquidity lock? // also, don't get caught in a circular liquidity event. // also, don't swap & liquify if sender is uniswap pair. uint256 contractTokenBalance = balanceOf(address(this)); if(contractTokenBalance >= _maxTxAmount) { contractTokenBalance = _maxTxAmount; } bool overMinTokenBalance = contractTokenBalance >= numTokensSellToAddToLiquidity; if ( overMinTokenBalance && !inSwapAndLiquify && from != uniswapV2Pair && swapAndLiquifyEnabled ) { contractTokenBalance = numTokensSellToAddToLiquidity; //add liquidity swapAndLiquify(contractTokenBalance); } //indicates if fee should be deducted from transfer bool takeFee = true; //if any account belongs to _isExcludedFromFee account then remove the fee if(_isExcludedFromFee[from] || _isExcludedFromFee[to]){ takeFee = false; } //transfer amount, it will take tax, burn, liquidity fee _tokenTransfer(from,to,amount,takeFee); //reset tax fees restoreAllFee(); } function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap { // split the contract balance into halves uint256 half = contractTokenBalance.div(2); uint256 otherHalf = contractTokenBalance.sub(half); // capture the contract's current ETH balance. // this is so that we can capture exactly the amount of ETH that the // swap creates, and not make the liquidity event include any ETH that // has been manually sent to the contract uint256 initialBalance = address(this).balance; // swap tokens for ETH swapTokensForEth(half); // <- this breaks the ETH -> HATE swap when swap+liquify is triggered // how much ETH did we just swap into? uint256 newBalance = address(this).balance.sub(initialBalance); // add liquidity to uniswap addLiquidity(otherHalf, newBalance); emit SwapAndLiquify(half, newBalance, otherHalf); } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> WHT address[] memory path = new address[](2); path[0] = address(this); path[1] = basePair; _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap try uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ) {} catch(bytes memory) { try uniswapV2Router.swapExactTokensForBNBSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ) {} catch(bytes memory) { try uniswapV2Router.swapExactTokensForAVAXSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ){} catch(bytes memory) { try uniswapV2Router.swapExactTokensForHTSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ){} catch(bytes memory) { uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } } } } } function addLiquidity(uint256 tokenAmount, uint256 ETHAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(uniswapV2Router), tokenAmount); // add the liquidity try uniswapV2Router.addLiquidityETH{value : ETHAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable dead, block.timestamp ) { } catch (bytes memory) { try uniswapV2Router.addLiquidityBNB{value : ETHAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable dead, block.timestamp ) { } catch (bytes memory) { try uniswapV2Router.addLiquidityAVAX{value : ETHAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable dead, block.timestamp ) { } catch (bytes memory) { try uniswapV2Router.addLiquidityHT{value : ETHAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable dead, block.timestamp ) { } catch (bytes memory) { uniswapV2Router.addLiquidityETH{value : ETHAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable dead, block.timestamp ); } } } } } //this method is responsible for taking all fee, if takeFee is true function _tokenTransfer(address sender, address recipient, uint256 amount,bool takeFee) private { if(!takeFee) removeAllFee(); if (_isExcluded[sender] && !_isExcluded[recipient]) { _transferFromExcluded(sender, recipient, amount); } else if (!_isExcluded[sender] && _isExcluded[recipient]) { _transferToExcluded(sender, recipient, amount); } else if (!_isExcluded[sender] && !_isExcluded[recipient]) { _transferStandard(sender, recipient, amount); } else if (_isExcluded[sender] && _isExcluded[recipient]) { _transferBothExcluded(sender, recipient, amount); } else { _transferStandard(sender, recipient, amount); } } function _transferStandard(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity, uint256 tDev) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _takeDev(tDev); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferToExcluded(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity, uint256 tDev) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _takeDev(tDev); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferFromExcluded(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity, uint256 tDev) = _getValues(tAmount); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _takeDev(tDev); _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, uint256 tDev) = _getValues(tAmount); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _takeDev(tDev); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } //exclude new owner from fees function transferOwnership(address newOwner) public virtual override onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); _isExcludedFromFee[newOwner] = true; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"tokenOwner","type":"address"},{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"uint8","name":"decimal_","type":"uint8"},{"internalType":"uint256","name":"amountOfTokenWei","type":"uint256"},{"internalType":"uint8[5]","name":"setFees","type":"uint8[5]"},{"internalType":"uint256[6]","name":"maxFees","type":"uint256[6]"},{"internalType":"address","name":"devWalletAddress_","type":"address"},{"internalType":"address","name":"_router","type":"address"},{"internalType":"address","name":"_basePair","type":"address"}],"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":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"SwapAndLiquifyAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_devFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_devWalletAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellLiqFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellTaxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"basePair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"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":"maxDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxLiqFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellLiqFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellTaxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTaxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minMxTxPercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mintedByDxsale","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"numTokensSellToAddToLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeAllFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"},{"internalType":"address","name":"_newAddr","type":"address"}],"name":"replaceDevWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"restoreAllFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"devFee","type":"uint256"}],"name":"setDevFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"liquidityFee","type":"uint256"}],"name":"setLiquidityFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxPercent","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"sellLiqFee","type":"uint256"}],"name":"setSellLiqFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"sellTaxFee","type":"uint256"}],"name":"setSellTaxFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"}],"name":"setTaxFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052600180546001600160a01b03191661dead178155600a600281905560038190556004556032600555601460068190556007556015805460ff191690911790553480156200005057600080fd5b5060405162003921380380620039218339810160408190526200007391620006c1565b6200007e33620003cf565b8851620000939060169060208c019062000442565b508751620000a99060179060208b019062000442565b506018805460ff191660ff89161790556012869055620000cc8660001962000881565b620000da906000196200082a565b6013819055601080546001600160a01b038581166001600160a01b031992831617909255601180548584169083161790558c821660009081526008602090815260409182902094909455875160035587840151600255878101516004556060808901516005556080808a015160065560a08a01516007558a5160ff9081166019819055601a558b8701518116601b819055601c55928b01518316601d819055601e55908a01518216601f8190558555890151166021819055602255600f80549091169186169190911790556025879055620001e0906103e890620001cc9089906001906200041f811b6200158a17901c565b6200043460201b620015961790919060201c565b6026556024805460ff60a81b1916600160a81b1790556010546040805163c45a015560e01b815290516001600160a01b0390921691829163c45a0155916004808301926020929190829003018186803b1580156200023d57600080fd5b505afa15801562000252573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002789190620006a3565b6011546040516364e329cb60e11b81523060048201526001600160a01b03918216602482015291169063c9c6539690604401602060405180830381600087803b158015620002c557600080fd5b505af1158015620002da573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003009190620006a3565b602480546001600160a01b03199081166001600160a01b0393841617909155602380549091168383161790558b81166000818152600b60209081526040808320805460ff1990811660019081179092553085528285208054821683179055600f8054881686528386208054831684179055549096168452600d83528184208054909616179094556012549351938452919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050505050505050505050620008da565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006200042d828462000808565b9392505050565b60006200042d8284620007f1565b828054620004509062000844565b90600052602060002090601f016020900481019282620004745760008555620004bf565b82601f106200048f57805160ff1916838001178555620004bf565b82800160010185558215620004bf579182015b82811115620004bf578251825591602001919060010190620004a2565b50620004cd929150620004d1565b5090565b5b80821115620004cd5760008155600101620004d2565b80516001600160a01b03811681146200050057600080fd5b919050565b600082601f8301126200051757600080fd5b60405160c081016001600160401b03811182821017156200053c576200053c620008c4565b604052808360c081018610156200055257600080fd5b60005b60068110156200057657815183526020928301929091019060010162000555565b509195945050505050565b600082601f8301126200059357600080fd5b60405160a081016001600160401b0381118282101715620005b857620005b8620008c4565b604052808360a08101861015620005ce57600080fd5b60005b60058110156200057657620005e68262000691565b83526020928301929190910190600101620005d1565b600082601f8301126200060e57600080fd5b81516001600160401b038111156200062a576200062a620008c4565b602062000640601f8301601f19168201620007be565b82815285828487010111156200065557600080fd5b60005b838110156200067557858101830151828201840152820162000658565b83811115620006875760008385840101525b5095945050505050565b805160ff811681146200050057600080fd5b600060208284031215620006b657600080fd5b6200042d82620004e8565b6000806000806000806000806000806102608b8d031215620006e257600080fd5b620006ed8b620004e8565b60208c0151909a506001600160401b03808211156200070b57600080fd5b620007198e838f01620005fc565b9a5060408d01519150808211156200073057600080fd5b506200073f8d828e01620005fc565b9850506200075060608c0162000691565b965060808b01519550620007688c60a08d0162000581565b94506200077a8c6101408d0162000505565b93506200078b6102008c01620004e8565b92506200079c6102208c01620004e8565b9150620007ad6102408c01620004e8565b90509295989b9194979a5092959850565b604051601f8201601f191681016001600160401b0381118282101715620007e957620007e9620008c4565b604052919050565b600082620008035762000803620008ae565b500490565b600081600019048311821515161562000825576200082562000898565b500290565b6000828210156200083f576200083f62000898565b500390565b600181811c908216806200085957607f821691505b602082108114156200087b57634e487b7160e01b600052602260045260246000fd5b50919050565b600082620008935762000893620008ae565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b61303780620008ea6000396000f3fe6080604052600436106103395760003560e01c80636bc87c3a116101ab578063aceafe09116100f7578063d543dbeb11610095578063e7e3e3a71161006f578063e7e3e3a714610962578063ea2f0b3714610992578063f2fde38b146109b2578063f887ea40146109d257600080fd5b8063d543dbeb146108dc578063d7034bd6146108fc578063dd62ed3e1461091c57600080fd5b8063c7992f9a116100d1578063c7992f9a1461087a578063d0e0352314610890578063d12a7688146108b0578063d51b31ac146108c657600080fd5b8063aceafe0914610824578063b425bac31461083a578063c49b9a801461085a57600080fd5b80638da5cb5b11610164578063973e898e1161013e578063973e898e146107b8578063a457c2d7146107ce578063a9059cbb146107ee578063aa45026b1461080e57600080fd5b80638da5cb5b146107655780638ee88c531461078357806395d89b41146107a357600080fd5b80636bc87c3a146106ab57806370a08231146106c1578063715018a6146106e1578063796431d0146106f65780637d1db4a51461071657806388f820201461072c57600080fd5b80633586a186116102855780634549b0391161022357806352390c02116101fd57806352390c02146106185780635342acb41461063857806355924646146106715780635930919b1461068b57600080fd5b80634549b039146105b757806349bd5a5e146105d75780634a74bb02146105f757600080fd5b8063395093511161025f578063395093511461054b5780633b124fe71461056b578063430ca09014610581578063437823ec1461059757600080fd5b80633586a186146104eb5780633685d4191461050b578063379e29191461052b57600080fd5b806318160ddd116102f25780632d838119116102cc5780632d8381191461047e578063301370af1461049e578063313ce567146104b3578063324f8dbf146104d557600080fd5b806318160ddd14610433578063200a692d1461044857806323b872dd1461045e57600080fd5b8063061c82d01461034557806306fdde0314610367578063095ea7b314610392578063111411b1146103c257806313114a9d146103e65780631694505e146103fb57600080fd5b3661034057005b600080fd5b34801561035157600080fd5b50610365610360366004612cdd565b6109f2565b005b34801561037357600080fd5b5061037c610a2f565b6040516103899190612d82565b60405180910390f35b34801561039e57600080fd5b506103b26103ad366004612c98565b610ac1565b6040519015158152602001610389565b3480156103ce57600080fd5b506103d860215481565b604051908152602001610389565b3480156103f257600080fd5b506014546103d8565b34801561040757600080fd5b5060235461041b906001600160a01b031681565b6040516001600160a01b039091168152602001610389565b34801561043f57600080fd5b506012546103d8565b34801561045457600080fd5b506103d8601f5481565b34801561046a57600080fd5b506103b2610479366004612c5c565b610ad8565b34801561048a57600080fd5b506103d8610499366004612cdd565b610b41565b3480156104aa57600080fd5b50610365610bc5565b3480156104bf57600080fd5b5060185460405160ff9091168152602001610389565b3480156104e157600080fd5b506103d860055481565b3480156104f757600080fd5b50610365610506366004612cdd565b610c03565b34801561051757600080fd5b50610365610526366004612c0e565b610c37565b34801561053757600080fd5b50610365610546366004612cdd565b610d9c565b34801561055757600080fd5b506103b2610566366004612c98565b610df7565b34801561057757600080fd5b506103d860195481565b34801561058d57600080fd5b506103d860025481565b3480156105a357600080fd5b506103656105b2366004612c0e565b610e2d565b3480156105c357600080fd5b506103d86105d2366004612cf6565b610e92565b3480156105e357600080fd5b5060245461041b906001600160a01b031681565b34801561060357600080fd5b506024546103b290600160a81b900460ff1681565b34801561062457600080fd5b50610365610633366004612c0e565b610f21565b34801561064457600080fd5b506103b2610653366004612c0e565b6001600160a01b03166000908152600b602052604090205460ff1690565b34801561067d57600080fd5b506015546103b29060ff1681565b34801561069757600080fd5b5060115461041b906001600160a01b031681565b3480156106b757600080fd5b506103d8601b5481565b3480156106cd57600080fd5b506103d86106dc366004612c0e565b611022565b3480156106ed57600080fd5b50610365611081565b34801561070257600080fd5b50610365610711366004612cdd565b611095565b34801561072257600080fd5b506103d860255481565b34801561073857600080fd5b506103b2610747366004612c0e565b6001600160a01b03166000908152600c602052604090205460ff1690565b34801561077157600080fd5b506000546001600160a01b031661041b565b34801561078f57600080fd5b5061036561079e366004612cdd565b61116e565b3480156107af57600080fd5b5061037c6111d2565b3480156107c457600080fd5b506103d860075481565b3480156107da57600080fd5b506103b26107e9366004612c98565b6111e1565b3480156107fa57600080fd5b506103b2610809366004612c98565b611230565b34801561081a57600080fd5b506103d8601d5481565b34801561083057600080fd5b506103d860045481565b34801561084657600080fd5b50600f5461041b906001600160a01b031681565b34801561086657600080fd5b50610365610875366004612cc2565b61123d565b34801561088657600080fd5b506103d860035481565b34801561089c57600080fd5b506103656108ab366004612cdd565b611292565b3480156108bc57600080fd5b506103d860265481565b3480156108d257600080fd5b506103d860065481565b3480156108e857600080fd5b506103656108f7366004612cdd565b6112c6565b34801561090857600080fd5b50610365610917366004612c29565b61134d565b34801561092857600080fd5b506103d8610937366004612c29565b6001600160a01b039182166000908152600a6020908152604080832093909416825291909152205490565b34801561096e57600080fd5b50610365601a54601955601c54601b55601e54601d55602054601f55602254602155565b34801561099e57600080fd5b506103656109ad366004612c0e565b611483565b3480156109be57600080fd5b506103656109cd366004612c0e565b611514565b3480156109de57600080fd5b5060105461041b906001600160a01b031681565b6109fa6115a2565b600354811115610a255760405162461bcd60e51b8152600401610a1c90612e0e565b60405180910390fd5b6019819055601a55565b606060168054610a3e90612f1c565b80601f0160208091040260200160405190810160405280929190818152602001828054610a6a90612f1c565b8015610ab75780601f10610a8c57610100808354040283529160200191610ab7565b820191906000526020600020905b815481529060010190602001808311610a9a57829003601f168201915b5050505050905090565b6000610ace3384846115fc565b5060015b92915050565b6000610ae5848484611721565b610b378433610b3285604051806060016040528060288152602001612fb5602891396001600160a01b038a166000908152600a602090815260408083203384529091529020549190611a1d565b6115fc565b5060019392505050565b6000601354821115610ba85760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610a1c565b6000610bb2611a49565b9050610bbe8382611596565b9392505050565b601954158015610bd55750601b54155b8015610be15750601d54155b15610be857565b60006019819055601b819055601d819055601f819055602155565b610c0b6115a2565b600754811115610c2d5760405162461bcd60e51b8152600401610a1c90612e0e565b6021819055602255565b610c3f6115a2565b6001600160a01b0381166000908152600c602052604090205460ff16610c775760405162461bcd60e51b8152600401610a1c90612dd7565b60005b600e54811015610d9857816001600160a01b0316600e8281548110610ca157610ca1612f9e565b6000918252602090912001546001600160a01b03161415610d8657600e8054610ccc90600190612f05565b81548110610cdc57610cdc612f9e565b600091825260209091200154600e80546001600160a01b039092169183908110610d0857610d08612f9e565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600982526040808220829055600c90925220805460ff19169055600e805480610d6057610d60612f88565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610d9081612f57565b915050610c7a565b5050565b610da46115a2565b600454811115610ded5760405162461bcd60e51b81526020600482015260146024820152737465616d466565206f7574206f662072616e676560601b6044820152606401610a1c565b601d819055601e55565b336000818152600a602090815260408083206001600160a01b03871684529091528120549091610ace918590610b329086611a6c565b610e356115a2565b6001600160a01b0381166000908152600b602052604090205460ff1615610e6e5760405162461bcd60e51b8152600401610a1c90612dd7565b6001600160a01b03166000908152600b60205260409020805460ff19166001179055565b6000601254831115610ee65760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610a1c565b81610f06576000610ef684611a78565b50949650610ad295505050505050565b6000610f1184611a78565b50939650610ad295505050505050565b610f296115a2565b6001600160a01b0381166000908152600c602052604090205460ff1615610f625760405162461bcd60e51b8152600401610a1c90612dd7565b6001600160a01b03811660009081526008602052604090205415610fbc576001600160a01b038116600090815260086020526040902054610fa290610b41565b6001600160a01b0382166000908152600960205260409020555b6001600160a01b03166000818152600c60205260408120805460ff19166001908117909155600e805491820181559091527fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd0180546001600160a01b0319169091179055565b6001600160a01b0381166000908152600c602052604081205460ff161561105f57506001600160a01b031660009081526009602052604090205490565b6001600160a01b038216600090815260086020526040902054610ad290610b41565b6110896115a2565b6110936000611ad3565b565b61109d6115a2565b6110bd6127106110b760056110b160125490565b9061158a565b90611596565b8110156111325760405162461bcd60e51b815260206004820152603860248201527f537761706261636b20616d6f756e742073686f756c64206265206174206c656160448201527f737420302e303525206f6620746f74616c20737570706c7900000000000000006064820152608401610a1c565b60268190556040518181527ff7edd1a72d399eb95c56c07c5a26f00a9096735269c96c75caa8fc4e15bcd5d2906020015b60405180910390a150565b6111766115a2565b6002548111156111c85760405162461bcd60e51b815260206004820152601960248201527f6c6971756964697479466565206f7574206f662072616e6765000000000000006044820152606401610a1c565b601b819055601c55565b606060178054610a3e90612f1c565b6000610ace3384610b3285604051806060016040528060258152602001612fdd60259139336000908152600a602090815260408083206001600160a01b038d1684529091529020549190611a1d565b6000610ace338484611721565b6112456115a2565b60248054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599061116390831515815260200190565b61129a6115a2565b6006548111156112bc5760405162461bcd60e51b8152600401610a1c90612e0e565b601f819055602055565b6112ce6115a2565b60055481101580156112e1575060648111155b61132d5760405162461bcd60e51b815260206004820152601960248201527f6d6178547850657263656e74206f7574206f662072616e6765000000000000006044820152606401610a1c565b61134760646110b78360125461158a90919063ffffffff16565b60255550565b6113556115a2565b6001600160a01b0382166000908152600d602052604090205460ff166113c75760405162461bcd60e51b815260206004820152602160248201527f57616c6c65742061646472657373206e6f74207365742070726576696f75736c6044820152607960f81b6064820152608401610a1c565b6001600160a01b0381166000908152600d602052604090205460ff16156114305760405162461bcd60e51b815260206004820152601a60248201527f57616c6c6574206164647265737320616c7265616479207365740000000000006044820152606401610a1c565b6001600160a01b0382166000908152600b602052604090205460ff161561145a5761145a82611483565b6001600160a01b0382166000908152600d60205260409020805460ff19169055610d9881611b23565b61148b6115a2565b6001600160a01b0381166000908152600b602052604090205460ff166114f35760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c726561647920696e636c7564656400000000006044820152606401610a1c565b6001600160a01b03166000908152600b60205260409020805460ff19169055565b61151c6115a2565b6001600160a01b0381166115815760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a1c565b610e6e81611ad3565b6000610bbe8284612ee6565b6000610bbe8284612ec4565b6000546001600160a01b031633146110935760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a1c565b6001600160a01b03831661165e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610a1c565b6001600160a01b0382166116bf5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610a1c565b6001600160a01b038381166000818152600a602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166117855760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610a1c565b6001600160a01b0382166117e75760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610a1c565b6001600160a01b0383166000908152600b602052604090205460ff1661186957600081116118695760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610a1c565b6024546001600160a01b038381169116141561188c57601f54601955602154601b555b6000546001600160a01b038481169116148015906118b857506000546001600160a01b03838116911614155b15611920576025548111156119205760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610a1c565b600061192b30611022565b9050602554811061193b57506025545b602654811080159081906119595750602454600160a01b900460ff16155b801561197357506024546001600160a01b03868116911614155b80156119885750602454600160a81b900460ff165b1561199b57602654915061199b82611b83565b6001600160a01b0385166000908152600b602052604090205460019060ff16806119dd57506001600160a01b0385166000908152600b602052604090205460ff165b156119e6575060005b6119f286868684611c2a565b611a15601a54601955601c54601b55601e54601d55602054601f55602254602155565b505050505050565b60008184841115611a415760405162461bcd60e51b8152600401610a1c9190612d82565b505050900390565b6000806000611a56611d91565b9092509050611a658282611596565b9250505090565b6000610bbe8284612eac565b6000806000806000806000806000806000611a928c611f13565b93509350935093506000806000611ab38f878787611aae611a49565b611f68565b919f509d509b509599509397509195509350505050919395979092949650565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381166000908152600b602052604090205460ff16611b4c57611b4c81610e2d565b6001600160a01b03166000818152600d60205260409020805460ff19166001179055600f80546001600160a01b0319169091179055565b6024805460ff60a01b1916600160a01b1790556000611ba3826002611596565b90506000611bb18383611fca565b905047611bbd83611fd6565b6000611bc94783611fca565b9050611bd58382612337565b60408051858152602081018390529081018490527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a150506024805460ff60a01b19169055505050565b80611c3757611c37610bc5565b6001600160a01b0384166000908152600c602052604090205460ff168015611c7857506001600160a01b0383166000908152600c602052604090205460ff16155b15611c8d57611c888484846126f4565b611d8b565b6001600160a01b0384166000908152600c602052604090205460ff16158015611cce57506001600160a01b0383166000908152600c602052604090205460ff165b15611cde57611c8884848461283a565b6001600160a01b0384166000908152600c602052604090205460ff16158015611d2057506001600160a01b0383166000908152600c602052604090205460ff16155b15611d3057611c888484846128f9565b6001600160a01b0384166000908152600c602052604090205460ff168015611d7057506001600160a01b0383166000908152600c602052604090205460ff165b15611d8057611c88848484612953565b611d8b8484846128f9565b50505050565b6013546012546000918291825b600e54811015611ee3578260086000600e8481548110611dc057611dc0612f9e565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180611e2b57508160096000600e8481548110611e0457611e04612f9e565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15611e4157601354601254945094505050509091565b611e8760086000600e8481548110611e5b57611e5b612f9e565b60009182526020808320909101546001600160a01b031683528201929092526040019020548490611fca565b9250611ecf60096000600e8481548110611ea357611ea3612f9e565b60009182526020808320909101546001600160a01b031683528201929092526040019020548390611fca565b915080611edb81612f57565b915050611d9e565b50601254601354611ef391611596565b821015611f0a576013546012549350935050509091565b90939092509050565b6000806000806000611f24866129dc565b90506000611f31876129f8565b90506000611f3e88612a14565b90506000611f5882611f5285818d89611fca565b90611fca565b9993985091965094509092505050565b6000808080611f77898661158a565b90506000611f85898761158a565b90506000611f93898861158a565b90506000611fa1898961158a565b90506000611fb582611f5285818989611fca565b949d949c50929a509298505050505050505050565b6000610bbe8284612f05565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061200b5761200b612f9e565b6001600160a01b03928316602091820292909201015260115482519116908290600190811061203c5761203c612f9e565b6001600160a01b03928316602091820292909201015260235461206291309116846115fc565b60235460405163791ac94760e01b81526001600160a01b039091169063791ac9479061209b908590600090869030904290600401612e3b565b600060405180830381600087803b1580156120b557600080fd5b505af19250505080156120c6575060015b610d98573d8080156120f4576040519150601f19603f3d011682016040523d82523d6000602084013e6120f9565b606091505b5060235460405163d46d2f8360e01b81526001600160a01b039091169063d46d2f8390612133908690600090879030904290600401612e3b565b600060405180830381600087803b15801561214d57600080fd5b505af192505050801561215e575060015b612332573d80801561218c576040519150601f19603f3d011682016040523d82523d6000602084013e612191565b606091505b50602354604051633b158ab160e11b81526001600160a01b039091169063762b1562906121cb908790600090889030904290600401612e3b565b600060405180830381600087803b1580156121e557600080fd5b505af19250505080156121f6575060015b611d8b573d808015612224576040519150601f19603f3d011682016040523d82523d6000602084013e612229565b606091505b506023546040516312d70e6d60e11b81526001600160a01b03909116906325ae1cda90612263908890600090899030904290600401612e3b565b600060405180830381600087803b15801561227d57600080fd5b505af192505050801561228e575060015b61232f573d8080156122bc576040519150601f19603f3d011682016040523d82523d6000602084013e6122c1565b606091505b5060235460405163791ac94760e01b81526001600160a01b039091169063791ac947906122fb9089906000908a9030904290600401612e3b565b600060405180830381600087803b15801561231557600080fd5b505af1158015612329573d6000803e3d6000fd5b50505050505b50505b505050565b60235461234f9030906001600160a01b0316846115fc565b60235460015460405163f305d71960e01b81526001600160a01b039283169263f305d71992859261238f9230928992600092839216904290600401612d47565b6060604051808303818588803b1580156123a857600080fd5b505af1935050505080156123d9575060408051601f3d908101601f191682019092526123d691810190612d19565b60015b61232f573d808015612407576040519150601f19603f3d011682016040523d82523d6000602084013e61240c565b606091505b506023546001546040516375576a2160e11b81526001600160a01b039283169263eaaed44292869261244d9230928a92600092839216904290600401612d47565b6060604051808303818588803b15801561246657600080fd5b505af193505050508015612497575060408051601f3d908101601f1916820190925261249491810190612d19565b60015b611a15573d8080156124c5576040519150601f19603f3d011682016040523d82523d6000602084013e6124ca565b606091505b50602354600154604051637c8d9fb960e11b81526001600160a01b039283169263f91b3f7292879261250b9230928b92600092839216904290600401612d47565b6060604051808303818588803b15801561252457600080fd5b505af193505050508015612555575060408051601f3d908101601f1916820190925261255291810190612d19565b60015b6126eb573d808015612583576040519150601f19603f3d011682016040523d82523d6000602084013e612588565b606091505b50602354600154604051630798368960e41b81526001600160a01b039283169263798368909288926125c99230928c92600092839216904290600401612d47565b6060604051808303818588803b1580156125e257600080fd5b505af193505050508015612613575060408051601f3d908101601f1916820190925261261091810190612d19565b60015b6126e2573d808015612641576040519150601f19603f3d011682016040523d82523d6000602084013e612646565b606091505b5060235460015460405163f305d71960e01b81526001600160a01b039283169263f305d7199289926126879230928d92600092839216904290600401612d47565b6060604051808303818588803b1580156126a057600080fd5b505af11580156126b4573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906126d99190612d19565b5050505061232f565b50505050611d8b565b50505050505050565b600080600080600080600061270888611a78565b965096509650965096509650965061274e88600960008d6001600160a01b03166001600160a01b0316815260200190815260200160002054611fca90919063ffffffff16565b6001600160a01b038b1660009081526009602090815260408083209390935560089052205461277d9088611fca565b6001600160a01b03808c1660009081526008602052604080822093909355908b16815220546127ac9087611a6c565b6001600160a01b038a166000908152600860205260409020556127ce82612a30565b6127d781612af1565b6127e18584612bbe565b886001600160a01b03168a6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8660405161282691815260200190565b60405180910390a350505050505050505050565b600080600080600080600061284e88611a78565b965096509650965096509650965061289487600860008d6001600160a01b03166001600160a01b0316815260200190815260200160002054611fca90919063ffffffff16565b6001600160a01b03808c16600090815260086020908152604080832094909455918c168152600990915220546128ca9085611a6c565b6001600160a01b038a166000908152600960209081526040808320939093556008905220546127ac9087611a6c565b600080600080600080600061290d88611a78565b965096509650965096509650965061277d87600860008d6001600160a01b03166001600160a01b0316815260200190815260200160002054611fca90919063ffffffff16565b600080600080600080600061296788611a78565b96509650965096509650965096506129ad88600960008d6001600160a01b03166001600160a01b0316815260200190815260200160002054611fca90919063ffffffff16565b6001600160a01b038b166000908152600960209081526040808320939093556008905220546128949088611fca565b6000610ad260646110b76019548561158a90919063ffffffff16565b6000610ad260646110b7601b548561158a90919063ffffffff16565b6000610ad260646110b7601d548561158a90919063ffffffff16565b6000612a3a611a49565b90506000612a48838361158a565b30600090815260086020526040902054909150612a659082611a6c565b30600090815260086020908152604080832093909355600c9052205460ff1615612ab45730600090815260096020526040902054612aa39084611a6c565b306000908152600960205260409020555b30335b6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161171491815260200190565b6000612afb611a49565b90506000612b09838361158a565b600f546001600160a01b0316600090815260086020526040902054909150612b319082611a6c565b600f80546001600160a01b0390811660009081526008602090815260408083209590955592549091168152600c909152205460ff1615612bac57600f546001600160a01b0316600090815260096020526040902054612b909084611a6c565b600f546001600160a01b03166000908152600960205260409020555b600f546001600160a01b031633612ab7565b601354612bcb9083611fca565b601355601454612bdb9082611a6c565b6014555050565b80356001600160a01b0381168114612bf957600080fd5b919050565b80358015158114612bf957600080fd5b600060208284031215612c2057600080fd5b610bbe82612be2565b60008060408385031215612c3c57600080fd5b612c4583612be2565b9150612c5360208401612be2565b90509250929050565b600080600060608486031215612c7157600080fd5b612c7a84612be2565b9250612c8860208501612be2565b9150604084013590509250925092565b60008060408385031215612cab57600080fd5b612cb483612be2565b946020939093013593505050565b600060208284031215612cd457600080fd5b610bbe82612bfe565b600060208284031215612cef57600080fd5b5035919050565b60008060408385031215612d0957600080fd5b82359150612c5360208401612bfe565b600080600060608486031215612d2e57600080fd5b8351925060208401519150604084015190509250925092565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b600060208083528351808285015260005b81811015612daf57858101830151858201604001528201612d93565b81811115612dc1576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252601b908201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604082015260600190565b602080825260139082015272746178466565206f7574206f662072616e676560681b604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612e8b5784516001600160a01b031683529383019391830191600101612e66565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115612ebf57612ebf612f72565b500190565b600082612ee157634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615612f0057612f00612f72565b500290565b600082821015612f1757612f17612f72565b500390565b600181811c90821680612f3057607f821691505b60208210811415612f5157634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415612f6b57612f6b612f72565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122040a4b3410ee63ce07cd6a6a118546b82ca58b0d03fe37b5f8e8155c12f3e091d64736f6c63430008070033000000000000000000000000ddae2d0f091d39cfa5cd932ac8d1800397176513000000000000000000000000000000000000000000000000000000000000026000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000038d7ea4c68000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000032000000000000000000000000000000000000000000000000000000000000000700000000000000000000000000000000000000000000000000000000000000070000000000000000000000000dd8a63f68e97a18fcfd90800377a9bc55a403bd000000000000000000000000591cf6942c422fa53e8d81c62a9692d7bea72f61000000000000000000000000039e2fb66102314ce7b64ce5ce3e5183bc94ad38000000000000000000000000000000000000000000000000000000000000000d54657374204c69712044796f72000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004544c445200000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x6080604052600436106103395760003560e01c80636bc87c3a116101ab578063aceafe09116100f7578063d543dbeb11610095578063e7e3e3a71161006f578063e7e3e3a714610962578063ea2f0b3714610992578063f2fde38b146109b2578063f887ea40146109d257600080fd5b8063d543dbeb146108dc578063d7034bd6146108fc578063dd62ed3e1461091c57600080fd5b8063c7992f9a116100d1578063c7992f9a1461087a578063d0e0352314610890578063d12a7688146108b0578063d51b31ac146108c657600080fd5b8063aceafe0914610824578063b425bac31461083a578063c49b9a801461085a57600080fd5b80638da5cb5b11610164578063973e898e1161013e578063973e898e146107b8578063a457c2d7146107ce578063a9059cbb146107ee578063aa45026b1461080e57600080fd5b80638da5cb5b146107655780638ee88c531461078357806395d89b41146107a357600080fd5b80636bc87c3a146106ab57806370a08231146106c1578063715018a6146106e1578063796431d0146106f65780637d1db4a51461071657806388f820201461072c57600080fd5b80633586a186116102855780634549b0391161022357806352390c02116101fd57806352390c02146106185780635342acb41461063857806355924646146106715780635930919b1461068b57600080fd5b80634549b039146105b757806349bd5a5e146105d75780634a74bb02146105f757600080fd5b8063395093511161025f578063395093511461054b5780633b124fe71461056b578063430ca09014610581578063437823ec1461059757600080fd5b80633586a186146104eb5780633685d4191461050b578063379e29191461052b57600080fd5b806318160ddd116102f25780632d838119116102cc5780632d8381191461047e578063301370af1461049e578063313ce567146104b3578063324f8dbf146104d557600080fd5b806318160ddd14610433578063200a692d1461044857806323b872dd1461045e57600080fd5b8063061c82d01461034557806306fdde0314610367578063095ea7b314610392578063111411b1146103c257806313114a9d146103e65780631694505e146103fb57600080fd5b3661034057005b600080fd5b34801561035157600080fd5b50610365610360366004612cdd565b6109f2565b005b34801561037357600080fd5b5061037c610a2f565b6040516103899190612d82565b60405180910390f35b34801561039e57600080fd5b506103b26103ad366004612c98565b610ac1565b6040519015158152602001610389565b3480156103ce57600080fd5b506103d860215481565b604051908152602001610389565b3480156103f257600080fd5b506014546103d8565b34801561040757600080fd5b5060235461041b906001600160a01b031681565b6040516001600160a01b039091168152602001610389565b34801561043f57600080fd5b506012546103d8565b34801561045457600080fd5b506103d8601f5481565b34801561046a57600080fd5b506103b2610479366004612c5c565b610ad8565b34801561048a57600080fd5b506103d8610499366004612cdd565b610b41565b3480156104aa57600080fd5b50610365610bc5565b3480156104bf57600080fd5b5060185460405160ff9091168152602001610389565b3480156104e157600080fd5b506103d860055481565b3480156104f757600080fd5b50610365610506366004612cdd565b610c03565b34801561051757600080fd5b50610365610526366004612c0e565b610c37565b34801561053757600080fd5b50610365610546366004612cdd565b610d9c565b34801561055757600080fd5b506103b2610566366004612c98565b610df7565b34801561057757600080fd5b506103d860195481565b34801561058d57600080fd5b506103d860025481565b3480156105a357600080fd5b506103656105b2366004612c0e565b610e2d565b3480156105c357600080fd5b506103d86105d2366004612cf6565b610e92565b3480156105e357600080fd5b5060245461041b906001600160a01b031681565b34801561060357600080fd5b506024546103b290600160a81b900460ff1681565b34801561062457600080fd5b50610365610633366004612c0e565b610f21565b34801561064457600080fd5b506103b2610653366004612c0e565b6001600160a01b03166000908152600b602052604090205460ff1690565b34801561067d57600080fd5b506015546103b29060ff1681565b34801561069757600080fd5b5060115461041b906001600160a01b031681565b3480156106b757600080fd5b506103d8601b5481565b3480156106cd57600080fd5b506103d86106dc366004612c0e565b611022565b3480156106ed57600080fd5b50610365611081565b34801561070257600080fd5b50610365610711366004612cdd565b611095565b34801561072257600080fd5b506103d860255481565b34801561073857600080fd5b506103b2610747366004612c0e565b6001600160a01b03166000908152600c602052604090205460ff1690565b34801561077157600080fd5b506000546001600160a01b031661041b565b34801561078f57600080fd5b5061036561079e366004612cdd565b61116e565b3480156107af57600080fd5b5061037c6111d2565b3480156107c457600080fd5b506103d860075481565b3480156107da57600080fd5b506103b26107e9366004612c98565b6111e1565b3480156107fa57600080fd5b506103b2610809366004612c98565b611230565b34801561081a57600080fd5b506103d8601d5481565b34801561083057600080fd5b506103d860045481565b34801561084657600080fd5b50600f5461041b906001600160a01b031681565b34801561086657600080fd5b50610365610875366004612cc2565b61123d565b34801561088657600080fd5b506103d860035481565b34801561089c57600080fd5b506103656108ab366004612cdd565b611292565b3480156108bc57600080fd5b506103d860265481565b3480156108d257600080fd5b506103d860065481565b3480156108e857600080fd5b506103656108f7366004612cdd565b6112c6565b34801561090857600080fd5b50610365610917366004612c29565b61134d565b34801561092857600080fd5b506103d8610937366004612c29565b6001600160a01b039182166000908152600a6020908152604080832093909416825291909152205490565b34801561096e57600080fd5b50610365601a54601955601c54601b55601e54601d55602054601f55602254602155565b34801561099e57600080fd5b506103656109ad366004612c0e565b611483565b3480156109be57600080fd5b506103656109cd366004612c0e565b611514565b3480156109de57600080fd5b5060105461041b906001600160a01b031681565b6109fa6115a2565b600354811115610a255760405162461bcd60e51b8152600401610a1c90612e0e565b60405180910390fd5b6019819055601a55565b606060168054610a3e90612f1c565b80601f0160208091040260200160405190810160405280929190818152602001828054610a6a90612f1c565b8015610ab75780601f10610a8c57610100808354040283529160200191610ab7565b820191906000526020600020905b815481529060010190602001808311610a9a57829003601f168201915b5050505050905090565b6000610ace3384846115fc565b5060015b92915050565b6000610ae5848484611721565b610b378433610b3285604051806060016040528060288152602001612fb5602891396001600160a01b038a166000908152600a602090815260408083203384529091529020549190611a1d565b6115fc565b5060019392505050565b6000601354821115610ba85760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610a1c565b6000610bb2611a49565b9050610bbe8382611596565b9392505050565b601954158015610bd55750601b54155b8015610be15750601d54155b15610be857565b60006019819055601b819055601d819055601f819055602155565b610c0b6115a2565b600754811115610c2d5760405162461bcd60e51b8152600401610a1c90612e0e565b6021819055602255565b610c3f6115a2565b6001600160a01b0381166000908152600c602052604090205460ff16610c775760405162461bcd60e51b8152600401610a1c90612dd7565b60005b600e54811015610d9857816001600160a01b0316600e8281548110610ca157610ca1612f9e565b6000918252602090912001546001600160a01b03161415610d8657600e8054610ccc90600190612f05565b81548110610cdc57610cdc612f9e565b600091825260209091200154600e80546001600160a01b039092169183908110610d0857610d08612f9e565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600982526040808220829055600c90925220805460ff19169055600e805480610d6057610d60612f88565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610d9081612f57565b915050610c7a565b5050565b610da46115a2565b600454811115610ded5760405162461bcd60e51b81526020600482015260146024820152737465616d466565206f7574206f662072616e676560601b6044820152606401610a1c565b601d819055601e55565b336000818152600a602090815260408083206001600160a01b03871684529091528120549091610ace918590610b329086611a6c565b610e356115a2565b6001600160a01b0381166000908152600b602052604090205460ff1615610e6e5760405162461bcd60e51b8152600401610a1c90612dd7565b6001600160a01b03166000908152600b60205260409020805460ff19166001179055565b6000601254831115610ee65760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610a1c565b81610f06576000610ef684611a78565b50949650610ad295505050505050565b6000610f1184611a78565b50939650610ad295505050505050565b610f296115a2565b6001600160a01b0381166000908152600c602052604090205460ff1615610f625760405162461bcd60e51b8152600401610a1c90612dd7565b6001600160a01b03811660009081526008602052604090205415610fbc576001600160a01b038116600090815260086020526040902054610fa290610b41565b6001600160a01b0382166000908152600960205260409020555b6001600160a01b03166000818152600c60205260408120805460ff19166001908117909155600e805491820181559091527fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd0180546001600160a01b0319169091179055565b6001600160a01b0381166000908152600c602052604081205460ff161561105f57506001600160a01b031660009081526009602052604090205490565b6001600160a01b038216600090815260086020526040902054610ad290610b41565b6110896115a2565b6110936000611ad3565b565b61109d6115a2565b6110bd6127106110b760056110b160125490565b9061158a565b90611596565b8110156111325760405162461bcd60e51b815260206004820152603860248201527f537761706261636b20616d6f756e742073686f756c64206265206174206c656160448201527f737420302e303525206f6620746f74616c20737570706c7900000000000000006064820152608401610a1c565b60268190556040518181527ff7edd1a72d399eb95c56c07c5a26f00a9096735269c96c75caa8fc4e15bcd5d2906020015b60405180910390a150565b6111766115a2565b6002548111156111c85760405162461bcd60e51b815260206004820152601960248201527f6c6971756964697479466565206f7574206f662072616e6765000000000000006044820152606401610a1c565b601b819055601c55565b606060178054610a3e90612f1c565b6000610ace3384610b3285604051806060016040528060258152602001612fdd60259139336000908152600a602090815260408083206001600160a01b038d1684529091529020549190611a1d565b6000610ace338484611721565b6112456115a2565b60248054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599061116390831515815260200190565b61129a6115a2565b6006548111156112bc5760405162461bcd60e51b8152600401610a1c90612e0e565b601f819055602055565b6112ce6115a2565b60055481101580156112e1575060648111155b61132d5760405162461bcd60e51b815260206004820152601960248201527f6d6178547850657263656e74206f7574206f662072616e6765000000000000006044820152606401610a1c565b61134760646110b78360125461158a90919063ffffffff16565b60255550565b6113556115a2565b6001600160a01b0382166000908152600d602052604090205460ff166113c75760405162461bcd60e51b815260206004820152602160248201527f57616c6c65742061646472657373206e6f74207365742070726576696f75736c6044820152607960f81b6064820152608401610a1c565b6001600160a01b0381166000908152600d602052604090205460ff16156114305760405162461bcd60e51b815260206004820152601a60248201527f57616c6c6574206164647265737320616c7265616479207365740000000000006044820152606401610a1c565b6001600160a01b0382166000908152600b602052604090205460ff161561145a5761145a82611483565b6001600160a01b0382166000908152600d60205260409020805460ff19169055610d9881611b23565b61148b6115a2565b6001600160a01b0381166000908152600b602052604090205460ff166114f35760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c726561647920696e636c7564656400000000006044820152606401610a1c565b6001600160a01b03166000908152600b60205260409020805460ff19169055565b61151c6115a2565b6001600160a01b0381166115815760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a1c565b610e6e81611ad3565b6000610bbe8284612ee6565b6000610bbe8284612ec4565b6000546001600160a01b031633146110935760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a1c565b6001600160a01b03831661165e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610a1c565b6001600160a01b0382166116bf5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610a1c565b6001600160a01b038381166000818152600a602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166117855760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610a1c565b6001600160a01b0382166117e75760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610a1c565b6001600160a01b0383166000908152600b602052604090205460ff1661186957600081116118695760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610a1c565b6024546001600160a01b038381169116141561188c57601f54601955602154601b555b6000546001600160a01b038481169116148015906118b857506000546001600160a01b03838116911614155b15611920576025548111156119205760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610a1c565b600061192b30611022565b9050602554811061193b57506025545b602654811080159081906119595750602454600160a01b900460ff16155b801561197357506024546001600160a01b03868116911614155b80156119885750602454600160a81b900460ff165b1561199b57602654915061199b82611b83565b6001600160a01b0385166000908152600b602052604090205460019060ff16806119dd57506001600160a01b0385166000908152600b602052604090205460ff165b156119e6575060005b6119f286868684611c2a565b611a15601a54601955601c54601b55601e54601d55602054601f55602254602155565b505050505050565b60008184841115611a415760405162461bcd60e51b8152600401610a1c9190612d82565b505050900390565b6000806000611a56611d91565b9092509050611a658282611596565b9250505090565b6000610bbe8284612eac565b6000806000806000806000806000806000611a928c611f13565b93509350935093506000806000611ab38f878787611aae611a49565b611f68565b919f509d509b509599509397509195509350505050919395979092949650565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381166000908152600b602052604090205460ff16611b4c57611b4c81610e2d565b6001600160a01b03166000818152600d60205260409020805460ff19166001179055600f80546001600160a01b0319169091179055565b6024805460ff60a01b1916600160a01b1790556000611ba3826002611596565b90506000611bb18383611fca565b905047611bbd83611fd6565b6000611bc94783611fca565b9050611bd58382612337565b60408051858152602081018390529081018490527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a150506024805460ff60a01b19169055505050565b80611c3757611c37610bc5565b6001600160a01b0384166000908152600c602052604090205460ff168015611c7857506001600160a01b0383166000908152600c602052604090205460ff16155b15611c8d57611c888484846126f4565b611d8b565b6001600160a01b0384166000908152600c602052604090205460ff16158015611cce57506001600160a01b0383166000908152600c602052604090205460ff165b15611cde57611c8884848461283a565b6001600160a01b0384166000908152600c602052604090205460ff16158015611d2057506001600160a01b0383166000908152600c602052604090205460ff16155b15611d3057611c888484846128f9565b6001600160a01b0384166000908152600c602052604090205460ff168015611d7057506001600160a01b0383166000908152600c602052604090205460ff165b15611d8057611c88848484612953565b611d8b8484846128f9565b50505050565b6013546012546000918291825b600e54811015611ee3578260086000600e8481548110611dc057611dc0612f9e565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180611e2b57508160096000600e8481548110611e0457611e04612f9e565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15611e4157601354601254945094505050509091565b611e8760086000600e8481548110611e5b57611e5b612f9e565b60009182526020808320909101546001600160a01b031683528201929092526040019020548490611fca565b9250611ecf60096000600e8481548110611ea357611ea3612f9e565b60009182526020808320909101546001600160a01b031683528201929092526040019020548390611fca565b915080611edb81612f57565b915050611d9e565b50601254601354611ef391611596565b821015611f0a576013546012549350935050509091565b90939092509050565b6000806000806000611f24866129dc565b90506000611f31876129f8565b90506000611f3e88612a14565b90506000611f5882611f5285818d89611fca565b90611fca565b9993985091965094509092505050565b6000808080611f77898661158a565b90506000611f85898761158a565b90506000611f93898861158a565b90506000611fa1898961158a565b90506000611fb582611f5285818989611fca565b949d949c50929a509298505050505050505050565b6000610bbe8284612f05565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061200b5761200b612f9e565b6001600160a01b03928316602091820292909201015260115482519116908290600190811061203c5761203c612f9e565b6001600160a01b03928316602091820292909201015260235461206291309116846115fc565b60235460405163791ac94760e01b81526001600160a01b039091169063791ac9479061209b908590600090869030904290600401612e3b565b600060405180830381600087803b1580156120b557600080fd5b505af19250505080156120c6575060015b610d98573d8080156120f4576040519150601f19603f3d011682016040523d82523d6000602084013e6120f9565b606091505b5060235460405163d46d2f8360e01b81526001600160a01b039091169063d46d2f8390612133908690600090879030904290600401612e3b565b600060405180830381600087803b15801561214d57600080fd5b505af192505050801561215e575060015b612332573d80801561218c576040519150601f19603f3d011682016040523d82523d6000602084013e612191565b606091505b50602354604051633b158ab160e11b81526001600160a01b039091169063762b1562906121cb908790600090889030904290600401612e3b565b600060405180830381600087803b1580156121e557600080fd5b505af19250505080156121f6575060015b611d8b573d808015612224576040519150601f19603f3d011682016040523d82523d6000602084013e612229565b606091505b506023546040516312d70e6d60e11b81526001600160a01b03909116906325ae1cda90612263908890600090899030904290600401612e3b565b600060405180830381600087803b15801561227d57600080fd5b505af192505050801561228e575060015b61232f573d8080156122bc576040519150601f19603f3d011682016040523d82523d6000602084013e6122c1565b606091505b5060235460405163791ac94760e01b81526001600160a01b039091169063791ac947906122fb9089906000908a9030904290600401612e3b565b600060405180830381600087803b15801561231557600080fd5b505af1158015612329573d6000803e3d6000fd5b50505050505b50505b505050565b60235461234f9030906001600160a01b0316846115fc565b60235460015460405163f305d71960e01b81526001600160a01b039283169263f305d71992859261238f9230928992600092839216904290600401612d47565b6060604051808303818588803b1580156123a857600080fd5b505af1935050505080156123d9575060408051601f3d908101601f191682019092526123d691810190612d19565b60015b61232f573d808015612407576040519150601f19603f3d011682016040523d82523d6000602084013e61240c565b606091505b506023546001546040516375576a2160e11b81526001600160a01b039283169263eaaed44292869261244d9230928a92600092839216904290600401612d47565b6060604051808303818588803b15801561246657600080fd5b505af193505050508015612497575060408051601f3d908101601f1916820190925261249491810190612d19565b60015b611a15573d8080156124c5576040519150601f19603f3d011682016040523d82523d6000602084013e6124ca565b606091505b50602354600154604051637c8d9fb960e11b81526001600160a01b039283169263f91b3f7292879261250b9230928b92600092839216904290600401612d47565b6060604051808303818588803b15801561252457600080fd5b505af193505050508015612555575060408051601f3d908101601f1916820190925261255291810190612d19565b60015b6126eb573d808015612583576040519150601f19603f3d011682016040523d82523d6000602084013e612588565b606091505b50602354600154604051630798368960e41b81526001600160a01b039283169263798368909288926125c99230928c92600092839216904290600401612d47565b6060604051808303818588803b1580156125e257600080fd5b505af193505050508015612613575060408051601f3d908101601f1916820190925261261091810190612d19565b60015b6126e2573d808015612641576040519150601f19603f3d011682016040523d82523d6000602084013e612646565b606091505b5060235460015460405163f305d71960e01b81526001600160a01b039283169263f305d7199289926126879230928d92600092839216904290600401612d47565b6060604051808303818588803b1580156126a057600080fd5b505af11580156126b4573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906126d99190612d19565b5050505061232f565b50505050611d8b565b50505050505050565b600080600080600080600061270888611a78565b965096509650965096509650965061274e88600960008d6001600160a01b03166001600160a01b0316815260200190815260200160002054611fca90919063ffffffff16565b6001600160a01b038b1660009081526009602090815260408083209390935560089052205461277d9088611fca565b6001600160a01b03808c1660009081526008602052604080822093909355908b16815220546127ac9087611a6c565b6001600160a01b038a166000908152600860205260409020556127ce82612a30565b6127d781612af1565b6127e18584612bbe565b886001600160a01b03168a6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8660405161282691815260200190565b60405180910390a350505050505050505050565b600080600080600080600061284e88611a78565b965096509650965096509650965061289487600860008d6001600160a01b03166001600160a01b0316815260200190815260200160002054611fca90919063ffffffff16565b6001600160a01b03808c16600090815260086020908152604080832094909455918c168152600990915220546128ca9085611a6c565b6001600160a01b038a166000908152600960209081526040808320939093556008905220546127ac9087611a6c565b600080600080600080600061290d88611a78565b965096509650965096509650965061277d87600860008d6001600160a01b03166001600160a01b0316815260200190815260200160002054611fca90919063ffffffff16565b600080600080600080600061296788611a78565b96509650965096509650965096506129ad88600960008d6001600160a01b03166001600160a01b0316815260200190815260200160002054611fca90919063ffffffff16565b6001600160a01b038b166000908152600960209081526040808320939093556008905220546128949088611fca565b6000610ad260646110b76019548561158a90919063ffffffff16565b6000610ad260646110b7601b548561158a90919063ffffffff16565b6000610ad260646110b7601d548561158a90919063ffffffff16565b6000612a3a611a49565b90506000612a48838361158a565b30600090815260086020526040902054909150612a659082611a6c565b30600090815260086020908152604080832093909355600c9052205460ff1615612ab45730600090815260096020526040902054612aa39084611a6c565b306000908152600960205260409020555b30335b6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161171491815260200190565b6000612afb611a49565b90506000612b09838361158a565b600f546001600160a01b0316600090815260086020526040902054909150612b319082611a6c565b600f80546001600160a01b0390811660009081526008602090815260408083209590955592549091168152600c909152205460ff1615612bac57600f546001600160a01b0316600090815260096020526040902054612b909084611a6c565b600f546001600160a01b03166000908152600960205260409020555b600f546001600160a01b031633612ab7565b601354612bcb9083611fca565b601355601454612bdb9082611a6c565b6014555050565b80356001600160a01b0381168114612bf957600080fd5b919050565b80358015158114612bf957600080fd5b600060208284031215612c2057600080fd5b610bbe82612be2565b60008060408385031215612c3c57600080fd5b612c4583612be2565b9150612c5360208401612be2565b90509250929050565b600080600060608486031215612c7157600080fd5b612c7a84612be2565b9250612c8860208501612be2565b9150604084013590509250925092565b60008060408385031215612cab57600080fd5b612cb483612be2565b946020939093013593505050565b600060208284031215612cd457600080fd5b610bbe82612bfe565b600060208284031215612cef57600080fd5b5035919050565b60008060408385031215612d0957600080fd5b82359150612c5360208401612bfe565b600080600060608486031215612d2e57600080fd5b8351925060208401519150604084015190509250925092565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b600060208083528351808285015260005b81811015612daf57858101830151858201604001528201612d93565b81811115612dc1576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252601b908201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604082015260600190565b602080825260139082015272746178466565206f7574206f662072616e676560681b604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612e8b5784516001600160a01b031683529383019391830191600101612e66565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115612ebf57612ebf612f72565b500190565b600082612ee157634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615612f0057612f00612f72565b500290565b600082821015612f1757612f17612f72565b500390565b600181811c90821680612f3057607f821691505b60208210811415612f5157634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415612f6b57612f6b612f72565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122040a4b3410ee63ce07cd6a6a118546b82ca58b0d03fe37b5f8e8155c12f3e091d64736f6c63430008070033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000ddae2d0f091d39cfa5cd932ac8d1800397176513000000000000000000000000000000000000000000000000000000000000026000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000038d7ea4c68000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000032000000000000000000000000000000000000000000000000000000000000000700000000000000000000000000000000000000000000000000000000000000070000000000000000000000000dd8a63f68e97a18fcfd90800377a9bc55a403bd000000000000000000000000591cf6942c422fa53e8d81c62a9692d7bea72f61000000000000000000000000039e2fb66102314ce7b64ce5ce3e5183bc94ad38000000000000000000000000000000000000000000000000000000000000000d54657374204c69712044796f72000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004544c445200000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : tokenOwner (address): 0xDDAe2D0F091d39cfa5cD932Ac8D1800397176513
Arg [1] : name_ (string): Test Liq Dyor
Arg [2] : symbol_ (string): TLDR
Arg [3] : decimal_ (uint8): 10
Arg [4] : amountOfTokenWei (uint256): 1000000000000000
Arg [5] : setFees (uint8[5]): 2,2,2,2,2
Arg [6] : maxFees (uint256[6]): 4,4,4,50,7,7
Arg [7] : devWalletAddress_ (address): 0x0dd8a63f68e97a18FCFd90800377A9bC55A403bd
Arg [8] : _router (address): 0x591cf6942c422fA53E8D81c62a9692D7BeA72F61
Arg [9] : _basePair (address): 0x039e2fB66102314Ce7b64Ce5Ce3E5183bc94aD38
-----Encoded View---------------
23 Constructor Arguments found :
Arg [0] : 000000000000000000000000ddae2d0f091d39cfa5cd932ac8d1800397176513
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000260
Arg [2] : 00000000000000000000000000000000000000000000000000000000000002a0
Arg [3] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [4] : 00000000000000000000000000000000000000000000000000038d7ea4c68000
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000002
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000002
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000002
Arg [8] : 0000000000000000000000000000000000000000000000000000000000000002
Arg [9] : 0000000000000000000000000000000000000000000000000000000000000002
Arg [10] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [11] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [12] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [13] : 0000000000000000000000000000000000000000000000000000000000000032
Arg [14] : 0000000000000000000000000000000000000000000000000000000000000007
Arg [15] : 0000000000000000000000000000000000000000000000000000000000000007
Arg [16] : 0000000000000000000000000dd8a63f68e97a18fcfd90800377a9bc55a403bd
Arg [17] : 000000000000000000000000591cf6942c422fa53e8d81c62a9692d7bea72f61
Arg [18] : 000000000000000000000000039e2fb66102314ce7b64ce5ce3e5183bc94ad38
Arg [19] : 000000000000000000000000000000000000000000000000000000000000000d
Arg [20] : 54657374204c69712044796f7200000000000000000000000000000000000000
Arg [21] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [22] : 544c445200000000000000000000000000000000000000000000000000000000
Deployed Bytecode Sourcemap
32671:26659:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;41010:210;;;;;;;;;;-1:-1:-1;41010:210:0;;;;;:::i;:::-;;:::i;:::-;;36940:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37852:161;;;;;;;;;;-1:-1:-1;37852:161:0;;;;;:::i;:::-;;:::i;:::-;;;3324:14:1;;3317:22;3299:41;;3287:2;3272:18;37852:161:0;3159:187:1;34151:26:0;;;;;;;;;;;;;;;;;;;11609:25:1;;;11597:2;11582:18;34151:26:0;11463:177:1;38973:87:0;;;;;;;;;;-1:-1:-1;39042:10:0;;38973:87;;34228:41;;;;;;;;;;-1:-1:-1;34228:41:0;;;;-1:-1:-1;;;;;34228:41:0;;;;;;-1:-1:-1;;;;;2503:32:1;;;2485:51;;2473:2;2458:18;34228:41:0;2339:203:1;37217:95:0;;;;;;;;;;-1:-1:-1;37297:7:0;;37217:95;;34074:26;;;;;;;;;;;;;;;;38021:313;;;;;;;;;;-1:-1:-1;38021:313:0;;;;;:::i;:::-;;:::i;39514:253::-;;;;;;;;;;-1:-1:-1;39514:253:0;;;;;:::i;:::-;;:::i;47310:245::-;;;;;;;;;;;;;:::i;37126:83::-;;;;;;;;;;-1:-1:-1;37192:9:0;;37126:83;;37192:9;;;;13096:36:1;;13084:2;13069:18;37126:83:0;12954:184:1;32940:37:0;;;;;;;;;;;;;;;;41985:245;;;;;;;;;;-1:-1:-1;41985:245:0;;;;;:::i;:::-;;:::i;40119:477::-;;;;;;;;;;-1:-1:-1;40119:477:0;;;;;:::i;:::-;;:::i;41508:210::-;;;;;;;;;;-1:-1:-1;41508:210:0;;;;;:::i;:::-;;:::i;38342:218::-;;;;;;;;;;-1:-1:-1;38342:218:0;;;;;:::i;:::-;;:::i;33847:22::-;;;;;;;;;;;;;;;;32831:29;;;;;;;;;;;;;;;;40608:190;;;;;;;;;;-1:-1:-1;40608:190:0;;;;;:::i;:::-;;:::i;39068:438::-;;;;;;;;;;-1:-1:-1;39068:438:0;;;;;:::i;:::-;;:::i;34276:28::-;;;;;;;;;;-1:-1:-1;34276:28:0;;;;-1:-1:-1;;;;;34276:28:0;;;34345:33;;;;;;;;;;-1:-1:-1;34345:33:0;;;;-1:-1:-1;;;34345:33:0;;;;;;39779:332;;;;;;;;;;-1:-1:-1;39779:332:0;;;;;:::i;:::-;;:::i;47827:123::-;;;;;;;;;;-1:-1:-1;47827:123:0;;;;;:::i;:::-;-1:-1:-1;;;;;47915:27:0;47891:4;47915:27;;;:18;:27;;;;;;;;;47827:123;33715:33;;;;;;;;;;-1:-1:-1;33715:33:0;;;;;;;;33543:23;;;;;;;;;;-1:-1:-1;33543:23:0;;;;-1:-1:-1;;;;;33543:23:0;;;33920:28;;;;;;;;;;;;;;;;37320:198;;;;;;;;;;-1:-1:-1;37320:198:0;;;;;:::i;:::-;;:::i;12712:103::-;;;;;;;;;;;;;:::i;43334:297::-;;;;;;;;;;-1:-1:-1;43334:297:0;;;;;:::i;:::-;;:::i;34391:27::-;;;;;;;;;;;;;;;;38845:120;;;;;;;;;;-1:-1:-1;38845:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;38937:20:0;38913:4;38937:20;;;:11;:20;;;;;;;;;38845:120;12071:87;;;;;;;;;;-1:-1:-1;12117:7:0;12144:6;-1:-1:-1;;;;;12144:6:0;12071:87;;41232:264;;;;;;;;;;-1:-1:-1;41232:264:0;;;;;:::i;:::-;;:::i;37031:87::-;;;;;;;;;;;;;:::i;33024:33::-;;;;;;;;;;;;;;;;38568:269;;;;;;;;;;-1:-1:-1;38568:269:0;;;;;:::i;:::-;;:::i;37526:167::-;;;;;;;;;;-1:-1:-1;37526:167:0;;;;;:::i;:::-;;:::i;34005:22::-;;;;;;;;;;;;;;;;32904:29;;;;;;;;;;;;;;;;33452:32;;;;;;;;;;-1:-1:-1;33452:32:0;;;;-1:-1:-1;;;;;33452:32:0;;;43155:171;;;;;;;;;;-1:-1:-1;43155:171:0;;;;;:::i;:::-;;:::i;32867:29::-;;;;;;;;;;;;;;;;41732:245;;;;;;;;;;-1:-1:-1;41732:245:0;;;;;:::i;:::-;;:::i;34425:44::-;;;;;;;;;;;;;;;;32984:33;;;;;;;;;;;;;;;;42245:241;;;;;;;;;;-1:-1:-1;42245:241:0;;;;;:::i;:::-;;:::i;42742:405::-;;;;;;;;;;-1:-1:-1;42742:405:0;;;;;:::i;:::-;;:::i;37701:143::-;;;;;;;;;;-1:-1:-1;37701:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;37809:18:0;;;37782:7;37809:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;37701:143;47567:248;;;;;;;;;;;;47620:15;;47610:7;:25;47662:21;;47646:13;:37;47704:15;;47694:7;:25;47744:19;;47730:11;:33;47788:19;;47774:11;:33;47567:248;40810:188;;;;;;;;;;-1:-1:-1;40810:188:0;;;;;:::i;:::-;;:::i;59069:256::-;;;;;;;;;;-1:-1:-1;59069:256:0;;;;;:::i;:::-;;:::i;33515:21::-;;;;;;;;;;-1:-1:-1;33515:21:0;;;;-1:-1:-1;;;;;33515:21:0;;;41010:210;11957:13;:11;:13::i;:::-;41117:9:::1;;41108:6;:18;;41085:64;;;;-1:-1:-1::0;;;41085:64:0::1;;;;;;;:::i;:::-;;;;;;;;;41160:7;:16:::0;;;41187:15:::1;:25:::0;41010:210::o;36940:83::-;36977:13;37010:5;37003:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36940:83;:::o;37852:161::-;37927:4;37944:39;4240:10;37967:7;37976:6;37944:8;:39::i;:::-;-1:-1:-1;38001:4:0;37852:161;;;;;:::o;38021:313::-;38119:4;38136:36;38146:6;38154:9;38165:6;38136:9;:36::i;:::-;38183:121;38192:6;4240:10;38214:89;38252:6;38214:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;38214:19:0;;;;;;:11;:19;;;;;;;;4240:10;38214:33;;;;;;;;;;:37;:89::i;:::-;38183:8;:121::i;:::-;-1:-1:-1;38322:4:0;38021:313;;;;;:::o;39514:253::-;39580:7;39619;;39608;:18;;39600:73;;;;-1:-1:-1;;;39600:73:0;;5148:2:1;39600:73:0;;;5130:21:1;5187:2;5167:18;;;5160:30;5226:34;5206:18;;;5199:62;-1:-1:-1;;;5277:18:1;;;5270:40;5327:19;;39600:73:0;4946:406:1;39600:73:0;39684:19;39707:10;:8;:10::i;:::-;39684:33;-1:-1:-1;39735:24:0;:7;39684:33;39735:11;:24::i;:::-;39728:31;39514:253;-1:-1:-1;;;39514:253:0:o;47310:245::-;47355:7;;:12;:34;;;;-1:-1:-1;47371:13:0;;:18;47355:34;:50;;;;-1:-1:-1;47393:7:0;;:12;47355:50;47352:62;;;47310:245::o;47352:62::-;47444:1;47434:7;:11;;;47456:13;:17;;;47484:7;:11;;;47506;:15;;;47532:11;:15;47310:245::o;41985:::-;11957:13;:11;:13::i;:::-;42107::::1;;42094:10;:26;;42067:76;;;;-1:-1:-1::0;;;42067:76:0::1;;;;;;;:::i;:::-;42154:11;:24:::0;;;42189:19:::1;:33:::0;41985:245::o;40119:477::-;11957:13;:11;:13::i;:::-;-1:-1:-1;;;;;40199:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;40191:60;;;;-1:-1:-1::0;;;40191:60:0::1;;;;;;;:::i;:::-;40267:9;40262:327;40286:9;:16:::0;40282:20;::::1;40262:327;;;40344:7;-1:-1:-1::0;;;;;40328:23:0::1;:9;40338:1;40328:12;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;40328:12:0::1;:23;40324:254;;;40387:9;40397:16:::0;;:20:::1;::::0;40416:1:::1;::::0;40397:20:::1;:::i;:::-;40387:31;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;40372:9:::1;:12:::0;;-1:-1:-1;;;;;40387:31:0;;::::1;::::0;40382:1;;40372:12;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;40372:46:0::1;-1:-1:-1::0;;;;;40372:46:0;;::::1;;::::0;;40437:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;40476:11:::1;:20:::0;;;;:28;;-1:-1:-1;;40476:28:0::1;::::0;;40523:9:::1;:15:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;40523:15:0;;;;;-1:-1:-1;;;;;;40523:15:0::1;::::0;;;;;40262:327:::1;40119:477:::0;:::o;40324:254::-:1;40304:3:::0;::::1;::::0;::::1;:::i;:::-;;;;40262:327;;;;40119:477:::0;:::o;41508:210::-;11957:13;:11;:13::i;:::-;41614:9:::1;;41605:6;:18;;41582:65;;;::::0;-1:-1:-1;;;41582:65:0;;8621:2:1;41582:65:0::1;::::0;::::1;8603:21:1::0;8660:2;8640:18;;;8633:30;-1:-1:-1;;;8679:18:1;;;8672:50;8739:18;;41582:65:0::1;8419:344:1::0;41582:65:0::1;41658:7;:16:::0;;;41685:15:::1;:25:::0;41508:210::o;38342:218::-;4240:10;38430:4;38479:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;38479:34:0;;;;;;;;;;38430:4;;38447:83;;38470:7;;38479:50;;38518:10;38479:38;:50::i;40608:190::-;11957:13;:11;:13::i;:::-;-1:-1:-1;;;;;40686:27:0;::::1;;::::0;;;:18:::1;:27;::::0;;;;;::::1;;40685:28;40677:68;;;;-1:-1:-1::0;;;40677:68:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;40756:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;40756:34:0::1;40786:4;40756:34;::::0;;40608:190::o;39068:438::-;39158:7;39197;;39186;:18;;39178:62;;;;-1:-1:-1;;;39178:62:0;;7081:2:1;39178:62:0;;;7063:21:1;7120:2;7100:18;;;7093:30;7159:33;7139:18;;;7132:61;7210:18;;39178:62:0;6879:355:1;39178:62:0;39256:17;39251:248;;39291:15;39316:19;39327:7;39316:10;:19::i;:::-;-1:-1:-1;39290:45:0;;-1:-1:-1;39350:14:0;;-1:-1:-1;;;;;;39350:14:0;39251:248;39399:23;39431:19;39442:7;39431:10;:19::i;:::-;-1:-1:-1;39397:53:0;;-1:-1:-1;39465:22:0;;-1:-1:-1;;;;;;39465:22:0;39779:332;11957:13;:11;:13::i;:::-;-1:-1:-1;;;;;39860:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;39859:21;39851:61;;;;-1:-1:-1::0;;;39851:61:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;39927:16:0;::::1;39946:1;39927:16:::0;;;:7:::1;:16;::::0;;;;;:20;39923:109:::1;;-1:-1:-1::0;;;;;40003:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;39983:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;39964:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;39923:109:::1;-1:-1:-1::0;;;;;40042:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;40042:27:0::1;40065:4;40042:27:::0;;::::1;::::0;;;40080:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;40080:23:0::1;::::0;;::::1;::::0;;39779:332::o;37320:198::-;-1:-1:-1;;;;;37410:20:0;;37386:7;37410:20;;;:11;:20;;;;;;;;37406:49;;;-1:-1:-1;;;;;;37439:16:0;;;;;:7;:16;;;;;;;37320:198::o;37406:49::-;-1:-1:-1;;;;;37493:16:0;;;;;;:7;:16;;;;;;37473:37;;:19;:37::i;12712:103::-;11957:13;:11;:13::i;:::-;12777:30:::1;12804:1;12777:18;:30::i;:::-;12712:103::o:0;43334:297::-;11957:13;:11;:13::i;:::-;43429:31:::1;43454:5;43429:20;43447:1;43429:13;37297:7:::0;;;37217:95;43429:13:::1;:17:::0;::::1;:20::i;:::-;:24:::0;::::1;:31::i;:::-;43418:7;:42;;43410:111;;;::::0;-1:-1:-1;;;43410:111:0;;10487:2:1;43410:111:0::1;::::0;::::1;10469:21:1::0;10526:2;10506:18;;;10499:30;10565:34;10545:18;;;10538:62;10636:26;10616:18;;;10609:54;10680:19;;43410:111:0::1;10285:420:1::0;43410:111:0::1;43532:29;:39:::0;;;43587:36:::1;::::0;11609:25:1;;;43587:36:0::1;::::0;11597:2:1;11582:18;43587:36:0::1;;;;;;;;43334:297:::0;:::o;41232:264::-;11957:13;:11;:13::i;:::-;41363:9:::1;;41348:12;:24;;41319:82;;;::::0;-1:-1:-1;;;41319:82:0;;4794:2:1;41319:82:0::1;::::0;::::1;4776:21:1::0;4833:2;4813:18;;;4806:30;4872:27;4852:18;;;4845:55;4917:18;;41319:82:0::1;4592:349:1::0;41319:82:0::1;41412:13;:28:::0;;;41451:21:::1;:37:::0;41232:264::o;37031:87::-;37070:13;37103:7;37096:14;;;;;:::i;38568:269::-;38661:4;38678:129;4240:10;38701:7;38710:96;38749:15;38710:96;;;;;;;;;;;;;;;;;4240:10;38710:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;38710:34:0;;;;;;;;;;;;:38;:96::i;37526:167::-;37604:4;37621:42;4240:10;37645:9;37656:6;37621:9;:42::i;43155:171::-;11957:13;:11;:13::i;:::-;43232:21:::1;:32:::0;;;::::1;;-1:-1:-1::0;;;43232:32:0::1;-1:-1:-1::0;;;;43232:32:0;;::::1;;::::0;;43280:38:::1;::::0;::::1;::::0;::::1;::::0;43256:8;3324:14:1;3317:22;3299:41;;3287:2;3272:18;;3159:187;41732:245:0;11957:13;:11;:13::i;:::-;41854::::1;;41841:10;:26;;41814:76;;;;-1:-1:-1::0;;;41814:76:0::1;;;;;;;:::i;:::-;41901:11;:24:::0;;;41936:19:::1;:33:::0;41732:245::o;42245:241::-;11957:13;:11;:13::i;:::-;42348:17:::1;;42332:12;:33;;:55;;;;;42384:3;42369:12;:18;;42332:55;42324:92;;;::::0;-1:-1:-1;;;42324:92:0;;9372:2:1;42324:92:0::1;::::0;::::1;9354:21:1::0;9411:2;9391:18;;;9384:30;9450:27;9430:18;;;9423:55;9495:18;;42324:92:0::1;9170:349:1::0;42324:92:0::1;42442:36;42472:5;42442:25;42454:12;42442:7;;:11;;:25;;;;:::i;:36::-;42427:12;:51:::0;-1:-1:-1;42245:241:0:o;42742:405::-;11957:13;:11;:13::i;:::-;-1:-1:-1;;;;;42844:19:0;::::1;;::::0;;;:12:::1;:19;::::0;;;;;::::1;;42836:65;;;::::0;-1:-1:-1;;;42836:65:0;;8970:2:1;42836:65:0::1;::::0;::::1;8952:21:1::0;9009:2;8989:18;;;8982:30;9048:34;9028:18;;;9021:62;-1:-1:-1;;;9099:18:1;;;9092:31;9140:19;;42836:65:0::1;8768:397:1::0;42836:65:0::1;-1:-1:-1::0;;;;;42921:22:0;::::1;;::::0;;;:12:::1;:22;::::0;;;;;::::1;;42920:23;42912:62;;;::::0;-1:-1:-1;;;42912:62:0;;10132:2:1;42912:62:0::1;::::0;::::1;10114:21:1::0;10171:2;10151:18;;;10144:30;10210:28;10190:18;;;10183:56;10256:18;;42912:62:0::1;9930:350:1::0;42912:62:0::1;-1:-1:-1::0;;;;;42989:25:0;::::1;;::::0;;;:18:::1;:25;::::0;;;;;::::1;;42985:77;;;43031:19;43044:5;43031:12;:19::i;:::-;-1:-1:-1::0;;;;;43072:19:0;::::1;43094:5;43072:19:::0;;;:12:::1;:19;::::0;;;;:27;;-1:-1:-1;;43072:27:0::1;::::0;;43110:29:::1;43130:8:::0;43110:19:::1;:29::i;40810:188::-:0;11957:13;:11;:13::i;:::-;-1:-1:-1;;;;;40885:27:0;::::1;;::::0;;;:18:::1;:27;::::0;;;;;::::1;;40877:67;;;::::0;-1:-1:-1;;;40877:67:0;;6725:2:1;40877:67:0::1;::::0;::::1;6707:21:1::0;6764:2;6744:18;;;6737:30;6803:29;6783:18;;;6776:57;6850:18;;40877:67:0::1;6523:351:1::0;40877:67:0::1;-1:-1:-1::0;;;;;40955:27:0::1;40985:5;40955:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;40955:35:0::1;::::0;;40810:188::o;59069:256::-;11957:13;:11;:13::i;:::-;-1:-1:-1;;;;;59167:22:0;::::1;59159:73;;;::::0;-1:-1:-1;;;59159:73:0;;5559:2:1;59159:73:0::1;::::0;::::1;5541:21:1::0;5598:2;5578:18;;;5571:30;5637:34;5617:18;;;5610:62;-1:-1:-1;;;5688:18:1;;;5681:36;5734:19;;59159:73:0::1;5357:402:1::0;59159:73:0::1;59243:28;59262:8;59243:18;:28::i;7667:98::-:0;7725:7;7752:5;7756:1;7752;:5;:::i;8066:98::-;8124:7;8151:5;8155:1;8151;:5;:::i;12236:132::-;12117:7;12144:6;-1:-1:-1;;;;;12144:6:0;4240:10;12300:23;12292:68;;;;-1:-1:-1;;;12292:68:0;;7850:2:1;12292:68:0;;;7832:21:1;;;7869:18;;;7862:30;7928:34;7908:18;;;7901:62;7980:18;;12292:68:0;7648:356:1;47958:337:0;-1:-1:-1;;;;;48051:19:0;;48043:68;;;;-1:-1:-1;;;48043:68:0;;10912:2:1;48043:68:0;;;10894:21:1;10951:2;10931:18;;;10924:30;10990:34;10970:18;;;10963:62;-1:-1:-1;;;11041:18:1;;;11034:34;11085:19;;48043:68:0;10710:400:1;48043:68:0;-1:-1:-1;;;;;48130:21:0;;48122:68;;;;-1:-1:-1;;;48122:68:0;;5966:2:1;48122:68:0;;;5948:21:1;6005:2;5985:18;;;5978:30;6044:34;6024:18;;;6017:62;-1:-1:-1;;;6095:18:1;;;6088:32;6137:19;;48122:68:0;5764:398:1;48122:68:0;-1:-1:-1;;;;;48203:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;48255:32;;11609:25:1;;;48255:32:0;;11582:18:1;48255:32:0;;;;;;;;47958:337;;;:::o;48303:2103::-;-1:-1:-1;;;;;48425:18:0;;48417:68;;;;-1:-1:-1;;;48417:68:0;;9726:2:1;48417:68:0;;;9708:21:1;9765:2;9745:18;;;9738:30;9804:34;9784:18;;;9777:62;-1:-1:-1;;;9855:18:1;;;9848:35;9900:19;;48417:68:0;9524:401:1;48417:68:0;-1:-1:-1;;;;;48504:16:0;;48496:64;;;;-1:-1:-1;;;48496:64:0;;4390:2:1;48496:64:0;;;4372:21:1;4429:2;4409:18;;;4402:30;4468:34;4448:18;;;4441:62;-1:-1:-1;;;4519:18:1;;;4512:33;4562:19;;48496:64:0;4188:399:1;48496:64:0;-1:-1:-1;;;;;48577:24:0;;;;;;:18;:24;;;;;;;;48573:120;;48634:1;48625:6;:10;48617:64;;;;-1:-1:-1;;;48617:64:0;;8211:2:1;48617:64:0;;;8193:21:1;8250:2;8230:18;;;8223:30;8289:34;8269:18;;;8262:62;-1:-1:-1;;;8340:18:1;;;8333:39;8389:19;;48617:64:0;8009:405:1;48617:64:0;48766:13;;-1:-1:-1;;;;;48760:19:0;;;48766:13;;48760:19;48756:114;;;48805:11;;48795:7;:21;48847:11;;48831:13;:27;48756:114;12117:7;12144:6;-1:-1:-1;;;;;48885:15:0;;;12144:6;;48885:15;;;;:32;;-1:-1:-1;12117:7:0;12144:6;-1:-1:-1;;;;;48904:13:0;;;12144:6;;48904:13;;48885:32;48882:125;;;48950:12;;48940:6;:22;;48932:75;;;;-1:-1:-1;;;48932:75:0;;7441:2:1;48932:75:0;;;7423:21:1;7480:2;7460:18;;;7453:30;7519:34;7499:18;;;7492:62;-1:-1:-1;;;7570:18:1;;;7563:38;7618:19;;48932:75:0;7239:404:1;48932:75:0;49302:28;49333:24;49351:4;49333:9;:24::i;:::-;49302:55;;49405:12;;49381:20;:36;49378:112;;-1:-1:-1;49466:12:0;;49378:112;49561:29;;49537:53;;;;;;;49619;;-1:-1:-1;49656:16:0;;-1:-1:-1;;;49656:16:0;;;;49655:17;49619:53;:91;;;;-1:-1:-1;49697:13:0;;-1:-1:-1;;;;;49689:21:0;;;49697:13;;49689:21;;49619:91;:129;;;;-1:-1:-1;49727:21:0;;-1:-1:-1;;;49727:21:0;;;;49619:129;49601:318;;;49798:29;;49775:52;;49871:36;49886:20;49871:14;:36::i;:::-;-1:-1:-1;;;;;50127:24:0;;50000:12;50127:24;;;:18;:24;;;;;;50015:4;;50127:24;;;:50;;-1:-1:-1;;;;;;50155:22:0;;;;;;:18;:22;;;;;;;;50127:50;50124:96;;;-1:-1:-1;50203:5:0;50124:96;50306:38;50321:4;50326:2;50329:6;50336:7;50306:14;:38::i;:::-;50383:15;47620;;47610:7;:25;47662:21;;47646:13;:37;47704:15;;47694:7;:25;47744:19;;47730:11;:33;47788:19;;47774:11;:33;47567:248;50383:15;48406:2000;;;48303:2103;;;:::o;9208:206::-;9294:7;9355:12;9347:6;;;;9339:29;;;;-1:-1:-1;;;9339:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;9390:5:0;;;9208:206::o;45275:163::-;45316:7;45337:15;45354;45373:19;:17;:19::i;:::-;45336:56;;-1:-1:-1;45336:56:0;-1:-1:-1;45410:20:0;45336:56;;45410:11;:20::i;:::-;45403:27;;;;45275:163;:::o;6929:98::-;6987:7;7014:5;7018:1;7014;:5;:::i;43892:454::-;43951:7;43960;43969;43978;43987;43996;44005;44026:23;44051:12;44065:18;44085:12;44101:20;44113:7;44101:11;:20::i;:::-;44025:96;;;;;;;;44133:15;44150:23;44175:12;44191:56;44203:7;44212:4;44218:10;44230:4;44236:10;:8;:10::i;:::-;44191:11;:56::i;:::-;44132:115;;-1:-1:-1;44132:115:0;-1:-1:-1;44132:115:0;-1:-1:-1;44298:15:0;;-1:-1:-1;44315:4:0;;-1:-1:-1;44321:10:0;;-1:-1:-1;44333:4:0;-1:-1:-1;;;;43892:454:0;;;;;;;;;:::o;13331:191::-;13405:16;13424:6;;-1:-1:-1;;;;;13441:17:0;;;-1:-1:-1;;;;;;13441:17:0;;;;;;13474:40;;13424:6;;;;;;;13474:40;;13405:16;13474:40;13394:128;13331:191;:::o;42502:232::-;-1:-1:-1;;;;;42579:25:0;;;;;;:18;:25;;;;;;;;42574:80;;42621:21;42636:5;42621:14;:21::i;:::-;-1:-1:-1;;;;;42664:19:0;;;;;:12;:19;;;;;:26;;-1:-1:-1;;42664:26:0;42686:4;42664:26;;;42701:17;:25;;-1:-1:-1;;;;;;42701:25:0;;;;;;42502:232::o;50414:985::-;34764:16;:23;;-1:-1:-1;;;;34764:23:0;-1:-1:-1;;;34764:23:0;;;;50565:27:::1;:20:::0;50590:1:::1;50565:24;:27::i;:::-;50550:42:::0;-1:-1:-1;50603:17:0::1;50623:30;:20:::0;50550:42;50623:24:::1;:30::i;:::-;50603:50:::0;-1:-1:-1;50956:21:0::1;51022:22;51039:4:::0;51022:16:::1;:22::i;:::-;51175:18;51196:41;:21;51222:14:::0;51196:25:::1;:41::i;:::-;51175:62;;51287:35;51300:9;51311:10;51287:12;:35::i;:::-;51348:43;::::0;;12832:25:1;;;12888:2;12873:18;;12866:34;;;12916:18;;;12909:34;;;51348:43:0::1;::::0;12820:2:1;12805:18;51348:43:0::1;;;;;;;-1:-1:-1::0;;34810:16:0;:24;;-1:-1:-1;;;;34810:24:0;;;-1:-1:-1;;;50414:985:0:o;55751:783::-;55862:7;55858:40;;55884:14;:12;:14::i;:::-;-1:-1:-1;;;;;55923:19:0;;;;;;:11;:19;;;;;;;;:46;;;;-1:-1:-1;;;;;;55947:22:0;;;;;;:11;:22;;;;;;;;55946:23;55923:46;55919:597;;;55986:48;56008:6;56016:9;56027:6;55986:21;:48::i;:::-;55919:597;;;-1:-1:-1;;;;;56057:19:0;;;;;;:11;:19;;;;;;;;56056:20;:46;;;;-1:-1:-1;;;;;;56080:22:0;;;;;;:11;:22;;;;;;;;56056:46;56052:464;;;56119:46;56139:6;56147:9;56158:6;56119:19;:46::i;56052:464::-;-1:-1:-1;;;;;56188:19:0;;;;;;:11;:19;;;;;;;;56187:20;:47;;;;-1:-1:-1;;;;;;56212:22:0;;;;;;:11;:22;;;;;;;;56211:23;56187:47;56183:333;;;56251:44;56269:6;56277:9;56288:6;56251:17;:44::i;56183:333::-;-1:-1:-1;;;;;56317:19:0;;;;;;:11;:19;;;;;;;;:45;;;;-1:-1:-1;;;;;;56340:22:0;;;;;;:11;:22;;;;;;;;56317:45;56313:203;;;56379:48;56401:6;56409:9;56420:6;56379:21;:48::i;56313:203::-;56460:44;56478:6;56486:9;56497:6;56460:17;:44::i;:::-;55751:783;;;;:::o;45446:561::-;45543:7;;45579;;45496;;;;;45603:289;45627:9;:16;45623:20;;45603:289;;;45693:7;45669;:21;45677:9;45687:1;45677:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;45677:12:0;45669:21;;;;;;;;;;;;;:31;;:66;;;45728:7;45704;:21;45712:9;45722:1;45712:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;45712:12:0;45704:21;;;;;;;;;;;;;:31;45669:66;45665:97;;;45745:7;;45754;;45737:25;;;;;;;45446:561;;:::o;45665:97::-;45787:34;45799:7;:21;45807:9;45817:1;45807:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;45807:12:0;45799:21;;;;;;;;;;;;;45787:7;;:11;:34::i;:::-;45777:44;;45846:34;45858:7;:21;45866:9;45876:1;45866:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;45866:12:0;45858:21;;;;;;;;;;;;;45846:7;;:11;:34::i;:::-;45836:44;-1:-1:-1;45645:3:0;;;;:::i;:::-;;;;45603:289;;;-1:-1:-1;45928:7:0;;45916;;:20;;:11;:20::i;:::-;45906:7;:30;45902:61;;;45946:7;;45955;;45938:25;;;;;;45446:561;;:::o;45902:61::-;45982:7;;45991;;-1:-1:-1;45446:561:0;-1:-1:-1;45446:561:0:o;44354:405::-;44414:7;44423;44432;44441;44461:12;44476:24;44492:7;44476:15;:24::i;:::-;44461:39;;44511:18;44532:30;44554:7;44532:21;:30::i;:::-;44511:51;;44573:12;44588:24;44604:7;44588:15;:24::i;:::-;44573:39;-1:-1:-1;44623:23:0;44649:43;44573:39;44649:33;44671:10;44649:33;:7;44661:4;44649:11;:17::i;:::-;:21;;:33::i;:43::-;44623:69;44728:4;;-1:-1:-1;44734:10:0;;-1:-1:-1;44734:10:0;-1:-1:-1;44354:405:0;;-1:-1:-1;;;44354:405:0:o;44767:500::-;44896:7;;;;44952:24;:7;44964:11;44952;:24::i;:::-;44934:42;-1:-1:-1;44987:12:0;45002:21;:4;45011:11;45002:8;:21::i;:::-;44987:36;-1:-1:-1;45034:18:0;45055:27;:10;45070:11;45055:14;:27::i;:::-;45034:48;-1:-1:-1;45093:12:0;45108:21;:4;45117:11;45108:8;:21::i;:::-;45093:36;-1:-1:-1;45140:23:0;45166:43;45093:36;45166:33;45188:10;45166:33;:7;45178:4;45166:11;:17::i;:43::-;45228:7;;;;-1:-1:-1;45254:4:0;;-1:-1:-1;44767:500:0;;-1:-1:-1;;;;;;;;;44767:500:0:o;7310:98::-;7368:7;7395:5;7399:1;7395;:5;:::i;51407:2052::-;51556:16;;;51570:1;51556:16;;;;;;;;51532:21;;51556:16;;;;;;;;;;-1:-1:-1;51556:16:0;51532:40;;51601:4;51583;51588:1;51583:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;51583:23:0;;;:7;;;;;;;;;:23;51627:8;;51617:7;;51627:8;;;51617:4;;51627:8;;51617:7;;;;;;:::i;:::-;-1:-1:-1;;;;;51617:18:0;;;:7;;;;;;;;;:18;51680:15;;51648:62;;51665:4;;51680:15;51698:11;51648:8;:62::i;:::-;51753:15;;:224;;-1:-1:-1;;;51753:224:0;;-1:-1:-1;;;;;51753:15:0;;;;:66;;:224;;51834:11;;51753:15;;51904:4;;51931;;51951:15;;51753:224;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;51749:1703;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;52033:15:0;;:248;;-1:-1:-1;;;52033:248:0;;-1:-1:-1;;;;;52033:15:0;;;;:66;;:248;;52118:11;;52033:15;;52196:4;;52227;;52251:15;;52033:248;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;52029:1410;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;52341:15:0;;:273;;-1:-1:-1;;;52341:273:0;;-1:-1:-1;;;;;52341:15:0;;;;:67;;:273;;52431:11;;52341:15;;52517:4;;52552;;52580:15;;52341:273;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;52337:1085;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;52683:15:0;;:295;;-1:-1:-1;;;52683:295:0;;-1:-1:-1;;;;;52683:15:0;;;;:65;;:295;;52775:11;;52683:15;;52869:4;;52908;;52940:15;;52683:295;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;52679:720;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;53051:15:0;;:320;;-1:-1:-1;;;53051:320:0;;-1:-1:-1;;;;;53051:15:0;;;;:66;;:320;;53148:11;;53051:15;;53250:4;;53293;;53329:15;;53051:320;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;53002:397;52679:720;52636:786;52298:1141;52029:1410;51992:1460;40262:327:::1;40119:477:::0;:::o;53467:2203::-;53647:15;;53615:62;;53632:4;;-1:-1:-1;;;;;53647:15:0;53665:11;53615:8;:62::i;:::-;53726:15;;;53931:4;53726:250;;-1:-1:-1;;;53726:250:0;;-1:-1:-1;;;;;53726:15:0;;;;:31;;53766:9;;53726:250;;53799:4;;53819:11;;53726:15;;;;53931:4;;53950:15;;53726:250;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;53726:250:0;;;;;;;;-1:-1:-1;;53726:250:0;;;;;;;;;;;;:::i;:::-;;;53722:1939;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;54043:15:0;;;54268:4;54043:278;;-1:-1:-1;;;54043:278:0;;-1:-1:-1;;;;;54043:15:0;;;;:31;;54083:9;;54043:278;;54120:4;;54144:11;;54043:15;;;;54268:4;;54291:15;;54043:278;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;54043:278:0;;;;;;;;-1:-1:-1;;54043:278:0;;;;;;;;;;;;:::i;:::-;;;54039:1611;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;54398:15:0;;;54644:4;54398:307;;-1:-1:-1;;;54398:307:0;;-1:-1:-1;;;;;54398:15:0;;;;:32;;54439:9;;54398:307;;54480:4;;54508:11;;54398:15;;;;54644:4;;54671:15;;54398:307;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;54398:307:0;;;;;;;;-1:-1:-1;;54398:307:0;;;;;;;;;;;;:::i;:::-;;;54394:1239;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;54794:15:0;;;55058:4;54794:333;;-1:-1:-1;;;54794:333:0;;-1:-1:-1;;;;;54794:15:0;;;;:30;;54833:9;;54794:333;;54878:4;;54910:11;;54794:15;;;;55058:4;;55089:15;;54794:333;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;54794:333:0;;;;;;;;-1:-1:-1;;54794:333:0;;;;;;;;;;;;:::i;:::-;;;54790:822;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;55226:15:0;;;55511:4;55226:362;;-1:-1:-1;;;55226:362:0;;-1:-1:-1;;;;;55226:15:0;;;;:31;;55266:9;;55226:362;;55315:4;;55351:11;;55226:15;;;;55511:4;;55546:15;;55226:362;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;55176:436;54790:822;;;;;;54746:887;54394:1239;;;;;;54354:1296;51992:1460;40262:327:::1;40119:477:::0;:::o;57724:605::-;57827:15;57844:23;57869:12;57883:23;57908:12;57922:18;57942:12;57958:19;57969:7;57958:10;:19::i;:::-;57826:151;;;;;;;;;;;;;;58006:28;58026:7;58006;:15;58014:6;-1:-1:-1;;;;;58006:15:0;-1:-1:-1;;;;;58006:15:0;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;-1:-1:-1;;;;;57988:15:0;;;;;;:7;:15;;;;;;;;:46;;;;58063:7;:15;;;;:28;;58083:7;58063:19;:28::i;:::-;-1:-1:-1;;;;;58045:15:0;;;;;;;:7;:15;;;;;;:46;;;;58123:18;;;;;;;:39;;58146:15;58123:22;:39::i;:::-;-1:-1:-1;;;;;58102:18:0;;;;;;:7;:18;;;;;:60;58176:26;58191:10;58176:14;:26::i;:::-;58213:14;58222:4;58213:8;:14::i;:::-;58238:23;58250:4;58256;58238:11;:23::i;:::-;58294:9;-1:-1:-1;;;;;58277:44:0;58286:6;-1:-1:-1;;;;;58277:44:0;;58305:15;58277:44;;;;11609:25:1;;11597:2;11582:18;;11463:177;58277:44:0;;;;;;;;57815:514;;;;;;;57724:605;;;:::o;57091:625::-;57192:15;57209:23;57234:12;57248:23;57273:12;57287:18;57307:12;57323:19;57334:7;57323:10;:19::i;:::-;57191:151;;;;;;;;;;;;;;57371:28;57391:7;57371;:15;57379:6;-1:-1:-1;;;;;57371:15:0;-1:-1:-1;;;;;57371:15:0;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;-1:-1:-1;;;;;57353:15:0;;;;;;;:7;:15;;;;;;;;:46;;;;57431:18;;;;;:7;:18;;;;;:39;;57454:15;57431:22;:39::i;:::-;-1:-1:-1;;;;;57410:18:0;;;;;;:7;:18;;;;;;;;:60;;;;57502:7;:18;;;;:39;;57525:15;57502:22;:39::i;56542:541::-;56641:15;56658:23;56683:12;56697:23;56722:12;56736:18;56756:12;56772:19;56783:7;56772:10;:19::i;:::-;56640:151;;;;;;;;;;;;;;56820:28;56840:7;56820;:15;56828:6;-1:-1:-1;;;;;56820:15:0;-1:-1:-1;;;;;56820:15:0;;;;;;;;;;;;;:19;;:28;;;;:::i;58337:689::-;58440:15;58457:23;58482:12;58496:23;58521:12;58535:18;58555:12;58571:19;58582:7;58571:10;:19::i;:::-;58439:151;;;;;;;;;;;;;;58619:28;58639:7;58619;:15;58627:6;-1:-1:-1;;;;;58619:15:0;-1:-1:-1;;;;;58619:15:0;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;-1:-1:-1;;;;;58601:15:0;;;;;;:7;:15;;;;;;;;:46;;;;58676:7;:15;;;;:28;;58696:7;58676:19;:28::i;46868:134::-;46932:7;46963:31;46988:5;46963:20;46975:7;;46963;:11;;:20;;;;:::i;47010:142::-;47080:7;47107:37;47138:5;47107:26;47119:13;;47107:7;:11;;:26;;;;:::i;47164:130::-;47228:7;47255:31;47280:5;47255:20;47267:7;;47255;:11;;:20;;;;:::i;46019:420::-;46082:19;46105:10;:8;:10::i;:::-;46082:33;-1:-1:-1;46126:18:0;46147:27;:10;46082:33;46147:14;:27::i;:::-;46226:4;46210:22;;;;:7;:22;;;;;;46126:48;;-1:-1:-1;46210:38:0;;46126:48;46210:26;:38::i;:::-;46201:4;46185:22;;;;:7;:22;;;;;;;;:63;;;;46262:11;:26;;;;;;46259:107;;;46344:4;46328:22;;;;:7;:22;;;;;;:38;;46355:10;46328:26;:38::i;:::-;46319:4;46303:22;;;;:7;:22;;;;;:63;46259:107;46413:4;4240:10;46391:12;-1:-1:-1;;;;;46382:49:0;;46420:10;46382:49;;;;11609:25:1;;11597:2;11582:18;;11463:177;46451:401:0;46502:19;46524:10;:8;:10::i;:::-;46502:32;-1:-1:-1;46545:12:0;46560:21;:4;46502:32;46560:8;:21::i;:::-;46629:17;;-1:-1:-1;;;;;46629:17:0;46621:26;;;;:7;:26;;;;;;46545:36;;-1:-1:-1;46621:36:0;;46545;46621:30;:36::i;:::-;46600:17;;;-1:-1:-1;;;;;46600:17:0;;;46592:26;;;;:7;:26;;;;;;;;:65;;;;46683:17;;;;;46671:30;;:11;:30;;;;;;;46668:113;;;46753:17;;-1:-1:-1;;;;;46753:17:0;46745:26;;;;:7;:26;;;;;;:36;;46776:4;46745:30;:36::i;:::-;46724:17;;-1:-1:-1;;;;;46724:17:0;46716:26;;;;:7;:26;;;;;:65;46668:113;46820:17;;-1:-1:-1;;;;;46820:17:0;4240:10;46806:12;4160:98;43737:147;43815:7;;:17;;43827:4;43815:11;:17::i;:::-;43805:7;:27;43856:10;;:20;;43871:4;43856:14;:20::i;:::-;43843:10;:33;-1:-1:-1;;43737:147:0:o;14:173:1:-;82:20;;-1:-1:-1;;;;;131:31:1;;121:42;;111:70;;177:1;174;167:12;111:70;14:173;;;:::o;192:160::-;257:20;;313:13;;306:21;296:32;;286:60;;342:1;339;332:12;357:186;416:6;469:2;457:9;448:7;444:23;440:32;437:52;;;485:1;482;475:12;437:52;508:29;527:9;508:29;:::i;548:260::-;616:6;624;677:2;665:9;656:7;652:23;648:32;645:52;;;693:1;690;683:12;645:52;716:29;735:9;716:29;:::i;:::-;706:39;;764:38;798:2;787:9;783:18;764:38;:::i;:::-;754:48;;548:260;;;;;:::o;813:328::-;890:6;898;906;959:2;947:9;938:7;934:23;930:32;927:52;;;975:1;972;965:12;927:52;998:29;1017:9;998:29;:::i;:::-;988:39;;1046:38;1080:2;1069:9;1065:18;1046:38;:::i;:::-;1036:48;;1131:2;1120:9;1116:18;1103:32;1093:42;;813:328;;;;;:::o;1146:254::-;1214:6;1222;1275:2;1263:9;1254:7;1250:23;1246:32;1243:52;;;1291:1;1288;1281:12;1243:52;1314:29;1333:9;1314:29;:::i;:::-;1304:39;1390:2;1375:18;;;;1362:32;;-1:-1:-1;;;1146:254:1:o;1405:180::-;1461:6;1514:2;1502:9;1493:7;1489:23;1485:32;1482:52;;;1530:1;1527;1520:12;1482:52;1553:26;1569:9;1553:26;:::i;1590:180::-;1649:6;1702:2;1690:9;1681:7;1677:23;1673:32;1670:52;;;1718:1;1715;1708:12;1670:52;-1:-1:-1;1741:23:1;;1590:180;-1:-1:-1;1590:180:1:o;1775:248::-;1840:6;1848;1901:2;1889:9;1880:7;1876:23;1872:32;1869:52;;;1917:1;1914;1907:12;1869:52;1953:9;1940:23;1930:33;;1982:35;2013:2;2002:9;1998:18;1982:35;:::i;2028:306::-;2116:6;2124;2132;2185:2;2173:9;2164:7;2160:23;2156:32;2153:52;;;2201:1;2198;2191:12;2153:52;2230:9;2224:16;2214:26;;2280:2;2269:9;2265:18;2259:25;2249:35;;2324:2;2313:9;2309:18;2303:25;2293:35;;2028:306;;;;;:::o;2547:607::-;-1:-1:-1;;;;;2906:15:1;;;2888:34;;2953:2;2938:18;;2931:34;;;;2996:2;2981:18;;2974:34;;;;3039:2;3024:18;;3017:34;;;;3088:15;;;3082:3;3067:19;;3060:44;2868:3;3120:19;;3113:35;;;;2837:3;2822:19;;2547:607::o;3586:597::-;3698:4;3727:2;3756;3745:9;3738:21;3788:6;3782:13;3831:6;3826:2;3815:9;3811:18;3804:34;3856:1;3866:140;3880:6;3877:1;3874:13;3866:140;;;3975:14;;;3971:23;;3965:30;3941:17;;;3960:2;3937:26;3930:66;3895:10;;3866:140;;;4024:6;4021:1;4018:13;4015:91;;;4094:1;4089:2;4080:6;4069:9;4065:22;4061:31;4054:42;4015:91;-1:-1:-1;4167:2:1;4146:15;-1:-1:-1;;4142:29:1;4127:45;;;;4174:2;4123:54;;3586:597;-1:-1:-1;;;3586:597:1:o;6167:351::-;6369:2;6351:21;;;6408:2;6388:18;;;6381:30;6447:29;6442:2;6427:18;;6420:57;6509:2;6494:18;;6167:351::o;11115:343::-;11317:2;11299:21;;;11356:2;11336:18;;;11329:30;-1:-1:-1;;;11390:2:1;11375:18;;11368:49;11449:2;11434:18;;11115:343::o;11645:980::-;11907:4;11955:3;11944:9;11940:19;11986:6;11975:9;11968:25;12012:2;12050:6;12045:2;12034:9;12030:18;12023:34;12093:3;12088:2;12077:9;12073:18;12066:31;12117:6;12152;12146:13;12183:6;12175;12168:22;12221:3;12210:9;12206:19;12199:26;;12260:2;12252:6;12248:15;12234:29;;12281:1;12291:195;12305:6;12302:1;12299:13;12291:195;;;12370:13;;-1:-1:-1;;;;;12366:39:1;12354:52;;12461:15;;;;12426:12;;;;12402:1;12320:9;12291:195;;;-1:-1:-1;;;;;;;12542:32:1;;;;12537:2;12522:18;;12515:60;-1:-1:-1;;;12606:3:1;12591:19;12584:35;12503:3;11645:980;-1:-1:-1;;;11645:980:1:o;13143:128::-;13183:3;13214:1;13210:6;13207:1;13204:13;13201:39;;;13220:18;;:::i;:::-;-1:-1:-1;13256:9:1;;13143:128::o;13276:217::-;13316:1;13342;13332:132;;13386:10;13381:3;13377:20;13374:1;13367:31;13421:4;13418:1;13411:15;13449:4;13446:1;13439:15;13332:132;-1:-1:-1;13478:9:1;;13276:217::o;13498:168::-;13538:7;13604:1;13600;13596:6;13592:14;13589:1;13586:21;13581:1;13574:9;13567:17;13563:45;13560:71;;;13611:18;;:::i;:::-;-1:-1:-1;13651:9:1;;13498:168::o;13671:125::-;13711:4;13739:1;13736;13733:8;13730:34;;;13744:18;;:::i;:::-;-1:-1:-1;13781:9:1;;13671:125::o;13801:380::-;13880:1;13876:12;;;;13923;;;13944:61;;13998:4;13990:6;13986:17;13976:27;;13944:61;14051:2;14043:6;14040:14;14020:18;14017:38;14014:161;;;14097:10;14092:3;14088:20;14085:1;14078:31;14132:4;14129:1;14122:15;14160:4;14157:1;14150:15;14014:161;;13801:380;;;:::o;14186:135::-;14225:3;-1:-1:-1;;14246:17:1;;14243:43;;;14266:18;;:::i;:::-;-1:-1:-1;14313:1:1;14302:13;;14186:135::o;14326:127::-;14387:10;14382:3;14378:20;14375:1;14368:31;14418:4;14415:1;14408:15;14442:4;14439:1;14432:15;14458:127;14519:10;14514:3;14510:20;14507:1;14500:31;14550:4;14547:1;14540:15;14574:4;14571:1;14564:15;14590:127;14651:10;14646:3;14642:20;14639:1;14632:31;14682:4;14679:1;14672:15;14706:4;14703:1;14696:15
Swarm Source
ipfs://40a4b3410ee63ce07cd6a6a118546b82ca58b0d03fe37b5f8e8155c12f3e091d
[ 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.