Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
8,000,000,000,000,000 BABYFD
Holders
173
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Filtered by Token Holder
Paraswap v5: Augustus Swapper MainnetBalance
829,551.284679031 BABYFDValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
BabyFlokiDoge
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-12-07 */ // SPDX-License-Identifier: GPL-3.0-only pragma solidity ^0.8.4; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. uint256 size; // solhint-disable-next-line no-inline-assembly assembly { size := extcodesize(account) } return size > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, 'Address: insufficient balance'); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success, ) = recipient.call{ value: amount }(''); require( success, 'Address: unable to send value, recipient may have reverted' ); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain`call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, 'Address: low-level call failed'); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue( target, data, value, 'Address: low-level call with value failed' ); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require( address(this).balance >= value, 'Address: insufficient balance for call' ); require(isContract(target), 'Address: call to non-contract'); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.call{ value: value }(data); return _verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, 'Address: low-level static call failed'); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { require(isContract(target), 'Address: static call to non-contract'); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.staticcall(data); return _verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall( target, data, 'Address: low-level delegate call failed' ); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { require(isContract(target), 'Address: delegate call to non-contract'); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.delegatecall(data); return _verifyCallResult(success, returndata, errorMessage); } function _verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) private pure returns (bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly // solhint-disable-next-line no-inline-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } interface IERC20 { function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } /** * @dev Wrappers over Solidity's arithmetic operations with added overflow * checks. * * Arithmetic operations in Solidity wrap on overflow. This can easily result * in bugs, because programmers usually assume that an overflow raises an * error, which is the standard behavior in high level programming languages. * `SafeMath` restores this intuition by reverting the transaction when an * operation overflows. * * Using this library instead of the unchecked operations eliminates an entire * class of bugs, so it's recommended to use it always. */ library SafeMath { /** * @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) { uint256 c = a + b; require(c >= a, 'SafeMath: addition overflow'); return c; } /** * @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 sub(a, b, 'SafeMath: subtraction overflow'); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @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) { // 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 0; } uint256 c = a * b; require(c / a == b, 'SafeMath: multiplication overflow'); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts 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) internal pure returns (uint256) { return div(a, b, 'SafeMath: division by zero'); } /** * @dev Returns the integer division of two unsigned integers. Reverts 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) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts 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 mod(a, b, 'SafeMath: modulo by zero'); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message 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, string memory errorMessage ) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } abstract contract Context { function _msgSender() internal view virtual returns (address payable) { return payable(msg.sender); } function _msgData() internal view virtual returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } //NOTE: DEPERECATED IN THIS CONTEXT. We load the library straight from OpenZeppelin. /** * @dev Collection of functions related to the address type */ /* library Address { function isContract(address account) internal view returns (bool) { // According to EIP-1052, 0x0 is the value returned for not-yet created accounts // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned // for accounts without code, i.e. `keccak256('')` bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; // solhint-disable-next-line no-inline-assembly assembly { codehash := extcodehash(account) } return (codehash != accountHash && codehash != 0x0); } function sendValue(address payable recipient, uint256 amount) internal { require( address(this).balance >= amount, "Address: insufficient balance" ); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success, ) = recipient.call{value: amount}(""); require( success, "Address: unable to send value, recipient may have reverted" ); } function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return _functionCallWithValue(target, data, 0, errorMessage); } function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue( target, data, value, "Address: low-level call with value failed" ); } function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require( address(this).balance >= value, "Address: insufficient balance for call" ); return _functionCallWithValue(target, data, value, errorMessage); } function _functionCallWithValue( address target, bytes memory data, uint256 weiValue, string memory errorMessage ) private returns (bytes memory) { require(isContract(target), "Address: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.call{value: weiValue}(data); if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly // solhint-disable-next-line no-inline-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } */ /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; address private _multiSig; address private _previousOwner; uint256 private _lockTime; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require( _owner == _msgSender() || _multiSig == _msgSender(), 'Ownable: caller is not the owner' ); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), 'Ownable: new owner is the zero address'); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } function setMultisigOwnership(address newMultisig) public virtual onlyOwner { require( newMultisig != address(0), "Ownable: can't add the 0 address as a multisig component!" ); _multiSig = newMultisig; } function geUnlockTime() public view returns (uint256) { return _lockTime; } //Locks the contract for owner for the amount of time provided function lock(uint256 time) public virtual onlyOwner { _previousOwner = _owner; _owner = address(0); _lockTime = block.timestamp + time; emit OwnershipTransferred(_owner, address(0)); } //Unlocks the contract for owner when _lockTime is exceeds function unlock() public virtual { require( _previousOwner == msg.sender, "You don't have permission to unlock" ); require(block.timestamp > _lockTime, 'Contract is locked until 7 days'); emit OwnershipTransferred(_owner, _previousOwner); _owner = _previousOwner; } } interface IUniswapV2Factory { event PairCreated( address indexed token0, address indexed token1, address pair, uint256 ); 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(uint256) external view returns (address pair); function allPairsLength() external view returns (uint256); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint256 value); event Transfer(address indexed from, address indexed to, uint256 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 (uint256); function balanceOf(address owner) external view returns (uint256); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 value) external returns (bool); function transfer(address to, uint256 value) external returns (bool); function transferFrom( address from, address to, uint256 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 (uint256); function permit( address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external; event Mint(address indexed sender, uint256 amount0, uint256 amount1); event Burn( address indexed sender, uint256 amount0, uint256 amount1, address indexed to ); event Swap( address indexed sender, uint256 amount0In, uint256 amount1In, uint256 amount0Out, uint256 amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint256); 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 (uint256); function price1CumulativeLast() external view returns (uint256); function kLast() external view returns (uint256); function mint(address to) external returns (uint256 liquidity); function burn(address to) external returns (uint256 amount0, uint256 amount1); function swap( uint256 amount0Out, uint256 amount1Out, address to, bytes calldata data ) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns ( uint256 amountA, uint256 amountB, uint256 liquidity ); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); function removeLiquidity( address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns (uint256 amountA, uint256 amountB); function removeLiquidityETH( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external returns (uint256 amountToken, uint256 amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountA, uint256 amountB); function removeLiquidityETHWithPermit( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountToken, uint256 amountETH); function swapExactTokensForTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapTokensForExactTokens( uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapExactETHForTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable returns (uint256[] memory amounts); function swapTokensForExactETH( uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapExactTokensForETH( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapETHForExactTokens( uint256 amountOut, address[] calldata path, address to, uint256 deadline ) external payable returns (uint256[] memory amounts); function quote( uint256 amountA, uint256 reserveA, uint256 reserveB ) external pure returns (uint256 amountB); function getAmountOut( uint256 amountIn, uint256 reserveIn, uint256 reserveOut ) external pure returns (uint256 amountOut); function getAmountIn( uint256 amountOut, uint256 reserveIn, uint256 reserveOut ) external pure returns (uint256 amountIn); function getAmountsOut(uint256 amountIn, address[] calldata path) external view returns (uint256[] memory amounts); function getAmountsIn(uint256 amountOut, address[] calldata path) external view returns (uint256[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external returns (uint256 amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; } contract BabyFlokiDoge is Context, IERC20, Ownable { using SafeMath for uint256; using Address for address; 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; //from reflections address[] private _excluded; mapping(address => bool) private _isExcludedFromTxLimit; //Adding this for the dxsale/unicrypt presale, the router needs to be exempt from max tx amount limit. uint256 private constant MAX = ~uint256(0); uint256 private _tTotal = 8000000 * 10**9 * 10**9; //8 quadrillion uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 private _tFeeTotal; string private _name = 'BabyFlokiDoge'; string private _symbol = 'BABYFD'; uint8 private _decimals = 9; uint256 public _taxFee = 2; uint256 private _previousTaxFee = _taxFee; bool private antiSniping_failsafe = true; uint256 public _liquidityFee = 2; uint256 private _previousLiquidityFee = _liquidityFee; uint256 public _marketingFee = 2; uint256 private _previousMarketingFee = _marketingFee; address private _marketingWalletAddress; //Affixed and created dynamically by the smart contract on construction time. uint256 private launchedAt; //Stores the block.height on which the token received its first pancake liquidity (first transfer towards the pancake pair) bool private manualLaunch = false; IUniswapV2Router02 public immutable uniswapV2Router; address public immutable BabyUniswapV2Pair; bool inSwapAndLiquify; bool public swapAndLiquifyEnabled = true; uint256 public _maxTxAmount = 40000 * 10**9 * 10**9; //1% (0.005x) of Total circulating supply, after burn uint256 private numTokensSellToAddToLiquidity = 4000 * 10**9 * 10**9; //1 order of magnitude smaller than the max tx amount (so, div by 10, sort of) event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap); event SwapAndLiquifyEnabledUpdated(bool enabled); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiqudity ); event AntiSnipingFailsafeSetTo(bool toggle); modifier lockTheSwap() { inSwapAndLiquify = true; _; inSwapAndLiquify = false; } constructor(address param_addr, address opt_multiSig) { _rOwned[_msgSender()] = _rTotal; IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02( 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D ); //PancakeSwap's V2 Router. //NOTE: You HAVE to use Pancake's V2 Router, otherwise taxOnTransfer don't work. //IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); //Pancakeswap testnet //Create a new uniswap pair for this new token and set the local pair pointer BabyUniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); //Set the local router pointer uniswapV2Router = _uniswapV2Router; //Exclude owner and this contract from fee _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; _marketingWalletAddress = param_addr; setMultisigOwnership(opt_multiSig); emit Transfer(address(0), _msgSender(), _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 launch() internal { launchedAt = block.number; } function launched() internal view returns (bool) { return launchedAt != 0; } function manualLaunchOverride(bool toggle) public onlyOwner { manualLaunch = toggle; } function setAntiSnipeFailsafe(bool failsafe) public { antiSniping_failsafe = failsafe; emit AntiSnipingFailsafeSetTo(failsafe); } 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 deliver(uint256 tAmount) public { address sender = _msgSender(); require( !_isExcluded[sender], 'Excluded addresses cannot call this function' ); //Deprecated (uint256 rAmount, , , , , ) = _getValues(tAmount); //WORKSPACE ZZ //New way to do it, avoid a 2deep4u stack. /*(, uint256 tFee, uint256 tLiquidity, uint256 tMarketing) = _getTVector(tAmount, false, false); (uint256 rAmount, , ) = _getRVector(tAmount, tFee, tLiquidity, tMarketing);*/ _rOwned[sender] = _rOwned[sender].sub(rAmount); _rTotal = _rTotal.sub(rAmount); _tFeeTotal = _tFeeTotal.add(tAmount); } function reflectionFromToken(uint256 tAmount, bool deductTransferFee) public view returns (uint256) { require(tAmount <= _tTotal, 'Amount must be less than supply'); if (!deductTransferFee) { //Deprecated (uint256 rAmount, , , , , ) = _getValues(tAmount); //WORKPLACE ZX //New way to do it, avoid a 2deep4u stack. /*(, uint256 tFee, uint256 tLiquidity, uint256 tMarketing) = _getTVector(tAmount, false, false); (uint256 rAmount, , ) = _getRVector(tAmount, tFee, tLiquidity, tMarketing);*/ return rAmount; } else { //Deprecated (, uint256 rTransferAmount, , , , ) = _getValues(tAmount); //WORKSPACE YY //New way to do it, avoid a 2deep4u stack. /*(, uint256 tFee, uint256 tLiquidity, uint256 tMarketing) = _getTVector(tAmount, false, false); (, uint256 rTransferAmount,) = _getRVector(tAmount, tFee, tLiquidity, tMarketing);*/ 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 already excluded'); if (_rOwned[account] > 0) { _tOwned[account] = tokenFromReflection(_rOwned[account]); } _isExcluded[account] = true; _excluded.push(account); } function includeInReward(address account) external onlyOwner { require(_isExcluded[account], 'Account is already included'); for (uint256 i = 0; i < _excluded.length; i++) { if (_excluded[i] == account) { _excluded[i] = _excluded[_excluded.length - 1]; _tOwned[account] = 0; _isExcluded[account] = false; _excluded.pop(); break; } } } function _transferBothExcluded( address sender, address recipient, uint256 tAmount ) private { //Deprecated ( uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity ) = _getValues(tAmount); //WORKSPACE XX //New way to do it, avoid a 2deep4u stack. /*(uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity, uint256 tMarketing) = _getTVector(tAmount, false, false); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRVector(tAmount, tFee, tLiquidity, tMarketing); */ _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function setIsExcludedFromTXLimit(address account, bool isExcluded) public onlyOwner { _isExcludedFromTxLimit[account] = isExcluded; } function isExcludedFromTXLimit(address account) public view returns (bool) { return _isExcludedFromTxLimit[account]; } function excludeFromFee(address account) public onlyOwner { _isExcludedFromFee[account] = true; } function includeInFee(address account) public onlyOwner { _isExcludedFromFee[account] = false; } function setTaxFeePercent(uint256 taxFee) external onlyOwner { _taxFee = taxFee; } function setMarketingFeePercent(uint256 marketingFee) external onlyOwner { _marketingFee = marketingFee; } function setLiquidityFeePercent(uint256 liquidityFee) external onlyOwner { _liquidityFee = liquidityFee; } function setMaxTxPercent(uint256 maxTxPercent) external onlyOwner { _maxTxAmount = _tTotal.mul(maxTxPercent).div(100 * 10**2); } function setSwapAndLiquifyEnabled(bool toggle) public onlyOwner { swapAndLiquifyEnabled = toggle; emit SwapAndLiquifyEnabledUpdated(toggle); } //to recieve ETH from uniswapV2Router when swaping receive() external payable {} function _reflectFee(uint256 rFee, uint256 tFee) private { _rTotal = _rTotal.sub(rFee); _tFeeTotal = _tFeeTotal.add(tFee); } struct tVector { uint256 tTransferAmount; uint256 tFee; uint256 tLiquidity; uint256 tMarketing; } struct rVector { uint256 rAmount; uint256 rTransferAmount; uint256 rFee; } //Had to use structs as the stack gets too deep if we leave it like it was. Remember, only around ~16 local variables are ever allowed in the stack, params and return types included. //The { }s are there for scoping, and killing unneeded vars. function _getValues(uint256 tAmount) private view returns ( uint256, uint256, uint256, uint256, uint256, uint256 ) { tVector memory my_tVector; rVector memory my_rVector; { (uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getTValues( tAmount ); my_tVector.tTransferAmount = tTransferAmount; my_tVector.tFee = tFee; my_tVector.tLiquidity = tLiquidity; } { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues( tAmount, my_tVector.tFee, my_tVector.tLiquidity, _getRate() ); my_rVector.rAmount = rAmount; my_rVector.rTransferAmount = rTransferAmount; my_rVector.rFee = rFee; } return ( my_rVector.rAmount, my_rVector.rTransferAmount, my_rVector.rFee, my_tVector.tTransferAmount, my_tVector.tFee, my_tVector.tLiquidity ); } /* //WORKSPACE function _getTVector(uint256 tAmount, bool isSale, bool isSniper) private view returns (uint256, uint256, uint256, uint256) { (uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity, uint256 tMarketing) = _getTValues(tAmount, isSale, isSniper); return (tTransferAmount, tFee, tLiquidity, tMarketing); } function _getRVector(uint256 tAmount, uint256 tFee, uint256 tLiquidity, uint256 tMarketing) private view returns (uint256, uint256, uint256) { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tLiquidity, tMarketing, _getRate()); return (rAmount, rTransferAmount, rFee); } */ function _getTValues(uint256 tAmount) private view returns ( uint256, uint256, uint256 ) { uint256 tFee = calculateTaxFee(tAmount); uint256 tLiquidity = calculateLiquidityFee(tAmount); uint256 tTransferAmount = tAmount.sub(tFee); tTransferAmount = tTransferAmount.sub(tLiquidity); return (tTransferAmount, tFee, tLiquidity); } function _getRValues( uint256 tAmount, uint256 tFee, uint256 tLiquidity, uint256 currentRate ) private pure returns ( uint256, uint256, uint256 ) { uint256 rAmount = tAmount.mul(currentRate); uint256 rTransferAmount; uint256 rFee; { rFee = tFee.mul(currentRate); uint256 rLiquidity = tLiquidity.mul(currentRate); rTransferAmount = rAmount.sub(rFee); rTransferAmount = rTransferAmount.sub(rLiquidity); } return (rAmount, rTransferAmount, rFee); } function _getRate() private view returns (uint256) { (uint256 rSupply, uint256 tSupply) = _getCurrentSupply(); return rSupply.div(tSupply); } function _getCurrentSupply() private view returns (uint256, uint256) { uint256 rSupply = _rTotal; uint256 tSupply = _tTotal; for (uint256 i = 0; i < _excluded.length; i++) { if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal); rSupply = rSupply.sub(_rOwned[_excluded[i]]); tSupply = tSupply.sub(_tOwned[_excluded[i]]); } if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal); return (rSupply, tSupply); } function _takeLiquidity(uint256 tLiquidity) private { uint256 currentRate = _getRate(); uint256 rLiquidity = tLiquidity.mul(currentRate); _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity); if (_isExcluded[address(this)]) _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity); } function calculateTaxFee(uint256 _amount) private view returns (uint256) { uint256 this_taxFee = _taxFee; return _amount.mul(this_taxFee).div(100); } function calculateLiquidityFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_liquidityFee.add(_marketingFee)).div(100); } function setMarketingAddr(address account) external onlyOwner { _marketingWalletAddress = account; } function getMarketingAddr() public view returns (address) { return _marketingWalletAddress; } function removeAllFee() private { if (_taxFee == 0 && _liquidityFee == 0) return; _previousTaxFee = _taxFee; _previousMarketingFee = _marketingFee; _previousLiquidityFee = _liquidityFee; _taxFee = 0; _marketingFee = 0; _liquidityFee = 0; } function restoreAllFee() private { _taxFee = _previousTaxFee; _marketingFee = _previousMarketingFee; _liquidityFee = _previousLiquidityFee; } function isExcludedFromFee(address account) public view returns (bool) { return _isExcludedFromFee[account]; } function _approve( address owner, address spender, uint256 amount ) private { require(owner != address(0), 'ERC20: approve from the zero address'); require(spender != address(0), 'ERC20: approve to the zero address'); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } //MARKER: This is our bread and butter. function _transfer( address from, address to, uint256 amount ) private { require(from != address(0), 'ERC20: transfer from the zero address'); require(to != address(0), 'ERC20: transfer to the zero address'); require(amount > 0, 'Transfer amount must be greater than zero'); if ((!launched() && to == BabyUniswapV2Pair) || manualLaunch) { require( balanceOf(from) > 0, 'Are you trying to launch without actually having tokens? WTF?' ); launch(); } if ((from != owner() && to != owner()) || !(_isExcludedFromTxLimit[from])) { require( amount <= _maxTxAmount, 'BabyFlokiDoge: 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)); //MARKER: The contract is just putting everything to liquidity once it has it. Gotta intercept it somehow if (contractTokenBalance >= _maxTxAmount) { contractTokenBalance = _maxTxAmount; } // Should we add liquidity or not? Are we over the minimum amount? bool overMinTokenBalance = (contractTokenBalance >= numTokensSellToAddToLiquidity); if ( overMinTokenBalance && !inSwapAndLiquify && from != BabyUniswapV2Pair && 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 we don't deduct any if (_isExcludedFromFee[from] || _isExcludedFromFee[to]) { takeFee = false; } bool isSniper = false; if (antiSniping_failsafe && launchedAt + 3 >= block.number) { //Looks like we have a sniper here, boys. isSniper = true; } bool purchaseOrSale = false; if (to == BabyUniswapV2Pair) { //It's a sell, boys! purchaseOrSale = true; } //transfer amount, it will take tax, marketing, liquidity fee _tokenTransfer(from, to, amount, takeFee); } function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap { uint256 marketingBalance = contractTokenBalance.mul(_marketingFee).div( _marketingFee.add(_liquidityFee) ); uint256 liquidityBalance = contractTokenBalance.sub(marketingBalance); // split the liquidity balance into halves uint256 half = liquidityBalance.div(2); uint256 otherHalf = liquidityBalance.sub(half); uint256 tokensToSwapForETH = half.add(marketingBalance); // 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(tokensToSwapForETH); // <- 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); uint256 marketingETHBalance = newBalance.mul(marketingBalance).div( tokensToSwapForETH ); uint256 liquidityETHBalance = newBalance.sub(marketingETHBalance); // add liquidity to uniswap addLiquidity(otherHalf, liquidityETHBalance); // send ETH to marketing wallet sendETHToMarketing(marketingETHBalance); emit SwapAndLiquify(half, newBalance, otherHalf); } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(uniswapV2Router), tokenAmount); // add the liquidity uniswapV2Router.addLiquidityETH{ value: ethAmount }( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable owner(), block.timestamp ); } function sendETHToMarketing(uint256 amount) private { _marketingWalletAddress.call{ value: amount }(''); } //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); } if (!takeFee) restoreAllFee(); } function _transferStandard( address sender, address recipient, uint256 tAmount ) private { //Deprecated ( uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity ) = _getValues(tAmount); //WORKPLACE Z //New way to do it, avoid a 2deep4u stack. /*(uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity, uint256 tMarketing) = _getTVector(tAmount, purchaseOrSale, isSniper); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRVector(tAmount, tFee, tLiquidity, tMarketing);*/ _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferToExcluded( address sender, address recipient, uint256 tAmount ) private { //Deprecated ( uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity ) = _getValues(tAmount); //WORKSPACE Y //New way to do it, avoid a 2deep4u stack. /*(uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity, uint256 tMarketing) = _getTVector(tAmount, false, false); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRVector(tAmount, tFee, tLiquidity, tMarketing);*/ _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferFromExcluded( address sender, address recipient, uint256 tAmount ) private { //Deprecated ( uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity ) = _getValues(tAmount); //WORKSPACE X //New way to do it, avoid a 2deep4u stack. /*(uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity, uint256 tMarketing) = _getTVector(tAmount, false, false); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRVector(tAmount, tFee, tLiquidity, tMarketing);*/ _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function emergencyWithdraw() external onlyOwner { payable(owner()).send(address(this).balance); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"param_addr","type":"address"},{"internalType":"address","name":"opt_multiSig","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"toggle","type":"bool"}],"name":"AntiSnipingFailsafeSetTo","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"BabyUniswapV2Pair","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":"_marketingFee","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":"_taxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"emergencyWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"geUnlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMarketingAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromTXLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"toggle","type":"bool"}],"name":"manualLaunchOverride","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"failsafe","type":"bool"}],"name":"setAntiSnipeFailsafe","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"setIsExcludedFromTXLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"liquidityFee","type":"uint256"}],"name":"setLiquidityFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"setMarketingAddr","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketingFee","type":"uint256"}],"name":"setMarketingFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxPercent","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMultisig","type":"address"}],"name":"setMultisigOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"toggle","type":"bool"}],"name":"setSwapAndLiquifyEnabled","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":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c06040526a069e10de76676d08000000600b81905562000023906000196200068e565b62000031906000196200062b565b600c5560408051808201909152600d8082526c42616279466c6f6b69446f676560981b60209092019182526200006a91600e916200050b565b506040805180820190915260068082526510905096519160d21b60209092019182526200009a91600f916200050b565b506010805460ff1990811660091790915560026011819055601281905560138054909216600117909155601481905560158190556016819055601755601a805462ff00ff191662010000179055690878678326eac9000000601b5568d8d726b7177a800000601c553480156200010f57600080fd5b506040516200376f3803806200376f8339810160408190526200013291620005f3565b600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600c543360009081526004602081815260409283902093909355815163c45a015560e01b81529151737a250d5630b4cf539739df2c5dacb4c659f2488d93849363c45a0155938181019391829003018186803b158015620001d357600080fd5b505afa158015620001e8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200020e9190620005ce565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200025757600080fd5b505afa1580156200026c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002929190620005ce565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b158015620002db57600080fd5b505af1158015620002f0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003169190620005ce565b6001600160601b0319606091821b811660a0529082901b166080526001600760006200034a6000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055308152600790935291208054909216600117909155601880549185166001600160a01b0319909216919091179055620003b182620003f5565b600b5460405190815233906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050620006b1565b6000546001600160a01b03163314806200041957506001546001600160a01b031633145b6200046b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6001600160a01b038116620004e95760405162461bcd60e51b815260206004820152603960248201527f4f776e61626c653a2063616e277420616464207468652030206164647265737360448201527f2061732061206d756c746973696720636f6d706f6e656e742100000000000000606482015260840162000462565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b828054620005199062000651565b90600052602060002090601f0160209004810192826200053d576000855562000588565b82601f106200055857805160ff191683800117855562000588565b8280016001018555821562000588579182015b82811115620005885782518255916020019190600101906200056b565b50620005969291506200059a565b5090565b5b808211156200059657600081556001016200059b565b80516001600160a01b0381168114620005c957600080fd5b919050565b600060208284031215620005e157600080fd5b620005ec82620005b1565b9392505050565b600080604083850312156200060757600080fd5b6200061283620005b1565b91506200062260208401620005b1565b90509250929050565b6000828210156200064c57634e487b7160e01b600052601160045260246000fd5b500390565b600181811c908216806200066657607f821691505b602082108114156200068857634e487b7160e01b600052602260045260246000fd5b50919050565b600082620006ac57634e487b7160e01b600052601260045260246000fd5b500690565b60805160601c60a05160601c61305a62000715600039600081816102a901528181611aa601528181611c800152611d570152600081816103c60152818161256a015281816126320152818161266e015281816126e8015261270f015261305a6000f3fe60806040526004361061028b5760003560e01c80636bc87c3a1161015a578063a7c1d590116100c1578063d543dbeb1161007a578063d543dbeb146107f9578063db2e21bc14610819578063dd4670641461082e578063dd62ed3e1461084e578063ea2f0b3714610894578063f2fde38b146108b457600080fd5b8063a7c1d59014610746578063a9059cbb14610766578063b6c5232414610786578063b8edab001461079b578063bd9c7f10146107b9578063c49b9a80146107d957600080fd5b80638da5cb5b116101135780638da5cb5b1461069e5780638ee88c53146106bc57806395d89b41146106dc5780639e1ac9f6146106f1578063a457c2d714610711578063a69df4b51461073157600080fd5b80636bc87c3a146105e457806370a08231146105fa578063715018a61461061a5780637d1db4a51461062f578063861e769f1461064557806388f820201461066557600080fd5b80632ff3a70c116101fe578063437823ec116101b7578063437823ec1461050b5780634549b0391461052b578063457c194c1461054b5780634a74bb021461056b57806352390c021461058b5780635342acb4146105ab57600080fd5b80632ff3a70c14610453578063313ce567146104735780633685d4191461049557806339509351146104b55780633b124fe7146104d55780633bd5d173146104eb57600080fd5b806313114a9d1161025057806313114a9d146103955780631694505e146103b457806318160ddd146103e857806322976e0d146103fd57806323b872dd146104135780632d8381191461043357600080fd5b8062ac3c8a14610297578063061c82d0146102e857806306fdde031461030a578063095ea7b31461032c5780631112efb51461035c57600080fd5b3661029257005b600080fd5b3480156102a357600080fd5b506102cb7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156102f457600080fd5b50610308610303366004612d32565b6108d4565b005b34801561031657600080fd5b5061031f610921565b6040516102df9190612d9c565b34801561033857600080fd5b5061034c610347366004612ceb565b6109b3565b60405190151581526020016102df565b34801561036857600080fd5b5061034c610377366004612c02565b6001600160a01b03166000908152600a602052604090205460ff1690565b3480156103a157600080fd5b50600d545b6040519081526020016102df565b3480156103c057600080fd5b506102cb7f000000000000000000000000000000000000000000000000000000000000000081565b3480156103f457600080fd5b50600b546103a6565b34801561040957600080fd5b506103a660165481565b34801561041f57600080fd5b5061034c61042e366004612c75565b6109ca565b34801561043f57600080fd5b506103a661044e366004612d32565b610a33565b34801561045f57600080fd5b5061030861046e366004612cb6565b610ab7565b34801561047f57600080fd5b5060105460405160ff90911681526020016102df565b3480156104a157600080fd5b506103086104b0366004612c02565b610b21565b3480156104c157600080fd5b5061034c6104d0366004612ceb565b610ced565b3480156104e157600080fd5b506103a660115481565b3480156104f757600080fd5b50610308610506366004612d32565b610d23565b34801561051757600080fd5b50610308610526366004612c02565b610e0d565b34801561053757600080fd5b506103a6610546366004612d4b565b610e70565b34801561055757600080fd5b50610308610566366004612d32565b610efd565b34801561057757600080fd5b50601a5461034c9062010000900460ff1681565b34801561059757600080fd5b506103086105a6366004612c02565b610f41565b3480156105b757600080fd5b5061034c6105c6366004612c02565b6001600160a01b031660009081526007602052604090205460ff1690565b3480156105f057600080fd5b506103a660145481565b34801561060657600080fd5b506103a6610615366004612c02565b6110a9565b34801561062657600080fd5b50610308611108565b34801561063b57600080fd5b506103a6601b5481565b34801561065157600080fd5b50610308610660366004612c02565b61117f565b34801561067157600080fd5b5061034c610680366004612c02565b6001600160a01b031660009081526008602052604090205460ff1690565b3480156106aa57600080fd5b506000546001600160a01b03166102cb565b3480156106c857600080fd5b506103086106d7366004612d32565b61125c565b3480156106e857600080fd5b5061031f6112a0565b3480156106fd57600080fd5b5061030861070c366004612d17565b6112af565b34801561071d57600080fd5b5061034c61072c366004612ceb565b6112f7565b34801561073d57600080fd5b50610308611346565b34801561075257600080fd5b50610308610761366004612c02565b61144c565b34801561077257600080fd5b5061034c610781366004612ceb565b6114ad565b34801561079257600080fd5b506003546103a6565b3480156107a757600080fd5b506018546001600160a01b03166102cb565b3480156107c557600080fd5b506103086107d4366004612d17565b6114ba565b3480156107e557600080fd5b506103086107f4366004612d17565b61150c565b34801561080557600080fd5b50610308610814366004612d32565b611596565b34801561082557600080fd5b506103086115fc565b34801561083a57600080fd5b50610308610849366004612d32565b611666565b34801561085a57600080fd5b506103a6610869366004612c3c565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b3480156108a057600080fd5b506103086108af366004612c02565b611700565b3480156108c057600080fd5b506103086108cf366004612c02565b611760565b6000546001600160a01b03163314806108f757506001546001600160a01b031633145b61091c5760405162461bcd60e51b815260040161091390612df1565b60405180910390fd5b601155565b6060600e805461093090612f07565b80601f016020809104026020016040519081016040528092919081815260200182805461095c90612f07565b80156109a95780601f1061097e576101008083540402835291602001916109a9565b820191906000526020600020905b81548152906001019060200180831161098c57829003601f168201915b5050505050905090565b60006109c033848461184d565b5060015b92915050565b60006109d7848484611971565b610a298433610a2485604051806060016040528060288152602001612fb8602891396001600160a01b038a1660009081526006602090815260408083203384529091529020549190611da9565b61184d565b5060019392505050565b6000600c54821115610a9a5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610913565b6000610aa4611de3565b9050610ab08382611e06565b9392505050565b6000546001600160a01b0316331480610ada57506001546001600160a01b031633145b610af65760405162461bcd60e51b815260040161091390612df1565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331480610b4457506001546001600160a01b031633145b610b605760405162461bcd60e51b815260040161091390612df1565b6001600160a01b03811660009081526008602052604090205460ff16610bc85760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c726561647920696e636c7564656400000000006044820152606401610913565b60005b600954811015610ce957816001600160a01b031660098281548110610bf257610bf2612f89565b6000918252602090912001546001600160a01b03161415610cd75760098054610c1d90600190612ef0565b81548110610c2d57610c2d612f89565b600091825260209091200154600980546001600160a01b039092169183908110610c5957610c59612f89565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600582526040808220829055600890925220805460ff191690556009805480610cb157610cb1612f73565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610ce181612f42565b915050610bcb565b5050565b3360008181526006602090815260408083206001600160a01b038716845290915281205490916109c0918590610a249086611e48565b3360008181526008602052604090205460ff1615610d985760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b6064820152608401610913565b6000610da383611ea7565b505050506001600160a01b038416600090815260046020526040902054919250610dcf91905082611f73565b6001600160a01b038316600090815260046020526040902055600c54610df59082611f73565b600c55600d54610e059084611e48565b600d55505050565b6000546001600160a01b0316331480610e3057506001546001600160a01b031633145b610e4c5760405162461bcd60e51b815260040161091390612df1565b6001600160a01b03166000908152600760205260409020805460ff19166001179055565b6000600b54831115610ec45760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610913565b81610ee3576000610ed484611ea7565b509395506109c4945050505050565b6000610eee84611ea7565b509295506109c4945050505050565b6000546001600160a01b0316331480610f2057506001546001600160a01b031633145b610f3c5760405162461bcd60e51b815260040161091390612df1565b601655565b6000546001600160a01b0316331480610f6457506001546001600160a01b031633145b610f805760405162461bcd60e51b815260040161091390612df1565b6001600160a01b03811660009081526008602052604090205460ff1615610fe95760405162461bcd60e51b815260206004820152601860248201527f4163636f756e7420616c7265616479206578636c7564656400000000000000006044820152606401610913565b6001600160a01b03811660009081526004602052604090205415611043576001600160a01b03811660009081526004602052604090205461102990610a33565b6001600160a01b0382166000908152600560205260409020555b6001600160a01b03166000818152600860205260408120805460ff191660019081179091556009805491820181559091527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af0180546001600160a01b0319169091179055565b6001600160a01b03811660009081526008602052604081205460ff16156110e657506001600160a01b031660009081526005602052604090205490565b6001600160a01b0382166000908152600460205260409020546109c490610a33565b6000546001600160a01b031633148061112b57506001546001600160a01b031633145b6111475760405162461bcd60e51b815260040161091390612df1565b600080546040516001600160a01b0390911690600080516020612fe0833981519152908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314806111a257506001546001600160a01b031633145b6111be5760405162461bcd60e51b815260040161091390612df1565b6001600160a01b03811661123a5760405162461bcd60e51b815260206004820152603960248201527f4f776e61626c653a2063616e277420616464207468652030206164647265737360448201527f2061732061206d756c746973696720636f6d706f6e656e7421000000000000006064820152608401610913565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633148061127f57506001546001600160a01b031633145b61129b5760405162461bcd60e51b815260040161091390612df1565b601455565b6060600f805461093090612f07565b6013805460ff19168215159081179091556040519081527f59fb13f7f8e0e42ab14ddf13ce1aebeb1474c6c26fe816e079e3fe60d51e1e4b906020015b60405180910390a150565b60006109c03384610a2485604051806060016040528060258152602001613000602591393360009081526006602090815260408083206001600160a01b038d1684529091529020549190611da9565b6002546001600160a01b031633146113ac5760405162461bcd60e51b815260206004820152602360248201527f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6044820152626f636b60e81b6064820152608401610913565b60035442116113fd5760405162461bcd60e51b815260206004820152601f60248201527f436f6e7472616374206973206c6f636b656420756e74696c20372064617973006044820152606401610913565b600254600080546040516001600160a01b039384169390911691600080516020612fe083398151915291a3600254600080546001600160a01b0319166001600160a01b03909216919091179055565b6000546001600160a01b031633148061146f57506001546001600160a01b031633145b61148b5760405162461bcd60e51b815260040161091390612df1565b601880546001600160a01b0319166001600160a01b0392909216919091179055565b60006109c0338484611971565b6000546001600160a01b03163314806114dd57506001546001600160a01b031633145b6114f95760405162461bcd60e51b815260040161091390612df1565b601a805460ff1916911515919091179055565b6000546001600160a01b031633148061152f57506001546001600160a01b031633145b61154b5760405162461bcd60e51b815260040161091390612df1565b601a8054821515620100000262ff0000199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159906112ec90831515815260200190565b6000546001600160a01b03163314806115b957506001546001600160a01b031633145b6115d55760405162461bcd60e51b815260040161091390612df1565b6115f66127106115f083600b54611fb590919063ffffffff16565b90611e06565b601b5550565b6000546001600160a01b031633148061161f57506001546001600160a01b031633145b61163b5760405162461bcd60e51b815260040161091390612df1565b600080546040516001600160a01b03909116914780156108fc02929091818181858888f15050505050565b6000546001600160a01b031633148061168957506001546001600160a01b031633145b6116a55760405162461bcd60e51b815260040161091390612df1565b60008054600280546001600160a01b03199081166001600160a01b038416179091551690556116d48142612e97565b600355600080546040516001600160a01b0390911690600080516020612fe0833981519152908390a350565b6000546001600160a01b031633148061172357506001546001600160a01b031633145b61173f5760405162461bcd60e51b815260040161091390612df1565b6001600160a01b03166000908152600760205260409020805460ff19169055565b6000546001600160a01b031633148061178357506001546001600160a01b031633145b61179f5760405162461bcd60e51b815260040161091390612df1565b6001600160a01b0381166118045760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610913565b600080546040516001600160a01b0380851693921691600080516020612fe083398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166118af5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610913565b6001600160a01b0382166119105760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610913565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166119d55760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610913565b6001600160a01b038216611a375760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610913565b60008111611a995760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610913565b601954158015611ada57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316145b80611ae75750601a5460ff165b15611b73576000611af7846110a9565b11611b6a5760405162461bcd60e51b815260206004820152603d60248201527f41726520796f7520747279696e6720746f206c61756e636820776974686f757460448201527f2061637475616c6c7920686176696e6720746f6b656e733f205754463f0000006064820152608401610913565b611b7343601955565b6000546001600160a01b03848116911614801590611b9f57506000546001600160a01b03838116911614155b80611bc357506001600160a01b0383166000908152600a602052604090205460ff16155b15611c4057601b54811115611c405760405162461bcd60e51b815260206004820152603760248201527f42616279466c6f6b69446f67653a205472616e7366657220616d6f756e74206560448201527f78636565647320746865206d61785478416d6f756e742e0000000000000000006064820152608401610913565b6000611c4b306110a9565b9050601b548110611c5b5750601b545b601c5481108015908190611c775750601a54610100900460ff16155b8015611cb557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031614155b8015611cc95750601a5462010000900460ff165b15611cdc57601c549150611cdc82612034565b6001600160a01b03851660009081526007602052604090205460019060ff1680611d1e57506001600160a01b03851660009081526007602052604090205460ff165b15611d27575060005b60135460009060ff168015611d4a5750436019546003611d479190612e97565b10155b15611d53575060015b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316876001600160a01b03161415611d93575060015b611d9f88888886612145565b5050505050505050565b60008184841115611dcd5760405162461bcd60e51b81526004016109139190612d9c565b506000611dda8486612ef0565b95945050505050565b6000806000611df06122c8565b9092509050611dff8282611e06565b9250505090565b6000610ab083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061244a565b600080611e558385612e97565b905083811015610ab05760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610913565b600080600080600080611edb6040518060800160405280600081526020016000815260200160008152602001600081525090565b611eff60405180606001604052806000815260200160008152602001600081525090565b6000806000611f0d8c612478565b918752602087018190526040870182905260009450849350839250611f3c918e9190611f37611de3565b6124bc565b828752602080880183905260409788018290528851908901519890970151929f919e509c50949a5094985093965091945050505050565b6000610ab083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611da9565b600082611fc4575060006109c4565b6000611fd08385612ed1565b905082611fdd8583612eaf565b14610ab05760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610913565b601a805461ff0019166101001790556014546016546000916120679161205991611e48565b6016546115f0908590611fb5565b905060006120758383611f73565b90506000612084826002611e06565b905060006120928383611f73565b905060006120a08386611e48565b9050476120ac82612513565b60006120b84783611f73565b905060006120ca846115f0848b611fb5565b905060006120d88383611f73565b90506120e486826126e2565b6120ed826127f7565b60408051888152602081018590529081018790527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15050601a805461ff00191690555050505050505050565b8061215257612152612844565b6001600160a01b03841660009081526008602052604090205460ff16801561219357506001600160a01b03831660009081526008602052604090205460ff16155b156121a8576121a384848461287d565b6122a6565b6001600160a01b03841660009081526008602052604090205460ff161580156121e957506001600160a01b03831660009081526008602052604090205460ff165b156121f9576121a38484846129a3565b6001600160a01b03841660009081526008602052604090205460ff1615801561223b57506001600160a01b03831660009081526008602052604090205460ff16155b1561224b576121a3848484612a4c565b6001600160a01b03841660009081526008602052604090205460ff16801561228b57506001600160a01b03831660009081526008602052604090205460ff165b1561229b576121a3848484612a90565b6122a6848484612a4c565b806122c2576122c2601254601155601754601655601554601455565b50505050565b600c54600b546000918291825b60095481101561241a578260046000600984815481106122f7576122f7612f89565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180612362575081600560006009848154811061233b5761233b612f89565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561237857600c54600b54945094505050509091565b6123be600460006009848154811061239257612392612f89565b60009182526020808320909101546001600160a01b031683528201929092526040019020548490611f73565b925061240660056000600984815481106123da576123da612f89565b60009182526020808320909101546001600160a01b031683528201929092526040019020548390611f73565b91508061241281612f42565b9150506122d5565b50600b54600c5461242a91611e06565b82101561244157600c54600b549350935050509091565b90939092509050565b6000818361246b5760405162461bcd60e51b81526004016109139190612d9c565b506000611dda8486612eaf565b60008060008061248785612b03565b9050600061249486612b18565b905060006124a28784611f73565b90506124ae8183611f73565b979296509094509092505050565b60008080806124cb8886611fb5565b90506000806124da8988611fb5565b905060006124e88989611fb5565b90506124f48483611f73565b92506125008382611f73565b939b939a50909850919650505050505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061254857612548612f89565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156125c157600080fd5b505afa1580156125d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125f99190612c1f565b8160018151811061260c5761260c612f89565b60200260200101906001600160a01b031690816001600160a01b031681525050612657307f00000000000000000000000000000000000000000000000000000000000000008461184d565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac947906126ac908590600090869030904290600401612e26565b600060405180830381600087803b1580156126c657600080fd5b505af11580156126da573d6000803e3d6000fd5b505050505050565b61270d307f00000000000000000000000000000000000000000000000000000000000000008461184d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f305d7198230856000806127546000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b1580156127b757600080fd5b505af11580156127cb573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906127f09190612d6e565b5050505050565b6018546040516001600160a01b03909116908290600081818185875af1925050503d80600081146122c2576040519150601f19603f3d011682016040523d82523d6000602084013e6122c2565b6011541580156128545750601454155b1561285b57565b6011805460125560168054601755601480546015556000928390559082905555565b60008060008060008061288f87611ea7565b6001600160a01b038f16600090815260056020526040902054959b509399509197509550935091506128c19088611f73565b6001600160a01b038a166000908152600560209081526040808320939093556004905220546128f09087611f73565b6001600160a01b03808b1660009081526004602052604080822093909355908a168152205461291f9086611e48565b6001600160a01b03891660009081526004602052604090205561294181612b40565b61294b8483612bc9565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161299091815260200190565b60405180910390a3505050505050505050565b6000806000806000806129b587611ea7565b6001600160a01b038f16600090815260046020526040902054959b509399509197509550935091506129e79087611f73565b6001600160a01b03808b16600090815260046020908152604080832094909455918b16815260059091522054612a1d9084611e48565b6001600160a01b03891660009081526005602090815260408083209390935560049052205461291f9086611e48565b600080600080600080612a5e87611ea7565b6001600160a01b038f16600090815260046020526040902054959b509399509197509550935091506128f09087611f73565b600080600080600080612aa287611ea7565b6001600160a01b038f16600090815260056020526040902054959b50939950919750955093509150612ad49088611f73565b6001600160a01b038a166000908152600560209081526040808320939093556004905220546129e79087611f73565b601154600090610ab060646115f08584611fb5565b60006109c460646115f0612b39601654601454611e4890919063ffffffff16565b8590611fb5565b6000612b4a611de3565b90506000612b588383611fb5565b30600090815260046020526040902054909150612b759082611e48565b3060009081526004602090815260408083209390935560089052205460ff1615612bc45730600090815260056020526040902054612bb39084611e48565b306000908152600560205260409020555b505050565b600c54612bd69083611f73565b600c55600d54612be69082611e48565b600d555050565b80358015158114612bfd57600080fd5b919050565b600060208284031215612c1457600080fd5b8135610ab081612f9f565b600060208284031215612c3157600080fd5b8151610ab081612f9f565b60008060408385031215612c4f57600080fd5b8235612c5a81612f9f565b91506020830135612c6a81612f9f565b809150509250929050565b600080600060608486031215612c8a57600080fd5b8335612c9581612f9f565b92506020840135612ca581612f9f565b929592945050506040919091013590565b60008060408385031215612cc957600080fd5b8235612cd481612f9f565b9150612ce260208401612bed565b90509250929050565b60008060408385031215612cfe57600080fd5b8235612d0981612f9f565b946020939093013593505050565b600060208284031215612d2957600080fd5b610ab082612bed565b600060208284031215612d4457600080fd5b5035919050565b60008060408385031215612d5e57600080fd5b82359150612ce260208401612bed565b600080600060608486031215612d8357600080fd5b8351925060208401519150604084015190509250925092565b600060208083528351808285015260005b81811015612dc957858101830151858201604001528201612dad565b81811115612ddb576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612e765784516001600160a01b031683529383019391830191600101612e51565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115612eaa57612eaa612f5d565b500190565b600082612ecc57634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615612eeb57612eeb612f5d565b500290565b600082821015612f0257612f02612f5d565b500390565b600181811c90821680612f1b57607f821691505b60208210811415612f3c57634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415612f5657612f56612f5d565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b0381168114612fb457600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63658be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e045524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220d23307017cef5f2a89c4adfe742fd93b89cfe6fdf31b324bac4dc0db6dec59fd64736f6c634300080700330000000000000000000000000d2382ae7f0cfc5da4c32da85d4e6ecddb57da7d000000000000000000000000bfc462d4075c8aee8508d63dffc6dd0226ff8427
Deployed Bytecode
0x60806040526004361061028b5760003560e01c80636bc87c3a1161015a578063a7c1d590116100c1578063d543dbeb1161007a578063d543dbeb146107f9578063db2e21bc14610819578063dd4670641461082e578063dd62ed3e1461084e578063ea2f0b3714610894578063f2fde38b146108b457600080fd5b8063a7c1d59014610746578063a9059cbb14610766578063b6c5232414610786578063b8edab001461079b578063bd9c7f10146107b9578063c49b9a80146107d957600080fd5b80638da5cb5b116101135780638da5cb5b1461069e5780638ee88c53146106bc57806395d89b41146106dc5780639e1ac9f6146106f1578063a457c2d714610711578063a69df4b51461073157600080fd5b80636bc87c3a146105e457806370a08231146105fa578063715018a61461061a5780637d1db4a51461062f578063861e769f1461064557806388f820201461066557600080fd5b80632ff3a70c116101fe578063437823ec116101b7578063437823ec1461050b5780634549b0391461052b578063457c194c1461054b5780634a74bb021461056b57806352390c021461058b5780635342acb4146105ab57600080fd5b80632ff3a70c14610453578063313ce567146104735780633685d4191461049557806339509351146104b55780633b124fe7146104d55780633bd5d173146104eb57600080fd5b806313114a9d1161025057806313114a9d146103955780631694505e146103b457806318160ddd146103e857806322976e0d146103fd57806323b872dd146104135780632d8381191461043357600080fd5b8062ac3c8a14610297578063061c82d0146102e857806306fdde031461030a578063095ea7b31461032c5780631112efb51461035c57600080fd5b3661029257005b600080fd5b3480156102a357600080fd5b506102cb7f000000000000000000000000212059b8f2af87ff94557fa7fb5e32249fc9bf8a81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156102f457600080fd5b50610308610303366004612d32565b6108d4565b005b34801561031657600080fd5b5061031f610921565b6040516102df9190612d9c565b34801561033857600080fd5b5061034c610347366004612ceb565b6109b3565b60405190151581526020016102df565b34801561036857600080fd5b5061034c610377366004612c02565b6001600160a01b03166000908152600a602052604090205460ff1690565b3480156103a157600080fd5b50600d545b6040519081526020016102df565b3480156103c057600080fd5b506102cb7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b3480156103f457600080fd5b50600b546103a6565b34801561040957600080fd5b506103a660165481565b34801561041f57600080fd5b5061034c61042e366004612c75565b6109ca565b34801561043f57600080fd5b506103a661044e366004612d32565b610a33565b34801561045f57600080fd5b5061030861046e366004612cb6565b610ab7565b34801561047f57600080fd5b5060105460405160ff90911681526020016102df565b3480156104a157600080fd5b506103086104b0366004612c02565b610b21565b3480156104c157600080fd5b5061034c6104d0366004612ceb565b610ced565b3480156104e157600080fd5b506103a660115481565b3480156104f757600080fd5b50610308610506366004612d32565b610d23565b34801561051757600080fd5b50610308610526366004612c02565b610e0d565b34801561053757600080fd5b506103a6610546366004612d4b565b610e70565b34801561055757600080fd5b50610308610566366004612d32565b610efd565b34801561057757600080fd5b50601a5461034c9062010000900460ff1681565b34801561059757600080fd5b506103086105a6366004612c02565b610f41565b3480156105b757600080fd5b5061034c6105c6366004612c02565b6001600160a01b031660009081526007602052604090205460ff1690565b3480156105f057600080fd5b506103a660145481565b34801561060657600080fd5b506103a6610615366004612c02565b6110a9565b34801561062657600080fd5b50610308611108565b34801561063b57600080fd5b506103a6601b5481565b34801561065157600080fd5b50610308610660366004612c02565b61117f565b34801561067157600080fd5b5061034c610680366004612c02565b6001600160a01b031660009081526008602052604090205460ff1690565b3480156106aa57600080fd5b506000546001600160a01b03166102cb565b3480156106c857600080fd5b506103086106d7366004612d32565b61125c565b3480156106e857600080fd5b5061031f6112a0565b3480156106fd57600080fd5b5061030861070c366004612d17565b6112af565b34801561071d57600080fd5b5061034c61072c366004612ceb565b6112f7565b34801561073d57600080fd5b50610308611346565b34801561075257600080fd5b50610308610761366004612c02565b61144c565b34801561077257600080fd5b5061034c610781366004612ceb565b6114ad565b34801561079257600080fd5b506003546103a6565b3480156107a757600080fd5b506018546001600160a01b03166102cb565b3480156107c557600080fd5b506103086107d4366004612d17565b6114ba565b3480156107e557600080fd5b506103086107f4366004612d17565b61150c565b34801561080557600080fd5b50610308610814366004612d32565b611596565b34801561082557600080fd5b506103086115fc565b34801561083a57600080fd5b50610308610849366004612d32565b611666565b34801561085a57600080fd5b506103a6610869366004612c3c565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b3480156108a057600080fd5b506103086108af366004612c02565b611700565b3480156108c057600080fd5b506103086108cf366004612c02565b611760565b6000546001600160a01b03163314806108f757506001546001600160a01b031633145b61091c5760405162461bcd60e51b815260040161091390612df1565b60405180910390fd5b601155565b6060600e805461093090612f07565b80601f016020809104026020016040519081016040528092919081815260200182805461095c90612f07565b80156109a95780601f1061097e576101008083540402835291602001916109a9565b820191906000526020600020905b81548152906001019060200180831161098c57829003601f168201915b5050505050905090565b60006109c033848461184d565b5060015b92915050565b60006109d7848484611971565b610a298433610a2485604051806060016040528060288152602001612fb8602891396001600160a01b038a1660009081526006602090815260408083203384529091529020549190611da9565b61184d565b5060019392505050565b6000600c54821115610a9a5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610913565b6000610aa4611de3565b9050610ab08382611e06565b9392505050565b6000546001600160a01b0316331480610ada57506001546001600160a01b031633145b610af65760405162461bcd60e51b815260040161091390612df1565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331480610b4457506001546001600160a01b031633145b610b605760405162461bcd60e51b815260040161091390612df1565b6001600160a01b03811660009081526008602052604090205460ff16610bc85760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c726561647920696e636c7564656400000000006044820152606401610913565b60005b600954811015610ce957816001600160a01b031660098281548110610bf257610bf2612f89565b6000918252602090912001546001600160a01b03161415610cd75760098054610c1d90600190612ef0565b81548110610c2d57610c2d612f89565b600091825260209091200154600980546001600160a01b039092169183908110610c5957610c59612f89565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600582526040808220829055600890925220805460ff191690556009805480610cb157610cb1612f73565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610ce181612f42565b915050610bcb565b5050565b3360008181526006602090815260408083206001600160a01b038716845290915281205490916109c0918590610a249086611e48565b3360008181526008602052604090205460ff1615610d985760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b6064820152608401610913565b6000610da383611ea7565b505050506001600160a01b038416600090815260046020526040902054919250610dcf91905082611f73565b6001600160a01b038316600090815260046020526040902055600c54610df59082611f73565b600c55600d54610e059084611e48565b600d55505050565b6000546001600160a01b0316331480610e3057506001546001600160a01b031633145b610e4c5760405162461bcd60e51b815260040161091390612df1565b6001600160a01b03166000908152600760205260409020805460ff19166001179055565b6000600b54831115610ec45760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610913565b81610ee3576000610ed484611ea7565b509395506109c4945050505050565b6000610eee84611ea7565b509295506109c4945050505050565b6000546001600160a01b0316331480610f2057506001546001600160a01b031633145b610f3c5760405162461bcd60e51b815260040161091390612df1565b601655565b6000546001600160a01b0316331480610f6457506001546001600160a01b031633145b610f805760405162461bcd60e51b815260040161091390612df1565b6001600160a01b03811660009081526008602052604090205460ff1615610fe95760405162461bcd60e51b815260206004820152601860248201527f4163636f756e7420616c7265616479206578636c7564656400000000000000006044820152606401610913565b6001600160a01b03811660009081526004602052604090205415611043576001600160a01b03811660009081526004602052604090205461102990610a33565b6001600160a01b0382166000908152600560205260409020555b6001600160a01b03166000818152600860205260408120805460ff191660019081179091556009805491820181559091527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af0180546001600160a01b0319169091179055565b6001600160a01b03811660009081526008602052604081205460ff16156110e657506001600160a01b031660009081526005602052604090205490565b6001600160a01b0382166000908152600460205260409020546109c490610a33565b6000546001600160a01b031633148061112b57506001546001600160a01b031633145b6111475760405162461bcd60e51b815260040161091390612df1565b600080546040516001600160a01b0390911690600080516020612fe0833981519152908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314806111a257506001546001600160a01b031633145b6111be5760405162461bcd60e51b815260040161091390612df1565b6001600160a01b03811661123a5760405162461bcd60e51b815260206004820152603960248201527f4f776e61626c653a2063616e277420616464207468652030206164647265737360448201527f2061732061206d756c746973696720636f6d706f6e656e7421000000000000006064820152608401610913565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633148061127f57506001546001600160a01b031633145b61129b5760405162461bcd60e51b815260040161091390612df1565b601455565b6060600f805461093090612f07565b6013805460ff19168215159081179091556040519081527f59fb13f7f8e0e42ab14ddf13ce1aebeb1474c6c26fe816e079e3fe60d51e1e4b906020015b60405180910390a150565b60006109c03384610a2485604051806060016040528060258152602001613000602591393360009081526006602090815260408083206001600160a01b038d1684529091529020549190611da9565b6002546001600160a01b031633146113ac5760405162461bcd60e51b815260206004820152602360248201527f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6044820152626f636b60e81b6064820152608401610913565b60035442116113fd5760405162461bcd60e51b815260206004820152601f60248201527f436f6e7472616374206973206c6f636b656420756e74696c20372064617973006044820152606401610913565b600254600080546040516001600160a01b039384169390911691600080516020612fe083398151915291a3600254600080546001600160a01b0319166001600160a01b03909216919091179055565b6000546001600160a01b031633148061146f57506001546001600160a01b031633145b61148b5760405162461bcd60e51b815260040161091390612df1565b601880546001600160a01b0319166001600160a01b0392909216919091179055565b60006109c0338484611971565b6000546001600160a01b03163314806114dd57506001546001600160a01b031633145b6114f95760405162461bcd60e51b815260040161091390612df1565b601a805460ff1916911515919091179055565b6000546001600160a01b031633148061152f57506001546001600160a01b031633145b61154b5760405162461bcd60e51b815260040161091390612df1565b601a8054821515620100000262ff0000199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159906112ec90831515815260200190565b6000546001600160a01b03163314806115b957506001546001600160a01b031633145b6115d55760405162461bcd60e51b815260040161091390612df1565b6115f66127106115f083600b54611fb590919063ffffffff16565b90611e06565b601b5550565b6000546001600160a01b031633148061161f57506001546001600160a01b031633145b61163b5760405162461bcd60e51b815260040161091390612df1565b600080546040516001600160a01b03909116914780156108fc02929091818181858888f15050505050565b6000546001600160a01b031633148061168957506001546001600160a01b031633145b6116a55760405162461bcd60e51b815260040161091390612df1565b60008054600280546001600160a01b03199081166001600160a01b038416179091551690556116d48142612e97565b600355600080546040516001600160a01b0390911690600080516020612fe0833981519152908390a350565b6000546001600160a01b031633148061172357506001546001600160a01b031633145b61173f5760405162461bcd60e51b815260040161091390612df1565b6001600160a01b03166000908152600760205260409020805460ff19169055565b6000546001600160a01b031633148061178357506001546001600160a01b031633145b61179f5760405162461bcd60e51b815260040161091390612df1565b6001600160a01b0381166118045760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610913565b600080546040516001600160a01b0380851693921691600080516020612fe083398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166118af5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610913565b6001600160a01b0382166119105760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610913565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166119d55760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610913565b6001600160a01b038216611a375760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610913565b60008111611a995760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610913565b601954158015611ada57507f000000000000000000000000212059b8f2af87ff94557fa7fb5e32249fc9bf8a6001600160a01b0316826001600160a01b0316145b80611ae75750601a5460ff165b15611b73576000611af7846110a9565b11611b6a5760405162461bcd60e51b815260206004820152603d60248201527f41726520796f7520747279696e6720746f206c61756e636820776974686f757460448201527f2061637475616c6c7920686176696e6720746f6b656e733f205754463f0000006064820152608401610913565b611b7343601955565b6000546001600160a01b03848116911614801590611b9f57506000546001600160a01b03838116911614155b80611bc357506001600160a01b0383166000908152600a602052604090205460ff16155b15611c4057601b54811115611c405760405162461bcd60e51b815260206004820152603760248201527f42616279466c6f6b69446f67653a205472616e7366657220616d6f756e74206560448201527f78636565647320746865206d61785478416d6f756e742e0000000000000000006064820152608401610913565b6000611c4b306110a9565b9050601b548110611c5b5750601b545b601c5481108015908190611c775750601a54610100900460ff16155b8015611cb557507f000000000000000000000000212059b8f2af87ff94557fa7fb5e32249fc9bf8a6001600160a01b0316856001600160a01b031614155b8015611cc95750601a5462010000900460ff165b15611cdc57601c549150611cdc82612034565b6001600160a01b03851660009081526007602052604090205460019060ff1680611d1e57506001600160a01b03851660009081526007602052604090205460ff165b15611d27575060005b60135460009060ff168015611d4a5750436019546003611d479190612e97565b10155b15611d53575060015b60007f000000000000000000000000212059b8f2af87ff94557fa7fb5e32249fc9bf8a6001600160a01b0316876001600160a01b03161415611d93575060015b611d9f88888886612145565b5050505050505050565b60008184841115611dcd5760405162461bcd60e51b81526004016109139190612d9c565b506000611dda8486612ef0565b95945050505050565b6000806000611df06122c8565b9092509050611dff8282611e06565b9250505090565b6000610ab083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061244a565b600080611e558385612e97565b905083811015610ab05760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610913565b600080600080600080611edb6040518060800160405280600081526020016000815260200160008152602001600081525090565b611eff60405180606001604052806000815260200160008152602001600081525090565b6000806000611f0d8c612478565b918752602087018190526040870182905260009450849350839250611f3c918e9190611f37611de3565b6124bc565b828752602080880183905260409788018290528851908901519890970151929f919e509c50949a5094985093965091945050505050565b6000610ab083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611da9565b600082611fc4575060006109c4565b6000611fd08385612ed1565b905082611fdd8583612eaf565b14610ab05760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610913565b601a805461ff0019166101001790556014546016546000916120679161205991611e48565b6016546115f0908590611fb5565b905060006120758383611f73565b90506000612084826002611e06565b905060006120928383611f73565b905060006120a08386611e48565b9050476120ac82612513565b60006120b84783611f73565b905060006120ca846115f0848b611fb5565b905060006120d88383611f73565b90506120e486826126e2565b6120ed826127f7565b60408051888152602081018590529081018790527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15050601a805461ff00191690555050505050505050565b8061215257612152612844565b6001600160a01b03841660009081526008602052604090205460ff16801561219357506001600160a01b03831660009081526008602052604090205460ff16155b156121a8576121a384848461287d565b6122a6565b6001600160a01b03841660009081526008602052604090205460ff161580156121e957506001600160a01b03831660009081526008602052604090205460ff165b156121f9576121a38484846129a3565b6001600160a01b03841660009081526008602052604090205460ff1615801561223b57506001600160a01b03831660009081526008602052604090205460ff16155b1561224b576121a3848484612a4c565b6001600160a01b03841660009081526008602052604090205460ff16801561228b57506001600160a01b03831660009081526008602052604090205460ff165b1561229b576121a3848484612a90565b6122a6848484612a4c565b806122c2576122c2601254601155601754601655601554601455565b50505050565b600c54600b546000918291825b60095481101561241a578260046000600984815481106122f7576122f7612f89565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180612362575081600560006009848154811061233b5761233b612f89565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561237857600c54600b54945094505050509091565b6123be600460006009848154811061239257612392612f89565b60009182526020808320909101546001600160a01b031683528201929092526040019020548490611f73565b925061240660056000600984815481106123da576123da612f89565b60009182526020808320909101546001600160a01b031683528201929092526040019020548390611f73565b91508061241281612f42565b9150506122d5565b50600b54600c5461242a91611e06565b82101561244157600c54600b549350935050509091565b90939092509050565b6000818361246b5760405162461bcd60e51b81526004016109139190612d9c565b506000611dda8486612eaf565b60008060008061248785612b03565b9050600061249486612b18565b905060006124a28784611f73565b90506124ae8183611f73565b979296509094509092505050565b60008080806124cb8886611fb5565b90506000806124da8988611fb5565b905060006124e88989611fb5565b90506124f48483611f73565b92506125008382611f73565b939b939a50909850919650505050505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061254857612548612f89565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156125c157600080fd5b505afa1580156125d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125f99190612c1f565b8160018151811061260c5761260c612f89565b60200260200101906001600160a01b031690816001600160a01b031681525050612657307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8461184d565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac947906126ac908590600090869030904290600401612e26565b600060405180830381600087803b1580156126c657600080fd5b505af11580156126da573d6000803e3d6000fd5b505050505050565b61270d307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8461184d565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663f305d7198230856000806127546000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b1580156127b757600080fd5b505af11580156127cb573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906127f09190612d6e565b5050505050565b6018546040516001600160a01b03909116908290600081818185875af1925050503d80600081146122c2576040519150601f19603f3d011682016040523d82523d6000602084013e6122c2565b6011541580156128545750601454155b1561285b57565b6011805460125560168054601755601480546015556000928390559082905555565b60008060008060008061288f87611ea7565b6001600160a01b038f16600090815260056020526040902054959b509399509197509550935091506128c19088611f73565b6001600160a01b038a166000908152600560209081526040808320939093556004905220546128f09087611f73565b6001600160a01b03808b1660009081526004602052604080822093909355908a168152205461291f9086611e48565b6001600160a01b03891660009081526004602052604090205561294181612b40565b61294b8483612bc9565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161299091815260200190565b60405180910390a3505050505050505050565b6000806000806000806129b587611ea7565b6001600160a01b038f16600090815260046020526040902054959b509399509197509550935091506129e79087611f73565b6001600160a01b03808b16600090815260046020908152604080832094909455918b16815260059091522054612a1d9084611e48565b6001600160a01b03891660009081526005602090815260408083209390935560049052205461291f9086611e48565b600080600080600080612a5e87611ea7565b6001600160a01b038f16600090815260046020526040902054959b509399509197509550935091506128f09087611f73565b600080600080600080612aa287611ea7565b6001600160a01b038f16600090815260056020526040902054959b50939950919750955093509150612ad49088611f73565b6001600160a01b038a166000908152600560209081526040808320939093556004905220546129e79087611f73565b601154600090610ab060646115f08584611fb5565b60006109c460646115f0612b39601654601454611e4890919063ffffffff16565b8590611fb5565b6000612b4a611de3565b90506000612b588383611fb5565b30600090815260046020526040902054909150612b759082611e48565b3060009081526004602090815260408083209390935560089052205460ff1615612bc45730600090815260056020526040902054612bb39084611e48565b306000908152600560205260409020555b505050565b600c54612bd69083611f73565b600c55600d54612be69082611e48565b600d555050565b80358015158114612bfd57600080fd5b919050565b600060208284031215612c1457600080fd5b8135610ab081612f9f565b600060208284031215612c3157600080fd5b8151610ab081612f9f565b60008060408385031215612c4f57600080fd5b8235612c5a81612f9f565b91506020830135612c6a81612f9f565b809150509250929050565b600080600060608486031215612c8a57600080fd5b8335612c9581612f9f565b92506020840135612ca581612f9f565b929592945050506040919091013590565b60008060408385031215612cc957600080fd5b8235612cd481612f9f565b9150612ce260208401612bed565b90509250929050565b60008060408385031215612cfe57600080fd5b8235612d0981612f9f565b946020939093013593505050565b600060208284031215612d2957600080fd5b610ab082612bed565b600060208284031215612d4457600080fd5b5035919050565b60008060408385031215612d5e57600080fd5b82359150612ce260208401612bed565b600080600060608486031215612d8357600080fd5b8351925060208401519150604084015190509250925092565b600060208083528351808285015260005b81811015612dc957858101830151858201604001528201612dad565b81811115612ddb576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612e765784516001600160a01b031683529383019391830191600101612e51565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115612eaa57612eaa612f5d565b500190565b600082612ecc57634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615612eeb57612eeb612f5d565b500290565b600082821015612f0257612f02612f5d565b500390565b600181811c90821680612f1b57607f821691505b60208210811415612f3c57634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415612f5657612f56612f5d565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b0381168114612fb457600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63658be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e045524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220d23307017cef5f2a89c4adfe742fd93b89cfe6fdf31b324bac4dc0db6dec59fd64736f6c63430008070033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000000d2382ae7f0cfc5da4c32da85d4e6ecddb57da7d000000000000000000000000bfc462d4075c8aee8508d63dffc6dd0226ff8427
-----Decoded View---------------
Arg [0] : param_addr (address): 0x0D2382ae7f0Cfc5DA4c32dA85d4E6ecdDb57da7D
Arg [1] : opt_multiSig (address): 0xbfc462D4075c8AeE8508D63dfFC6dd0226fF8427
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000000d2382ae7f0cfc5da4c32da85d4e6ecddb57da7d
Arg [1] : 000000000000000000000000bfc462d4075c8aee8508d63dffc6dd0226ff8427
Deployed Bytecode Sourcemap
31007:25610:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32631:42;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3489:32:1;;;3471:51;;3459:2;3444:18;32631:42:0;;;;;;;;41254:90;;;;;;;;;;-1:-1:-1;41254:90:0;;;;;:::i;:::-;;:::i;:::-;;34450:77;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;35748:169::-;;;;;;;;;;-1:-1:-1;35748:169:0;;;;;:::i;:::-;;:::i;:::-;;;4310:14:1;;4303:22;4285:41;;4273:2;4258:18;35748:169:0;4145:187:1;40901:126:0;;;;;;;;;;-1:-1:-1;40901:126:0;;;;;:::i;:::-;-1:-1:-1;;;;;40990:31:0;40970:4;40990:31;;;:22;:31;;;;;;;;;40901:126;37021:81;;;;;;;;;;-1:-1:-1;37086:10:0;;37021:81;;;12811:25:1;;;12799:2;12784:18;37021:81:0;12665:177:1;32575:51:0;;;;;;;;;;;;;;;34703:89;;;;;;;;;;-1:-1:-1;34779:7:0;;34703:89;;32159:32;;;;;;;;;;;;;;;;35923:374;;;;;;;;;;-1:-1:-1;35923:374:0;;;;;:::i;:::-;;:::i;38763:239::-;;;;;;;;;;-1:-1:-1;38763:239:0;;;;;:::i;:::-;;:::i;40740:155::-;;;;;;;;;;-1:-1:-1;40740:155:0;;;;;:::i;:::-;;:::i;34620:77::-;;;;;;;;;;-1:-1:-1;34682:9:0;;34620:77;;34682:9;;;;14298:36:1;;14286:2;14271:18;34620:77:0;14156:184:1;39315:411:0;;;;;;;;;;-1:-1:-1;39315:411:0;;;;;:::i;:::-;;:::i;36303:254::-;;;;;;;;;;-1:-1:-1;36303:254:0;;;;;:::i;:::-;;:::i;31938:26::-;;;;;;;;;;;;;;;;37108:649;;;;;;;;;;-1:-1:-1;37108:649:0;;;;;:::i;:::-;;:::i;41033:105::-;;;;;;;;;;-1:-1:-1;41033:105:0;;;;;:::i;:::-;;:::i;37763:994::-;;;;;;;;;;-1:-1:-1;37763:994:0;;;;;:::i;:::-;;:::i;41350:114::-;;;;;;;;;;-1:-1:-1;41350:114:0;;;;;:::i;:::-;;:::i;32706:40::-;;;;;;;;;;-1:-1:-1;32706:40:0;;;;;;;;;;;39008:301;;;;;;;;;;-1:-1:-1;39008:301:0;;;;;:::i;:::-;;:::i;47351:118::-;;;;;;;;;;-1:-1:-1;47351:118:0;;;;;:::i;:::-;-1:-1:-1;;;;;47436:27:0;47416:4;47436:27;;;:18;:27;;;;;;;;;47351:118;32062:32;;;;;;;;;;;;;;;;35207:188;;;;;;;;;;-1:-1:-1;35207:188:0;;;;;:::i;:::-;;:::i;21121:138::-;;;;;;;;;;;;;:::i;32753:51::-;;;;;;;;;;;;;;;;21640:235;;;;;;;;;;-1:-1:-1;21640:235:0;;;;;:::i;:::-;;:::i;36901:114::-;;;;;;;;;;-1:-1:-1;36901:114:0;;;;;:::i;:::-;-1:-1:-1;;;;;36989:20:0;36969:4;36989:20;;;:11;:20;;;;;;;;;36901:114;20469:73;;;;;;;;;;-1:-1:-1;20507:7:0;20530:6;-1:-1:-1;;;;;20530:6:0;20469:73;;41470:114;;;;;;;;;;-1:-1:-1;41470:114:0;;;;;:::i;:::-;;:::i;34533:81::-;;;;;;;;;;;;;:::i;35059:142::-;;;;;;;;;;-1:-1:-1;35059:142:0;;;;;:::i;:::-;;:::i;36563:332::-;;;;;;;;;;-1:-1:-1;36563:332:0;;;;;:::i;:::-;;:::i;22312:307::-;;;;;;;;;;;;;:::i;46678:108::-;;;;;;;;;;-1:-1:-1;46678:108:0;;;;;:::i;:::-;;:::i;35401:175::-;;;;;;;;;;-1:-1:-1;35401:175:0;;;;;:::i;:::-;;:::i;21881:83::-;;;;;;;;;;-1:-1:-1;21949:9:0;;21881:83;;46792:101;;;;;;;;;;-1:-1:-1;46864:23:0;;-1:-1:-1;;;;;46864:23:0;46792:101;;34959:94;;;;;;;;;;-1:-1:-1;34959:94:0;;;;;:::i;:::-;;:::i;41732:155::-;;;;;;;;;;-1:-1:-1;41732:155:0;;;;;:::i;:::-;;:::i;41590:136::-;;;;;;;;;;-1:-1:-1;41590:136:0;;;;;:::i;:::-;;:::i;56509:105::-;;;;;;;;;;;;;:::i;22036:208::-;;;;;;;;;;-1:-1:-1;22036:208:0;;;;;:::i;:::-;;:::i;35582:160::-;;;;;;;;;;-1:-1:-1;35582:160:0;;;;;:::i;:::-;-1:-1:-1;;;;;35709:18:0;;;35683:7;35709:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;35582:160;41144:104;;;;;;;;;;-1:-1:-1;41144:104:0;;;;;:::i;:::-;;:::i;21404:230::-;;;;;;;;;;-1:-1:-1;21404:230:0;;;;;:::i;:::-;;:::i;41254:90::-;20671:6;;-1:-1:-1;;;;;20671:6:0;15544:10;20671:22;;:51;;-1:-1:-1;20697:9:0;;-1:-1:-1;;;;;20697:9:0;15544:10;20697:25;20671:51;20655:117;;;;-1:-1:-1;;;20655:117:0;;;;;;;:::i;:::-;;;;;;;;;41322:7:::1;:16:::0;41254:90::o;34450:77::-;34487:13;34516:5;34509:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34450:77;:::o;35748:169::-;35838:4;35854:39;15544:10;35877:7;35886:6;35854:8;:39::i;:::-;-1:-1:-1;35907:4:0;35748:169;;;;;:::o;35923:374::-;36041:4;36054:36;36064:6;36072:9;36083:6;36054:9;:36::i;:::-;36097:176;36114:6;15544:10;36150:116;36198:6;36150:116;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;36150:19:0;;;;;;:11;:19;;;;;;;;15544:10;36150:33;;;;;;;;;;:37;:116::i;:::-;36097:8;:176::i;:::-;-1:-1:-1;36287:4:0;35923:374;;;;;:::o;38763:239::-;38830:7;38865;;38854;:18;;38846:73;;;;-1:-1:-1;;;38846:73:0;;6563:2:1;38846:73:0;;;6545:21:1;6602:2;6582:18;;;6575:30;6641:34;6621:18;;;6614:62;-1:-1:-1;;;6692:18:1;;;6685:40;6742:19;;38846:73:0;6361:406:1;38846:73:0;38926:19;38948:10;:8;:10::i;:::-;38926:32;-1:-1:-1;38972:24:0;:7;38926:32;38972:11;:24::i;:::-;38965:31;38763:239;-1:-1:-1;;;38763:239:0:o;40740:155::-;20671:6;;-1:-1:-1;;;;;20671:6:0;15544:10;20671:22;;:51;;-1:-1:-1;20697:9:0;;-1:-1:-1;;;;;20697:9:0;15544:10;20697:25;20671:51;20655:117;;;;-1:-1:-1;;;20655:117:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;40845:31:0;;;::::1;;::::0;;;:22:::1;:31;::::0;;;;:44;;-1:-1:-1;;40845:44:0::1;::::0;::::1;;::::0;;;::::1;::::0;;40740:155::o;39315:411::-;20671:6;;-1:-1:-1;;;;;20671:6:0;15544:10;20671:22;;:51;;-1:-1:-1;20697:9:0;;-1:-1:-1;;;;;20697:9:0;15544:10;20697:25;20671:51;20655:117;;;;-1:-1:-1;;;20655:117:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;39391:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;39383:60;;;::::0;-1:-1:-1;;;39383:60:0;;8564:2:1;39383:60:0::1;::::0;::::1;8546:21:1::0;8603:2;8583:18;;;8576:30;8642:29;8622:18;;;8615:57;8689:18;;39383:60:0::1;8362:351:1::0;39383:60:0::1;39455:9;39450:271;39474:9;:16:::0;39470:20;::::1;39450:271;;;39526:7;-1:-1:-1::0;;;;;39510:23:0::1;:9;39520:1;39510:12;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;39510:12:0::1;:23;39506:208;;;39561:9;39571:16:::0;;:20:::1;::::0;39590:1:::1;::::0;39571:20:::1;:::i;:::-;39561:31;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;39546:9:::1;:12:::0;;-1:-1:-1;;;;;39561:31:0;;::::1;::::0;39556:1;;39546:12;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;39546:46:0::1;-1:-1:-1::0;;;;;39546:46:0;;::::1;;::::0;;39603:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;39634:11:::1;:20:::0;;;;:28;;-1:-1:-1;;39634:28:0::1;::::0;;39673:9:::1;:15:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;39673:15:0;;;;;-1:-1:-1;;;;;;39673:15:0::1;::::0;;;;;39450:271:::1;39315:411:::0;:::o;39506:208::-:1;39492:3:::0;::::1;::::0;::::1;:::i;:::-;;;;39450:271;;;;39315:411:::0;:::o;36303:254::-;15544:10;36406:4;36476:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;36476:34:0;;;;;;;;;;36406:4;;36422:111;;36460:7;;36476:50;;36515:10;36476:38;:50::i;37108:649::-;15544:10;37156:14;37209:19;;;:11;:19;;;;;;;;37208:20;37192:98;;;;-1:-1:-1;;;37192:98:0;;12050:2:1;37192:98:0;;;12032:21:1;12089:2;12069:18;;;12062:30;12128:34;12108:18;;;12101:62;-1:-1:-1;;;12179:18:1;;;12172:42;12231:19;;37192:98:0;11848:408:1;37192:98:0;37316:15;37345:19;37356:7;37345:10;:19::i;:::-;-1:-1:-1;;;;;;;;;37643:15:0;;;;;;:7;:15;;;;;;37315:49;;-1:-1:-1;37643:28:0;;:15;-1:-1:-1;37315:49:0;37643:19;:28::i;:::-;-1:-1:-1;;;;;37625:15:0;;;;;;:7;:15;;;;;:46;37688:7;;:20;;37700:7;37688:11;:20::i;:::-;37678:7;:30;37728:10;;:23;;37743:7;37728:14;:23::i;:::-;37715:10;:36;-1:-1:-1;;;37108:649:0:o;41033:105::-;20671:6;;-1:-1:-1;;;;;20671:6:0;15544:10;20671:22;;:51;;-1:-1:-1;20697:9:0;;-1:-1:-1;;;;;20697:9:0;15544:10;20697:25;20671:51;20655:117;;;;-1:-1:-1;;;20655:117:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;41098:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;41098:34:0::1;41128:4;41098:34;::::0;;41033:105::o;37763:994::-;37869:7;37907;;37896;:18;;37888:62;;;;-1:-1:-1;;;37888:62:0;;8920:2:1;37888:62:0;;;8902:21:1;8959:2;8939:18;;;8932:30;8998:33;8978:18;;;8971:61;9049:18;;37888:62:0;8718:355:1;37888:62:0;37962:17;37957:795;;38011:15;38040:19;38051:7;38040:10;:19::i;:::-;-1:-1:-1;38010:49:0;;-1:-1:-1;38330:14:0;;-1:-1:-1;;;;;38330:14:0;37957:795;38390:23;38425:19;38436:7;38425:10;:19::i;:::-;-1:-1:-1;38387:57:0;;-1:-1:-1;38722:22:0;;-1:-1:-1;;;;;38722:22:0;41350:114;20671:6;;-1:-1:-1;;;;;20671:6:0;15544:10;20671:22;;:51;;-1:-1:-1;20697:9:0;;-1:-1:-1;;;;;20697:9:0;15544:10;20697:25;20671:51;20655:117;;;;-1:-1:-1;;;20655:117:0;;;;;;;:::i;:::-;41430:13:::1;:28:::0;41350:114::o;39008:301::-;20671:6;;-1:-1:-1;;;;;20671:6:0;15544:10;20671:22;;:51;;-1:-1:-1;20697:9:0;;-1:-1:-1;;;;;20697:9:0;15544:10;20697:25;20671:51;20655:117;;;;-1:-1:-1;;;20655:117:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;39085:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;39084:21;39076:58;;;::::0;-1:-1:-1;;;39076:58:0;;5780:2:1;39076:58:0::1;::::0;::::1;5762:21:1::0;5819:2;5799:18;;;5792:30;5858:26;5838:18;;;5831:54;5902:18;;39076:58:0::1;5578:348:1::0;39076:58:0::1;-1:-1:-1::0;;;;;39145:16:0;::::1;39164:1;39145:16:::0;;;:7:::1;:16;::::0;;;;;:20;39141:99:::1;;-1:-1:-1::0;;;;;39215:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;39195:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;39176:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;39141:99:::1;-1:-1:-1::0;;;;;39246:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;39246:27:0::1;39269:4;39246:27:::0;;::::1;::::0;;;39280:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;39280:23:0::1;::::0;;::::1;::::0;;39008:301::o;35207:188::-;-1:-1:-1;;;;;35293:20:0;;35273:7;35293:20;;;:11;:20;;;;;;;;35289:49;;;-1:-1:-1;;;;;;35322:16:0;;;;;:7;:16;;;;;;;35207:188::o;35289:49::-;-1:-1:-1;;;;;35372:16:0;;;;;;:7;:16;;;;;;35352:37;;:19;:37::i;21121:138::-;20671:6;;-1:-1:-1;;;;;20671:6:0;15544:10;20671:22;;:51;;-1:-1:-1;20697:9:0;;-1:-1:-1;;;;;20697:9:0;15544:10;20697:25;20671:51;20655:117;;;;-1:-1:-1;;;20655:117:0;;;;;;;:::i;:::-;21224:1:::1;21208:6:::0;;21187:40:::1;::::0;-1:-1:-1;;;;;21208:6:0;;::::1;::::0;-1:-1:-1;;;;;;;;;;;21187:40:0;21224:1;;21187:40:::1;21251:1;21234:19:::0;;-1:-1:-1;;;;;;21234:19:0::1;::::0;;21121:138::o;21640:235::-;20671:6;;-1:-1:-1;;;;;20671:6:0;15544:10;20671:22;;:51;;-1:-1:-1;20697:9:0;;-1:-1:-1;;;;;20697:9:0;15544:10;20697:25;20671:51;20655:117;;;;-1:-1:-1;;;20655:117:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21739:25:0;::::1;21723:116;;;::::0;-1:-1:-1;;;21723:116:0;;9280:2:1;21723:116:0::1;::::0;::::1;9262:21:1::0;9319:2;9299:18;;;9292:30;9358:34;9338:18;;;9331:62;9429:27;9409:18;;;9402:55;9474:19;;21723:116:0::1;9078:421:1::0;21723:116:0::1;21846:9;:23:::0;;-1:-1:-1;;;;;;21846:23:0::1;-1:-1:-1::0;;;;;21846:23:0;;;::::1;::::0;;;::::1;::::0;;21640:235::o;41470:114::-;20671:6;;-1:-1:-1;;;;;20671:6:0;15544:10;20671:22;;:51;;-1:-1:-1;20697:9:0;;-1:-1:-1;;;;;20697:9:0;15544:10;20697:25;20671:51;20655:117;;;;-1:-1:-1;;;20655:117:0;;;;;;;:::i;:::-;41550:13:::1;:28:::0;41470:114::o;34533:81::-;34572:13;34601:7;34594:14;;;;;:::i;35059:142::-;35118:20;:31;;-1:-1:-1;;35118:31:0;;;;;;;;;;35161:34;;4285:41:1;;;35161:34:0;;4273:2:1;4258:18;35161:34:0;;;;;;;;35059:142;:::o;36563:332::-;36671:4;36687:184;15544:10;36725:7;36741:123;36790:15;36741:123;;;;;;;;;;;;;;;;;15544:10;36741:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;36741:34:0;;;;;;;;;;;;:38;:123::i;22312:307::-;22368:14;;-1:-1:-1;;;;;22368:14:0;22386:10;22368:28;22352:97;;;;-1:-1:-1;;;22352:97:0;;12463:2:1;22352:97:0;;;12445:21:1;12502:2;12482:18;;;12475:30;12541:34;12521:18;;;12514:62;-1:-1:-1;;;12592:18:1;;;12585:33;12635:19;;22352:97:0;12261:399:1;22352:97:0;22482:9;;22464:15;:27;22456:71;;;;-1:-1:-1;;;22456:71:0;;11690:2:1;22456:71:0;;;11672:21:1;11729:2;11709:18;;;11702:30;11768:33;11748:18;;;11741:61;11819:18;;22456:71:0;11488:355:1;22456:71:0;22568:14;;;22560:6;;22539:44;;-1:-1:-1;;;;;22568:14:0;;;;22560:6;;;;-1:-1:-1;;;;;;;;;;;22539:44:0;;22599:14;;;22590:23;;-1:-1:-1;;;;;;22590:23:0;-1:-1:-1;;;;;22599:14:0;;;22590:23;;;;;;22312:307::o;46678:108::-;20671:6;;-1:-1:-1;;;;;20671:6:0;15544:10;20671:22;;:51;;-1:-1:-1;20697:9:0;;-1:-1:-1;;;;;20697:9:0;15544:10;20697:25;20671:51;20655:117;;;;-1:-1:-1;;;20655:117:0;;;;;;;:::i;:::-;46747:23:::1;:33:::0;;-1:-1:-1;;;;;;46747:33:0::1;-1:-1:-1::0;;;;;46747:33:0;;;::::1;::::0;;;::::1;::::0;;46678:108::o;35401:175::-;35494:4;35510:42;15544:10;35534:9;35545:6;35510:9;:42::i;34959:94::-;20671:6;;-1:-1:-1;;;;;20671:6:0;15544:10;20671:22;;:51;;-1:-1:-1;20697:9:0;;-1:-1:-1;;;;;20697:9:0;15544:10;20697:25;20671:51;20655:117;;;;-1:-1:-1;;;20655:117:0;;;;;;;:::i;:::-;35026:12:::1;:21:::0;;-1:-1:-1;;35026:21:0::1;::::0;::::1;;::::0;;;::::1;::::0;;34959:94::o;41732:155::-;20671:6;;-1:-1:-1;;;;;20671:6:0;15544:10;20671:22;;:51;;-1:-1:-1;20697:9:0;;-1:-1:-1;;;;;20697:9:0;15544:10;20697:25;20671:51;20655:117;;;;-1:-1:-1;;;20655:117:0;;;;;;;:::i;:::-;41803:21:::1;:30:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;41803:30:0;;::::1;;::::0;;41845:36:::1;::::0;::::1;::::0;::::1;::::0;41827:6;4310:14:1;4303:22;4285:41;;4273:2;4258:18;;4145:187;41590:136:0;20671:6;;-1:-1:-1;;;;;20671:6:0;15544:10;20671:22;;:51;;-1:-1:-1;20697:9:0;;-1:-1:-1;;;;;20697:9:0;15544:10;20697:25;20671:51;20655:117;;;;-1:-1:-1;;;20655:117:0;;;;;;;:::i;:::-;41678:42:::1;41708:11;41678:25;41690:12;41678:7;;:11;;:25;;;;:::i;:::-;:29:::0;::::1;:42::i;:::-;41663:12;:57:::0;-1:-1:-1;41590:136:0:o;56509:105::-;20671:6;;-1:-1:-1;;;;;20671:6:0;15544:10;20671:22;;:51;;-1:-1:-1;20697:9:0;;-1:-1:-1;;;;;20697:9:0;15544:10;20697:25;20671:51;20655:117;;;;-1:-1:-1;;;20655:117:0;;;;;;;:::i;:::-;20507:7;20530:6;;56564:44:::1;::::0;-1:-1:-1;;;;;20530:6:0;;;;56586:21:::1;56564:44:::0;::::1;;;::::0;56586:21;;56564:44;20507:7;56564:44;56586:21;20530:6;56564:44;::::1;-1:-1:-1::0;;;;;56509:105:0:o;22036:208::-;20671:6;;-1:-1:-1;;;;;20671:6:0;15544:10;20671:22;;:51;;-1:-1:-1;20697:9:0;;-1:-1:-1;;;;;20697:9:0;15544:10;20697:25;20671:51;20655:117;;;;-1:-1:-1;;;20655:117:0;;;;;;;:::i;:::-;22113:6:::1;::::0;;22096:14:::1;:23:::0;;-1:-1:-1;;;;;;22096:23:0;;::::1;-1:-1:-1::0;;;;;22113:6:0;::::1;22096:23;::::0;;;22126:19:::1;::::0;;22164:22:::1;22182:4:::0;22164:15:::1;:22;:::i;:::-;22152:9;:34:::0;22235:1:::1;22219:6:::0;;22198:40:::1;::::0;-1:-1:-1;;;;;22219:6:0;;::::1;::::0;-1:-1:-1;;;;;;;;;;;22198:40:0;22235:1;;22198:40:::1;22036:208:::0;:::o;41144:104::-;20671:6;;-1:-1:-1;;;;;20671:6:0;15544:10;20671:22;;:51;;-1:-1:-1;20697:9:0;;-1:-1:-1;;;;;20697:9:0;15544:10;20697:25;20671:51;20655:117;;;;-1:-1:-1;;;20655:117:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;41207:27:0::1;41237:5;41207:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;41207:35:0::1;::::0;;41144:104::o;21404:230::-;20671:6;;-1:-1:-1;;;;;20671:6:0;15544:10;20671:22;;:51;;-1:-1:-1;20697:9:0;;-1:-1:-1;;;;;20697:9:0;15544:10;20697:25;20671:51;20655:117;;;;-1:-1:-1;;;20655:117:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21489:22:0;::::1;21481:73;;;::::0;-1:-1:-1;;;21481:73:0;;6974:2:1;21481:73:0::1;::::0;::::1;6956:21:1::0;7013:2;6993:18;;;6986:30;7052:34;7032:18;;;7025:62;-1:-1:-1;;;7103:18:1;;;7096:36;7149:19;;21481:73:0::1;6772:402:1::0;21481:73:0::1;21587:6;::::0;;21566:38:::1;::::0;-1:-1:-1;;;;;21566:38:0;;::::1;::::0;21587:6;::::1;::::0;-1:-1:-1;;;;;;;;;;;21566:38:0;::::1;21611:6;:17:::0;;-1:-1:-1;;;;;;21611:17:0::1;-1:-1:-1::0;;;;;21611:17:0;;;::::1;::::0;;;::::1;::::0;;21404:230::o;47475:339::-;-1:-1:-1;;;;;47584:19:0;;47576:68;;;;-1:-1:-1;;;47576:68:0;;11285:2:1;47576:68:0;;;11267:21:1;11324:2;11304:18;;;11297:30;11363:34;11343:18;;;11336:62;-1:-1:-1;;;11414:18:1;;;11407:34;11458:19;;47576:68:0;11083:400:1;47576:68:0;-1:-1:-1;;;;;47659:21:0;;47651:68;;;;-1:-1:-1;;;47651:68:0;;7381:2:1;47651:68:0;;;7363:21:1;7420:2;7400:18;;;7393:30;7459:34;7439:18;;;7432:62;-1:-1:-1;;;7510:18:1;;;7503:32;7552:19;;47651:68:0;7179:398:1;47651:68:0;-1:-1:-1;;;;;47728:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;47776:32;;12811:25:1;;;47776:32:0;;12784:18:1;47776:32:0;;;;;;;47475:339;;;:::o;47863:2439::-;-1:-1:-1;;;;;47967:18:0;;47959:68;;;;-1:-1:-1;;;47959:68:0;;10879:2:1;47959:68:0;;;10861:21:1;10918:2;10898:18;;;10891:30;10957:34;10937:18;;;10930:62;-1:-1:-1;;;11008:18:1;;;11001:35;11053:19;;47959:68:0;10677:401:1;47959:68:0;-1:-1:-1;;;;;48042:16:0;;48034:64;;;;-1:-1:-1;;;48034:64:0;;5376:2:1;48034:64:0;;;5358:21:1;5415:2;5395:18;;;5388:30;5454:34;5434:18;;;5427:62;-1:-1:-1;;;5505:18:1;;;5498:33;5548:19;;48034:64:0;5174:399:1;48034:64:0;48122:1;48113:6;:10;48105:64;;;;-1:-1:-1;;;48105:64:0;;10469:2:1;48105:64:0;;;10451:21:1;10508:2;10488:18;;;10481:30;10547:34;10527:18;;;10520:62;-1:-1:-1;;;10598:18:1;;;10591:39;10647:19;;48105:64:0;10267:405:1;48105:64:0;34932:10;;:15;;;48183:38;;;48204:17;-1:-1:-1;;;;;48198:23:0;:2;-1:-1:-1;;;;;48198:23:0;;48183:38;48182:56;;;-1:-1:-1;48226:12:0;;;;48182:56;48178:216;;;48285:1;48267:15;48277:4;48267:9;:15::i;:::-;:19;48249:120;;;;-1:-1:-1;;;48249:120:0;;6133:2:1;48249:120:0;;;6115:21:1;6172:2;6152:18;;;6145:30;6211:34;6191:18;;;6184:62;6282:31;6262:18;;;6255:59;6331:19;;48249:120:0;5931:425:1;48249:120:0;48378:8;34845:12;34832:10;:25;34798:65;48378:8;20507:7;20530:6;-1:-1:-1;;;;;48407:15:0;;;20530:6;;48407:15;;;;:32;;-1:-1:-1;20507:7:0;20530:6;-1:-1:-1;;;;;48426:13:0;;;20530:6;;48426:13;;48407:32;48406:69;;;-1:-1:-1;;;;;;48446:28:0;;;;;;:22;:28;;;;;;;;48444:31;48406:69;48402:209;;;48514:12;;48504:6;:22;;48486:117;;;;-1:-1:-1;;;48486:117:0;;8140:2:1;48486:117:0;;;8122:21:1;8179:2;8159:18;;;8152:30;8218:34;8198:18;;;8191:62;8289:25;8269:18;;;8262:53;8332:19;;48486:117:0;7938:419:1;48486:117:0;48885:28;48916:24;48934:4;48916:9;:24::i;:::-;48885:55;;49088:12;;49064:20;:36;49060:94;;-1:-1:-1;49134:12:0;;49060:94;49293:29;;49262:60;;;;;;;49342:47;;-1:-1:-1;49373:16:0;;;;;;;49372:17;49342:47;:83;;;;;49408:17;-1:-1:-1;;;;;49400:25:0;:4;-1:-1:-1;;;;;49400:25:0;;;49342:83;:115;;;;-1:-1:-1;49436:21:0;;;;;;;49342:115;49330:272;;;49497:29;;49474:52;;49558:36;49573:20;49558:14;:36::i;:::-;-1:-1:-1;;;;;49782:24:0;;49667:12;49782:24;;;:18;:24;;;;;;49682:4;;49782:24;;;:50;;-1:-1:-1;;;;;;49810:22:0;;;;;;:18;:22;;;;;;;;49782:50;49778:88;;;-1:-1:-1;49853:5:0;49778:88;49906:20;;49874:13;;49906:20;;:54;;;;;49948:12;49930:10;;49943:1;49930:14;;;;:::i;:::-;:30;;49906:54;49902:141;;;-1:-1:-1;50031:4:0;49902:141;50051:19;50095:17;-1:-1:-1;;;;;50089:23:0;:2;-1:-1:-1;;;;;50089:23:0;;50085:95;;;-1:-1:-1;50168:4:0;50085:95;50255:41;50270:4;50276:2;50280:6;50288:7;50255:14;:41::i;:::-;47952:2350;;;;;47863:2439;;;:::o;12024:198::-;12130:7;12162:12;12154:6;;;;12146:29;;;;-1:-1:-1;;;12146:29:0;;;;;;;;:::i;:::-;-1:-1:-1;12182:9:0;12194:5;12198:1;12194;:5;:::i;:::-;12182:17;12024:198;-1:-1:-1;;;;;12024:198:0:o;45309:154::-;45351:7;45368:15;45385;45404:19;:17;:19::i;:::-;45367:56;;-1:-1:-1;45367:56:0;-1:-1:-1;45437:20:0;45367:56;;45437:11;:20::i;:::-;45430:27;;;;45309:154;:::o;13340:126::-;13398:7;13421:39;13425:1;13428;13421:39;;;;;;;;;;;;;;;;;:3;:39::i;11185:167::-;11243:7;;11271:5;11275:1;11271;:5;:::i;:::-;11259:17;;11296:1;11291;:6;;11283:46;;;;-1:-1:-1;;;11283:46:0;;7784:2:1;11283:46:0;;;7766:21:1;7823:2;7803:18;;;7796:30;7862:29;7842:18;;;7835:57;7909:18;;11283:46:0;7582:351:1;42599:1016:0;42681:7;42697;42713;42729;42745;42761;42786:25;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42786:25:0;42818;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;42818:25:0;42860:23;42885:12;42899:18;42921:38;42943:7;42921:11;:38::i;:::-;42968:44;;;43021:15;;;:22;;;43052:21;;;:34;;;42968:26;;-1:-1:-1;42968:26:0;;-1:-1:-1;42968:26:0;;-1:-1:-1;43168:117:0;;43190:7;;42859:100;43266:10;:8;:10::i;:::-;43168:11;:117::i;:::-;43294:28;;;43331:26;;;;:44;;;43384:15;;;;:22;;;43522:26;;43557:15;;;;43581:21;;;;;43294:28;;43331:44;;-1:-1:-1;43384:22:0;-1:-1:-1;43522:26:0;;-1:-1:-1;43557:15:0;;-1:-1:-1;43581:21:0;;-1:-1:-1;42599:1016:0;;-1:-1:-1;;;;;42599:1016:0:o;11613:130::-;11671:7;11694:43;11698:1;11701;11694:43;;;;;;;;;;;;;;;;;:3;:43::i;12459:431::-;12517:7;12746:6;12742:37;;-1:-1:-1;12770:1:0;12763:8;;12742:37;12787:9;12799:5;12803:1;12799;:5;:::i;:::-;12787:17;-1:-1:-1;12828:1:0;12819:5;12823:1;12787:17;12819:5;:::i;:::-;:10;12811:56;;;;-1:-1:-1;;;12811:56:0;;9706:2:1;12811:56:0;;;9688:21:1;9745:2;9725:18;;;9718:30;9784:34;9764:18;;;9757:62;-1:-1:-1;;;9835:18:1;;;9828:31;9876:19;;12811:56:0;9504:397:1;50308:1462:0;33333:16;:23;;-1:-1:-1;;33333:23:0;;;;;50486:13:::1;::::0;50468::::1;::::0;33333:23;;50416:91:::1;::::0;50468:32:::1;::::0;:17:::1;:32::i;:::-;50441:13;::::0;50416:39:::1;::::0;:20;;:24:::1;:39::i;:91::-;50389:118:::0;-1:-1:-1;50514:24:0::1;50541:42;:20:::0;50389:118;50541:24:::1;:42::i;:::-;50514:69:::0;-1:-1:-1;50640:12:0::1;50655:23;50514:69:::0;50676:1:::1;50655:20;:23::i;:::-;50640:38:::0;-1:-1:-1;50685:17:0::1;50705:26;:16:::0;50640:38;50705:20:::1;:26::i;:::-;50685:46:::0;-1:-1:-1;50738:26:0::1;50767;:4:::0;50776:16;50767:8:::1;:26::i;:::-;50738:55:::0;-1:-1:-1;51076:21:0::1;51134:36;50738:55:::0;51134:16:::1;:36::i;:::-;51293:18;51314:41;:21;51340:14:::0;51314:25:::1;:41::i;:::-;51293:62:::0;-1:-1:-1;51364:27:0::1;51394:70;51439:18:::0;51394:32:::1;51293:62:::0;51409:16;51394:14:::1;:32::i;:70::-;51364:100:::0;-1:-1:-1;51471:27:0::1;51501:35;:10:::0;51364:100;51501:14:::1;:35::i;:::-;51471:65;;51578:44;51591:9;51602:19;51578:12;:44::i;:::-;51668:39;51687:19;51668:18;:39::i;:::-;51721:43;::::0;;14034:25:1;;;14090:2;14075:18;;14068:34;;;14118:18;;;14111:34;;;51721:43:0::1;::::0;14022:2:1;14007:18;51721:43:0::1;;;;;;;-1:-1:-1::0;;33371:16:0;:24;;-1:-1:-1;;33371:24:0;;;-1:-1:-1;;;;;;;;50308:1462:0:o;52961:756::-;53095:7;53090:28;;53104:14;:12;:14::i;:::-;-1:-1:-1;;;;;53131:19:0;;;;;;:11;:19;;;;;;;;:46;;;;-1:-1:-1;;;;;;53155:22:0;;;;;;:11;:22;;;;;;;;53154:23;53131:46;53127:547;;;53188:48;53210:6;53218:9;53229:6;53188:21;:48::i;:::-;53127:547;;;-1:-1:-1;;;;;53255:19:0;;;;;;:11;:19;;;;;;;;53254:20;:46;;;;-1:-1:-1;;;;;;53278:22:0;;;;;;:11;:22;;;;;;;;53254:46;53250:424;;;53311:46;53331:6;53339:9;53350:6;53311:19;:46::i;53250:424::-;-1:-1:-1;;;;;53376:19:0;;;;;;:11;:19;;;;;;;;53375:20;:47;;;;-1:-1:-1;;;;;;53400:22:0;;;;;;:11;:22;;;;;;;;53399:23;53375:47;53371:303;;;53433:44;53451:6;53459:9;53470:6;53433:17;:44::i;53371:303::-;-1:-1:-1;;;;;53495:19:0;;;;;;:11;:19;;;;;;;;:45;;;;-1:-1:-1;;;;;;53518:22:0;;;;;;:11;:22;;;;;;;;53495:45;53491:183;;;53551:48;53573:6;53581:9;53592:6;53551:21;:48::i;53491:183::-;53622:44;53640:6;53648:9;53659:6;53622:17;:44::i;:::-;53687:7;53682:29;;53696:15;47236;;47226:7;:25;47274:21;;47258:13;:37;47318:21;;47302:13;:37;47186:159;53696:15;52961:756;;;;:::o;45469:521::-;45563:7;;45595;;45520;;;;;45609:276;45633:9;:16;45629:20;;45609:276;;;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:106;;;45754:7;;45763;;45746:25;;;;;;;45469:521;;:::o;45665:106::-;45790:34;45802:7;:21;45810:9;45820:1;45810:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;45810:12:0;45802:21;;;;;;;;;;;;;45790:7;;:11;:34::i;:::-;45780:44;;45843:34;45855:7;:21;45863:9;45873:1;45863:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;45863:12:0;45855:21;;;;;;;;;;;;;45843:7;;:11;:34::i;:::-;45833:44;-1:-1:-1;45651:3:0;;;;:::i;:::-;;;;45609:276;;;-1:-1:-1;45917:7:0;;45905;;:20;;:11;:20::i;:::-;45895:7;:30;45891:61;;;45935:7;;45944;;45927:25;;;;;;45469:521;;:::o;45891:61::-;45967:7;;45976;;-1:-1:-1;45469:521:0;-1:-1:-1;45469:521:0:o;13936:280::-;14042:7;14073:12;14066:5;14058:28;;;;-1:-1:-1;;;14058:28:0;;;;;;;;:::i;:::-;-1:-1:-1;14093:9:0;14105:5;14109:1;14105;:5;:::i;44326:398::-;44409:7;44425;44441;44466:12;44481:24;44497:7;44481:15;:24::i;:::-;44466:39;;44512:18;44533:30;44555:7;44533:21;:30::i;:::-;44512:51;-1:-1:-1;44570:23:0;44596:17;:7;44608:4;44596:11;:17::i;:::-;44570:43;-1:-1:-1;44638:31:0;44570:43;44658:10;44638:19;:31::i;:::-;44620:49;44701:4;;-1:-1:-1;44707:10:0;;-1:-1:-1;44326:398:0;;-1:-1:-1;;;44326:398:0:o;44730:573::-;44893:7;;;;44968:24;:7;44980:11;44968;:24::i;:::-;44950:42;-1:-1:-1;44999:23:0;;45064:21;:4;45073:11;45064:8;:21::i;:::-;45057:28;-1:-1:-1;45094:18:0;45115:27;:10;45130:11;45115:14;:27::i;:::-;45094:48;-1:-1:-1;45169:17:0;:7;45181:4;45169:11;:17::i;:::-;45151:35;-1:-1:-1;45213:31:0;45151:35;45233:10;45213:19;:31::i;:::-;45266:7;;;;-1:-1:-1;45292:4:0;;-1:-1:-1;44730:573:0;;-1:-1:-1;;;;;;;44730:573:0:o;51776:525::-;51918:16;;;51932:1;51918:16;;;;;;;;51894:21;;51918:16;;;;;;;;;;-1:-1:-1;51918:16:0;51894:40;;51959:4;51941;51946:1;51941:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;51941:23:0;;;-1:-1:-1;;;;;51941:23:0;;;;;51981:15;-1:-1:-1;;;;;51981:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;51971:4;51976:1;51971:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;51971:32:0;;;-1:-1:-1;;;;;51971:32:0;;;;;52012:62;52029:4;52044:15;52062:11;52012:8;:62::i;:::-;52105:190;;-1:-1:-1;;;52105:190:0;;-1:-1:-1;;;;;52105:15:0;:66;;;;:190;;52180:11;;52200:1;;52238:4;;52259;;52273:15;;52105:190;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;51831:470;51776:525;:::o;52307:457::-;52447:62;52464:4;52479:15;52497:11;52447:8;:62::i;:::-;52544:15;-1:-1:-1;;;;;52544:31:0;;52584:9;52612:4;52626:11;52646:1;52683;52720:7;20507;20530:6;-1:-1:-1;;;;;20530:6:0;;20469:73;52720:7;52544:214;;;;;;-1:-1:-1;;;;;;52544:214:0;;;-1:-1:-1;;;;;3892:15:1;;;52544:214:0;;;3874:34:1;3924:18;;;3917:34;;;;3967:18;;;3960:34;;;;4010:18;;;4003:34;4074:15;;;4053:19;;;4046:44;52736:15:0;4106:19:1;;;4099:35;3808:19;;52544:214:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;52307:457;;:::o;52770:114::-;52829:23;;:49;;-1:-1:-1;;;;;52829:23:0;;;;52866:6;;52829:49;;;;52866:6;52829:23;:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;46899:281;46942:7;;:12;:34;;;;-1:-1:-1;46958:13:0;;:18;46942:34;46938:47;;;46899:281::o;46938:47::-;47011:7;;;46993:15;:25;47049:13;;;47025:21;:37;47093:13;;;47069:21;:37;-1:-1:-1;47115:11:0;;;;47133:17;;;;47157;46899:281::o;55568:935::-;55715:15;55739:23;55771:12;55792:23;55824:12;55845:18;55873:19;55884:7;55873:10;:19::i;:::-;-1:-1:-1;;;;;56230:15:0;;;;;;:7;:15;;;;;;55706:186;;-1:-1:-1;55706:186:0;;-1:-1:-1;55706:186:0;;-1:-1:-1;55706:186:0;-1:-1:-1;55706:186:0;-1:-1:-1;55706:186:0;-1:-1:-1;56230:28:0;;56250:7;56230:19;:28::i;:::-;-1:-1:-1;;;;;56212:15:0;;;;;;:7;:15;;;;;;;;:46;;;;56283:7;:15;;;;:28;;56303:7;56283:19;:28::i;:::-;-1:-1:-1;;;;;56265:15:0;;;;;;;:7;:15;;;;;;:46;;;;56339:18;;;;;;;:39;;56362:15;56339:22;:39::i;:::-;-1:-1:-1;;;;;56318:18:0;;;;;;:7;:18;;;;;:60;56385:26;56400:10;56385:14;:26::i;:::-;56418:23;56430:4;56436;56418:11;:23::i;:::-;56470:9;-1:-1:-1;;;;;56453:44:0;56462:6;-1:-1:-1;;;;;56453:44:0;;56481:15;56453:44;;;;12811:25:1;;12799:2;12784:18;;12665:177;56453:44:0;;;;;;;;55679:824;;;;;;55568:935;;;:::o;54617:945::-;54760:15;54784:23;54816:12;54837:23;54869:12;54890:18;54918:19;54929:7;54918:10;:19::i;:::-;-1:-1:-1;;;;;55275:15:0;;;;;;:7;:15;;;;;;54751:186;;-1:-1:-1;54751:186:0;;-1:-1:-1;54751:186:0;;-1:-1:-1;54751:186:0;-1:-1:-1;54751:186:0;-1:-1:-1;54751:186:0;-1:-1:-1;55275:28:0;;54751:186;55275:19;:28::i;:::-;-1:-1:-1;;;;;55257:15:0;;;;;;;:7;:15;;;;;;;;:46;;;;55331:18;;;;;:7;:18;;;;;:39;;55354:15;55331:22;:39::i;:::-;-1:-1:-1;;;;;55310:18:0;;;;;;:7;:18;;;;;;;;:60;;;;55398:7;:18;;;;:39;;55421:15;55398:22;:39::i;53723:888::-;53864:15;53888:23;53920:12;53941:23;53973:12;53994:18;54022:19;54033:7;54022:10;:19::i;:::-;-1:-1:-1;;;;;54391:15:0;;;;;;:7;:15;;;;;;53855:186;;-1:-1:-1;53855:186:0;;-1:-1:-1;53855:186:0;;-1:-1:-1;53855:186:0;-1:-1:-1;53855:186:0;-1:-1:-1;53855:186:0;-1:-1:-1;54391:28:0;;53855:186;54391:19;:28::i;39732:1002::-;39877:15;39901:23;39933:12;39954:23;39986:12;40007:18;40035:19;40046:7;40035:10;:19::i;:::-;-1:-1:-1;;;;;40394:15:0;;;;;;:7;:15;;;;;;39868:186;;-1:-1:-1;39868:186:0;;-1:-1:-1;39868:186:0;;-1:-1:-1;39868:186:0;-1:-1:-1;39868:186:0;-1:-1:-1;39868:186:0;-1:-1:-1;40394:28:0;;40414:7;40394:19;:28::i;:::-;-1:-1:-1;;;;;40376:15:0;;;;;;:7;:15;;;;;;;;:46;;;;40447:7;:15;;;;:28;;40467:7;40447:19;:28::i;46333:162::-;46435:7;;46397;;46456:33;46485:3;46456:24;:7;46435;46456:11;:24::i;46501:171::-;46586:7;46612:54;46662:3;46612:45;46624:32;46642:13;;46624;;:17;;:32;;;;:::i;:::-;46612:7;;:11;:45::i;45996:331::-;46055:19;46077:10;:8;:10::i;:::-;46055:32;-1:-1:-1;46094:18:0;46115:27;:10;46055:32;46115:14;:27::i;:::-;46190:4;46174:22;;;;:7;:22;;;;;;46094:48;;-1:-1:-1;46174:38:0;;46094:48;46174:26;:38::i;:::-;46165:4;46149:22;;;;:7;:22;;;;;;;;:63;;;;46223:11;:26;;;;;;46219:102;;;46299:4;46283:22;;;;:7;:22;;;;;;:38;;46310:10;46283:26;:38::i;:::-;46274:4;46258:22;;;;:7;:22;;;;;:63;46219:102;46048:279;;45996:331;:::o;41982:137::-;42056:7;;:17;;42068:4;42056:11;:17::i;:::-;42046:7;:27;42093:10;;:20;;42108:4;42093:14;:20::i;:::-;42080:10;:33;-1:-1:-1;;41982:137:0:o;14:160:1:-;79:20;;135:13;;128:21;118:32;;108:60;;164:1;161;154:12;108:60;14:160;;;:::o;179:247::-;238:6;291:2;279:9;270:7;266:23;262:32;259:52;;;307:1;304;297:12;259:52;346:9;333:23;365:31;390:5;365:31;:::i;431:251::-;501:6;554:2;542:9;533:7;529:23;525:32;522:52;;;570:1;567;560:12;522:52;602:9;596:16;621:31;646:5;621:31;:::i;687:388::-;755:6;763;816:2;804:9;795:7;791:23;787:32;784:52;;;832:1;829;822:12;784:52;871:9;858:23;890:31;915:5;890:31;:::i;:::-;940:5;-1:-1:-1;997:2:1;982:18;;969:32;1010:33;969:32;1010:33;:::i;:::-;1062:7;1052:17;;;687:388;;;;;:::o;1080:456::-;1157:6;1165;1173;1226:2;1214:9;1205:7;1201:23;1197:32;1194:52;;;1242:1;1239;1232:12;1194:52;1281:9;1268:23;1300:31;1325:5;1300:31;:::i;:::-;1350:5;-1:-1:-1;1407:2:1;1392:18;;1379:32;1420:33;1379:32;1420:33;:::i;:::-;1080:456;;1472:7;;-1:-1:-1;;;1526:2:1;1511:18;;;;1498:32;;1080:456::o;1541:315::-;1606:6;1614;1667:2;1655:9;1646:7;1642:23;1638:32;1635:52;;;1683:1;1680;1673:12;1635:52;1722:9;1709:23;1741:31;1766:5;1741:31;:::i;:::-;1791:5;-1:-1:-1;1815:35:1;1846:2;1831:18;;1815:35;:::i;:::-;1805:45;;1541:315;;;;;:::o;1861:::-;1929:6;1937;1990:2;1978:9;1969:7;1965:23;1961:32;1958:52;;;2006:1;2003;1996:12;1958:52;2045:9;2032:23;2064:31;2089:5;2064:31;:::i;:::-;2114:5;2166:2;2151:18;;;;2138:32;;-1:-1:-1;;;1861:315:1:o;2181:180::-;2237:6;2290:2;2278:9;2269:7;2265:23;2261:32;2258:52;;;2306:1;2303;2296:12;2258:52;2329:26;2345:9;2329:26;:::i;2366:180::-;2425:6;2478:2;2466:9;2457:7;2453:23;2449:32;2446:52;;;2494:1;2491;2484:12;2446:52;-1:-1:-1;2517:23:1;;2366:180;-1:-1:-1;2366:180:1:o;2551:248::-;2616:6;2624;2677:2;2665:9;2656:7;2652:23;2648:32;2645:52;;;2693:1;2690;2683:12;2645:52;2729:9;2716:23;2706:33;;2758:35;2789:2;2778:9;2774:18;2758:35;:::i;2804:306::-;2892:6;2900;2908;2961:2;2949:9;2940:7;2936:23;2932:32;2929:52;;;2977:1;2974;2967:12;2929:52;3006:9;3000:16;2990:26;;3056:2;3045:9;3041:18;3035:25;3025:35;;3100:2;3089:9;3085:18;3079:25;3069:35;;2804:306;;;;;:::o;4572:597::-;4684:4;4713:2;4742;4731:9;4724:21;4774:6;4768:13;4817:6;4812:2;4801:9;4797:18;4790:34;4842:1;4852:140;4866:6;4863:1;4860:13;4852:140;;;4961:14;;;4957:23;;4951:30;4927:17;;;4946:2;4923:26;4916:66;4881:10;;4852:140;;;5010:6;5007:1;5004:13;5001:91;;;5080:1;5075:2;5066:6;5055:9;5051:22;5047:31;5040:42;5001:91;-1:-1:-1;5153:2:1;5132:15;-1:-1:-1;;5128:29:1;5113:45;;;;5160:2;5109:54;;4572:597;-1:-1:-1;;;4572:597:1:o;9906:356::-;10108:2;10090:21;;;10127:18;;;10120:30;10186:34;10181:2;10166:18;;10159:62;10253:2;10238:18;;9906:356::o;12847:980::-;13109:4;13157:3;13146:9;13142:19;13188:6;13177:9;13170:25;13214:2;13252:6;13247:2;13236:9;13232:18;13225:34;13295:3;13290:2;13279:9;13275:18;13268:31;13319:6;13354;13348:13;13385:6;13377;13370:22;13423:3;13412:9;13408:19;13401:26;;13462:2;13454:6;13450:15;13436:29;;13483:1;13493:195;13507:6;13504:1;13501:13;13493:195;;;13572:13;;-1:-1:-1;;;;;13568:39:1;13556:52;;13663:15;;;;13628:12;;;;13604:1;13522:9;13493:195;;;-1:-1:-1;;;;;;;13744:32:1;;;;13739:2;13724:18;;13717:60;-1:-1:-1;;;13808:3:1;13793:19;13786:35;13705:3;12847:980;-1:-1:-1;;;12847:980:1:o;14345:128::-;14385:3;14416:1;14412:6;14409:1;14406:13;14403:39;;;14422:18;;:::i;:::-;-1:-1:-1;14458:9:1;;14345:128::o;14478:217::-;14518:1;14544;14534:132;;14588:10;14583:3;14579:20;14576:1;14569:31;14623:4;14620:1;14613:15;14651:4;14648:1;14641:15;14534:132;-1:-1:-1;14680:9:1;;14478:217::o;14700:168::-;14740:7;14806:1;14802;14798:6;14794:14;14791:1;14788:21;14783:1;14776:9;14769:17;14765:45;14762:71;;;14813:18;;:::i;:::-;-1:-1:-1;14853:9:1;;14700:168::o;14873:125::-;14913:4;14941:1;14938;14935:8;14932:34;;;14946:18;;:::i;:::-;-1:-1:-1;14983:9:1;;14873:125::o;15003:380::-;15082:1;15078:12;;;;15125;;;15146:61;;15200:4;15192:6;15188:17;15178:27;;15146:61;15253:2;15245:6;15242:14;15222:18;15219:38;15216:161;;;15299:10;15294:3;15290:20;15287:1;15280:31;15334:4;15331:1;15324:15;15362:4;15359:1;15352:15;15216:161;;15003:380;;;:::o;15388:135::-;15427:3;-1:-1:-1;;15448:17:1;;15445:43;;;15468:18;;:::i;:::-;-1:-1:-1;15515:1:1;15504:13;;15388:135::o;15528:127::-;15589:10;15584:3;15580:20;15577:1;15570:31;15620:4;15617:1;15610:15;15644:4;15641:1;15634:15;15660:127;15721:10;15716:3;15712:20;15709:1;15702:31;15752:4;15749:1;15742:15;15776:4;15773:1;15766:15;15792:127;15853:10;15848:3;15844:20;15841:1;15834:31;15884:4;15881:1;15874:15;15908:4;15905:1;15898:15;16056:131;-1:-1:-1;;;;;16131:31:1;;16121:42;;16111:70;;16177:1;16174;16167:12;16111:70;16056:131;:::o
Swarm Source
ipfs://d23307017cef5f2a89c4adfe742fd93b89cfe6fdf31b324bac4dc0db6dec59fd
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.