Token CROCKETSHIP
Overview CRC20
Price
$0.00 @ 0.000000 CRO
Fully Diluted Market Cap
Total Supply:
1,000,000,000,000,000 $CROCKET
Holders:
31 addresses
Contract:
Decimals:
9
Balance
486,599,818,620.073984977 $CROCKETValue
$0.00
[ Download CSV Export ]
[ Download CSV Export ]
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
CROCKETSHIP
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at cronoscan.com on 2022-03-30 */ /** Dont Snipe This Or Youll Be REKT!!! @CROCKETSHIP t.me/CROCKETSHIP */ // SPDX-License-Identifier: MIT pragma solidity >=0.6.0 <0.9.0; abstract contract Context { function _msgSender() internal view returns (address payable) { return payable(msg.sender); } function _msgData() internal view returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the token decimals. */ function decimals() external view returns (uint8); /** * @dev Returns the token symbol. */ function symbol() external view returns (string memory); /** * @dev Returns the token name. */ function name() external view returns (string memory); /** * @dev Returns the bep token owner. */ function getOwner() external view returns (address); /** * @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 d.o.g.e_c.l.o.w.n 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). * d-og-e c+lo_wn * 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/do_ge/clown/-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; } } 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); } } } } interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address lpPair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address lpPair); function allPairs(uint) external view returns (address lpPair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address lpPair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } interface Cashier { function setReflectionCriteria(uint256 _minPeriod, uint256 _minReflection) external; function setShare(address shareholder, uint256 amount) external; function deposit() external payable; function process(uint256 gas) external; function giveMeWelfarePlease(address hobo) external; function getTotalDistributed() external view returns(uint256); function getShareholderInfo(address shareholder) external view returns(string memory, string memory, string memory, string memory); } //TODO contract CROCKETSHIP is IERC20 { using SafeMath for uint256; // Ownership moved to in-contract for customizability. address private _owner; mapping (address => uint256) _tOwned; mapping (address => mapping (address => uint256)) _allowances; mapping (address => bool) _isFeeExcluded; mapping (address => bool) _isDividendExcluded; //mapping (address => bool) private presaleAddresses; //bool private allowedPresaleExclusion = true; mapping (address => bool) private _isSniper; mapping (address => bool) private _liquidityHolders; uint256 private constant startingSupply = 1_000_000_000_000_000; //TODO uint8 private _decimals = 9; //TODO uint256 private _decimalsMul = _decimals; uint256 private _tTotal = startingSupply * (10 ** _decimalsMul); string constant _name = "CROCKETSHIP"; //TODO string constant _symbol = "$CROCKET"; //TODO uint256 private _reflectionFee = 0; // Adjusted by buys and sells. uint256 private _liquidityFee = 0; // Adjusted by buys and sells. uint256 private _marketingFee = 0; // Adjusted by buys and sells. uint256 private _burnFee = 0; // Adjusted by buys and sells. uint256 private _buybackFee = 0; // Adjusted by buys and sells. uint256 private _totalFee = _liquidityFee + _reflectionFee + _marketingFee + _buybackFee; uint256 public masterTaxDivisor = 10000; //TODO uint256 public _buyReflectionFee = 0; uint256 public _buyLiquidityFee = 200; uint256 public _buyMarketingFee = 700; uint256 public _buyBurnFee = 0; uint256 public _buyBuybackFee = 300; uint256 public _sellReflectionFee = 0; uint256 public _sellLiquidityFee = 200; uint256 public _sellMarketingFee = 700; uint256 public _sellBurnFee = 0; uint256 public _sellBuybackFee = 300; uint256 public maxReflectionFee = 10000; uint256 public maxLiquidityFee = 10000; uint256 public maxMarketingFee = 10000; uint256 public maxBurnFee = 10000; uint256 public maxBuybackFee = 10000; uint256 private previousReflectionFee = _reflectionFee; uint256 private previousLiquidityFee = _liquidityFee; uint256 private previousMarketingFee = _marketingFee; uint256 private previousBuybackFee = _buybackFee; uint256 private reflectionRatio = _sellReflectionFee; uint256 private liquidityRatio = _sellLiquidityFee; uint256 private marketingRatio = _sellMarketingFee; uint256 private buybackRatio = _sellBuybackFee; IUniswapV2Router02 public dexRouter; address public lpPair; // PCS ROUTER address private _routerAddress = 0x145677FC4d9b8F19B5D56d1820c48e0443049a30; address private WBNB; address public burnAddress = 0x000000000000000000000000000000000000dEaD; address private ZERO = 0x0000000000000000000000000000000000000000; address payable private _marketingWallet = payable(0xFC72dF1fA898Ce83809519C9B085D6Aa7dfB10c3); //TODO address payable private _buybackWallet = payable(0xFC72dF1fA898Ce83809519C9B085D6Aa7dfB10c3); //TODO uint256 private maxTxPercent = 3; //TODO uint256 private maxTxDivisor = 100; uint256 private _maxTxAmount = (_tTotal * maxTxPercent) / maxTxDivisor; uint256 private _previousMaxTxAmount = _maxTxAmount; uint256 public maxTxAmountUI = (startingSupply * maxTxPercent) / maxTxDivisor; // Actual amount for UI's uint256 private maxWalletPercent = 3; //TODO uint256 private maxWalletDivisor = 100; uint256 private _maxWalletSize = (_tTotal * maxWalletPercent) / maxWalletDivisor; uint256 private _previousMaxWalletSize = _maxWalletSize; uint256 public maxWalletSizeUI = (startingSupply * maxWalletPercent) / maxWalletDivisor; // Actual amount for UI's uint256 targetLiquidity = 100; uint256 targetLiquidityDenominator = 100; Cashier reflector; uint256 reflectorGas = 500000; bool public swapAndLiquifyEnabled = true; bool public processReflect = false; uint256 private swapThreshold = _tTotal / 20000; uint256 private swapAmount = _maxTxAmount; bool private initialSubEnabled = false; bool inSwap; bool private sniperProtection = true; bool public _hasLiqBeenAdded = false; uint256 private _liqAddBlock = 0; uint256 private _liqAddStamp = 0; uint256 private immutable snipeBlockAmt; uint256 public snipersCaught = 0; modifier swapping() { inSwap = true; _; inSwap = false; } modifier onlyOwner() { require(_owner == msg.sender, "Ownable: caller is not the owner"); _; } event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); event SwapAndLiquifyEnabledUpdated(bool enabled); event AutoLiquify(uint256 amountBNB, uint256 amount); event SniperCaught(address sniperAddress); constructor (uint256 _snipeBlockAmt, address cInitializer) payable { address msgSender = msg.sender; _tOwned[msgSender] = _tTotal; // Set the owner. _owner = msgSender; // Set the amount of blocks to count a sniper. snipeBlockAmt = _snipeBlockAmt; dexRouter = IUniswapV2Router02(_routerAddress); lpPair = IUniswapV2Factory(dexRouter.factory()).createPair(dexRouter.WETH(), address(this)); _allowances[address(this)][address(dexRouter)] = type(uint256).max; WBNB = dexRouter.WETH(); reflector = Cashier(cInitializer); _isFeeExcluded[owner()] = true; _isFeeExcluded[address(this)] = true; _isDividendExcluded[owner()] = true; _isDividendExcluded[lpPair] = true; _isDividendExcluded[address(this)] = true; _isDividendExcluded[burnAddress] = true; _isDividendExcluded[ZERO] = true; // DxLocker Address (BSC) _isFeeExcluded[0xFC72dF1fA898Ce83809519C9B085D6Aa7dfB10c3] = true; //TODO _isDividendExcluded[0xFC72dF1fA898Ce83809519C9B085D6Aa7dfB10c3] = true; // Approve the owner for PancakeSwap, timesaver. approveMax(_routerAddress); // Ever-growing sniper/tool blacklist _isSniper[0xE4882975f933A199C92b5A925C9A8fE65d599Aa8] = true; _isSniper[0x86C70C4a3BC775FB4030448c9fdb73Dc09dd8444] = true; _isSniper[0xa4A25AdcFCA938aa030191C297321323C57148Bd] = true; _isSniper[0x20C00AFf15Bb04cC631DB07ee9ce361ae91D12f8] = true; _isSniper[0x0538856b6d0383cde1709c6531B9a0437185462b] = true; emit Transfer(ZERO, msg.sender, _tTotal); emit OwnershipTransferred(address(0), msgSender); } // Ownable removed as a lib and added here to allow for custom transfers and recnouncements. // This allows for removal of ownership privelages from the owner once renounced or transferred. function owner() public view returns (address) { return _owner; } function transferOwner(address newOwner) external onlyOwner() { require(newOwner != address(0), "Call renounceOwnership to transfer owner to the zero address."); _isFeeExcluded[_owner] = false; _isDividendExcluded[_owner] = false; _isFeeExcluded[newOwner] = true; _isDividendExcluded[newOwner] = true; if (_marketingWallet == payable(_owner)) _marketingWallet = payable(newOwner); _allowances[_owner][newOwner] = _tOwned[_owner]; _transfer(_owner, newOwner, _tOwned[_owner]); _owner = newOwner; emit OwnershipTransferred(_owner, newOwner); } function renounceOwnership() public virtual onlyOwner() { _isFeeExcluded[_owner] = false; _isDividendExcluded[_owner] = false; _owner = address(0); emit OwnershipTransferred(_owner, address(0)); } receive() external payable {} function totalSupply() external view override returns (uint256) { return _tTotal; } function decimals() external view override returns (uint8) { return _decimals; } function symbol() external pure override returns (string memory) { return _symbol; } function name() external pure override returns (string memory) { return _name; } function getOwner() external view override returns (address) { return owner(); } function balanceOf(address account) public view override returns (uint256) { return _tOwned[account]; } function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _allowances[msg.sender][spender] = amount; emit Approval(msg.sender, spender, amount); return true; } function approveMax(address spender) public returns (bool) { return approve(spender, type(uint256).max); } function _approve(address sender, address spender, uint256 amount) private { require(sender != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[sender][spender] = amount; emit Approval(sender, spender, amount); } function transfer(address recipient, uint256 amount) external override returns (bool) { return _transfer(msg.sender, recipient, amount); } function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) { if (_allowances[sender][msg.sender] != type(uint256).max) { _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance"); } return _transfer(sender, recipient, amount); } function isSniper(address account) public view returns (bool) { return _isSniper[account]; } function isFeeExcluded(address account) public view returns(bool) { return _isFeeExcluded[account]; } function isDividendExcluded(address account) public view returns(bool) { return _isDividendExcluded[account]; } function removeSniper(address account) external onlyOwner() { require(_isSniper[account], "Account is not a recorded sniper."); _isSniper[account] = false; } function setSniperProtectionEnabled(bool enabled) external onlyOwner() { require(enabled != sniperProtection, "Already set."); sniperProtection = enabled; } function setDividendExcluded(address holder, bool enabled) public onlyOwner { require(holder != address(this) && holder != lpPair); _isDividendExcluded[holder] = enabled; if (enabled) { reflector.setShare(holder, 0); } else { reflector.setShare(holder, _tOwned[holder]); } } function setExcludeFromFees(address account, bool enabled) public onlyOwner { _isFeeExcluded[account] = enabled; } function setBuyTaxes(uint256 liquidityFee, uint256 reflectionFee, uint256 marketingFee, uint256 burnFee) external onlyOwner { require(liquidityFee + reflectionFee + marketingFee + burnFee <= 5000); _buyLiquidityFee = liquidityFee; _buyReflectionFee = reflectionFee; _buyMarketingFee = marketingFee; _buyBurnFee = burnFee; } function setSellTaxes(uint256 liquidityFee, uint256 reflectionFee, uint256 marketingFee, uint256 burnFee) external onlyOwner { require(liquidityFee + reflectionFee + marketingFee + burnFee <= 5000); _sellLiquidityFee = liquidityFee; _sellReflectionFee = reflectionFee; _sellMarketingFee = marketingFee; _sellBurnFee = burnFee; } function setRatios(uint256 reflection, uint256 liquidity, uint256 marketing, uint256 buyback) external onlyOwner { reflectionRatio = reflection; liquidityRatio = liquidity; marketingRatio = marketing; buybackRatio = buyback; } function setMarketingWallet(address payable newWallet) external onlyOwner { require(_marketingWallet != newWallet, "Wallet already set!"); _marketingWallet = payable(newWallet); } function setSwapBackSettings(bool _enabled, bool processReflectEnabled) external onlyOwner { swapAndLiquifyEnabled = _enabled; processReflect = processReflectEnabled; } function setSwapThreshold(uint256 percent, uint256 divisor) external onlyOwner() { swapThreshold = _tTotal.mul(percent).div(divisor); } function setSwapAmount(uint256 percent, uint256 divisor) external onlyOwner { swapAmount = _tTotal.mul(percent).div(divisor); } function setTargetLiquidity(uint256 _target, uint256 _denominator) external onlyOwner { targetLiquidity = _target; targetLiquidityDenominator = _denominator; } function setReflectionCriteria(uint256 _minPeriod, uint256 _minReflection, uint256 minReflectionMultiplier) external onlyOwner { _minReflection = _minReflection * 10**minReflectionMultiplier; reflector.setReflectionCriteria(_minPeriod, _minReflection); } function setReflectorSettings(uint256 gas) external onlyOwner { require(gas < 750000); reflectorGas = gas; } function setInitialSubEnabled(bool enabled) external onlyOwner() { initialSubEnabled = enabled; } function getCirculatingSupply() public view returns (uint256) { return _tTotal - (balanceOf(burnAddress) + balanceOf(ZERO)); } function getLiquidityBacking(uint256 accuracy) public view returns (uint256) { return accuracy * balanceOf(lpPair) / getCirculatingSupply(); } function isOverLiquified(uint256 target, uint256 accuracy) public view returns (bool) { return getLiquidityBacking(accuracy) > target; } function giveMeWelfarePlease() external { reflector.giveMeWelfarePlease(msg.sender); } function getTotalReflected() external view returns (uint256) { return reflector.getTotalDistributed(); } function getUserInfo(address shareholder) external view returns (string memory, string memory, string memory, string memory) { return reflector.getShareholderInfo(shareholder); } function setMaxTxPercent(uint256 percent, uint256 divisor) external onlyOwner() { require(divisor <= 1000000); // Cannot set lower than 0.01% _maxTxAmount = _tTotal.mul(percent).div(divisor); maxTxAmountUI = startingSupply.mul(percent).div(divisor); } function setMaxWalletSize(uint256 percent, uint256 divisor) external onlyOwner() { require(divisor <= 1000); // Cannot set lower than 0.1% _maxWalletSize = _tTotal.mul(percent).div(divisor); maxWalletSizeUI = startingSupply.mul(percent).div(divisor); } function _hasLimits(address from, address to) private view returns (bool) { return from != owner() && to != owner() && !_liquidityHolders[to] && !_liquidityHolders[from] && to != burnAddress && to != address(0) && from != address(this); } function _transfer(address from, address to, uint256 amount) internal returns (bool) { 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(_hasLimits(from, to)) require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount."); if(_hasLimits(from, to) && to != _routerAddress && to != lpPair ) { uint256 contractBalanceRecepient = balanceOf(to); require(contractBalanceRecepient + amount <= _maxWalletSize, "Transfer amount exceeds the maxWalletSize."); } bool takeFee = true; if(_isFeeExcluded[from] || _isFeeExcluded[to]){ takeFee = false; } return _finalizeTransfer(from, to, amount, takeFee); } function adjustTaxes(address from) internal { if (from == lpPair) { _reflectionFee = _buyReflectionFee; _liquidityFee = _buyLiquidityFee; _marketingFee = _buyMarketingFee; _burnFee = _buyBurnFee; _buybackFee = _buyBuybackFee; } else { _reflectionFee = _sellReflectionFee; _liquidityFee = _sellLiquidityFee; _marketingFee = _sellMarketingFee; _burnFee = _sellBurnFee; _buybackFee = _sellBuybackFee; } _totalFee = getTotalFee(); } function _finalizeTransfer(address from, address to, uint256 amount, bool takeFee) internal returns (bool) { // Failsafe, disable the whole system if needed. if (sniperProtection){ // If sender is a sniper address, reject the transfer. if (isSniper(from) || isSniper(to)) { revert("Sniper rejected."); } // Check if this is the liquidity adding tx to startup. if (!_hasLiqBeenAdded) { _checkLiquidityAdd(from, to); if (!_hasLiqBeenAdded && _hasLimits(from, to)) { revert("Only owner can transfer at this time."); } } else { if (_liqAddBlock > 0 && from == lpPair && _hasLimits(from, to) ) { if (block.number - _liqAddBlock < snipeBlockAmt) { _isSniper[to] = true; snipersCaught ++; emit SniperCaught(to); return(false); } } } } _tOwned[from] = _tOwned[from].sub(amount, "Insufficient Balance"); if (inSwap) { return _basicTransfer(from, to, amount); } adjustTaxes(from); uint256 contractTokenBalance = _tOwned[address(this)]; if(contractTokenBalance >= swapAmount) contractTokenBalance = swapAmount; if (!inSwap && from != lpPair && swapAndLiquifyEnabled && contractTokenBalance >= swapThreshold ) { swapBack(contractTokenBalance); } uint256 amountReceived = amount; if (takeFee) { amountReceived = takeTaxes(from, amount); } _tOwned[to] = _tOwned[to].add(amountReceived); if (processReflect) processTokenReflect(from, to); emit Transfer(from, to, amountReceived); return true; } function shouldSwapBack() internal view returns (bool) { return msg.sender != lpPair && !inSwap && swapAndLiquifyEnabled && _tOwned[address(this)] >= swapThreshold; } function processTokenReflect(address from, address to) internal { // Process TOKEN Reflect. if (!_isDividendExcluded[from]) { try reflector.setShare(from, _tOwned[from]) {} catch {} } if (!_isDividendExcluded[to]) { try reflector.setShare(to, _tOwned[to]) {} catch {} } try reflector.process(reflectorGas) {} catch {} } function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) { _tOwned[recipient] += amount; emit Transfer(sender, recipient, amount); return true; } function getTotalFee() public view returns (uint256) { return _reflectionFee + _liquidityFee + _marketingFee + _buybackFee; } function takeTaxes(address sender, uint256 amount) internal returns (uint256) { uint256 feeAmount = amount * getTotalFee() / masterTaxDivisor; uint256 burnAmount = amount * _burnFee / masterTaxDivisor; _tOwned[address(this)] += feeAmount; emit Transfer(sender, address(this), feeAmount); _tOwned[burnAddress] += burnAmount; emit Transfer(sender, burnAddress, burnAmount); return amount - (feeAmount + burnAmount); } function swapBack(uint256 numTokensToSwap) internal swapping { uint256 swapTotalFee = reflectionRatio + liquidityRatio + marketingRatio + buybackRatio; uint256 dynamicLiquidityFee = isOverLiquified(targetLiquidity, targetLiquidityDenominator) ? 0 : liquidityRatio; uint256 amountToLiquify = numTokensToSwap * dynamicLiquidityFee / swapTotalFee / 2; uint256 amountToSwap = numTokensToSwap - amountToLiquify; address[] memory path = new address[](2); path[0] = address(this); path[1] = WBNB; uint256 balanceBefore = address(this).balance; dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens( amountToSwap, 0, path, address(this), block.timestamp ); uint256 amountBNB = address(this).balance; if (initialSubEnabled) amountBNB = address(this).balance - balanceBefore; uint256 totalBNBFee = swapTotalFee - (dynamicLiquidityFee / 2); uint256 amountBNBLiquidity = amountBNB * dynamicLiquidityFee / totalBNBFee / 2; uint256 amountBNBReflection = amountBNB * reflectionRatio / totalBNBFee; uint256 amountBNBMarketing = amountBNB - (amountBNBLiquidity + amountBNBReflection); transferBNBOut(amountBNBMarketing); if (amountToLiquify > 0) { dexRouter.addLiquidityETH{value: amountBNBLiquidity}( address(this), amountToLiquify, 0, 0, burnAddress, block.timestamp ); emit AutoLiquify(amountBNBLiquidity, amountToLiquify); } else { // If we are not liquifying we add the bnb to busd buys. amountBNBReflection += amountBNBLiquidity; } try reflector.deposit{value: amountBNBReflection}() {} catch {} } function transferBNBOut(uint256 amount) internal { uint256 amountBNBMarketing = (amount * marketingRatio) / (marketingRatio + buybackRatio); uint256 amountBNBBuyback = amount - amountBNBMarketing; _marketingWallet.transfer(amountBNBMarketing); _buybackWallet.transfer(amountBNBBuyback); } function manualDepost() external onlyOwner() { try reflector.deposit{value: address(this).balance}() {} catch {} } function _checkLiquidityAdd(address from, address to) private { require(!_hasLiqBeenAdded, "Liquidity already added and marked."); if (!_hasLimits(from, to) && to == lpPair) { _liquidityHolders[from] = true; _hasLiqBeenAdded = true; _liqAddBlock = block.number; _liqAddStamp = block.timestamp; swapAndLiquifyEnabled = true; //allowedPresaleExclusion = false; emit SwapAndLiquifyEnabledUpdated(true); } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"uint256","name":"_snipeBlockAmt","type":"uint256"},{"internalType":"address","name":"cInitializer","type":"address"}],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountBNB","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"AutoLiquify","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":"address","name":"sniperAddress","type":"address"}],"name":"SniperCaught","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":"_buyBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyBuybackFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyReflectionFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_hasLiqBeenAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellBuybackFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellReflectionFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":"spender","type":"address"}],"name":"approveMax","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":"burnAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"getLiquidityBacking","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalReflected","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"shareholder","type":"address"}],"name":"getUserInfo","outputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"giveMeWelfarePlease","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isDividendExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isFeeExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"target","type":"uint256"},{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"isOverLiquified","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isSniper","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualDepost","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"masterTaxDivisor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuybackFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxReflectionFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxAmountUI","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletSizeUI","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"processReflect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeSniper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"liquidityFee","type":"uint256"},{"internalType":"uint256","name":"reflectionFee","type":"uint256"},{"internalType":"uint256","name":"marketingFee","type":"uint256"},{"internalType":"uint256","name":"burnFee","type":"uint256"}],"name":"setBuyTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setDividendExcluded","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setInitialSubEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newWallet","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"reflection","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"buyback","type":"uint256"}],"name":"setRatios","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minPeriod","type":"uint256"},{"internalType":"uint256","name":"_minReflection","type":"uint256"},{"internalType":"uint256","name":"minReflectionMultiplier","type":"uint256"}],"name":"setReflectionCriteria","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"gas","type":"uint256"}],"name":"setReflectorSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"liquidityFee","type":"uint256"},{"internalType":"uint256","name":"reflectionFee","type":"uint256"},{"internalType":"uint256","name":"marketingFee","type":"uint256"},{"internalType":"uint256","name":"burnFee","type":"uint256"}],"name":"setSellTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setSniperProtectionEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setSwapAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"bool","name":"processReflectEnabled","type":"bool"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setSwapThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_target","type":"uint256"},{"internalType":"uint256","name":"_denominator","type":"uint256"}],"name":"setTargetLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"snipersCaught","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"pure","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":"transferOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60a06040526007805460ff1916600990811790915560088190556200002690600a620009bc565b620000399066038d7ea4c6800062000a78565b6009556000600a819055600b819055600c819055600d819055600e8190558062000064818062000935565b62000070919062000935565b6200007c919062000935565b600f5561271060108190556000601181905560c860128190556102bc6013819055601483905561012c60158190556016849055601783905560188290556019849055601a819055601b859055601c859055601d859055601e859055601f94909455600a54602055600b54602155600c54602255600e54602355602492909255602555602655602755602a80546001600160a01b031990811673145677fc4d9b8f19b5d56d1820c48e0443049a3017909155602c8054821661dead179055602d805482169055602e8054821673fc72df1fa898ce83809519c9b085d6aa7dfb10c3908117909155602f8054909216179055600360308190556064603181905560095490916200018a9162000a78565b62000196919062000950565b6032819055603355603154603054620001b79066038d7ea4c6800062000a78565b620001c3919062000950565b60345560036035556064603655603654603554600954620001e5919062000a78565b620001f1919062000950565b6037819055603855603654603554620002129066038d7ea4c6800062000a78565b6200021e919062000950565b6039556064603a819055603b556207a120603d55603e805461ffff191660011790556009546200025290614e209062000950565b603f5560325460409081556041805463ffff00ff1916620100001790556000604281905560438190556044555162003daa388190039081908339810160408190526200029e9162000906565b6009543360008181526001602090815260408083209490945581546001600160a01b031990811684179092556080869052602a54602880546001600160a01b03909216919093168117909255835163c45a015560e01b815293519293919263c45a0155926004808201939291829003018186803b1580156200031f57600080fd5b505afa15801562000334573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200035a9190620008e1565b6001600160a01b031663c9c65396602860009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620003b757600080fd5b505afa158015620003cc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003f29190620008e1565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152306024820152604401602060405180830381600087803b1580156200043a57600080fd5b505af11580156200044f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004759190620008e1565b602980546001600160a01b0319166001600160a01b039283161790553060009081526002602090815260408083206028805486168552908352928190206000199055915482516315ab88c960e31b8152925193169263ad5c4648926004808201939291829003018186803b158015620004ed57600080fd5b505afa15801562000502573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005289190620008e1565b602b80546001600160a01b03199081166001600160a01b0393841617909155603c8054909116918416919091179055600160036000620005706000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff199586161790553081526003909252812080549092166001908117909255600490620005c96000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790556029548216815260048085528382208054871660019081179091553083528483208054881682179055602c54841683528483208054881682179055602d5484168352938220805487168517905573fc72df1fa898ce83809519c9b085d6aa7dfb10c39091527f387435137082bd44c1d49d5ea1f6ed9b7f5e637015b0474d96311b78ec3e4aff80548616841790559092527f670f43a6ff3cc86d4d585fb68cb8d5b61691b2cf3c0f6845efacd6c85404721a805490931617909155602a54620006c1911662000841565b5060056020527ffb5b5b4ba1c48b2e69f63b29d8becdbd27e876755dfb261bf5b98e2aa40f71f1805460ff1990811660019081179092557f730f44978e3e41650e25cd6c958f4b9d3d69f0acf606bddc21129f344501487880548216831790557fed1985f8be08a5472acdd33b4cc358aed34319deeab5e1e762c829410b97aa0f80548216831790557f1dc48be3597163d3eccc89951d79d410aac0c57e6d731b3364c4a7d4e0e33bbb8054821683179055730538856b6d0383cde1709c6531b9a0437185462b6000527f336851990a57e4d42427a1b297c95c2156a35fada8ba2451e3b5721e7f0270fd80549091169091179055602d5460095460405133926001600160a01b0316917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91620007fa91815260200190565b60405180910390a36040516001600160a01b038216906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350505062000ab0565b6000620008518260001962000857565b92915050565b3360008181526002602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590620008b39086815260200190565b60405180910390a350600192915050565b80516001600160a01b0381168114620008dc57600080fd5b919050565b600060208284031215620008f457600080fd5b620008ff82620008c4565b9392505050565b600080604083850312156200091a57600080fd5b825191506200092c60208401620008c4565b90509250929050565b600082198211156200094b576200094b62000a9a565b500190565b6000826200096e57634e487b7160e01b600052601260045260246000fd5b500490565b600181815b80851115620009b457816000190482111562000998576200099862000a9a565b80851615620009a657918102915b93841c939080029062000978565b509250929050565b6000620008ff8383600082620009d55750600162000851565b81620009e45750600062000851565b8160018114620009fd576002811462000a085762000a28565b600191505062000851565b60ff84111562000a1c5762000a1c62000a9a565b50506001821b62000851565b5060208310610133831016604e8410600b841016171562000a4d575081810a62000851565b62000a59838362000973565b806000190482111562000a705762000a7062000a9a565b029392505050565b600081600019048311821515161562000a955762000a9562000a9a565b500290565b634e487b7160e01b600052601160045260246000fd5b6080516132de62000acc600039600061204c01526132de6000f3fe6080604052600436106103e85760003560e01c80636b639a2511610208578063d0b1449d11610118578063e1795033116100ab578063efe7dc901161007a578063efe7dc9014610baa578063f480fec214610bc9578063f6540ec714610be9578063f7727e1414610bff578063f7c245ea14610c1457600080fd5b8063e179503314610b34578063e4bf1bed14610b54578063e79d416014610b74578063ea4a145414610b8a57600080fd5b8063d7124d9f116100e7578063d7124d9f14610a98578063dc44b6a014610ab8578063dd62ed3e14610ace578063e0edd58614610b1457600080fd5b8063d0b1449d14610a18578063d4e43fb314610a38578063d51ed1c814610a58578063d63cad2214610a7857600080fd5b8063893d20e81161019b578063a9059cbb1161016a578063a9059cbb1461097d578063bca238aa1461099d578063c193e758146109d6578063c5d24189146109ec578063c860795214610a0257600080fd5b8063893d20e8146109195780638da5cb5b1461091957806395d89b41146109375780639dc676151461096857600080fd5b80637598f8bc116101d75780637598f8bc146108c25780637abdc1ca146108d85780637ae316d0146108ee57806388790a681461090357600080fd5b80636b639a251461083757806370a082311461085757806370d5ae051461088d578063715018a6146108ad57600080fd5b8063255a2e541161030357806341d05b081161029657806350a8e0161161026557806350a8e01614610790578063571ac8b0146107b15780635d098b38146107d15780636386c1c7146107f1578063640384091461082157600080fd5b806341d05b0814610720578063452ed4f1146107365780634a74bb02146107565780634fb2e45d1461077057600080fd5b806333251a0b116102d257806333251a0b146106b45780633c81385c146106d45780633f3cf56c146106ea578063401aa5c01461070a57600080fd5b8063255a2e5414610624578063260039571461065d5780632b112e491461067d578063313ce5671461069257600080fd5b806315fa749a1161037b5780631d6167ac1161034a5780631d6167ac146105b85780631db414ad146105ce578063201e7991146105e457806323b872dd1461060457600080fd5b806315fa749a1461055757806316f2f1a81461056d5780631793fe4e1461058357806318160ddd146105a357600080fd5b806309a8f179116103b757806309a8f179146104c65780630f3a325f146104e85780631161ae391461052157806312907bea1461054157600080fd5b806306fdde03146103f45780630758d9241461043a57806309094d6614610472578063095ea7b31461049657600080fd5b366103ef57005b600080fd5b34801561040057600080fd5b5060408051808201909152600b81526a043524f434b4554534849560ac1b60208201525b6040516104319190612f7e565b60405180910390f35b34801561044657600080fd5b5060285461045a906001600160a01b031681565b6040516001600160a01b039091168152602001610431565b34801561047e57600080fd5b50610488601d5481565b604051908152602001610431565b3480156104a257600080fd5b506104b66104b1366004612d62565b610c29565b6040519015158152602001610431565b3480156104d257600080fd5b506104e66104e1366004612ec6565b610c96565b005b3480156104f457600080fd5b506104b6610503366004612c96565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561052d57600080fd5b506104b661053c366004612ea4565b610d49565b34801561054d57600080fd5b50610488601c5481565b34801561056357600080fd5b50610488601f5481565b34801561057957600080fd5b5061048860145481565b34801561058f57600080fd5b506104e661059e366004612f20565b610d5d565b3480156105af57600080fd5b50600954610488565b3480156105c457600080fd5b5061048860105481565b3480156105da57600080fd5b50610488601b5481565b3480156105f057600080fd5b506104e66105ff366004612ea4565b610d9b565b34801561061057600080fd5b506104b661061f366004612cec565b610dd0565b34801561063057600080fd5b506104b661063f366004612c96565b6001600160a01b031660009081526004602052604090205460ff1690565b34801561066957600080fd5b506104e6610678366004612ea4565b610e90565b34801561068957600080fd5b50610488610f07565b34801561069e57600080fd5b5060075460405160ff9091168152602001610431565b3480156106c057600080fd5b506104e66106cf366004612c96565b610f4d565b3480156106e057600080fd5b50610488601e5481565b3480156106f657600080fd5b506104e6610705366004612ea4565b61100a565b34801561071657600080fd5b5061048860115481565b34801561072c57600080fd5b50610488601a5481565b34801561074257600080fd5b5060295461045a906001600160a01b031681565b34801561076257600080fd5b50603e546104b69060ff1681565b34801561077c57600080fd5b506104e661078b366004612c96565b61107c565b34801561079c57600080fd5b506041546104b6906301000000900460ff1681565b3480156107bd57600080fd5b506104b66107cc366004612c96565b611246565b3480156107dd57600080fd5b506104e66107ec366004612c96565b611254565b3480156107fd57600080fd5b5061081161080c366004612c96565b6112f4565b6040516104319493929190612f91565b34801561082d57600080fd5b5061048860345481565b34801561084357600080fd5b506104e6610852366004612d2d565b61138b565b34801561086357600080fd5b50610488610872366004612c96565b6001600160a01b031660009081526001602052604090205490565b34801561089957600080fd5b50602c5461045a906001600160a01b031681565b3480156108b957600080fd5b506104e66114ca565b3480156108ce57600080fd5b5061048860165481565b3480156108e457600080fd5b5061048860195481565b3480156108fa57600080fd5b5061048861156b565b34801561090f57600080fd5b5061048860175481565b34801561092557600080fd5b506000546001600160a01b031661045a565b34801561094357600080fd5b506040805180820190915260088152670910d493d0d2d15560c21b6020820152610424565b34801561097457600080fd5b506104e6611597565b34801561098957600080fd5b506104b6610998366004612d62565b6115f6565b3480156109a957600080fd5b506104b66109b8366004612c96565b6001600160a01b031660009081526003602052604090205460ff1690565b3480156109e257600080fd5b5061048860155481565b3480156109f857600080fd5b5061048860135481565b348015610a0e57600080fd5b5061048860185481565b348015610a2457600080fd5b506104e6610a33366004612e72565b61160a565b348015610a4457600080fd5b506104e6610a53366004612da9565b611648565b348015610a6457600080fd5b50610488610a73366004612e72565b611696565b348015610a8457600080fd5b506104e6610a93366004612d2d565b6116cf565b348015610aa457600080fd5b506104e6610ab3366004612d8e565b611724565b348015610ac457600080fd5b5061048860125481565b348015610ada57600080fd5b50610488610ae9366004612cb3565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b348015610b2057600080fd5b506104e6610b2f366004612ea4565b6117bc565b348015610b4057600080fd5b506104e6610b4f366004612d8e565b611806565b348015610b6057600080fd5b506104e6610b6f366004612f20565b611843565b348015610b8057600080fd5b5061048860445481565b348015610b9657600080fd5b506104e6610ba5366004612ea4565b6118af565b348015610bb657600080fd5b50603e546104b690610100900460ff1681565b348015610bd557600080fd5b506104e6610be4366004612f20565b6118f9565b348015610bf557600080fd5b5061048860395481565b348015610c0b57600080fd5b506104e6611965565b348015610c2057600080fd5b506104886119f4565b3360008181526002602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610c849086815260200190565b60405180910390a35060015b92915050565b6000546001600160a01b03163314610cc95760405162461bcd60e51b8152600401610cc090612fe9565b60405180910390fd5b610cd481600a61310c565b610cde90836131b4565b603c5460405163466bf81760e11b815260048101869052602481018390529193506001600160a01b031690638cd7f02e90604401600060405180830381600087803b158015610d2c57600080fd5b505af1158015610d40573d6000803e3d6000fd5b50505050505050565b600082610d5583611696565b119392505050565b6000546001600160a01b03163314610d875760405162461bcd60e51b8152600401610cc090612fe9565b602493909355602591909155602655602755565b6000546001600160a01b03163314610dc55760405162461bcd60e51b8152600401610cc090612fe9565b603a91909155603b55565b6001600160a01b038316600090815260026020908152604080832033845290915281205460001914610e7d576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600282528381203382529091529190912054610e58918490611a71565b6001600160a01b03851660009081526002602090815260408083203384529091529020555b610e88848484611aab565b949350505050565b6000546001600160a01b03163314610eba5760405162461bcd60e51b8152600401610cc090612fe9565b6103e8811115610ec957600080fd5b610ee881610ee284600954611d6a90919063ffffffff16565b90611de9565b603755610f0081610ee266038d7ea4c6800085611d6a565b6039555050565b602d546001600160a01b0390811660009081526001602052604080822054602c5490931682528120549091610f3b9161308f565b600954610f4891906131d3565b905090565b6000546001600160a01b03163314610f775760405162461bcd60e51b8152600401610cc090612fe9565b6001600160a01b03811660009081526005602052604090205460ff16610fe95760405162461bcd60e51b815260206004820152602160248201527f4163636f756e74206973206e6f742061207265636f7264656420736e697065726044820152601760f91b6064820152608401610cc0565b6001600160a01b03166000908152600560205260409020805460ff19169055565b6000546001600160a01b031633146110345760405162461bcd60e51b8152600401610cc090612fe9565b620f424081111561104457600080fd5b61105d81610ee284600954611d6a90919063ffffffff16565b60325561107581610ee266038d7ea4c6800085611d6a565b6034555050565b6000546001600160a01b031633146110a65760405162461bcd60e51b8152600401610cc090612fe9565b6001600160a01b0381166111225760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610cc0565b600080546001600160a01b039081168252600360208181526040808520805460ff1990811690915585548516865260048084528287208054831690558786168752938352818620805482166001908117909155939092528420805490911690911790559054602e548216911614156111b057602e80546001600160a01b0319166001600160a01b0383161790555b600080546001600160a01b0390811682526001602081815260408085205460028352818620878616875283528186205584549093168085529190529120546111fa91908390611aab565b50600080546001600160a01b0319166001600160a01b0383169081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6000610c9082600019610c29565b6000546001600160a01b0316331461127e5760405162461bcd60e51b8152600401610cc090612fe9565b602e546001600160a01b03828116911614156112d25760405162461bcd60e51b815260206004820152601360248201527257616c6c657420616c7265616479207365742160681b6044820152606401610cc0565b602e80546001600160a01b0319166001600160a01b0392909216919091179055565b603c54604051635e6056bb60e01b81526001600160a01b0383811660048301526060928392839283921690635e6056bb9060240160006040518083038186803b15801561134057600080fd5b505afa158015611354573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261137c9190810190612dc5565b93509350935093509193509193565b6000546001600160a01b031633146113b55760405162461bcd60e51b8152600401610cc090612fe9565b6001600160a01b03821630148015906113dc57506029546001600160a01b03838116911614155b6113e557600080fd5b6001600160a01b0382166000908152600460205260409020805460ff1916821580159190911790915561147d57603c54604051630a5b654b60e11b81526001600160a01b03848116600483015260006024830152909116906314b6ca96906044015b600060405180830381600087803b15801561146157600080fd5b505af1158015611475573d6000803e3d6000fd5b505050505050565b603c546001600160a01b0383811660008181526001602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401611447565b5050565b6000546001600160a01b031633146114f45760405162461bcd60e51b8152600401610cc090612fe9565b600080546001600160a01b039081168252600360209081526040808420805460ff19908116909155845490931684526004909152808320805490921690915581546001600160a01b03191682555181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b6000600e54600c54600b54600a54611583919061308f565b61158d919061308f565b610f48919061308f565b603c54604051632e6f0efd60e01b81523360048201526001600160a01b0390911690632e6f0efd90602401600060405180830381600087803b1580156115dc57600080fd5b505af11580156115f0573d6000803e3d6000fd5b50505050565b6000611603338484611aab565b9392505050565b6000546001600160a01b031633146116345760405162461bcd60e51b8152600401610cc090612fe9565b620b71b0811061164357600080fd5b603d55565b6000546001600160a01b031633146116725760405162461bcd60e51b8152600401610cc090612fe9565b603e805461ffff191692151561ff0019169290921761010091151591909102179055565b60006116a0610f07565b6029546001600160a01b03166000908152600160205260409020546116c590846131b4565b610c9091906130a7565b6000546001600160a01b031633146116f95760405162461bcd60e51b8152600401610cc090612fe9565b6001600160a01b03919091166000908152600360205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461174e5760405162461bcd60e51b8152600401610cc090612fe9565b604160029054906101000a900460ff16151581151514156117a05760405162461bcd60e51b815260206004820152600c60248201526b20b63932b0b23c9039b2ba1760a11b6044820152606401610cc0565b60418054911515620100000262ff000019909216919091179055565b6000546001600160a01b031633146117e65760405162461bcd60e51b8152600401610cc090612fe9565b6117ff81610ee284600954611d6a90919063ffffffff16565b603f555050565b6000546001600160a01b031633146118305760405162461bcd60e51b8152600401610cc090612fe9565b6041805460ff1916911515919091179055565b6000546001600160a01b0316331461186d5760405162461bcd60e51b8152600401610cc090612fe9565b611388818361187c868861308f565b611886919061308f565b611890919061308f565b111561189b57600080fd5b601293909355601191909155601355601455565b6000546001600160a01b031633146118d95760405162461bcd60e51b8152600401610cc090612fe9565b6118f281610ee284600954611d6a90919063ffffffff16565b6040555050565b6000546001600160a01b031633146119235760405162461bcd60e51b8152600401610cc090612fe9565b6113888183611932868861308f565b61193c919061308f565b611946919061308f565b111561195157600080fd5b601793909355601691909155601855601955565b6000546001600160a01b0316331461198f5760405162461bcd60e51b8152600401610cc090612fe9565b603c60009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0476040518263ffffffff1660e01b81526004016000604051808303818588803b1580156119df57600080fd5b505af1935050505080156119f1575060015b50565b603c5460408051630ad2bf4b60e31b815290516000926001600160a01b031691635695fa58916004808301926020929190829003018186803b158015611a3957600080fd5b505afa158015611a4d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f489190612e8b565b60008184841115611a955760405162461bcd60e51b8152600401610cc09190612f7e565b506000611aa284866131d3565b95945050505050565b60006001600160a01b038416611b115760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610cc0565b6001600160a01b038316611b735760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610cc0565b60008211611bd55760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610cc0565b611bdf8484611e2b565b15611c4757603254821115611c475760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610cc0565b611c518484611e2b565b8015611c6b5750602a546001600160a01b03848116911614155b8015611c8557506029546001600160a01b03848116911614155b15611d13576001600160a01b038316600090815260016020526040902054603754611cb0848361308f565b1115611d115760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201526930b63632ba29b4bd329760b11b6064820152608401610cc0565b505b6001600160a01b03841660009081526003602052604090205460019060ff1680611d5557506001600160a01b03841660009081526003602052604090205460ff165b15611d5e575060005b611aa285858584611ee8565b600082611d7957506000610c90565b6000611d8583856131b4565b905082611d9285836130a7565b146116035760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610cc0565b600061160383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506122b0565b600080546001600160a01b03848116911614801590611e5857506000546001600160a01b03838116911614155b8015611e7d57506001600160a01b03821660009081526006602052604090205460ff16155b8015611ea257506001600160a01b03831660009081526006602052604090205460ff16155b8015611ebc5750602c546001600160a01b03838116911614155b8015611ed057506001600160a01b03821615155b8015611603575050506001600160a01b031630141590565b60415460009062010000900460ff16156120f9576001600160a01b03851660009081526005602052604090205460ff1680611f3b57506001600160a01b03841660009081526005602052604090205460ff165b15611f7b5760405162461bcd60e51b815260206004820152601060248201526f29b734b832b9103932b532b1ba32b21760811b6044820152606401610cc0565b6041546301000000900460ff1661201557611f9685856122de565b6041546301000000900460ff16158015611fb55750611fb58585611e2b565b156120105760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79206f776e65722063616e207472616e736665722061742074686973206044820152643a34b6b29760d91b6064820152608401610cc0565b6120f9565b600060425411801561203457506029546001600160a01b038681169116145b801561204557506120458585611e2b565b156120f9577f00000000000000000000000000000000000000000000000000000000000000006042544361207991906131d3565b10156120f9576001600160a01b0384166000908152600560205260408120805460ff1916600117905560448054916120b083613216565b90915550506040516001600160a01b03851681527f18e6e5ce5c121466e41a954e72765d1ea02b8e6919043b61f0dab08b4c6572e59060200160405180910390a1506000610e88565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03881660009081526001909152919091205461214b918590611a71565b6001600160a01b038616600090815260016020526040902055604154610100900460ff16156121865761217f8585856123f3565b9050610e88565b61218f85612469565b306000908152600160205260409081902054905481106121ae57506040545b604154610100900460ff161580156121d457506029546001600160a01b03878116911614155b80156121e25750603e5460ff165b80156121f05750603f548110155b156121fe576121fe816124cf565b8383156122125761220f8786612852565b90505b6001600160a01b0386166000908152600160205260409020546122359082612960565b6001600160a01b038716600090815260016020526040902055603e54610100900460ff16156122685761226887876129bf565b856001600160a01b0316876001600160a01b03166000805160206132898339815191528360405161229b91815260200190565b60405180910390a35060019695505050505050565b600081836122d15760405162461bcd60e51b8152600401610cc09190612f7e565b506000611aa284866130a7565b6041546301000000900460ff16156123445760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401610cc0565b61234e8282611e2b565b15801561236857506029546001600160a01b038281169116145b156114c6576001600160a01b038216600090815260066020908152604091829020805460ff1990811660019081179092556041805463ff000000191663010000001790554360425542604355603e80549091168217905591519182527f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159910160405180910390a15050565b6001600160a01b03821660009081526001602052604081208054839190839061241d90849061308f565b92505081905550826001600160a01b0316846001600160a01b03166000805160206132898339815191528460405161245791815260200190565b60405180910390a35060019392505050565b6029546001600160a01b03828116911614156124a257601154600a55601254600b55601354600c55601454600d55601554600e556124c1565b601654600a55601754600b55601854600c55601954600d55601a54600e555b6124c961156b565b600f5550565b6041805461ff00191661010017905560275460265460255460245460009392916124f89161308f565b612502919061308f565b61250c919061308f565b9050600061251e603a54603b54610d49565b61252a5760255461252d565b60005b9050600060028361253e84876131b4565b61254891906130a7565b61255291906130a7565b9050600061256082866131d3565b6040805160028082526060820183529293506000929091602083019080368337019050509050308160008151811061259a5761259a613247565b6001600160a01b039283166020918202929092010152602b548251911690829060019081106125cb576125cb613247565b6001600160a01b03928316602091820292909201015260285460405163791ac94760e01b81524792919091169063791ac9479061261590869060009087903090429060040161301e565b600060405180830381600087803b15801561262f57600080fd5b505af1158015612643573d6000803e3d6000fd5b505060415447925060ff161590506126625761265f82476131d3565b90505b600061266f6002886130a7565b61267990896131d3565b9050600060028261268a8a866131b4565b61269491906130a7565b61269e91906130a7565b9050600082602454856126b191906131b4565b6126bb91906130a7565b905060006126c9828461308f565b6126d390866131d3565b90506126de81612b4c565b88156127c957602854602c5460405163f305d71960e01b8152306004820152602481018c905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990859060c4016060604051808303818588803b15801561274f57600080fd5b505af1158015612763573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906127889190612ef2565b505060408051858152602081018c90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a16127d6565b6127d3838361308f565b91505b603c60009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b15801561282657600080fd5b505af193505050508015612838575060015b5050506041805461ff001916905550505050505050505050565b60008060105461286061156b565b61286a90856131b4565b61287491906130a7565b90506000601054600d548561288991906131b4565b61289391906130a7565b306000908152600160205260408120805492935084929091906128b790849061308f565b909155505060405182815230906001600160a01b038716906000805160206132898339815191529060200160405180910390a3602c546001600160a01b03166000908152600160205260408120805483929061291490849061308f565b9091555050602c546040518281526001600160a01b03918216918716906000805160206132898339815191529060200160405180910390a3612956818361308f565b611aa290856131d3565b60008061296d838561308f565b9050838110156116035760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610cc0565b6001600160a01b03821660009081526004602052604090205460ff16612a5057603c546001600160a01b0383811660008181526001602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b158015612a3d57600080fd5b505af1925050508015612a4e575060015b505b6001600160a01b03811660009081526004602052604090205460ff16612ae157603c546001600160a01b0382811660008181526001602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b158015612ace57600080fd5b505af1925050508015612adf575060015b505b603c54603d546040516001624d3b8760e01b031981526001600160a01b039092169163ffb2c47991612b199160040190815260200190565b600060405180830381600087803b158015612b3357600080fd5b505af1925050508015612b44575060015b6114c6575050565b6000602754602654612b5e919061308f565b602654612b6b90846131b4565b612b7591906130a7565b90506000612b8382846131d3565b602e546040519192506001600160a01b03169083156108fc029084906000818181858888f19350505050158015612bbe573d6000803e3d6000fd5b50602f546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156115f0573d6000803e3d6000fd5b80358015158114612c0957600080fd5b919050565b600082601f830112612c1f57600080fd5b815167ffffffffffffffff80821115612c3a57612c3a61325d565b604051601f8301601f19908116603f01168101908282118183101715612c6257612c6261325d565b81604052838152866020858801011115612c7b57600080fd5b612c8c8460208301602089016131ea565b9695505050505050565b600060208284031215612ca857600080fd5b813561160381613273565b60008060408385031215612cc657600080fd5b8235612cd181613273565b91506020830135612ce181613273565b809150509250929050565b600080600060608486031215612d0157600080fd5b8335612d0c81613273565b92506020840135612d1c81613273565b929592945050506040919091013590565b60008060408385031215612d4057600080fd5b8235612d4b81613273565b9150612d5960208401612bf9565b90509250929050565b60008060408385031215612d7557600080fd5b8235612d8081613273565b946020939093013593505050565b600060208284031215612da057600080fd5b61160382612bf9565b60008060408385031215612dbc57600080fd5b612d4b83612bf9565b60008060008060808587031215612ddb57600080fd5b845167ffffffffffffffff80821115612df357600080fd5b612dff88838901612c0e565b95506020870151915080821115612e1557600080fd5b612e2188838901612c0e565b94506040870151915080821115612e3757600080fd5b612e4388838901612c0e565b93506060870151915080821115612e5957600080fd5b50612e6687828801612c0e565b91505092959194509250565b600060208284031215612e8457600080fd5b5035919050565b600060208284031215612e9d57600080fd5b5051919050565b60008060408385031215612eb757600080fd5b50508035926020909101359150565b600080600060608486031215612edb57600080fd5b505081359360208301359350604090920135919050565b600080600060608486031215612f0757600080fd5b8351925060208401519150604084015190509250925092565b60008060008060808587031215612f3657600080fd5b5050823594602084013594506040840135936060013592509050565b60008151808452612f6a8160208601602086016131ea565b601f01601f19169290920160200192915050565b6020815260006116036020830184612f52565b608081526000612fa46080830187612f52565b8281036020840152612fb68187612f52565b90508281036040840152612fca8186612f52565b90508281036060840152612fde8185612f52565b979650505050505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561306e5784516001600160a01b031683529383019391830191600101613049565b50506001600160a01b03969096166060850152505050608001529392505050565b600082198211156130a2576130a2613231565b500190565b6000826130c457634e487b7160e01b600052601260045260246000fd5b500490565b600181815b808511156131045781600019048211156130ea576130ea613231565b808516156130f757918102915b93841c93908002906130ce565b509250929050565b6000611603838360008261312257506001610c90565b8161312f57506000610c90565b8160018114613145576002811461314f5761316b565b6001915050610c90565b60ff84111561316057613160613231565b50506001821b610c90565b5060208310610133831016604e8410600b841016171561318e575081810a610c90565b61319883836130c9565b80600019048211156131ac576131ac613231565b029392505050565b60008160001904831182151516156131ce576131ce613231565b500290565b6000828210156131e5576131e5613231565b500390565b60005b838110156132055781810151838201526020016131ed565b838111156115f05750506000910152565b600060001982141561322a5761322a613231565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146119f157600080fdfeddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220fd71463bcc75c36caaa51830c46ffd3a314eb505380d7344df2a3a00726ae41964736f6c634300080700330000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4a174ccb5fb54a6721e11e0ca961e42715023f9
Deployed Bytecode
0x6080604052600436106103e85760003560e01c80636b639a2511610208578063d0b1449d11610118578063e1795033116100ab578063efe7dc901161007a578063efe7dc9014610baa578063f480fec214610bc9578063f6540ec714610be9578063f7727e1414610bff578063f7c245ea14610c1457600080fd5b8063e179503314610b34578063e4bf1bed14610b54578063e79d416014610b74578063ea4a145414610b8a57600080fd5b8063d7124d9f116100e7578063d7124d9f14610a98578063dc44b6a014610ab8578063dd62ed3e14610ace578063e0edd58614610b1457600080fd5b8063d0b1449d14610a18578063d4e43fb314610a38578063d51ed1c814610a58578063d63cad2214610a7857600080fd5b8063893d20e81161019b578063a9059cbb1161016a578063a9059cbb1461097d578063bca238aa1461099d578063c193e758146109d6578063c5d24189146109ec578063c860795214610a0257600080fd5b8063893d20e8146109195780638da5cb5b1461091957806395d89b41146109375780639dc676151461096857600080fd5b80637598f8bc116101d75780637598f8bc146108c25780637abdc1ca146108d85780637ae316d0146108ee57806388790a681461090357600080fd5b80636b639a251461083757806370a082311461085757806370d5ae051461088d578063715018a6146108ad57600080fd5b8063255a2e541161030357806341d05b081161029657806350a8e0161161026557806350a8e01614610790578063571ac8b0146107b15780635d098b38146107d15780636386c1c7146107f1578063640384091461082157600080fd5b806341d05b0814610720578063452ed4f1146107365780634a74bb02146107565780634fb2e45d1461077057600080fd5b806333251a0b116102d257806333251a0b146106b45780633c81385c146106d45780633f3cf56c146106ea578063401aa5c01461070a57600080fd5b8063255a2e5414610624578063260039571461065d5780632b112e491461067d578063313ce5671461069257600080fd5b806315fa749a1161037b5780631d6167ac1161034a5780631d6167ac146105b85780631db414ad146105ce578063201e7991146105e457806323b872dd1461060457600080fd5b806315fa749a1461055757806316f2f1a81461056d5780631793fe4e1461058357806318160ddd146105a357600080fd5b806309a8f179116103b757806309a8f179146104c65780630f3a325f146104e85780631161ae391461052157806312907bea1461054157600080fd5b806306fdde03146103f45780630758d9241461043a57806309094d6614610472578063095ea7b31461049657600080fd5b366103ef57005b600080fd5b34801561040057600080fd5b5060408051808201909152600b81526a043524f434b4554534849560ac1b60208201525b6040516104319190612f7e565b60405180910390f35b34801561044657600080fd5b5060285461045a906001600160a01b031681565b6040516001600160a01b039091168152602001610431565b34801561047e57600080fd5b50610488601d5481565b604051908152602001610431565b3480156104a257600080fd5b506104b66104b1366004612d62565b610c29565b6040519015158152602001610431565b3480156104d257600080fd5b506104e66104e1366004612ec6565b610c96565b005b3480156104f457600080fd5b506104b6610503366004612c96565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561052d57600080fd5b506104b661053c366004612ea4565b610d49565b34801561054d57600080fd5b50610488601c5481565b34801561056357600080fd5b50610488601f5481565b34801561057957600080fd5b5061048860145481565b34801561058f57600080fd5b506104e661059e366004612f20565b610d5d565b3480156105af57600080fd5b50600954610488565b3480156105c457600080fd5b5061048860105481565b3480156105da57600080fd5b50610488601b5481565b3480156105f057600080fd5b506104e66105ff366004612ea4565b610d9b565b34801561061057600080fd5b506104b661061f366004612cec565b610dd0565b34801561063057600080fd5b506104b661063f366004612c96565b6001600160a01b031660009081526004602052604090205460ff1690565b34801561066957600080fd5b506104e6610678366004612ea4565b610e90565b34801561068957600080fd5b50610488610f07565b34801561069e57600080fd5b5060075460405160ff9091168152602001610431565b3480156106c057600080fd5b506104e66106cf366004612c96565b610f4d565b3480156106e057600080fd5b50610488601e5481565b3480156106f657600080fd5b506104e6610705366004612ea4565b61100a565b34801561071657600080fd5b5061048860115481565b34801561072c57600080fd5b50610488601a5481565b34801561074257600080fd5b5060295461045a906001600160a01b031681565b34801561076257600080fd5b50603e546104b69060ff1681565b34801561077c57600080fd5b506104e661078b366004612c96565b61107c565b34801561079c57600080fd5b506041546104b6906301000000900460ff1681565b3480156107bd57600080fd5b506104b66107cc366004612c96565b611246565b3480156107dd57600080fd5b506104e66107ec366004612c96565b611254565b3480156107fd57600080fd5b5061081161080c366004612c96565b6112f4565b6040516104319493929190612f91565b34801561082d57600080fd5b5061048860345481565b34801561084357600080fd5b506104e6610852366004612d2d565b61138b565b34801561086357600080fd5b50610488610872366004612c96565b6001600160a01b031660009081526001602052604090205490565b34801561089957600080fd5b50602c5461045a906001600160a01b031681565b3480156108b957600080fd5b506104e66114ca565b3480156108ce57600080fd5b5061048860165481565b3480156108e457600080fd5b5061048860195481565b3480156108fa57600080fd5b5061048861156b565b34801561090f57600080fd5b5061048860175481565b34801561092557600080fd5b506000546001600160a01b031661045a565b34801561094357600080fd5b506040805180820190915260088152670910d493d0d2d15560c21b6020820152610424565b34801561097457600080fd5b506104e6611597565b34801561098957600080fd5b506104b6610998366004612d62565b6115f6565b3480156109a957600080fd5b506104b66109b8366004612c96565b6001600160a01b031660009081526003602052604090205460ff1690565b3480156109e257600080fd5b5061048860155481565b3480156109f857600080fd5b5061048860135481565b348015610a0e57600080fd5b5061048860185481565b348015610a2457600080fd5b506104e6610a33366004612e72565b61160a565b348015610a4457600080fd5b506104e6610a53366004612da9565b611648565b348015610a6457600080fd5b50610488610a73366004612e72565b611696565b348015610a8457600080fd5b506104e6610a93366004612d2d565b6116cf565b348015610aa457600080fd5b506104e6610ab3366004612d8e565b611724565b348015610ac457600080fd5b5061048860125481565b348015610ada57600080fd5b50610488610ae9366004612cb3565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b348015610b2057600080fd5b506104e6610b2f366004612ea4565b6117bc565b348015610b4057600080fd5b506104e6610b4f366004612d8e565b611806565b348015610b6057600080fd5b506104e6610b6f366004612f20565b611843565b348015610b8057600080fd5b5061048860445481565b348015610b9657600080fd5b506104e6610ba5366004612ea4565b6118af565b348015610bb657600080fd5b50603e546104b690610100900460ff1681565b348015610bd557600080fd5b506104e6610be4366004612f20565b6118f9565b348015610bf557600080fd5b5061048860395481565b348015610c0b57600080fd5b506104e6611965565b348015610c2057600080fd5b506104886119f4565b3360008181526002602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610c849086815260200190565b60405180910390a35060015b92915050565b6000546001600160a01b03163314610cc95760405162461bcd60e51b8152600401610cc090612fe9565b60405180910390fd5b610cd481600a61310c565b610cde90836131b4565b603c5460405163466bf81760e11b815260048101869052602481018390529193506001600160a01b031690638cd7f02e90604401600060405180830381600087803b158015610d2c57600080fd5b505af1158015610d40573d6000803e3d6000fd5b50505050505050565b600082610d5583611696565b119392505050565b6000546001600160a01b03163314610d875760405162461bcd60e51b8152600401610cc090612fe9565b602493909355602591909155602655602755565b6000546001600160a01b03163314610dc55760405162461bcd60e51b8152600401610cc090612fe9565b603a91909155603b55565b6001600160a01b038316600090815260026020908152604080832033845290915281205460001914610e7d576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600282528381203382529091529190912054610e58918490611a71565b6001600160a01b03851660009081526002602090815260408083203384529091529020555b610e88848484611aab565b949350505050565b6000546001600160a01b03163314610eba5760405162461bcd60e51b8152600401610cc090612fe9565b6103e8811115610ec957600080fd5b610ee881610ee284600954611d6a90919063ffffffff16565b90611de9565b603755610f0081610ee266038d7ea4c6800085611d6a565b6039555050565b602d546001600160a01b0390811660009081526001602052604080822054602c5490931682528120549091610f3b9161308f565b600954610f4891906131d3565b905090565b6000546001600160a01b03163314610f775760405162461bcd60e51b8152600401610cc090612fe9565b6001600160a01b03811660009081526005602052604090205460ff16610fe95760405162461bcd60e51b815260206004820152602160248201527f4163636f756e74206973206e6f742061207265636f7264656420736e697065726044820152601760f91b6064820152608401610cc0565b6001600160a01b03166000908152600560205260409020805460ff19169055565b6000546001600160a01b031633146110345760405162461bcd60e51b8152600401610cc090612fe9565b620f424081111561104457600080fd5b61105d81610ee284600954611d6a90919063ffffffff16565b60325561107581610ee266038d7ea4c6800085611d6a565b6034555050565b6000546001600160a01b031633146110a65760405162461bcd60e51b8152600401610cc090612fe9565b6001600160a01b0381166111225760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610cc0565b600080546001600160a01b039081168252600360208181526040808520805460ff1990811690915585548516865260048084528287208054831690558786168752938352818620805482166001908117909155939092528420805490911690911790559054602e548216911614156111b057602e80546001600160a01b0319166001600160a01b0383161790555b600080546001600160a01b0390811682526001602081815260408085205460028352818620878616875283528186205584549093168085529190529120546111fa91908390611aab565b50600080546001600160a01b0319166001600160a01b0383169081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6000610c9082600019610c29565b6000546001600160a01b0316331461127e5760405162461bcd60e51b8152600401610cc090612fe9565b602e546001600160a01b03828116911614156112d25760405162461bcd60e51b815260206004820152601360248201527257616c6c657420616c7265616479207365742160681b6044820152606401610cc0565b602e80546001600160a01b0319166001600160a01b0392909216919091179055565b603c54604051635e6056bb60e01b81526001600160a01b0383811660048301526060928392839283921690635e6056bb9060240160006040518083038186803b15801561134057600080fd5b505afa158015611354573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261137c9190810190612dc5565b93509350935093509193509193565b6000546001600160a01b031633146113b55760405162461bcd60e51b8152600401610cc090612fe9565b6001600160a01b03821630148015906113dc57506029546001600160a01b03838116911614155b6113e557600080fd5b6001600160a01b0382166000908152600460205260409020805460ff1916821580159190911790915561147d57603c54604051630a5b654b60e11b81526001600160a01b03848116600483015260006024830152909116906314b6ca96906044015b600060405180830381600087803b15801561146157600080fd5b505af1158015611475573d6000803e3d6000fd5b505050505050565b603c546001600160a01b0383811660008181526001602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401611447565b5050565b6000546001600160a01b031633146114f45760405162461bcd60e51b8152600401610cc090612fe9565b600080546001600160a01b039081168252600360209081526040808420805460ff19908116909155845490931684526004909152808320805490921690915581546001600160a01b03191682555181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b6000600e54600c54600b54600a54611583919061308f565b61158d919061308f565b610f48919061308f565b603c54604051632e6f0efd60e01b81523360048201526001600160a01b0390911690632e6f0efd90602401600060405180830381600087803b1580156115dc57600080fd5b505af11580156115f0573d6000803e3d6000fd5b50505050565b6000611603338484611aab565b9392505050565b6000546001600160a01b031633146116345760405162461bcd60e51b8152600401610cc090612fe9565b620b71b0811061164357600080fd5b603d55565b6000546001600160a01b031633146116725760405162461bcd60e51b8152600401610cc090612fe9565b603e805461ffff191692151561ff0019169290921761010091151591909102179055565b60006116a0610f07565b6029546001600160a01b03166000908152600160205260409020546116c590846131b4565b610c9091906130a7565b6000546001600160a01b031633146116f95760405162461bcd60e51b8152600401610cc090612fe9565b6001600160a01b03919091166000908152600360205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461174e5760405162461bcd60e51b8152600401610cc090612fe9565b604160029054906101000a900460ff16151581151514156117a05760405162461bcd60e51b815260206004820152600c60248201526b20b63932b0b23c9039b2ba1760a11b6044820152606401610cc0565b60418054911515620100000262ff000019909216919091179055565b6000546001600160a01b031633146117e65760405162461bcd60e51b8152600401610cc090612fe9565b6117ff81610ee284600954611d6a90919063ffffffff16565b603f555050565b6000546001600160a01b031633146118305760405162461bcd60e51b8152600401610cc090612fe9565b6041805460ff1916911515919091179055565b6000546001600160a01b0316331461186d5760405162461bcd60e51b8152600401610cc090612fe9565b611388818361187c868861308f565b611886919061308f565b611890919061308f565b111561189b57600080fd5b601293909355601191909155601355601455565b6000546001600160a01b031633146118d95760405162461bcd60e51b8152600401610cc090612fe9565b6118f281610ee284600954611d6a90919063ffffffff16565b6040555050565b6000546001600160a01b031633146119235760405162461bcd60e51b8152600401610cc090612fe9565b6113888183611932868861308f565b61193c919061308f565b611946919061308f565b111561195157600080fd5b601793909355601691909155601855601955565b6000546001600160a01b0316331461198f5760405162461bcd60e51b8152600401610cc090612fe9565b603c60009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0476040518263ffffffff1660e01b81526004016000604051808303818588803b1580156119df57600080fd5b505af1935050505080156119f1575060015b50565b603c5460408051630ad2bf4b60e31b815290516000926001600160a01b031691635695fa58916004808301926020929190829003018186803b158015611a3957600080fd5b505afa158015611a4d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f489190612e8b565b60008184841115611a955760405162461bcd60e51b8152600401610cc09190612f7e565b506000611aa284866131d3565b95945050505050565b60006001600160a01b038416611b115760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610cc0565b6001600160a01b038316611b735760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610cc0565b60008211611bd55760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610cc0565b611bdf8484611e2b565b15611c4757603254821115611c475760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610cc0565b611c518484611e2b565b8015611c6b5750602a546001600160a01b03848116911614155b8015611c8557506029546001600160a01b03848116911614155b15611d13576001600160a01b038316600090815260016020526040902054603754611cb0848361308f565b1115611d115760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201526930b63632ba29b4bd329760b11b6064820152608401610cc0565b505b6001600160a01b03841660009081526003602052604090205460019060ff1680611d5557506001600160a01b03841660009081526003602052604090205460ff165b15611d5e575060005b611aa285858584611ee8565b600082611d7957506000610c90565b6000611d8583856131b4565b905082611d9285836130a7565b146116035760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610cc0565b600061160383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506122b0565b600080546001600160a01b03848116911614801590611e5857506000546001600160a01b03838116911614155b8015611e7d57506001600160a01b03821660009081526006602052604090205460ff16155b8015611ea257506001600160a01b03831660009081526006602052604090205460ff16155b8015611ebc5750602c546001600160a01b03838116911614155b8015611ed057506001600160a01b03821615155b8015611603575050506001600160a01b031630141590565b60415460009062010000900460ff16156120f9576001600160a01b03851660009081526005602052604090205460ff1680611f3b57506001600160a01b03841660009081526005602052604090205460ff165b15611f7b5760405162461bcd60e51b815260206004820152601060248201526f29b734b832b9103932b532b1ba32b21760811b6044820152606401610cc0565b6041546301000000900460ff1661201557611f9685856122de565b6041546301000000900460ff16158015611fb55750611fb58585611e2b565b156120105760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79206f776e65722063616e207472616e736665722061742074686973206044820152643a34b6b29760d91b6064820152608401610cc0565b6120f9565b600060425411801561203457506029546001600160a01b038681169116145b801561204557506120458585611e2b565b156120f9577f00000000000000000000000000000000000000000000000000000000000000006042544361207991906131d3565b10156120f9576001600160a01b0384166000908152600560205260408120805460ff1916600117905560448054916120b083613216565b90915550506040516001600160a01b03851681527f18e6e5ce5c121466e41a954e72765d1ea02b8e6919043b61f0dab08b4c6572e59060200160405180910390a1506000610e88565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03881660009081526001909152919091205461214b918590611a71565b6001600160a01b038616600090815260016020526040902055604154610100900460ff16156121865761217f8585856123f3565b9050610e88565b61218f85612469565b306000908152600160205260409081902054905481106121ae57506040545b604154610100900460ff161580156121d457506029546001600160a01b03878116911614155b80156121e25750603e5460ff165b80156121f05750603f548110155b156121fe576121fe816124cf565b8383156122125761220f8786612852565b90505b6001600160a01b0386166000908152600160205260409020546122359082612960565b6001600160a01b038716600090815260016020526040902055603e54610100900460ff16156122685761226887876129bf565b856001600160a01b0316876001600160a01b03166000805160206132898339815191528360405161229b91815260200190565b60405180910390a35060019695505050505050565b600081836122d15760405162461bcd60e51b8152600401610cc09190612f7e565b506000611aa284866130a7565b6041546301000000900460ff16156123445760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401610cc0565b61234e8282611e2b565b15801561236857506029546001600160a01b038281169116145b156114c6576001600160a01b038216600090815260066020908152604091829020805460ff1990811660019081179092556041805463ff000000191663010000001790554360425542604355603e80549091168217905591519182527f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159910160405180910390a15050565b6001600160a01b03821660009081526001602052604081208054839190839061241d90849061308f565b92505081905550826001600160a01b0316846001600160a01b03166000805160206132898339815191528460405161245791815260200190565b60405180910390a35060019392505050565b6029546001600160a01b03828116911614156124a257601154600a55601254600b55601354600c55601454600d55601554600e556124c1565b601654600a55601754600b55601854600c55601954600d55601a54600e555b6124c961156b565b600f5550565b6041805461ff00191661010017905560275460265460255460245460009392916124f89161308f565b612502919061308f565b61250c919061308f565b9050600061251e603a54603b54610d49565b61252a5760255461252d565b60005b9050600060028361253e84876131b4565b61254891906130a7565b61255291906130a7565b9050600061256082866131d3565b6040805160028082526060820183529293506000929091602083019080368337019050509050308160008151811061259a5761259a613247565b6001600160a01b039283166020918202929092010152602b548251911690829060019081106125cb576125cb613247565b6001600160a01b03928316602091820292909201015260285460405163791ac94760e01b81524792919091169063791ac9479061261590869060009087903090429060040161301e565b600060405180830381600087803b15801561262f57600080fd5b505af1158015612643573d6000803e3d6000fd5b505060415447925060ff161590506126625761265f82476131d3565b90505b600061266f6002886130a7565b61267990896131d3565b9050600060028261268a8a866131b4565b61269491906130a7565b61269e91906130a7565b9050600082602454856126b191906131b4565b6126bb91906130a7565b905060006126c9828461308f565b6126d390866131d3565b90506126de81612b4c565b88156127c957602854602c5460405163f305d71960e01b8152306004820152602481018c905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990859060c4016060604051808303818588803b15801561274f57600080fd5b505af1158015612763573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906127889190612ef2565b505060408051858152602081018c90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a16127d6565b6127d3838361308f565b91505b603c60009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b15801561282657600080fd5b505af193505050508015612838575060015b5050506041805461ff001916905550505050505050505050565b60008060105461286061156b565b61286a90856131b4565b61287491906130a7565b90506000601054600d548561288991906131b4565b61289391906130a7565b306000908152600160205260408120805492935084929091906128b790849061308f565b909155505060405182815230906001600160a01b038716906000805160206132898339815191529060200160405180910390a3602c546001600160a01b03166000908152600160205260408120805483929061291490849061308f565b9091555050602c546040518281526001600160a01b03918216918716906000805160206132898339815191529060200160405180910390a3612956818361308f565b611aa290856131d3565b60008061296d838561308f565b9050838110156116035760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610cc0565b6001600160a01b03821660009081526004602052604090205460ff16612a5057603c546001600160a01b0383811660008181526001602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b158015612a3d57600080fd5b505af1925050508015612a4e575060015b505b6001600160a01b03811660009081526004602052604090205460ff16612ae157603c546001600160a01b0382811660008181526001602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b158015612ace57600080fd5b505af1925050508015612adf575060015b505b603c54603d546040516001624d3b8760e01b031981526001600160a01b039092169163ffb2c47991612b199160040190815260200190565b600060405180830381600087803b158015612b3357600080fd5b505af1925050508015612b44575060015b6114c6575050565b6000602754602654612b5e919061308f565b602654612b6b90846131b4565b612b7591906130a7565b90506000612b8382846131d3565b602e546040519192506001600160a01b03169083156108fc029084906000818181858888f19350505050158015612bbe573d6000803e3d6000fd5b50602f546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156115f0573d6000803e3d6000fd5b80358015158114612c0957600080fd5b919050565b600082601f830112612c1f57600080fd5b815167ffffffffffffffff80821115612c3a57612c3a61325d565b604051601f8301601f19908116603f01168101908282118183101715612c6257612c6261325d565b81604052838152866020858801011115612c7b57600080fd5b612c8c8460208301602089016131ea565b9695505050505050565b600060208284031215612ca857600080fd5b813561160381613273565b60008060408385031215612cc657600080fd5b8235612cd181613273565b91506020830135612ce181613273565b809150509250929050565b600080600060608486031215612d0157600080fd5b8335612d0c81613273565b92506020840135612d1c81613273565b929592945050506040919091013590565b60008060408385031215612d4057600080fd5b8235612d4b81613273565b9150612d5960208401612bf9565b90509250929050565b60008060408385031215612d7557600080fd5b8235612d8081613273565b946020939093013593505050565b600060208284031215612da057600080fd5b61160382612bf9565b60008060408385031215612dbc57600080fd5b612d4b83612bf9565b60008060008060808587031215612ddb57600080fd5b845167ffffffffffffffff80821115612df357600080fd5b612dff88838901612c0e565b95506020870151915080821115612e1557600080fd5b612e2188838901612c0e565b94506040870151915080821115612e3757600080fd5b612e4388838901612c0e565b93506060870151915080821115612e5957600080fd5b50612e6687828801612c0e565b91505092959194509250565b600060208284031215612e8457600080fd5b5035919050565b600060208284031215612e9d57600080fd5b5051919050565b60008060408385031215612eb757600080fd5b50508035926020909101359150565b600080600060608486031215612edb57600080fd5b505081359360208301359350604090920135919050565b600080600060608486031215612f0757600080fd5b8351925060208401519150604084015190509250925092565b60008060008060808587031215612f3657600080fd5b5050823594602084013594506040840135936060013592509050565b60008151808452612f6a8160208601602086016131ea565b601f01601f19169290920160200192915050565b6020815260006116036020830184612f52565b608081526000612fa46080830187612f52565b8281036020840152612fb68187612f52565b90508281036040840152612fca8186612f52565b90508281036060840152612fde8185612f52565b979650505050505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561306e5784516001600160a01b031683529383019391830191600101613049565b50506001600160a01b03969096166060850152505050608001529392505050565b600082198211156130a2576130a2613231565b500190565b6000826130c457634e487b7160e01b600052601260045260246000fd5b500490565b600181815b808511156131045781600019048211156130ea576130ea613231565b808516156130f757918102915b93841c93908002906130ce565b509250929050565b6000611603838360008261312257506001610c90565b8161312f57506000610c90565b8160018114613145576002811461314f5761316b565b6001915050610c90565b60ff84111561316057613160613231565b50506001821b610c90565b5060208310610133831016604e8410600b841016171561318e575081810a610c90565b61319883836130c9565b80600019048211156131ac576131ac613231565b029392505050565b60008160001904831182151516156131ce576131ce613231565b500290565b6000828210156131e5576131e5613231565b500390565b60005b838110156132055781810151838201526020016131ed565b838111156115f05750506000910152565b600060001982141561322a5761322a613231565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146119f157600080fdfeddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220fd71463bcc75c36caaa51830c46ffd3a314eb505380d7344df2a3a00726ae41964736f6c63430008070033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4a174ccb5fb54a6721e11e0ca961e42715023f9
-----Decoded View---------------
Arg [0] : _snipeBlockAmt (uint256): 0
Arg [1] : cInitializer (address): 0xc4a174ccb5fb54a6721e11e0ca961e42715023f9
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [1] : 000000000000000000000000c4a174ccb5fb54a6721e11e0ca961e42715023f9
Deployed ByteCode Sourcemap
20192:23605:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28432:80;;;;;;;;;;-1:-1:-1;28504:5:0;;;;;;;;;;;;-1:-1:-1;;;28504:5:0;;;;28432:80;;;;;;;:::i;:::-;;;;;;;;22749:35;;;;;;;;;;-1:-1:-1;22749:35:0;;;;-1:-1:-1;;;;;22749:35:0;;;;;;-1:-1:-1;;;;;6366:32:1;;;6348:51;;6336:2;6321:18;22749:35:0;6202:203:1;22155:38:0;;;;;;;;;;;;;;;;;;;14937:25:1;;;14925:2;14910:18;22155:38:0;14791:177:1;28854:216:0;;;;;;;;;;-1:-1:-1;28854:216:0;;;;;:::i;:::-;;:::i;:::-;;;7753:14:1;;7746:22;7728:41;;7716:2;7701:18;28854:216:0;7588:187:1;33281:277:0;;;;;;;;;;-1:-1:-1;33281:277:0;;;;;:::i;:::-;;:::i;:::-;;30091:106;;;;;;;;;;-1:-1:-1;30091:106:0;;;;;:::i;:::-;-1:-1:-1;;;;;30171:18:0;30147:4;30171:18;;;:9;:18;;;;;;;;;30091:106;34136:150;;;;;;;;;;-1:-1:-1;34136:150:0;;;;;:::i;:::-;;:::i;22110:38::-;;;;;;;;;;;;;;;;22240:36;;;;;;;;;;;;;;;;21766:30;;;;;;;;;;;;;;;;32099:267;;;;;;;;;;-1:-1:-1;32099:267:0;;;;;:::i;:::-;;:::i;28167:83::-;;;;;;;;;;-1:-1:-1;28240:7:0;;28167:83;;21575:39;;;;;;;;;;;;;;;;22064;;;;;;;;;;;;;;;;33091:182;;;;;;;;;;-1:-1:-1;33091:182:0;;;;;:::i;:::-;;:::i;29715:368::-;;;;;;;;;;-1:-1:-1;29715:368:0;;;;;:::i;:::-;;:::i;30328:125::-;;;;;;;;;;-1:-1:-1;30328:125:0;;;;;:::i;:::-;-1:-1:-1;;;;;30417:28:0;30393:4;30417:28;;;:19;:28;;;;;;;;;30328:125;35019:284;;;;;;;;;;-1:-1:-1;35019:284:0;;;;;:::i;:::-;;:::i;33824:140::-;;;;;;;;;;;;;:::i;28256:80::-;;;;;;;;;;-1:-1:-1;28324:9:0;;28256:80;;28324:9;;;;16353:36:1;;16341:2;16326:18;28256:80:0;16211:184:1;30461:180:0;;;;;;;;;;-1:-1:-1;30461:180:0;;;;;:::i;:::-;;:::i;22200:33::-;;;;;;;;;;;;;;;;34728:283;;;;;;;;;;-1:-1:-1;34728:283:0;;;;;:::i;:::-;;:::i;21635:36::-;;;;;;;;;;;;;;;;22019;;;;;;;;;;;;;;;;22791:21;;;;;;;;;;-1:-1:-1;22791:21:0;;;;-1:-1:-1;;;;;22791:21:0;;;24168:40;;;;;;;;;;-1:-1:-1;24168:40:0;;;;;;;;27220:657;;;;;;;;;;-1:-1:-1;27220:657:0;;;;;:::i;:::-;;:::i;24466:36::-;;;;;;;;;;-1:-1:-1;24466:36:0;;;;;;;;;;;29078:120;;;;;;;;;;-1:-1:-1;29078:120:0;;;;;:::i;:::-;;:::i;32374:202::-;;;;;;;;;;-1:-1:-1;32374:202:0;;;;;:::i;:::-;;:::i;34528:192::-;;;;;;;;;;-1:-1:-1;34528:192:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;23543:77::-;;;;;;;;;;;;;;;;30836:350;;;;;;;;;;-1:-1:-1;30836:350:0;;;;;:::i;:::-;;:::i;28604:103::-;;;;;;;;;;-1:-1:-1;28604:103:0;;;;;:::i;:::-;-1:-1:-1;;;;;28688:16:0;28670:7;28688:16;;;:7;:16;;;;;;;28604:103;22951:71;;;;;;;;;;-1:-1:-1;22951:71:0;;;;-1:-1:-1;;;;;22951:71:0;;;27885:237;;;;;;;;;;;;;:::i;21847:37::-;;;;;;;;;;;;;;;;21981:31;;;;;;;;;;;;;;;;40197:139;;;;;;;;;;;;;:::i;21891:38::-;;;;;;;;;;;;;;;;28518:80;;;;;;;;;;-1:-1:-1;28570:7:0;27198:6;-1:-1:-1;;;;;27198:6:0;28518:80;33824:140;28342:84;;;;;;;;;;-1:-1:-1;28416:7:0;;;;;;;;;;;;-1:-1:-1;;;28416:7:0;;;;28342:84;;34294:100;;;;;;;;;;;;;:::i;29555:152::-;;;;;;;;;;-1:-1:-1;29555:152:0;;;;;:::i;:::-;;:::i;30205:115::-;;;;;;;;;;-1:-1:-1;30205:115:0;;;;;:::i;:::-;-1:-1:-1;;;;;30289:23:0;30265:4;30289:23;;;:14;:23;;;;;;;;;30205:115;21803:35;;;;;;;;;;;;;;;;21722:37;;;;;;;;;;;;;;;;21936:38;;;;;;;;;;;;;;;;33566:131;;;;;;;;;;-1:-1:-1;33566:131:0;;;;;:::i;:::-;;:::i;32586:191::-;;;;;;;;;;-1:-1:-1;32586:191:0;;;;;:::i;:::-;;:::i;33972:156::-;;;;;;;;;;-1:-1:-1;33972:156:0;;;;;:::i;:::-;;:::i;31194:128::-;;;;;;;;;;-1:-1:-1;31194:128:0;;;;;:::i;:::-;;:::i;30649:179::-;;;;;;;;;;-1:-1:-1;30649:179:0;;;;;:::i;:::-;;:::i;21678:37::-;;;;;;;;;;;;;;;;28713:133;;;;;;;;;;-1:-1:-1;28713:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;28815:19:0;;;28797:7;28815:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;28713:133;32785:149;;;;;;;;;;-1:-1:-1;32785:149:0;;;;;:::i;:::-;;:::i;33705:111::-;;;;;;;;;;-1:-1:-1;33705:111:0;;;;;:::i;:::-;;:::i;31330:374::-;;;;;;;;;;-1:-1:-1;31330:374:0;;;;;:::i;:::-;;:::i;24633:32::-;;;;;;;;;;;;;;;;32942:141;;;;;;;;;;-1:-1:-1;32942:141:0;;;;;:::i;:::-;;:::i;24215:34::-;;;;;;;;;;-1:-1:-1;24215:34:0;;;;;;;;;;;31712:379;;;;;;;;;;-1:-1:-1;31712:379:0;;;;;:::i;:::-;;:::i;23899:87::-;;;;;;;;;;;;;;;;43130:128;;;;;;;;;;;;;:::i;34402:118::-;;;;;;;;;;;;;:::i;28854:216::-;28958:10;28929:4;28946:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;28946:32:0;;;;;;;;;;:41;;;29003:37;28929:4;;28946:32;;29003:37;;;;28981:6;14937:25:1;;14925:2;14910:18;;14791:177;29003:37:0;;;;;;;;-1:-1:-1;29058:4:0;28854:216;;;;;:::o;33281:277::-;24811:6;;-1:-1:-1;;;;;24811:6:0;24821:10;24811:20;24803:65;;;;-1:-1:-1;;;24803:65:0;;;;;;;:::i;:::-;;;;;;;;;33453:27:::1;33457:23:::0;33453:2:::1;:27;:::i;:::-;33436:44;::::0;:14;:44:::1;:::i;:::-;33491:9;::::0;:59:::1;::::0;-1:-1:-1;;;33491:59:0;;::::1;::::0;::::1;16132:25:1::0;;;16173:18;;;16166:34;;;33419:61:0;;-1:-1:-1;;;;;;33491:9:0::1;::::0;:31:::1;::::0;16105:18:1;;33491:59:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;33281:277:::0;;;:::o;34136:150::-;34216:4;34272:6;34240:29;34260:8;34240:19;:29::i;:::-;:38;;34136:150;-1:-1:-1;;;34136:150:0:o;32099:267::-;24811:6;;-1:-1:-1;;;;;24811:6:0;24821:10;24811:20;24803:65;;;;-1:-1:-1;;;24803:65:0;;;;;;;:::i;:::-;32223:15:::1;:28:::0;;;;32262:14:::1;:26:::0;;;;32299:14:::1;:26:::0;32336:12:::1;:22:::0;32099:267::o;33091:182::-;24811:6;;-1:-1:-1;;;;;24811:6:0;24821:10;24811:20;24803:65;;;;-1:-1:-1;;;24803:65:0;;;;;;;:::i;:::-;33188:15:::1;:25:::0;;;;33224:26:::1;:41:::0;33091:182::o;29715:368::-;-1:-1:-1;;;;;29836:19:0;;29815:4;29836:19;;;:11;:19;;;;;;;;29856:10;29836:31;;;;;;;;-1:-1:-1;;29836:52:0;29832:188;;29939:69;;;;;;;;;;;-1:-1:-1;;;29939:69:0;;;;;;;;-1:-1:-1;;;;;29939:19:0;;-1:-1:-1;29939:19:0;;;:11;:19;;;;;29959:10;29939:31;;;;;;;;;;:69;;29975:6;;29939:35;:69::i;:::-;-1:-1:-1;;;;;29905:19:0;;;;;;:11;:19;;;;;;;;29925:10;29905:31;;;;;;;:103;29832:188;30039:36;30049:6;30057:9;30068:6;30039:9;:36::i;:::-;30032:43;29715:368;-1:-1:-1;;;;29715:368:0:o;35019:284::-;24811:6;;-1:-1:-1;;;;;24811:6:0;24821:10;24811:20;24803:65;;;;-1:-1:-1;;;24803:65:0;;;;;;;:::i;:::-;35130:4:::1;35119:7;:15;;35111:24;;;::::0;::::1;;35193:33;35218:7;35193:20;35205:7;35193;;:11;;:20;;;;:::i;:::-;:24:::0;::::1;:33::i;:::-;35176:14;:50:::0;35255:40:::1;35287:7:::0;35255:27:::1;20831:21;35274:7:::0;35255:18:::1;:27::i;:40::-;35237:15;:58:::0;-1:-1:-1;;35019:284:0:o;33824:140::-;33950:4;;-1:-1:-1;;;;;33950:4:0;;;33877:7;28688:16;;;:7;:16;;;;;;;33925:11;;;;;28688:16;;;;;33877:7;;33915:40;;;:::i;:::-;33904:7;;:52;;;;:::i;:::-;33897:59;;33824:140;:::o;30461:180::-;24811:6;;-1:-1:-1;;;;;24811:6:0;24821:10;24811:20;24803:65;;;;-1:-1:-1;;;24803:65:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;30540:18:0;::::1;;::::0;;;:9:::1;:18;::::0;;;;;::::1;;30532:64;;;::::0;-1:-1:-1;;;30532:64:0;;14161:2:1;30532:64:0::1;::::0;::::1;14143:21:1::0;14200:2;14180:18;;;14173:30;14239:34;14219:18;;;14212:62;-1:-1:-1;;;14290:18:1;;;14283:31;14331:19;;30532:64:0::1;13959:397:1::0;30532:64:0::1;-1:-1:-1::0;;;;;30607:18:0::1;30628:5;30607:18:::0;;;:9:::1;:18;::::0;;;;:26;;-1:-1:-1;;30607:26:0::1;::::0;;30461:180::o;34728:283::-;24811:6;;-1:-1:-1;;;;;24811:6:0;24821:10;24811:20;24803:65;;;;-1:-1:-1;;;24803:65:0;;;;;;;:::i;:::-;34838:7:::1;34827;:18;;34819:27;;;::::0;::::1;;34903:33;34928:7;34903:20;34915:7;34903;;:11;;:20;;;;:::i;:33::-;34888:12;:48:::0;34963:40:::1;34995:7:::0;34963:27:::1;20831:21;34982:7:::0;34963:18:::1;:27::i;:40::-;34947:13;:56:::0;-1:-1:-1;;34728:283:0:o;27220:657::-;24811:6;;-1:-1:-1;;;;;24811:6:0;24821:10;24811:20;24803:65;;;;-1:-1:-1;;;24803:65:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;27301:22:0;::::1;27293:96;;;::::0;-1:-1:-1;;;27293:96:0;;14563:2:1;27293:96:0::1;::::0;::::1;14545:21:1::0;14602:2;14582:18;;;14575:30;14641:34;14621:18;;;14614:62;14712:31;14692:18;;;14685:59;14761:19;;27293:96:0::1;14361:425:1::0;27293:96:0::1;27425:5;27415:6:::0;;-1:-1:-1;;;;;27415:6:0;;::::1;27400:22:::0;;:14:::1;:22;::::0;;;;;;;:30;;-1:-1:-1;;27400:30:0;;::::1;::::0;;;27461:6;;;::::1;27441:27:::0;;:19:::1;:27:::0;;;;;;:35;;;::::1;::::0;;27487:24;;::::1;::::0;;;;;;;;:31;;;::::1;27415:6:::0;27487:31;;::::1;::::0;;;27529:29;;;;;;:36;;;;::::1;::::0;;::::1;::::0;;27610:6;;27582:16:::1;::::0;;::::1;27610:6:::0;::::1;27582:35;27578:90;;;27632:16;:36:::0;;-1:-1:-1;;;;;;27632:36:0::1;-1:-1:-1::0;;;;;27632:36:0;::::1;;::::0;;27578:90:::1;27713:15;27721:6:::0;;-1:-1:-1;;;;;27721:6:0;;::::1;27713:15:::0;;:7:::1;:15;::::0;;;;;;;;27681:11:::1;:19:::0;;;;;:29;;::::1;::::0;;;;;;;:47;27749:6;;;;::::1;27767:15:::0;;;;;;;;;27739:44:::1;::::0;27749:6;27701:8;;27739:9:::1;:44::i;:::-;-1:-1:-1::0;27796:6:0::1;:17:::0;;-1:-1:-1;;;;;;27796:17:0::1;-1:-1:-1::0;;;;;27796:17:0;::::1;::::0;;::::1;::::0;;27829:38:::1;::::0;27796:17;;;;27829:38:::1;::::0;27796:6;27829:38:::1;27220:657:::0;:::o;29078:120::-;29131:4;29155:35;29163:7;-1:-1:-1;;29155:7:0;:35::i;32374:202::-;24811:6;;-1:-1:-1;;;;;24811:6:0;24821:10;24811:20;24803:65;;;;-1:-1:-1;;;24803:65:0;;;;;;;:::i;:::-;32467:16:::1;::::0;-1:-1:-1;;;;;32467:29:0;;::::1;:16:::0;::::1;:29;;32459:61;;;::::0;-1:-1:-1;;;32459:61:0;;11069:2:1;32459:61:0::1;::::0;::::1;11051:21:1::0;11108:2;11088:18;;;11081:30;-1:-1:-1;;;11127:18:1;;;11120:49;11186:18;;32459:61:0::1;10867:343:1::0;32459:61:0::1;32531:16;:37:::0;;-1:-1:-1;;;;;;32531:37:0::1;-1:-1:-1::0;;;;;32531:37:0;;;::::1;::::0;;;::::1;::::0;;32374:202::o;34528:192::-;34671:9;;:41;;-1:-1:-1;;;34671:41:0;;-1:-1:-1;;;;;6366:32:1;;;34671:41:0;;;6348:51:1;34593:13:0;;;;;;;;34671:9;;:28;;6321:18:1;;34671:41:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;34671:41:0;;;;;;;;;;;;:::i;:::-;34664:48;;;;;;;;34528:192;;;;;:::o;30836:350::-;24811:6;;-1:-1:-1;;;;;24811:6:0;24821:10;24811:20;24803:65;;;;-1:-1:-1;;;24803:65:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;30931:23:0;::::1;30949:4;30931:23;::::0;::::1;::::0;:43:::1;;-1:-1:-1::0;30968:6:0::1;::::0;-1:-1:-1;;;;;30958:16:0;;::::1;30968:6:::0;::::1;30958:16;;30931:43;30923:52;;;::::0;::::1;;-1:-1:-1::0;;;;;30986:27:0;::::1;;::::0;;;:19:::1;:27;::::0;;;;:37;;-1:-1:-1;;30986:37:0::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;;;31034:145:::1;;31062:9;::::0;:29:::1;::::0;-1:-1:-1;;;31062:29:0;;-1:-1:-1;;;;;6610:32:1;;;31062:29:0::1;::::0;::::1;6592:51:1::0;31062:9:0::1;6659:18:1::0;;;6652:34;31062:9:0;;::::1;::::0;:18:::1;::::0;6565::1;;31062:29:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;30836:350:::0;;:::o;31034:145::-:1;31124:9;::::0;-1:-1:-1;;;;;31151:15:0;;::::1;31124:9;31151:15:::0;;;31124:9;31151:15:::1;::::0;;;;;;;31124:43;;-1:-1:-1;;;31124:43:0;;::::1;::::0;::::1;6592:51:1::0;;;;6659:18;;;6652:34;31124:9:0;::::1;::::0;:18:::1;::::0;6565::1;;31124:43:0::1;6410:282:1::0;31034:145:0::1;30836:350:::0;;:::o;27885:237::-;24811:6;;-1:-1:-1;;;;;24811:6:0;24821:10;24811:20;24803:65;;;;-1:-1:-1;;;24803:65:0;;;;;;;:::i;:::-;27977:5:::1;27967:6:::0;;-1:-1:-1;;;;;27967:6:0;;::::1;27952:22:::0;;:14:::1;:22;::::0;;;;;;;:30;;-1:-1:-1;;27952:30:0;;::::1;::::0;;;28013:6;;;;::::1;27993:27:::0;;:19:::1;:27:::0;;;;;;:35;;;;::::1;::::0;;;28039:19;;-1:-1:-1;;;;;;28039:19:0::1;::::0;;28074:40;27977:5;;28074:40:::1;::::0;27977:5;;28074:40:::1;27885:237::o:0;40197:139::-;40241:7;40317:11;;40301:13;;40285;;40268:14;;:30;;;;:::i;:::-;:46;;;;:::i;:::-;:60;;;;:::i;34294:100::-;34345:9;;:41;;-1:-1:-1;;;34345:41:0;;34375:10;34345:41;;;6348:51:1;-1:-1:-1;;;;;34345:9:0;;;;:29;;6321:18:1;;34345:41:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34294:100::o;29555:152::-;29635:4;29659:40;29669:10;29681:9;29692:6;29659:9;:40::i;:::-;29652:47;29555:152;-1:-1:-1;;;29555:152:0:o;33566:131::-;24811:6;;-1:-1:-1;;;;;24811:6:0;24821:10;24811:20;24803:65;;;;-1:-1:-1;;;24803:65:0;;;;;;;:::i;:::-;33653:6:::1;33647:3;:12;33639:21;;;::::0;::::1;;33671:12;:18:::0;33566:131::o;32586:191::-;24811:6;;-1:-1:-1;;;;;24811:6:0;24821:10;24811:20;24803:65;;;;-1:-1:-1;;;24803:65:0;;;;;;;:::i;:::-;32688:21:::1;:32:::0;;-1:-1:-1;;32731:38:0;32688:32;::::1;;-1:-1:-1::0;;32731:38:0;;;;;32688:32:::1;32731:38:::0;::::1;;::::0;;;::::1;;::::0;;32586:191::o;33972:156::-;34040:7;34098:22;:20;:22::i;:::-;34088:6;;-1:-1:-1;;;;;34088:6:0;28670:7;28688:16;;;:7;:16;;;;;;34067:28;;:8;:28;:::i;:::-;:53;;;;:::i;31194:128::-;24811:6;;-1:-1:-1;;;;;24811:6:0;24821:10;24811:20;24803:65;;;;-1:-1:-1;;;24803:65:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;31281:23:0;;;::::1;;::::0;;;:14:::1;:23;::::0;;;;:33;;-1:-1:-1;;31281:33:0::1;::::0;::::1;;::::0;;;::::1;::::0;;31194:128::o;30649:179::-;24811:6;;-1:-1:-1;;;;;24811:6:0;24821:10;24811:20;24803:65;;;;-1:-1:-1;;;24803:65:0;;;;;;;:::i;:::-;30750:16:::1;;;;;;;;;;;30739:27;;:7;:27;;;;30731:52;;;::::0;-1:-1:-1;;;30731:52:0;;9562:2:1;30731:52:0::1;::::0;::::1;9544:21:1::0;9601:2;9581:18;;;9574:30;-1:-1:-1;;;9620:18:1;;;9613:42;9672:18;;30731:52:0::1;9360:336:1::0;30731:52:0::1;30794:16;:26:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;30794:26:0;;::::1;::::0;;;::::1;::::0;;30649:179::o;32785:149::-;24811:6;;-1:-1:-1;;;;;24811:6:0;24821:10;24811:20;24803:65;;;;-1:-1:-1;;;24803:65:0;;;;;;;:::i;:::-;32893:33:::1;32918:7;32893:20;32905:7;32893;;:11;;:20;;;;:::i;:33::-;32877:13;:49:::0;-1:-1:-1;;32785:149:0:o;33705:111::-;24811:6;;-1:-1:-1;;;;;24811:6:0;24821:10;24811:20;24803:65;;;;-1:-1:-1;;;24803:65:0;;;;;;;:::i;:::-;33781:17:::1;:27:::0;;-1:-1:-1;;33781:27:0::1;::::0;::::1;;::::0;;;::::1;::::0;;33705:111::o;31330:374::-;24811:6;;-1:-1:-1;;;;;24811:6:0;24821:10;24811:20;24803:65;;;;-1:-1:-1;;;24803:65:0;;;;;;;:::i;:::-;31531:4:::1;31520:7:::0;31504:12;31473:28:::1;31488:13:::0;31473:12;:28:::1;:::i;:::-;:43;;;;:::i;:::-;:54;;;;:::i;:::-;:62;;31465:71;;;::::0;::::1;;31547:16;:31:::0;;;;31589:17:::1;:33:::0;;;;31633:16:::1;:31:::0;31675:11:::1;:21:::0;31330:374::o;32942:141::-;24811:6;;-1:-1:-1;;;;;24811:6:0;24821:10;24811:20;24803:65;;;;-1:-1:-1;;;24803:65:0;;;;;;;:::i;:::-;33042:33:::1;33067:7;33042:20;33054:7;33042;;:11;;:20;;;;:::i;:33::-;33029:10;:46:::0;-1:-1:-1;;32942:141:0:o;31712:379::-;24811:6;;-1:-1:-1;;;;;24811:6:0;24821:10;24811:20;24803:65;;;;-1:-1:-1;;;24803:65:0;;;;;;;:::i;:::-;31914:4:::1;31903:7:::0;31887:12;31856:28:::1;31871:13:::0;31856:12;:28:::1;:::i;:::-;:43;;;;:::i;:::-;:54;;;;:::i;:::-;:62;;31848:71;;;::::0;::::1;;31930:17;:32:::0;;;;31973:18:::1;:34:::0;;;;32018:17:::1;:32:::0;32061:12:::1;:22:::0;31712:379::o;43130:128::-;24811:6;;-1:-1:-1;;;;;24811:6:0;24821:10;24811:20;24803:65;;;;-1:-1:-1;;;24803:65:0;;;;;;;:::i;:::-;43190:9:::1;;;;;;;;;-1:-1:-1::0;;;;;43190:9:0::1;-1:-1:-1::0;;;;;43190:17:0::1;;43215:21;43190:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;43186:65:::0;43130:128::o;34402:118::-;34481:9;;:31;;;-1:-1:-1;;;34481:31:0;;;;34454:7;;-1:-1:-1;;;;;34481:9:0;;:29;;:31;;;;;;;;;;;;;;:9;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;5263:192::-;5349:7;5385:12;5377:6;;;;5369:29;;;;-1:-1:-1;;;5369:29:0;;;;;;;;:::i;:::-;-1:-1:-1;5409:9:0;5421:5;5425:1;5421;:5;:::i;:::-;5409:17;5263:192;-1:-1:-1;;;;;5263:192:0:o;35651:949::-;35730:4;-1:-1:-1;;;;;35755:18:0;;35747:68;;;;-1:-1:-1;;;35747:68:0;;13755:2:1;35747:68:0;;;13737:21:1;13794:2;13774:18;;;13767:30;13833:34;13813:18;;;13806:62;-1:-1:-1;;;13884:18:1;;;13877:35;13929:19;;35747:68:0;13553:401:1;35747:68:0;-1:-1:-1;;;;;35834:16:0;;35826:64;;;;-1:-1:-1;;;35826:64:0;;9158:2:1;35826:64:0;;;9140:21:1;9197:2;9177:18;;;9170:30;9236:34;9216:18;;;9209:62;-1:-1:-1;;;9287:18:1;;;9280:33;9330:19;;35826:64:0;8956:399:1;35826:64:0;35918:1;35909:6;:10;35901:64;;;;-1:-1:-1;;;35901:64:0;;13000:2:1;35901:64:0;;;12982:21:1;13039:2;13019:18;;;13012:30;13078:34;13058:18;;;13051:62;-1:-1:-1;;;13129:18:1;;;13122:39;13178:19;;35901:64:0;12798:405:1;35901:64:0;35979:20;35990:4;35996:2;35979:10;:20::i;:::-;35976:113;;;36032:12;;36022:6;:22;;36014:75;;;;-1:-1:-1;;;36014:75:0;;11417:2:1;36014:75:0;;;11399:21:1;11456:2;11436:18;;;11429:30;11495:34;11475:18;;;11468:62;-1:-1:-1;;;11546:18:1;;;11539:38;11594:19;;36014:75:0;11215:404:1;36014:75:0;36103:20;36114:4;36120:2;36103:10;:20::i;:::-;:57;;;;-1:-1:-1;36146:14:0;;-1:-1:-1;;;;;36140:20:0;;;36146:14;;36140:20;;36103:57;:86;;;;-1:-1:-1;36183:6:0;;-1:-1:-1;;;;;36177:12:0;;;36183:6;;36177:12;;36103:86;36100:297;;;-1:-1:-1;;;;;28688:16:0;;36216:32;28688:16;;;:7;:16;;;;;;36324:14;;36287:33;36314:6;28688:16;36287:33;:::i;:::-;:51;;36279:106;;;;-1:-1:-1;;;36279:106:0;;11826:2:1;36279:106:0;;;11808:21:1;11865:2;11845:18;;;11838:30;11904:34;11884:18;;;11877:62;-1:-1:-1;;;11955:18:1;;;11948:40;12005:19;;36279:106:0;11624:406:1;36279:106:0;36201:196;36100:297;-1:-1:-1;;;;;36444:20:0;;36409:12;36444:20;;;:14;:20;;;;;;36424:4;;36444:20;;;:42;;-1:-1:-1;;;;;;36468:18:0;;;;;;:14;:18;;;;;;;;36444:42;36441:88;;;-1:-1:-1;36512:5:0;36441:88;36548:44;36566:4;36572:2;36576:6;36584:7;36548:17;:44::i;5714:471::-;5772:7;6017:6;6013:47;;-1:-1:-1;6047:1:0;6040:8;;6013:47;6072:9;6084:5;6088:1;6084;:5;:::i;:::-;6072:17;-1:-1:-1;6117:1:0;6108:5;6112:1;6072:17;6108:5;:::i;:::-;:10;6100:56;;;;-1:-1:-1;;;6100:56:0;;12237:2:1;6100:56:0;;;12219:21:1;12276:2;12256:18;;;12249:30;12315:34;12295:18;;;12288:62;-1:-1:-1;;;12366:18:1;;;12359:31;12407:19;;6100:56:0;12035:397:1;6661:132:0;6719:7;6746:39;6750:1;6753;6746:39;;;;;;;;;;;;;;;;;:3;:39::i;35313:330::-;35381:4;27198:6;;-1:-1:-1;;;;;35405:15:0;;;27198:6;;35405:15;;;;:45;;-1:-1:-1;27171:7:0;27198:6;-1:-1:-1;;;;;35437:13:0;;;27198:6;;35437:13;;35405:45;:84;;;;-1:-1:-1;;;;;;35468:21:0;;;;;;:17;:21;;;;;;;;35467:22;35405:84;:125;;;;-1:-1:-1;;;;;;35507:23:0;;;;;;:17;:23;;;;;;;;35506:24;35405:125;:159;;;;-1:-1:-1;35553:11:0;;-1:-1:-1;;;;;35547:17:0;;;35553:11;;35547:17;;35405:159;:192;;;;-1:-1:-1;;;;;;35581:16:0;;;;35405:192;:230;;;;-1:-1:-1;;;;;;;;35614:21:0;35630:4;35614:21;;;35313:330::o;37215:2108::-;37395:16;;37316:4;;37395:16;;;;;37391:1007;;;-1:-1:-1;;;;;30171:18:0;;30147:4;30171:18;;;:9;:18;;;;;;;;37499:30;;;-1:-1:-1;;;;;;30171:18:0;;30147:4;30171:18;;;:9;:18;;;;;;;;37517:12;37495:97;;;37550:26;;-1:-1:-1;;;37550:26:0;;13410:2:1;37550:26:0;;;13392:21:1;13449:2;13429:18;;;13422:30;-1:-1:-1;;;13468:18:1;;;13461:46;13524:18;;37550:26:0;13208:340:1;37495:97:0;37682:16;;;;;;;37677:710;;37719:28;37738:4;37744:2;37719:18;:28::i;:::-;37775:16;;;;;;;37774:17;:41;;;;;37795:20;37806:4;37812:2;37795:10;:20::i;:::-;37770:145;;;37844:47;;-1:-1:-1;;;37844:47:0;;10663:2:1;37844:47:0;;;10645:21:1;10702:2;10682:18;;;10675:30;10741:34;10721:18;;;10714:62;-1:-1:-1;;;10792:18:1;;;10785:35;10837:19;;37844:47:0;10461:401:1;37770:145:0;37677:710;;;37974:1;37959:12;;:16;:55;;;;-1:-1:-1;38008:6:0;;-1:-1:-1;;;;;38000:14:0;;;38008:6;;38000:14;37959:55;:100;;;;;38039:20;38050:4;38056:2;38039:10;:20::i;:::-;37955:417;;;38136:13;38121:12;;38106;:27;;;;:::i;:::-;:43;38102:251;;;-1:-1:-1;;;;;38178:13:0;;;;;;:9;:13;;;;;:20;;-1:-1:-1;;38178:20:0;38194:4;38178:20;;;38225:13;:16;;;;;;:::i;:::-;;;;-1:-1:-1;;38273:16:0;;-1:-1:-1;;;;;6366:32:1;;6348:51;;38273:16:0;;6336:2:1;6321:18;38273:16:0;;;;;;;-1:-1:-1;38323:5:0;38316:13;;38102:251;38426:49;;;;;;;;;;;-1:-1:-1;;;38426:49:0;;;;;;;;-1:-1:-1;;;;;38426:13:0;;-1:-1:-1;38426:13:0;;;:7;:13;;;;;;;;:49;;38444:6;;38426:17;:49::i;:::-;-1:-1:-1;;;;;38410:13:0;;;;;;:7;:13;;;;;:65;38492:6;;;;;;;38488:78;;;38522:32;38537:4;38543:2;38547:6;38522:14;:32::i;:::-;38515:39;;;;38488:78;38578:17;38590:4;38578:11;:17::i;:::-;38655:4;38608:28;38639:22;;;:7;:22;;;;;;;;38699:10;;38675:34;;38672:85;;-1:-1:-1;38747:10:0;;38672:85;38775:6;;;;;;;38774:7;:38;;;;-1:-1:-1;38806:6:0;;-1:-1:-1;;;;;38798:14:0;;;38806:6;;38798:14;;38774:38;:76;;;;-1:-1:-1;38829:21:0;;;;38774:76;:130;;;;;38891:13;;38867:20;:37;;38774:130;38770:203;;;38931:30;38940:20;38931:8;:30::i;:::-;39010:6;39029:80;;;;39074:23;39084:4;39090:6;39074:9;:23::i;:::-;39057:40;;39029:80;-1:-1:-1;;;;;39135:11:0;;;;;;:7;:11;;;;;;:31;;39151:14;39135:15;:31::i;:::-;-1:-1:-1;;;;;39121:11:0;;;;;;:7;:11;;;;;:45;39183:14;;;;;;;39179:62;;;39212:29;39232:4;39238:2;39212:19;:29::i;:::-;39274:2;-1:-1:-1;;;;;39259:34:0;39268:4;-1:-1:-1;;;;;39259:34:0;-1:-1:-1;;;;;;;;;;;39278:14:0;39259:34;;;;14937:25:1;;14925:2;14910:18;;14791:177;39259:34:0;;;;;;;;-1:-1:-1;39311:4:0;;37215:2108;-1:-1:-1;;;;;;37215:2108:0:o;7289:278::-;7375:7;7410:12;7403:5;7395:28;;;;-1:-1:-1;;;7395:28:0;;;;;;;;:::i;:::-;-1:-1:-1;7434:9:0;7446:5;7450:1;7446;:5;:::i;43266:528::-;43348:16;;;;;;;43347:17;43339:65;;;;-1:-1:-1;;;43339:65:0;;9903:2:1;43339:65:0;;;9885:21:1;9942:2;9922:18;;;9915:30;9981:34;9961:18;;;9954:62;-1:-1:-1;;;10032:18:1;;;10025:33;10075:19;;43339:65:0;9701:399:1;43339:65:0;43420:20;43431:4;43437:2;43420:10;:20::i;:::-;43419:21;:37;;;;-1:-1:-1;43450:6:0;;-1:-1:-1;;;;;43444:12:0;;;43450:6;;43444:12;43419:37;43415:372;;;-1:-1:-1;;;;;43473:23:0;;;;;;:17;:23;;;;;;;;;:30;;-1:-1:-1;;43473:30:0;;;43499:4;43473:30;;;;;;43518:16;:23;;-1:-1:-1;;43518:23:0;;;;;43571:12;43556;:27;43613:15;43598:12;:30;43645:21;:28;;;;;;;;;43741:34;;7728:41:1;;;43741:34:0;;7701:18:1;43741:34:0;;;;;;;43266:528;;:::o;39970:219::-;-1:-1:-1;;;;;40080:18:0;;40063:4;40080:18;;;:7;:18;;;;;:28;;40102:6;;40080:18;40063:4;;40080:28;;40102:6;;40080:28;:::i;:::-;;;;;;;;40141:9;-1:-1:-1;;;;;40124:35:0;40133:6;-1:-1:-1;;;;;40124:35:0;-1:-1:-1;;;;;;;;;;;40152:6:0;40124:35;;;;14937:25:1;;14925:2;14910:18;;14791:177;40124:35:0;;;;;;;;-1:-1:-1;40177:4:0;39970:219;;;;;:::o;36608:599::-;36675:6;;-1:-1:-1;;;;;36667:14:0;;;36675:6;;36667:14;36663:501;;;36715:17;;36698:14;:34;36763:16;;36747:13;:32;36810:16;;36794:13;:32;36852:11;;36841:8;:22;36892:14;;36878:11;:28;36663:501;;;36956:18;;36939:14;:35;37005:17;;36989:13;:33;37053:17;;-1:-1:-1;37037:33:0;37096:12;;37085:8;:23;37137:15;;37123:11;:29;36663:501;37186:13;:11;:13::i;:::-;37174:9;:25;-1:-1:-1;36608:599:0:o;40841:1944::-;24705:6;:13;;-1:-1:-1;;24705:13:0;;;;;40988:12:::1;::::0;40971:14:::1;::::0;40954::::1;::::0;40936:15:::1;::::0;24705:13;;40988:12;40971:14;40936:32:::1;::::0;::::1;:::i;:::-;:49;;;;:::i;:::-;:64;;;;:::i;:::-;40913:87;;41011:27;41041:60;41057:15;;41074:26;;41041:15;:60::i;:::-;:81;;41108:14;;41041:81;;;41104:1;41041:81;41011:111:::0;-1:-1:-1;41133:23:0::1;41214:1;41199:12:::0;41159:37:::1;41011:111:::0;41159:15;:37:::1;:::i;:::-;:52;;;;:::i;:::-;:56;;;;:::i;:::-;41133:82:::0;-1:-1:-1;41226:20:0::1;41249:33;41133:82:::0;41249:15;:33:::1;:::i;:::-;41319:16;::::0;;41333:1:::1;41319:16:::0;;;;;::::1;::::0;;41226:56;;-1:-1:-1;41295:21:0::1;::::0;41319:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;41319:16:0::1;41295:40;;41364:4;41346;41351:1;41346:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;41346:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;41390:4:::1;::::0;41380:7;;41390:4;::::1;::::0;41380;;41390;;41380:7;::::1;;;;;:::i;:::-;-1:-1:-1::0;;;;;41380:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;:14;41465:9:::1;::::0;:191:::1;::::0;-1:-1:-1;;;41465:191:0;;41431:21:::1;::::0;41465:9;;;::::1;::::0;:60:::1;::::0;:191:::1;::::0;41540:12;;41407:21:::1;::::0;41583:4;;41610::::1;::::0;41630:15:::1;::::0;41465:191:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;41725:17:0::1;::::0;41689:21:::1;::::0;-1:-1:-1;41725:17:0::1;;41721:85;::::0;-1:-1:-1;41721:85:0::1;;41769:37;41793:13:::0;41769:21:::1;:37;:::i;:::-;41757:49;;41721:85;41817:19;41855:23;41877:1;41855:19:::0;:23:::1;:::i;:::-;41839:40;::::0;:12;:40:::1;:::i;:::-;41817:62:::0;-1:-1:-1;41890:26:0::1;41967:1;41817:62:::0;41919:31:::1;41931:19:::0;41919:9;:31:::1;:::i;:::-;:45;;;;:::i;:::-;:49;;;;:::i;:::-;41890:78;;41979:27;42039:11;42021:15;;42009:9;:27;;;;:::i;:::-;:41;;;;:::i;:::-;41979:71:::0;-1:-1:-1;42061:26:0::1;42103:40;41979:71:::0;42103:18;:40:::1;:::i;:::-;42090:54;::::0;:9;:54:::1;:::i;:::-;42061:83;;42155:34;42170:18;42155:14;:34::i;:::-;42206:19:::0;;42202:501:::1;;42242:9;::::0;42419:11:::1;::::0;42242:237:::1;::::0;-1:-1:-1;;;42242:237:0;;42321:4:::1;42242:237;::::0;::::1;7317:34:1::0;7367:18;;;7360:34;;;42242:9:0::1;7410:18:1::0;;;7403:34;;;7453:18;;;7446:34;-1:-1:-1;;;;;42419:11:0;;::::1;7496:19:1::0;;;7489:44;42449:15:0::1;7549:19:1::0;;;7542:35;42242:9:0;::::1;::::0;:25:::1;::::0;42275:18;;7251:19:1;;42242:237:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;42499:48:0::1;::::0;;16132:25:1;;;16188:2;16173:18;;16166:34;;;42499:48:0::1;::::0;-1:-1:-1;16105:18:1;42499:48:0::1;;;;;;;42202:501;;;42650:41;42673:18:::0;42650:41;::::1;:::i;:::-;;;42202:501;42719:9;;;;;;;;;-1:-1:-1::0;;;;;42719:9:0::1;-1:-1:-1::0;;;;;42719:17:0::1;;42744:19;42719:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;42715:63:::0;-1:-1:-1;;24741:6:0;:14;;-1:-1:-1;;24741:14:0;;;-1:-1:-1;;;;;;;;;;40841:1944:0:o;40344:489::-;40413:7;40433:17;40478:16;;40462:13;:11;:13::i;:::-;40453:22;;:6;:22;:::i;:::-;:41;;;;:::i;:::-;40433:61;;40505:18;40546:16;;40535:8;;40526:6;:17;;;;:::i;:::-;:36;;;;:::i;:::-;40591:4;40575:22;;;;:7;:22;;;;;:35;;40505:57;;-1:-1:-1;40601:9:0;;40575:22;;;:35;;40601:9;;40575:35;:::i;:::-;;;;-1:-1:-1;;40626:42:0;;14937:25:1;;;40651:4:0;;-1:-1:-1;;;;;40626:42:0;;;-1:-1:-1;;;;;;;;;;;40626:42:0;14925:2:1;14910:18;40626:42:0;;;;;;;40689:11;;-1:-1:-1;;;;;40689:11:0;40681:20;;;;:7;:20;;;;;:34;;40705:10;;40681:20;:34;;40705:10;;40681:34;:::i;:::-;;;;-1:-1:-1;;40748:11:0;;40731:41;;14937:25:1;;;-1:-1:-1;;;;;40748:11:0;;;;40731:41;;;-1:-1:-1;;;;;;;;;;;40731:41:0;14925:2:1;14910:18;40731:41:0;;;;;;;40802:22;40814:10;40802:9;:22;:::i;:::-;40792:33;;:6;:33;:::i;4345:181::-;4403:7;;4435:5;4439:1;4435;:5;:::i;:::-;4423:17;;4464:1;4459;:6;;4451:46;;;;-1:-1:-1;;;4451:46:0;;10307:2:1;4451:46:0;;;10289:21:1;10346:2;10326:18;;;10319:30;10385:29;10365:18;;;10358:57;10432:18;;4451:46:0;10105:351:1;39558:404:0;-1:-1:-1;;;;;39673:25:0;;;;;;:19;:25;;;;;;;;39668:113;;39719:9;;-1:-1:-1;;;;;39744:13:0;;;39719:9;39744:13;;;39719:9;39744:13;;;;;;;;39719:39;;-1:-1:-1;;;39719:39:0;;;;;6592:51:1;;;;6659:18;;;6652:34;39719:9:0;;;:18;;6565::1;;39719:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39715:55;;-1:-1:-1;;;;;39796:23:0;;;;;;:19;:23;;;;;;;;39791:107;;39840:9;;-1:-1:-1;;;;;39863:11:0;;;39840:9;39863:11;;;39840:9;39863:11;;;;;;;;39840:35;;-1:-1:-1;;;39840:35:0;;;;;6592:51:1;;;;6659:18;;;6652:34;39840:9:0;;;:18;;6565::1;;39840:35:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39836:51;;39912:9;;39930:12;;39912:31;;-1:-1:-1;;;;;;39912:31:0;;-1:-1:-1;;;;;39912:9:0;;;;:17;;:31;;;;14937:25:1;;;14925:2;14910:18;;14791:177;39912:31:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39908:47;;30836:350;;:::o;42793:329::-;42853:26;42928:12;;42911:14;;:29;;;;:::i;:::-;42892:14;;42883:23;;:6;:23;:::i;:::-;42882:59;;;;:::i;:::-;42853:88;-1:-1:-1;42952:24:0;42979:27;42853:88;42979:6;:27;:::i;:::-;43017:16;;:45;;42952:54;;-1:-1:-1;;;;;;43017:16:0;;:45;;;;;43043:18;;43017:16;:45;:16;:45;43043:18;43017:16;:45;;;;;;;;;;;;;;;;;;;;-1:-1:-1;43073:14:0;;:41;;-1:-1:-1;;;;;43073:14:0;;;;:41;;;;;43097:16;;43073:14;:41;:14;:41;43097:16;43073:14;:41;;;;;;;;;;;;;;;;;;;14:160:1;79:20;;135:13;;128:21;118:32;;108:60;;164:1;161;154:12;108:60;14:160;;;:::o;179:686::-;233:5;286:3;279:4;271:6;267:17;263:27;253:55;;304:1;301;294:12;253:55;333:6;327:13;359:18;396:2;392;389:10;386:36;;;402:18;;:::i;:::-;477:2;471:9;445:2;531:13;;-1:-1:-1;;527:22:1;;;551:2;523:31;519:40;507:53;;;575:18;;;595:22;;;572:46;569:72;;;621:18;;:::i;:::-;661:10;657:2;650:22;696:2;688:6;681:18;742:3;735:4;730:2;722:6;718:15;714:26;711:35;708:55;;;759:1;756;749:12;708:55;772:63;832:2;825:4;817:6;813:17;806:4;798:6;794:17;772:63;:::i;:::-;853:6;179:686;-1:-1:-1;;;;;;179:686:1:o;870:247::-;929:6;982:2;970:9;961:7;957:23;953:32;950:52;;;998:1;995;988:12;950:52;1037:9;1024:23;1056:31;1081:5;1056:31;:::i;1382:388::-;1450:6;1458;1511:2;1499:9;1490:7;1486:23;1482:32;1479:52;;;1527:1;1524;1517:12;1479:52;1566:9;1553:23;1585:31;1610:5;1585:31;:::i;:::-;1635:5;-1:-1:-1;1692:2:1;1677:18;;1664:32;1705:33;1664:32;1705:33;:::i;:::-;1757:7;1747:17;;;1382:388;;;;;:::o;1775:456::-;1852:6;1860;1868;1921:2;1909:9;1900:7;1896:23;1892:32;1889:52;;;1937:1;1934;1927:12;1889:52;1976:9;1963:23;1995:31;2020:5;1995:31;:::i;:::-;2045:5;-1:-1:-1;2102:2:1;2087:18;;2074:32;2115:33;2074:32;2115:33;:::i;:::-;1775:456;;2167:7;;-1:-1:-1;;;2221:2:1;2206:18;;;;2193:32;;1775:456::o;2236:315::-;2301:6;2309;2362:2;2350:9;2341:7;2337:23;2333:32;2330:52;;;2378:1;2375;2368:12;2330:52;2417:9;2404:23;2436:31;2461:5;2436:31;:::i;:::-;2486:5;-1:-1:-1;2510:35:1;2541:2;2526:18;;2510:35;:::i;:::-;2500:45;;2236:315;;;;;:::o;2556:::-;2624:6;2632;2685:2;2673:9;2664:7;2660:23;2656:32;2653:52;;;2701:1;2698;2691:12;2653:52;2740:9;2727:23;2759:31;2784:5;2759:31;:::i;:::-;2809:5;2861:2;2846:18;;;;2833:32;;-1:-1:-1;;;2556:315:1:o;2876:180::-;2932:6;2985:2;2973:9;2964:7;2960:23;2956:32;2953:52;;;3001:1;2998;2991:12;2953:52;3024:26;3040:9;3024:26;:::i;3061:248::-;3123:6;3131;3184:2;3172:9;3163:7;3159:23;3155:32;3152:52;;;3200:1;3197;3190:12;3152:52;3223:26;3239:9;3223:26;:::i;3314:971::-;3451:6;3459;3467;3475;3528:3;3516:9;3507:7;3503:23;3499:33;3496:53;;;3545:1;3542;3535:12;3496:53;3578:9;3572:16;3607:18;3648:2;3640:6;3637:14;3634:34;;;3664:1;3661;3654:12;3634:34;3687:61;3740:7;3731:6;3720:9;3716:22;3687:61;:::i;:::-;3677:71;;3794:2;3783:9;3779:18;3773:25;3757:41;;3823:2;3813:8;3810:16;3807:36;;;3839:1;3836;3829:12;3807:36;3862:63;3917:7;3906:8;3895:9;3891:24;3862:63;:::i;:::-;3852:73;;3971:2;3960:9;3956:18;3950:25;3934:41;;4000:2;3990:8;3987:16;3984:36;;;4016:1;4013;4006:12;3984:36;4039:63;4094:7;4083:8;4072:9;4068:24;4039:63;:::i;:::-;4029:73;;4148:2;4137:9;4133:18;4127:25;4111:41;;4177:2;4167:8;4164:16;4161:36;;;4193:1;4190;4183:12;4161:36;;4216:63;4271:7;4260:8;4249:9;4245:24;4216:63;:::i;:::-;4206:73;;;3314:971;;;;;;;:::o;4290:180::-;4349:6;4402:2;4390:9;4381:7;4377:23;4373:32;4370:52;;;4418:1;4415;4408:12;4370:52;-1:-1:-1;4441:23:1;;4290:180;-1:-1:-1;4290:180:1:o;4475:184::-;4545:6;4598:2;4586:9;4577:7;4573:23;4569:32;4566:52;;;4614:1;4611;4604:12;4566:52;-1:-1:-1;4637:16:1;;4475:184;-1:-1:-1;4475:184:1:o;4664:248::-;4732:6;4740;4793:2;4781:9;4772:7;4768:23;4764:32;4761:52;;;4809:1;4806;4799:12;4761:52;-1:-1:-1;;4832:23:1;;;4902:2;4887:18;;;4874:32;;-1:-1:-1;4664:248:1:o;4917:316::-;4994:6;5002;5010;5063:2;5051:9;5042:7;5038:23;5034:32;5031:52;;;5079:1;5076;5069:12;5031:52;-1:-1:-1;;5102:23:1;;;5172:2;5157:18;;5144:32;;-1:-1:-1;5223:2:1;5208:18;;;5195:32;;4917:316;-1:-1:-1;4917:316:1:o;5238:306::-;5326:6;5334;5342;5395:2;5383:9;5374:7;5370:23;5366:32;5363:52;;;5411:1;5408;5401:12;5363:52;5440:9;5434:16;5424:26;;5490:2;5479:9;5475:18;5469:25;5459:35;;5534:2;5523:9;5519:18;5513:25;5503:35;;5238:306;;;;;:::o;5549:385::-;5635:6;5643;5651;5659;5712:3;5700:9;5691:7;5687:23;5683:33;5680:53;;;5729:1;5726;5719:12;5680:53;-1:-1:-1;;5752:23:1;;;5822:2;5807:18;;5794:32;;-1:-1:-1;5873:2:1;5858:18;;5845:32;;5924:2;5909:18;5896:32;;-1:-1:-1;5549:385:1;-1:-1:-1;5549:385:1:o;5939:258::-;5981:3;6019:5;6013:12;6046:6;6041:3;6034:19;6062:63;6118:6;6111:4;6106:3;6102:14;6095:4;6088:5;6084:16;6062:63;:::i;:::-;6179:2;6158:15;-1:-1:-1;;6154:29:1;6145:39;;;;6186:4;6141:50;;5939:258;-1:-1:-1;;5939:258:1:o;8015:220::-;8164:2;8153:9;8146:21;8127:4;8184:45;8225:2;8214:9;8210:18;8202:6;8184:45;:::i;8240:711::-;8533:3;8522:9;8515:22;8496:4;8560:46;8601:3;8590:9;8586:19;8578:6;8560:46;:::i;:::-;8654:9;8646:6;8642:22;8637:2;8626:9;8622:18;8615:50;8688:33;8714:6;8706;8688:33;:::i;:::-;8674:47;;8769:9;8761:6;8757:22;8752:2;8741:9;8737:18;8730:50;8803:33;8829:6;8821;8803:33;:::i;:::-;8789:47;;8884:9;8876:6;8872:22;8867:2;8856:9;8852:18;8845:50;8912:33;8938:6;8930;8912:33;:::i;:::-;8904:41;8240:711;-1:-1:-1;;;;;;;8240:711:1:o;12437:356::-;12639:2;12621:21;;;12658:18;;;12651:30;12717:34;12712:2;12697:18;;12690:62;12784:2;12769:18;;12437:356::o;14973:980::-;15235:4;15283:3;15272:9;15268:19;15314:6;15303:9;15296:25;15340:2;15378:6;15373:2;15362:9;15358:18;15351:34;15421:3;15416:2;15405:9;15401:18;15394:31;15445:6;15480;15474:13;15511:6;15503;15496:22;15549:3;15538:9;15534:19;15527:26;;15588:2;15580:6;15576:15;15562:29;;15609:1;15619:195;15633:6;15630:1;15627:13;15619:195;;;15698:13;;-1:-1:-1;;;;;15694:39:1;15682:52;;15789:15;;;;15754:12;;;;15730:1;15648:9;15619:195;;;-1:-1:-1;;;;;;;15870:32:1;;;;15865:2;15850:18;;15843:60;-1:-1:-1;;;15934:3:1;15919:19;15912:35;15831:3;14973:980;-1:-1:-1;;;14973:980:1:o;16400:128::-;16440:3;16471:1;16467:6;16464:1;16461:13;16458:39;;;16477:18;;:::i;:::-;-1:-1:-1;16513:9:1;;16400:128::o;16533:217::-;16573:1;16599;16589:132;;16643:10;16638:3;16634:20;16631:1;16624:31;16678:4;16675:1;16668:15;16706:4;16703:1;16696:15;16589:132;-1:-1:-1;16735:9:1;;16533:217::o;16755:422::-;16844:1;16887:5;16844:1;16901:270;16922:7;16912:8;16909:21;16901:270;;;16981:4;16977:1;16973:6;16969:17;16963:4;16960:27;16957:53;;;16990:18;;:::i;:::-;17040:7;17030:8;17026:22;17023:55;;;17060:16;;;;17023:55;17139:22;;;;17099:15;;;;16901:270;;;16905:3;16755:422;;;;;:::o;17182:131::-;17242:5;17271:36;17298:8;17292:4;17367:5;17397:8;17387:80;;-1:-1:-1;17438:1:1;17452:5;;17387:80;17486:4;17476:76;;-1:-1:-1;17523:1:1;17537:5;;17476:76;17568:4;17586:1;17581:59;;;;17654:1;17649:130;;;;17561:218;;17581:59;17611:1;17602:10;;17625:5;;;17649:130;17686:3;17676:8;17673:17;17670:43;;;17693:18;;:::i;:::-;-1:-1:-1;;17749:1:1;17735:16;;17764:5;;17561:218;;17863:2;17853:8;17850:16;17844:3;17838:4;17835:13;17831:36;17825:2;17815:8;17812:16;17807:2;17801:4;17798:12;17794:35;17791:77;17788:159;;;-1:-1:-1;17900:19:1;;;17932:5;;17788:159;17979:34;18004:8;17998:4;17979:34;:::i;:::-;18049:6;18045:1;18041:6;18037:19;18028:7;18025:32;18022:58;;;18060:18;;:::i;:::-;18098:20;;17318:806;-1:-1:-1;;;17318:806:1:o;18129:168::-;18169:7;18235:1;18231;18227:6;18223:14;18220:1;18217:21;18212:1;18205:9;18198:17;18194:45;18191:71;;;18242:18;;:::i;:::-;-1:-1:-1;18282:9:1;;18129:168::o;18302:125::-;18342:4;18370:1;18367;18364:8;18361:34;;;18375:18;;:::i;:::-;-1:-1:-1;18412:9:1;;18302:125::o;18432:258::-;18504:1;18514:113;18528:6;18525:1;18522:13;18514:113;;;18604:11;;;18598:18;18585:11;;;18578:39;18550:2;18543:10;18514:113;;;18645:6;18642:1;18639:13;18636:48;;;-1:-1:-1;;18680:1:1;18662:16;;18655:27;18432:258::o;18695:135::-;18734:3;-1:-1:-1;;18755:17:1;;18752:43;;;18775:18;;:::i;:::-;-1:-1:-1;18822:1:1;18811:13;;18695:135::o;18835:127::-;18896:10;18891:3;18887:20;18884:1;18877:31;18927:4;18924:1;18917:15;18951:4;18948:1;18941:15;18967:127;19028:10;19023:3;19019:20;19016:1;19009:31;19059:4;19056:1;19049:15;19083:4;19080:1;19073:15;19099:127;19160:10;19155:3;19151:20;19148:1;19141:31;19191:4;19188:1;19181:15;19215:4;19212:1;19205:15;19231:131;-1:-1:-1;;;;;19306:31:1;;19296:42;;19286:70;;19352:1;19349;19342:12
Swarm Source
ipfs://fd71463bcc75c36caaa51830c46ffd3a314eb505380d7344df2a3a00726ae419