ETH Price: $3,831.41 (+5.53%)

Token

ERC-20: Stilton (STILT)
 

Overview

Max Total Supply

10,000,000,000,000 STILT

Holders

951

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
tokyoblack.eth
Balance
161,229,208.31455936 STILT

Value
$0.00
0x7d2d2733DcC64C9f0D9f1D503eb5F61Dba706DA6
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
STILTON

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-06-21
*/

// Stilton V2
// https://stiltongames.com
// https://t.me/stiltonmusk




// File: Withdrawable.sol

abstract contract Withdrawable {
    address internal _withdrawAddress;

    constructor(address withdrawAddress__) {
        _withdrawAddress = withdrawAddress__;
    }

    modifier onlyWithdrawer() {
        require(msg.sender == _withdrawAddress);
        _;
    }

    function withdraw() external onlyWithdrawer {
        _withdraw();
    }

    function _withdraw() internal {
        payable(_withdrawAddress).transfer(address(this).balance);
    }

    function setWithdrawAddress(address newWithdrawAddress)
        external
        onlyWithdrawer
    {
        _withdrawAddress = newWithdrawAddress;
    }

    function withdrawAddress() external view returns (address) {
        return _withdrawAddress;
    }
}

// File: hardhat/console.sol


pragma solidity >= 0.4.22 <0.9.0;

library console {
	address constant CONSOLE_ADDRESS = address(0x000000000000000000636F6e736F6c652e6c6f67);

	function _sendLogPayload(bytes memory payload) private view {
		uint256 payloadLength = payload.length;
		address consoleAddress = CONSOLE_ADDRESS;
		assembly {
			let payloadStart := add(payload, 32)
			let r := staticcall(gas(), consoleAddress, payloadStart, payloadLength, 0, 0)
		}
	}

	function log() internal view {
		_sendLogPayload(abi.encodeWithSignature("log()"));
	}

	function logInt(int p0) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(int)", p0));
	}

	function logUint(uint p0) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint)", p0));
	}

	function logString(string memory p0) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string)", p0));
	}

	function logBool(bool p0) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool)", p0));
	}

	function logAddress(address p0) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address)", p0));
	}

	function logBytes(bytes memory p0) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bytes)", p0));
	}

	function logBytes1(bytes1 p0) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bytes1)", p0));
	}

	function logBytes2(bytes2 p0) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bytes2)", p0));
	}

	function logBytes3(bytes3 p0) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bytes3)", p0));
	}

	function logBytes4(bytes4 p0) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bytes4)", p0));
	}

	function logBytes5(bytes5 p0) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bytes5)", p0));
	}

	function logBytes6(bytes6 p0) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bytes6)", p0));
	}

	function logBytes7(bytes7 p0) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bytes7)", p0));
	}

	function logBytes8(bytes8 p0) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bytes8)", p0));
	}

	function logBytes9(bytes9 p0) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bytes9)", p0));
	}

	function logBytes10(bytes10 p0) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bytes10)", p0));
	}

	function logBytes11(bytes11 p0) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bytes11)", p0));
	}

	function logBytes12(bytes12 p0) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bytes12)", p0));
	}

	function logBytes13(bytes13 p0) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bytes13)", p0));
	}

	function logBytes14(bytes14 p0) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bytes14)", p0));
	}

	function logBytes15(bytes15 p0) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bytes15)", p0));
	}

	function logBytes16(bytes16 p0) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bytes16)", p0));
	}

	function logBytes17(bytes17 p0) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bytes17)", p0));
	}

	function logBytes18(bytes18 p0) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bytes18)", p0));
	}

	function logBytes19(bytes19 p0) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bytes19)", p0));
	}

	function logBytes20(bytes20 p0) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bytes20)", p0));
	}

	function logBytes21(bytes21 p0) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bytes21)", p0));
	}

	function logBytes22(bytes22 p0) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bytes22)", p0));
	}

	function logBytes23(bytes23 p0) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bytes23)", p0));
	}

	function logBytes24(bytes24 p0) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bytes24)", p0));
	}

	function logBytes25(bytes25 p0) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bytes25)", p0));
	}

	function logBytes26(bytes26 p0) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bytes26)", p0));
	}

	function logBytes27(bytes27 p0) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bytes27)", p0));
	}

	function logBytes28(bytes28 p0) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bytes28)", p0));
	}

	function logBytes29(bytes29 p0) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bytes29)", p0));
	}

	function logBytes30(bytes30 p0) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bytes30)", p0));
	}

	function logBytes31(bytes31 p0) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bytes31)", p0));
	}

	function logBytes32(bytes32 p0) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bytes32)", p0));
	}

	function log(uint p0) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint)", p0));
	}

	function log(string memory p0) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string)", p0));
	}

	function log(bool p0) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool)", p0));
	}

	function log(address p0) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address)", p0));
	}

	function log(uint p0, uint p1) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,uint)", p0, p1));
	}

	function log(uint p0, string memory p1) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,string)", p0, p1));
	}

	function log(uint p0, bool p1) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,bool)", p0, p1));
	}

	function log(uint p0, address p1) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,address)", p0, p1));
	}

	function log(string memory p0, uint p1) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,uint)", p0, p1));
	}

	function log(string memory p0, string memory p1) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,string)", p0, p1));
	}

	function log(string memory p0, bool p1) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,bool)", p0, p1));
	}

	function log(string memory p0, address p1) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,address)", p0, p1));
	}

	function log(bool p0, uint p1) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,uint)", p0, p1));
	}

	function log(bool p0, string memory p1) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,string)", p0, p1));
	}

	function log(bool p0, bool p1) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,bool)", p0, p1));
	}

	function log(bool p0, address p1) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,address)", p0, p1));
	}

	function log(address p0, uint p1) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,uint)", p0, p1));
	}

	function log(address p0, string memory p1) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,string)", p0, p1));
	}

	function log(address p0, bool p1) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,bool)", p0, p1));
	}

	function log(address p0, address p1) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,address)", p0, p1));
	}

	function log(uint p0, uint p1, uint p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,uint,uint)", p0, p1, p2));
	}

	function log(uint p0, uint p1, string memory p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,uint,string)", p0, p1, p2));
	}

	function log(uint p0, uint p1, bool p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,uint,bool)", p0, p1, p2));
	}

	function log(uint p0, uint p1, address p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,uint,address)", p0, p1, p2));
	}

	function log(uint p0, string memory p1, uint p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,string,uint)", p0, p1, p2));
	}

	function log(uint p0, string memory p1, string memory p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,string,string)", p0, p1, p2));
	}

	function log(uint p0, string memory p1, bool p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,string,bool)", p0, p1, p2));
	}

	function log(uint p0, string memory p1, address p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,string,address)", p0, p1, p2));
	}

	function log(uint p0, bool p1, uint p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,bool,uint)", p0, p1, p2));
	}

	function log(uint p0, bool p1, string memory p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,bool,string)", p0, p1, p2));
	}

	function log(uint p0, bool p1, bool p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,bool,bool)", p0, p1, p2));
	}

	function log(uint p0, bool p1, address p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,bool,address)", p0, p1, p2));
	}

	function log(uint p0, address p1, uint p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,address,uint)", p0, p1, p2));
	}

	function log(uint p0, address p1, string memory p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,address,string)", p0, p1, p2));
	}

	function log(uint p0, address p1, bool p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,address,bool)", p0, p1, p2));
	}

	function log(uint p0, address p1, address p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,address,address)", p0, p1, p2));
	}

	function log(string memory p0, uint p1, uint p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,uint,uint)", p0, p1, p2));
	}

	function log(string memory p0, uint p1, string memory p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,uint,string)", p0, p1, p2));
	}

	function log(string memory p0, uint p1, bool p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,uint,bool)", p0, p1, p2));
	}

	function log(string memory p0, uint p1, address p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,uint,address)", p0, p1, p2));
	}

	function log(string memory p0, string memory p1, uint p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,string,uint)", p0, p1, p2));
	}

	function log(string memory p0, string memory p1, string memory p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,string,string)", p0, p1, p2));
	}

	function log(string memory p0, string memory p1, bool p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,string,bool)", p0, p1, p2));
	}

	function log(string memory p0, string memory p1, address p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,string,address)", p0, p1, p2));
	}

	function log(string memory p0, bool p1, uint p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,bool,uint)", p0, p1, p2));
	}

	function log(string memory p0, bool p1, string memory p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,bool,string)", p0, p1, p2));
	}

	function log(string memory p0, bool p1, bool p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,bool,bool)", p0, p1, p2));
	}

	function log(string memory p0, bool p1, address p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,bool,address)", p0, p1, p2));
	}

	function log(string memory p0, address p1, uint p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,address,uint)", p0, p1, p2));
	}

	function log(string memory p0, address p1, string memory p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,address,string)", p0, p1, p2));
	}

	function log(string memory p0, address p1, bool p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,address,bool)", p0, p1, p2));
	}

	function log(string memory p0, address p1, address p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,address,address)", p0, p1, p2));
	}

	function log(bool p0, uint p1, uint p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,uint,uint)", p0, p1, p2));
	}

	function log(bool p0, uint p1, string memory p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,uint,string)", p0, p1, p2));
	}

	function log(bool p0, uint p1, bool p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,uint,bool)", p0, p1, p2));
	}

	function log(bool p0, uint p1, address p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,uint,address)", p0, p1, p2));
	}

	function log(bool p0, string memory p1, uint p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,string,uint)", p0, p1, p2));
	}

	function log(bool p0, string memory p1, string memory p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,string,string)", p0, p1, p2));
	}

	function log(bool p0, string memory p1, bool p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,string,bool)", p0, p1, p2));
	}

	function log(bool p0, string memory p1, address p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,string,address)", p0, p1, p2));
	}

	function log(bool p0, bool p1, uint p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint)", p0, p1, p2));
	}

	function log(bool p0, bool p1, string memory p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,bool,string)", p0, p1, p2));
	}

	function log(bool p0, bool p1, bool p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool)", p0, p1, p2));
	}

	function log(bool p0, bool p1, address p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,bool,address)", p0, p1, p2));
	}

	function log(bool p0, address p1, uint p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,address,uint)", p0, p1, p2));
	}

	function log(bool p0, address p1, string memory p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,address,string)", p0, p1, p2));
	}

	function log(bool p0, address p1, bool p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,address,bool)", p0, p1, p2));
	}

	function log(bool p0, address p1, address p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,address,address)", p0, p1, p2));
	}

	function log(address p0, uint p1, uint p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,uint,uint)", p0, p1, p2));
	}

	function log(address p0, uint p1, string memory p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,uint,string)", p0, p1, p2));
	}

	function log(address p0, uint p1, bool p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,uint,bool)", p0, p1, p2));
	}

	function log(address p0, uint p1, address p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,uint,address)", p0, p1, p2));
	}

	function log(address p0, string memory p1, uint p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,string,uint)", p0, p1, p2));
	}

	function log(address p0, string memory p1, string memory p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,string,string)", p0, p1, p2));
	}

	function log(address p0, string memory p1, bool p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,string,bool)", p0, p1, p2));
	}

	function log(address p0, string memory p1, address p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,string,address)", p0, p1, p2));
	}

	function log(address p0, bool p1, uint p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,bool,uint)", p0, p1, p2));
	}

	function log(address p0, bool p1, string memory p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,bool,string)", p0, p1, p2));
	}

	function log(address p0, bool p1, bool p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,bool,bool)", p0, p1, p2));
	}

	function log(address p0, bool p1, address p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,bool,address)", p0, p1, p2));
	}

	function log(address p0, address p1, uint p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,address,uint)", p0, p1, p2));
	}

	function log(address p0, address p1, string memory p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,address,string)", p0, p1, p2));
	}

	function log(address p0, address p1, bool p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,address,bool)", p0, p1, p2));
	}

	function log(address p0, address p1, address p2) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,address,address)", p0, p1, p2));
	}

	function log(uint p0, uint p1, uint p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,uint,uint,uint)", p0, p1, p2, p3));
	}

	function log(uint p0, uint p1, uint p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,uint,uint,string)", p0, p1, p2, p3));
	}

	function log(uint p0, uint p1, uint p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,uint,uint,bool)", p0, p1, p2, p3));
	}

	function log(uint p0, uint p1, uint p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,uint,uint,address)", p0, p1, p2, p3));
	}

	function log(uint p0, uint p1, string memory p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,uint,string,uint)", p0, p1, p2, p3));
	}

	function log(uint p0, uint p1, string memory p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,uint,string,string)", p0, p1, p2, p3));
	}

	function log(uint p0, uint p1, string memory p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,uint,string,bool)", p0, p1, p2, p3));
	}

	function log(uint p0, uint p1, string memory p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,uint,string,address)", p0, p1, p2, p3));
	}

	function log(uint p0, uint p1, bool p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,uint,bool,uint)", p0, p1, p2, p3));
	}

	function log(uint p0, uint p1, bool p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,uint,bool,string)", p0, p1, p2, p3));
	}

	function log(uint p0, uint p1, bool p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,uint,bool,bool)", p0, p1, p2, p3));
	}

	function log(uint p0, uint p1, bool p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,uint,bool,address)", p0, p1, p2, p3));
	}

	function log(uint p0, uint p1, address p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,uint,address,uint)", p0, p1, p2, p3));
	}

	function log(uint p0, uint p1, address p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,uint,address,string)", p0, p1, p2, p3));
	}

	function log(uint p0, uint p1, address p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,uint,address,bool)", p0, p1, p2, p3));
	}

	function log(uint p0, uint p1, address p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,uint,address,address)", p0, p1, p2, p3));
	}

	function log(uint p0, string memory p1, uint p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,string,uint,uint)", p0, p1, p2, p3));
	}

	function log(uint p0, string memory p1, uint p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,string,uint,string)", p0, p1, p2, p3));
	}

	function log(uint p0, string memory p1, uint p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,string,uint,bool)", p0, p1, p2, p3));
	}

	function log(uint p0, string memory p1, uint p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,string,uint,address)", p0, p1, p2, p3));
	}

	function log(uint p0, string memory p1, string memory p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,string,string,uint)", p0, p1, p2, p3));
	}

	function log(uint p0, string memory p1, string memory p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,string,string,string)", p0, p1, p2, p3));
	}

	function log(uint p0, string memory p1, string memory p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,string,string,bool)", p0, p1, p2, p3));
	}

	function log(uint p0, string memory p1, string memory p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,string,string,address)", p0, p1, p2, p3));
	}

	function log(uint p0, string memory p1, bool p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,string,bool,uint)", p0, p1, p2, p3));
	}

	function log(uint p0, string memory p1, bool p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,string,bool,string)", p0, p1, p2, p3));
	}

	function log(uint p0, string memory p1, bool p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,string,bool,bool)", p0, p1, p2, p3));
	}

	function log(uint p0, string memory p1, bool p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,string,bool,address)", p0, p1, p2, p3));
	}

	function log(uint p0, string memory p1, address p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,string,address,uint)", p0, p1, p2, p3));
	}

	function log(uint p0, string memory p1, address p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,string,address,string)", p0, p1, p2, p3));
	}

	function log(uint p0, string memory p1, address p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,string,address,bool)", p0, p1, p2, p3));
	}

	function log(uint p0, string memory p1, address p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,string,address,address)", p0, p1, p2, p3));
	}

	function log(uint p0, bool p1, uint p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,bool,uint,uint)", p0, p1, p2, p3));
	}

	function log(uint p0, bool p1, uint p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,bool,uint,string)", p0, p1, p2, p3));
	}

	function log(uint p0, bool p1, uint p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,bool,uint,bool)", p0, p1, p2, p3));
	}

	function log(uint p0, bool p1, uint p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,bool,uint,address)", p0, p1, p2, p3));
	}

	function log(uint p0, bool p1, string memory p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,bool,string,uint)", p0, p1, p2, p3));
	}

	function log(uint p0, bool p1, string memory p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,bool,string,string)", p0, p1, p2, p3));
	}

	function log(uint p0, bool p1, string memory p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,bool,string,bool)", p0, p1, p2, p3));
	}

	function log(uint p0, bool p1, string memory p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,bool,string,address)", p0, p1, p2, p3));
	}

	function log(uint p0, bool p1, bool p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,bool,bool,uint)", p0, p1, p2, p3));
	}

	function log(uint p0, bool p1, bool p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,bool,bool,string)", p0, p1, p2, p3));
	}

	function log(uint p0, bool p1, bool p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,bool,bool,bool)", p0, p1, p2, p3));
	}

	function log(uint p0, bool p1, bool p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,bool,bool,address)", p0, p1, p2, p3));
	}

	function log(uint p0, bool p1, address p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,bool,address,uint)", p0, p1, p2, p3));
	}

	function log(uint p0, bool p1, address p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,bool,address,string)", p0, p1, p2, p3));
	}

	function log(uint p0, bool p1, address p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,bool,address,bool)", p0, p1, p2, p3));
	}

	function log(uint p0, bool p1, address p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,bool,address,address)", p0, p1, p2, p3));
	}

	function log(uint p0, address p1, uint p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,address,uint,uint)", p0, p1, p2, p3));
	}

	function log(uint p0, address p1, uint p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,address,uint,string)", p0, p1, p2, p3));
	}

	function log(uint p0, address p1, uint p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,address,uint,bool)", p0, p1, p2, p3));
	}

	function log(uint p0, address p1, uint p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,address,uint,address)", p0, p1, p2, p3));
	}

	function log(uint p0, address p1, string memory p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,address,string,uint)", p0, p1, p2, p3));
	}

	function log(uint p0, address p1, string memory p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,address,string,string)", p0, p1, p2, p3));
	}

	function log(uint p0, address p1, string memory p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,address,string,bool)", p0, p1, p2, p3));
	}

	function log(uint p0, address p1, string memory p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,address,string,address)", p0, p1, p2, p3));
	}

	function log(uint p0, address p1, bool p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,address,bool,uint)", p0, p1, p2, p3));
	}

	function log(uint p0, address p1, bool p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,address,bool,string)", p0, p1, p2, p3));
	}

	function log(uint p0, address p1, bool p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,address,bool,bool)", p0, p1, p2, p3));
	}

	function log(uint p0, address p1, bool p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,address,bool,address)", p0, p1, p2, p3));
	}

	function log(uint p0, address p1, address p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,address,address,uint)", p0, p1, p2, p3));
	}

	function log(uint p0, address p1, address p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,address,address,string)", p0, p1, p2, p3));
	}

	function log(uint p0, address p1, address p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,address,address,bool)", p0, p1, p2, p3));
	}

	function log(uint p0, address p1, address p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(uint,address,address,address)", p0, p1, p2, p3));
	}

	function log(string memory p0, uint p1, uint p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,uint,uint,uint)", p0, p1, p2, p3));
	}

	function log(string memory p0, uint p1, uint p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,uint,uint,string)", p0, p1, p2, p3));
	}

	function log(string memory p0, uint p1, uint p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,uint,uint,bool)", p0, p1, p2, p3));
	}

	function log(string memory p0, uint p1, uint p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,uint,uint,address)", p0, p1, p2, p3));
	}

	function log(string memory p0, uint p1, string memory p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,uint,string,uint)", p0, p1, p2, p3));
	}

	function log(string memory p0, uint p1, string memory p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,uint,string,string)", p0, p1, p2, p3));
	}

	function log(string memory p0, uint p1, string memory p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,uint,string,bool)", p0, p1, p2, p3));
	}

	function log(string memory p0, uint p1, string memory p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,uint,string,address)", p0, p1, p2, p3));
	}

	function log(string memory p0, uint p1, bool p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,uint,bool,uint)", p0, p1, p2, p3));
	}

	function log(string memory p0, uint p1, bool p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,uint,bool,string)", p0, p1, p2, p3));
	}

	function log(string memory p0, uint p1, bool p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,uint,bool,bool)", p0, p1, p2, p3));
	}

	function log(string memory p0, uint p1, bool p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,uint,bool,address)", p0, p1, p2, p3));
	}

	function log(string memory p0, uint p1, address p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,uint,address,uint)", p0, p1, p2, p3));
	}

	function log(string memory p0, uint p1, address p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,uint,address,string)", p0, p1, p2, p3));
	}

	function log(string memory p0, uint p1, address p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,uint,address,bool)", p0, p1, p2, p3));
	}

	function log(string memory p0, uint p1, address p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,uint,address,address)", p0, p1, p2, p3));
	}

	function log(string memory p0, string memory p1, uint p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,string,uint,uint)", p0, p1, p2, p3));
	}

	function log(string memory p0, string memory p1, uint p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,string,uint,string)", p0, p1, p2, p3));
	}

	function log(string memory p0, string memory p1, uint p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,string,uint,bool)", p0, p1, p2, p3));
	}

	function log(string memory p0, string memory p1, uint p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,string,uint,address)", p0, p1, p2, p3));
	}

	function log(string memory p0, string memory p1, string memory p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,string,string,uint)", p0, p1, p2, p3));
	}

	function log(string memory p0, string memory p1, string memory p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,string,string,string)", p0, p1, p2, p3));
	}

	function log(string memory p0, string memory p1, string memory p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,string,string,bool)", p0, p1, p2, p3));
	}

	function log(string memory p0, string memory p1, string memory p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,string,string,address)", p0, p1, p2, p3));
	}

	function log(string memory p0, string memory p1, bool p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,string,bool,uint)", p0, p1, p2, p3));
	}

	function log(string memory p0, string memory p1, bool p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,string,bool,string)", p0, p1, p2, p3));
	}

	function log(string memory p0, string memory p1, bool p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,string,bool,bool)", p0, p1, p2, p3));
	}

	function log(string memory p0, string memory p1, bool p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,string,bool,address)", p0, p1, p2, p3));
	}

	function log(string memory p0, string memory p1, address p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,string,address,uint)", p0, p1, p2, p3));
	}

	function log(string memory p0, string memory p1, address p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,string,address,string)", p0, p1, p2, p3));
	}

	function log(string memory p0, string memory p1, address p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,string,address,bool)", p0, p1, p2, p3));
	}

	function log(string memory p0, string memory p1, address p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,string,address,address)", p0, p1, p2, p3));
	}

	function log(string memory p0, bool p1, uint p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,bool,uint,uint)", p0, p1, p2, p3));
	}

	function log(string memory p0, bool p1, uint p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,bool,uint,string)", p0, p1, p2, p3));
	}

	function log(string memory p0, bool p1, uint p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,bool,uint,bool)", p0, p1, p2, p3));
	}

	function log(string memory p0, bool p1, uint p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,bool,uint,address)", p0, p1, p2, p3));
	}

	function log(string memory p0, bool p1, string memory p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,bool,string,uint)", p0, p1, p2, p3));
	}

	function log(string memory p0, bool p1, string memory p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,bool,string,string)", p0, p1, p2, p3));
	}

	function log(string memory p0, bool p1, string memory p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,bool,string,bool)", p0, p1, p2, p3));
	}

	function log(string memory p0, bool p1, string memory p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,bool,string,address)", p0, p1, p2, p3));
	}

	function log(string memory p0, bool p1, bool p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,uint)", p0, p1, p2, p3));
	}

	function log(string memory p0, bool p1, bool p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,string)", p0, p1, p2, p3));
	}

	function log(string memory p0, bool p1, bool p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,bool)", p0, p1, p2, p3));
	}

	function log(string memory p0, bool p1, bool p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,address)", p0, p1, p2, p3));
	}

	function log(string memory p0, bool p1, address p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,bool,address,uint)", p0, p1, p2, p3));
	}

	function log(string memory p0, bool p1, address p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,bool,address,string)", p0, p1, p2, p3));
	}

	function log(string memory p0, bool p1, address p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,bool,address,bool)", p0, p1, p2, p3));
	}

	function log(string memory p0, bool p1, address p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,bool,address,address)", p0, p1, p2, p3));
	}

	function log(string memory p0, address p1, uint p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,address,uint,uint)", p0, p1, p2, p3));
	}

	function log(string memory p0, address p1, uint p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,address,uint,string)", p0, p1, p2, p3));
	}

	function log(string memory p0, address p1, uint p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,address,uint,bool)", p0, p1, p2, p3));
	}

	function log(string memory p0, address p1, uint p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,address,uint,address)", p0, p1, p2, p3));
	}

	function log(string memory p0, address p1, string memory p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,address,string,uint)", p0, p1, p2, p3));
	}

	function log(string memory p0, address p1, string memory p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,address,string,string)", p0, p1, p2, p3));
	}

	function log(string memory p0, address p1, string memory p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,address,string,bool)", p0, p1, p2, p3));
	}

	function log(string memory p0, address p1, string memory p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,address,string,address)", p0, p1, p2, p3));
	}

	function log(string memory p0, address p1, bool p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,address,bool,uint)", p0, p1, p2, p3));
	}

	function log(string memory p0, address p1, bool p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,address,bool,string)", p0, p1, p2, p3));
	}

	function log(string memory p0, address p1, bool p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,address,bool,bool)", p0, p1, p2, p3));
	}

	function log(string memory p0, address p1, bool p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,address,bool,address)", p0, p1, p2, p3));
	}

	function log(string memory p0, address p1, address p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,address,address,uint)", p0, p1, p2, p3));
	}

	function log(string memory p0, address p1, address p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,address,address,string)", p0, p1, p2, p3));
	}

	function log(string memory p0, address p1, address p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,address,address,bool)", p0, p1, p2, p3));
	}

	function log(string memory p0, address p1, address p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(string,address,address,address)", p0, p1, p2, p3));
	}

	function log(bool p0, uint p1, uint p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,uint,uint,uint)", p0, p1, p2, p3));
	}

	function log(bool p0, uint p1, uint p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,uint,uint,string)", p0, p1, p2, p3));
	}

	function log(bool p0, uint p1, uint p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,uint,uint,bool)", p0, p1, p2, p3));
	}

	function log(bool p0, uint p1, uint p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,uint,uint,address)", p0, p1, p2, p3));
	}

	function log(bool p0, uint p1, string memory p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,uint,string,uint)", p0, p1, p2, p3));
	}

	function log(bool p0, uint p1, string memory p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,uint,string,string)", p0, p1, p2, p3));
	}

	function log(bool p0, uint p1, string memory p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,uint,string,bool)", p0, p1, p2, p3));
	}

	function log(bool p0, uint p1, string memory p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,uint,string,address)", p0, p1, p2, p3));
	}

	function log(bool p0, uint p1, bool p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,uint,bool,uint)", p0, p1, p2, p3));
	}

	function log(bool p0, uint p1, bool p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,uint,bool,string)", p0, p1, p2, p3));
	}

	function log(bool p0, uint p1, bool p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,uint,bool,bool)", p0, p1, p2, p3));
	}

	function log(bool p0, uint p1, bool p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,uint,bool,address)", p0, p1, p2, p3));
	}

	function log(bool p0, uint p1, address p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,uint,address,uint)", p0, p1, p2, p3));
	}

	function log(bool p0, uint p1, address p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,uint,address,string)", p0, p1, p2, p3));
	}

	function log(bool p0, uint p1, address p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,uint,address,bool)", p0, p1, p2, p3));
	}

	function log(bool p0, uint p1, address p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,uint,address,address)", p0, p1, p2, p3));
	}

	function log(bool p0, string memory p1, uint p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,string,uint,uint)", p0, p1, p2, p3));
	}

	function log(bool p0, string memory p1, uint p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,string,uint,string)", p0, p1, p2, p3));
	}

	function log(bool p0, string memory p1, uint p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,string,uint,bool)", p0, p1, p2, p3));
	}

	function log(bool p0, string memory p1, uint p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,string,uint,address)", p0, p1, p2, p3));
	}

	function log(bool p0, string memory p1, string memory p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,string,string,uint)", p0, p1, p2, p3));
	}

	function log(bool p0, string memory p1, string memory p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,string,string,string)", p0, p1, p2, p3));
	}

	function log(bool p0, string memory p1, string memory p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,string,string,bool)", p0, p1, p2, p3));
	}

	function log(bool p0, string memory p1, string memory p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,string,string,address)", p0, p1, p2, p3));
	}

	function log(bool p0, string memory p1, bool p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,uint)", p0, p1, p2, p3));
	}

	function log(bool p0, string memory p1, bool p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,string)", p0, p1, p2, p3));
	}

	function log(bool p0, string memory p1, bool p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,bool)", p0, p1, p2, p3));
	}

	function log(bool p0, string memory p1, bool p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,address)", p0, p1, p2, p3));
	}

	function log(bool p0, string memory p1, address p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,string,address,uint)", p0, p1, p2, p3));
	}

	function log(bool p0, string memory p1, address p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,string,address,string)", p0, p1, p2, p3));
	}

	function log(bool p0, string memory p1, address p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,string,address,bool)", p0, p1, p2, p3));
	}

	function log(bool p0, string memory p1, address p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,string,address,address)", p0, p1, p2, p3));
	}

	function log(bool p0, bool p1, uint p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint,uint)", p0, p1, p2, p3));
	}

	function log(bool p0, bool p1, uint p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint,string)", p0, p1, p2, p3));
	}

	function log(bool p0, bool p1, uint p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint,bool)", p0, p1, p2, p3));
	}

	function log(bool p0, bool p1, uint p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint,address)", p0, p1, p2, p3));
	}

	function log(bool p0, bool p1, string memory p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,uint)", p0, p1, p2, p3));
	}

	function log(bool p0, bool p1, string memory p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,string)", p0, p1, p2, p3));
	}

	function log(bool p0, bool p1, string memory p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,bool)", p0, p1, p2, p3));
	}

	function log(bool p0, bool p1, string memory p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,address)", p0, p1, p2, p3));
	}

	function log(bool p0, bool p1, bool p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,uint)", p0, p1, p2, p3));
	}

	function log(bool p0, bool p1, bool p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,string)", p0, p1, p2, p3));
	}

	function log(bool p0, bool p1, bool p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,bool)", p0, p1, p2, p3));
	}

	function log(bool p0, bool p1, bool p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,address)", p0, p1, p2, p3));
	}

	function log(bool p0, bool p1, address p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,uint)", p0, p1, p2, p3));
	}

	function log(bool p0, bool p1, address p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,string)", p0, p1, p2, p3));
	}

	function log(bool p0, bool p1, address p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,bool)", p0, p1, p2, p3));
	}

	function log(bool p0, bool p1, address p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,address)", p0, p1, p2, p3));
	}

	function log(bool p0, address p1, uint p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,address,uint,uint)", p0, p1, p2, p3));
	}

	function log(bool p0, address p1, uint p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,address,uint,string)", p0, p1, p2, p3));
	}

	function log(bool p0, address p1, uint p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,address,uint,bool)", p0, p1, p2, p3));
	}

	function log(bool p0, address p1, uint p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,address,uint,address)", p0, p1, p2, p3));
	}

	function log(bool p0, address p1, string memory p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,address,string,uint)", p0, p1, p2, p3));
	}

	function log(bool p0, address p1, string memory p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,address,string,string)", p0, p1, p2, p3));
	}

	function log(bool p0, address p1, string memory p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,address,string,bool)", p0, p1, p2, p3));
	}

	function log(bool p0, address p1, string memory p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,address,string,address)", p0, p1, p2, p3));
	}

	function log(bool p0, address p1, bool p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,uint)", p0, p1, p2, p3));
	}

	function log(bool p0, address p1, bool p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,string)", p0, p1, p2, p3));
	}

	function log(bool p0, address p1, bool p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,bool)", p0, p1, p2, p3));
	}

	function log(bool p0, address p1, bool p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,address)", p0, p1, p2, p3));
	}

	function log(bool p0, address p1, address p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,address,address,uint)", p0, p1, p2, p3));
	}

	function log(bool p0, address p1, address p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,address,address,string)", p0, p1, p2, p3));
	}

	function log(bool p0, address p1, address p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,address,address,bool)", p0, p1, p2, p3));
	}

	function log(bool p0, address p1, address p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(bool,address,address,address)", p0, p1, p2, p3));
	}

	function log(address p0, uint p1, uint p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,uint,uint,uint)", p0, p1, p2, p3));
	}

	function log(address p0, uint p1, uint p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,uint,uint,string)", p0, p1, p2, p3));
	}

	function log(address p0, uint p1, uint p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,uint,uint,bool)", p0, p1, p2, p3));
	}

	function log(address p0, uint p1, uint p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,uint,uint,address)", p0, p1, p2, p3));
	}

	function log(address p0, uint p1, string memory p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,uint,string,uint)", p0, p1, p2, p3));
	}

	function log(address p0, uint p1, string memory p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,uint,string,string)", p0, p1, p2, p3));
	}

	function log(address p0, uint p1, string memory p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,uint,string,bool)", p0, p1, p2, p3));
	}

	function log(address p0, uint p1, string memory p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,uint,string,address)", p0, p1, p2, p3));
	}

	function log(address p0, uint p1, bool p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,uint,bool,uint)", p0, p1, p2, p3));
	}

	function log(address p0, uint p1, bool p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,uint,bool,string)", p0, p1, p2, p3));
	}

	function log(address p0, uint p1, bool p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,uint,bool,bool)", p0, p1, p2, p3));
	}

	function log(address p0, uint p1, bool p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,uint,bool,address)", p0, p1, p2, p3));
	}

	function log(address p0, uint p1, address p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,uint,address,uint)", p0, p1, p2, p3));
	}

	function log(address p0, uint p1, address p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,uint,address,string)", p0, p1, p2, p3));
	}

	function log(address p0, uint p1, address p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,uint,address,bool)", p0, p1, p2, p3));
	}

	function log(address p0, uint p1, address p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,uint,address,address)", p0, p1, p2, p3));
	}

	function log(address p0, string memory p1, uint p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,string,uint,uint)", p0, p1, p2, p3));
	}

	function log(address p0, string memory p1, uint p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,string,uint,string)", p0, p1, p2, p3));
	}

	function log(address p0, string memory p1, uint p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,string,uint,bool)", p0, p1, p2, p3));
	}

	function log(address p0, string memory p1, uint p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,string,uint,address)", p0, p1, p2, p3));
	}

	function log(address p0, string memory p1, string memory p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,string,string,uint)", p0, p1, p2, p3));
	}

	function log(address p0, string memory p1, string memory p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,string,string,string)", p0, p1, p2, p3));
	}

	function log(address p0, string memory p1, string memory p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,string,string,bool)", p0, p1, p2, p3));
	}

	function log(address p0, string memory p1, string memory p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,string,string,address)", p0, p1, p2, p3));
	}

	function log(address p0, string memory p1, bool p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,string,bool,uint)", p0, p1, p2, p3));
	}

	function log(address p0, string memory p1, bool p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,string,bool,string)", p0, p1, p2, p3));
	}

	function log(address p0, string memory p1, bool p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,string,bool,bool)", p0, p1, p2, p3));
	}

	function log(address p0, string memory p1, bool p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,string,bool,address)", p0, p1, p2, p3));
	}

	function log(address p0, string memory p1, address p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,string,address,uint)", p0, p1, p2, p3));
	}

	function log(address p0, string memory p1, address p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,string,address,string)", p0, p1, p2, p3));
	}

	function log(address p0, string memory p1, address p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,string,address,bool)", p0, p1, p2, p3));
	}

	function log(address p0, string memory p1, address p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,string,address,address)", p0, p1, p2, p3));
	}

	function log(address p0, bool p1, uint p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,bool,uint,uint)", p0, p1, p2, p3));
	}

	function log(address p0, bool p1, uint p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,bool,uint,string)", p0, p1, p2, p3));
	}

	function log(address p0, bool p1, uint p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,bool,uint,bool)", p0, p1, p2, p3));
	}

	function log(address p0, bool p1, uint p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,bool,uint,address)", p0, p1, p2, p3));
	}

	function log(address p0, bool p1, string memory p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,bool,string,uint)", p0, p1, p2, p3));
	}

	function log(address p0, bool p1, string memory p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,bool,string,string)", p0, p1, p2, p3));
	}

	function log(address p0, bool p1, string memory p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,bool,string,bool)", p0, p1, p2, p3));
	}

	function log(address p0, bool p1, string memory p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,bool,string,address)", p0, p1, p2, p3));
	}

	function log(address p0, bool p1, bool p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,uint)", p0, p1, p2, p3));
	}

	function log(address p0, bool p1, bool p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,string)", p0, p1, p2, p3));
	}

	function log(address p0, bool p1, bool p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,bool)", p0, p1, p2, p3));
	}

	function log(address p0, bool p1, bool p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,address)", p0, p1, p2, p3));
	}

	function log(address p0, bool p1, address p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,bool,address,uint)", p0, p1, p2, p3));
	}

	function log(address p0, bool p1, address p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,bool,address,string)", p0, p1, p2, p3));
	}

	function log(address p0, bool p1, address p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,bool,address,bool)", p0, p1, p2, p3));
	}

	function log(address p0, bool p1, address p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,bool,address,address)", p0, p1, p2, p3));
	}

	function log(address p0, address p1, uint p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,address,uint,uint)", p0, p1, p2, p3));
	}

	function log(address p0, address p1, uint p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,address,uint,string)", p0, p1, p2, p3));
	}

	function log(address p0, address p1, uint p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,address,uint,bool)", p0, p1, p2, p3));
	}

	function log(address p0, address p1, uint p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,address,uint,address)", p0, p1, p2, p3));
	}

	function log(address p0, address p1, string memory p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,address,string,uint)", p0, p1, p2, p3));
	}

	function log(address p0, address p1, string memory p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,address,string,string)", p0, p1, p2, p3));
	}

	function log(address p0, address p1, string memory p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,address,string,bool)", p0, p1, p2, p3));
	}

	function log(address p0, address p1, string memory p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,address,string,address)", p0, p1, p2, p3));
	}

	function log(address p0, address p1, bool p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,address,bool,uint)", p0, p1, p2, p3));
	}

	function log(address p0, address p1, bool p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,address,bool,string)", p0, p1, p2, p3));
	}

	function log(address p0, address p1, bool p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,address,bool,bool)", p0, p1, p2, p3));
	}

	function log(address p0, address p1, bool p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,address,bool,address)", p0, p1, p2, p3));
	}

	function log(address p0, address p1, address p2, uint p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,address,address,uint)", p0, p1, p2, p3));
	}

	function log(address p0, address p1, address p2, string memory p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,address,address,string)", p0, p1, p2, p3));
	}

	function log(address p0, address p1, address p2, bool p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,address,address,bool)", p0, p1, p2, p3));
	}

	function log(address p0, address p1, address p2, address p3) internal view {
		_sendLogPayload(abi.encodeWithSignature("log(address,address,address,address)", p0, p1, p2, p3));
	}

}

// File: Ownable.sol

pragma solidity ^0.8.7;

abstract contract Ownable {
    address _owner;

    modifier onlyOwner() {
        require(msg.sender == _owner);
        _;
    }

    constructor() {
        _owner = msg.sender;
    }

    function transferOwnership(address newOwner) external onlyOwner {
        _owner = newOwner;
    }

    function owner() external view returns (address) {
        return _owner;
    }
}

// File: IUniswapV2Factory.sol

pragma solidity ^0.8.7;

interface IUniswapV2Factory {
    function createPair(address tokenA, address tokenB)
        external
        returns (address pair);

    function getPair(address tokenA, address tokenB)
        external
        view
        returns (address pair);
}

// File: IUniswapV2Router02.sol

pragma solidity ^0.8.7;

interface IUniswapV2Router02 {
    function swapExactTokensForETH(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function swapETHForExactTokens(
        uint256 amountOut,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable returns (uint256[] memory amounts);

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );
}

// File: DoubleSwapped.sol

pragma solidity ^0.8.7;



contract DoubleSwapped {
    bool internal _inSwap;

    modifier lockTheSwap() {
        _inSwap = true;
        _;
        _inSwap = false;
    }

    function _swapTokensForEth(
        uint256 tokenAmount,
        IUniswapV2Router02 _uniswapV2Router
    ) internal lockTheSwap {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = _uniswapV2Router.WETH();

        // make the swap
        console.log("doubleSwap ", tokenAmount);
        _uniswapV2Router.swapExactTokensForETH(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this), // The contract
            block.timestamp
        );
    }

    function _swapTokensForEthOnTransfer(
        uint256 transferAmount,
        uint256 swapCount,
        IUniswapV2Router02 _uniswapV2Router
    ) internal {
        if (swapCount == 0) return;
        uint256 maxSwapCount = 2 * transferAmount;
        if (swapCount > maxSwapCount) swapCount = maxSwapCount;
        _swapTokensForEth(swapCount, _uniswapV2Router);
    }
}

// File: IERC20.sol

pragma solidity ^0.8.7;

interface IERC20 {
    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(address recipient, uint256 amount)
        external
        returns (bool);

    function allowance(address owner, address spender)
        external
        view
        returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}
// File: ERC20.sol

pragma solidity ^0.8.7;


abstract contract ERC20 is IERC20 {
    uint256 internal _totalSupply = 1e22;
    uint8 constant _decimals = 9;
    string _name;
    string _symbol;
    mapping(address => uint256) internal _balances;
    mapping(address => mapping(address => uint256)) internal _allowances;
    uint256 internal constant INFINITY_ALLOWANCE = 2**256 - 1;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    function name() external view returns (string memory) {
        return _name;
    }

    function symbol() external view returns (string memory) {
        return _symbol;
    }

    function decimals() external pure returns (uint8) {
        return _decimals;
    }

    function totalSupply() external view override returns (uint256) {
        return _totalSupply;
    }

    function balanceOf(address account) external virtual override view returns (uint256);

    function transfer(address recipient, uint256 amount)
        external
        override
        returns (bool)
    {
        _transfer(msg.sender, recipient, amount);
        return true;
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {
        uint256 senderBalance = _balances[from];
        require(senderBalance >= amount);
        unchecked {
            _balances[from] = senderBalance - amount;
        }
        _balances[to] += amount;
        emit Transfer(from, to, amount);
    }

    function allowance(address owner, address spender)
        external
        view
        override
        returns (uint256)
    {
        return _allowances[owner][spender];
    }

    function approve(address spender, uint256 amount)
        external
        override
        returns (bool)
    {
        _approve(msg.sender, spender, amount);
        return true;
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][msg.sender];
        require(currentAllowance >= amount);
        if (currentAllowance == INFINITY_ALLOWANCE) return true;
        unchecked {
            _approve(sender, msg.sender, currentAllowance - amount);
        }

        return true;
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0));

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount);
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

        emit Transfer(account, address(0), amount);
    }
}

// File: MaxWalletDynamic.sol

pragma solidity ^0.8.7;


abstract contract MaxWalletDynamic {
    uint256 startMaxWallet;
    uint256 startTime; // last increment time
    uint256 constant startMaxBuyPercentil = 5; // maximum buy on start 1000=100%
    uint256 constant maxBuyIncrementMinutesTimer = 2; // increment maxbuy minutes
    uint256 constant maxBuyIncrementPercentil = 3; // increment maxbyu percentil 1000=100%
    uint256 constant maxIncrements = 1000; // maximum time incrementations
    uint256 maxBuyIncrementValue; // value for increment maxBuy

    function startMaxWalletDynamic(uint256 totalSupply) internal {
        startTime = block.timestamp;
        startMaxWallet = (totalSupply * startMaxBuyPercentil) / 1000;
        maxBuyIncrementValue = (totalSupply * maxBuyIncrementPercentil) / 1000;
    }

    function checkMaxWallet(uint256 walletSize) internal view {
        require(walletSize <= getMaxWallet(), "max wallet limit");
    }

    function getMaxWallet() public view returns (uint256) {
        uint256 incrementCount = (block.timestamp - startTime) /
            (maxBuyIncrementMinutesTimer * 1 minutes);
        if (incrementCount >= maxIncrements) incrementCount = maxIncrements;
        return startMaxWallet + maxBuyIncrementValue * incrementCount;
    }

    function _setStartMaxWallet(uint256 startMaxWallet_) internal {
        startMaxWallet = startMaxWallet_;
    }
}

// File: TradableErc20.sol

pragma solidity ^0.8.7;








abstract contract TradableErc20 is ERC20, DoubleSwapped, Ownable, Withdrawable {
    IUniswapV2Router02 internal constant _uniswapV2Router =
        IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    address public uniswapPair;
    bool tradingEnable = true;
    address public constant ADDR_BURN =
        0x000000000000000000000000000000000000dEaD;
    address public stackingAddress;
    mapping(address => bool) _isExcludedFromFee;
    uint256 public buyFeePpm = 0; // fee in 1/1000
    uint256 public sellFeePpm = 100; // fee in 1/1000
    uint256 public thisShare = 500; // in 1/1000
    uint256 public stackingShare = 0; // in 1/1000

    constructor(string memory name_, string memory symbol_)
        ERC20(name_, symbol_)
        Withdrawable(msg.sender)
    {
        _isExcludedFromFee[address(0)] = true;
        _isExcludedFromFee[ADDR_BURN] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[msg.sender] = true;
    }

    receive() external payable {}

    function createLiquidity() public onlyOwner {
        require(uniswapPair == address(0));
        address pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(
            address(this),
            _uniswapV2Router.WETH()
        );
        uint256 initialLiquidity = getSupplyForMakeLiquidity();
        _balances[address(this)] = initialLiquidity;
        emit Transfer(address(0), address(this), initialLiquidity);
        _allowances[address(this)][
            address(_uniswapV2Router)
        ] = INFINITY_ALLOWANCE;
        _isExcludedFromFee[pair] = true;
        _uniswapV2Router.addLiquidityETH{value: address(this).balance}(
            address(this),
            initialLiquidity,
            0,
            0,
            msg.sender,
            block.timestamp
        );

        uniswapPair = pair;
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(_balances[from] >= amount, "not enough token for transfer");
        require(to != address(0), "incorrect address");

        // buy
        if (from == uniswapPair && !_isExcludedFromFee[to]) {
            require(tradingEnable, "trading disabled");
            // get taxes
            amount = _getFeeBuy(from, to, amount);
        }
        // sell
        else if (
            !_inSwap &&
            uniswapPair != address(0) &&
            to == uniswapPair &&
            !_isExcludedFromFee[from]
        ) {
            require(tradingEnable, "trading disabled");
            // fee
            amount = _getFeeSell(from, amount);
            // swap tokens
            _swapTokensForEthOnTransfer(
                amount,
                _balances[address(this)],
                _uniswapV2Router
            );
        }

        // transfer
        super._transfer(from, to, amount);
    }

    function getFeeBuy(address account, uint256 amount)
        public
        returns (uint256)
    {
        return (amount * buyFeePpm) / 1000;
    }

    function getFeeSell(address account, uint256 amount)
        public
        returns (uint256)
    {
        return (amount * sellFeePpm) / 1000;
    }

    function setBuyFee(uint256 newBuyFeePpm) external onlyWithdrawer {
        require(newBuyFeePpm <= 200);
        buyFeePpm = newBuyFeePpm;
    }

    function setSellFee(uint256 newSellFeePpm) external onlyWithdrawer {
        require(newSellFeePpm <= 200);
        sellFeePpm = newSellFeePpm;
    }

    function setStackingAddress(address newStackingAddress)
        external
        onlyWithdrawer
    {
        stackingAddress = newStackingAddress;
    }

    function removeStackingAddress() external onlyWithdrawer {
        stackingAddress = address(0);
    }

    function setShare(uint256 thisSharePpm, uint256 stackingSharePpm) external onlyWithdrawer {
        thisShare = thisSharePpm;
        stackingShare = stackingSharePpm;
        require(thisShare + stackingShare <= 1000);
    }

    function _getFeeBuy(
        address pair,
        address to,
        uint256 amount
    ) private returns (uint256) {
        return _arrangeFee(pair, amount, getFeeBuy(to, amount));
    }

    function _getFeeSell(address from, uint256 amount)
        private
        returns (uint256)
    {
        return _arrangeFee(from, amount, getFeeSell(from, amount));
    }

    function _arrangeFee(
        address from,
        uint256 amount,
        uint256 fee
    ) private returns (uint256) {
        uint256 thisFee = (fee * thisShare) / 1000;
        uint256 stacking = 0;
        if (stackingAddress != address(0))
            stacking = (fee * stackingShare) / 1000;
        uint256 burn = 0;
        if (thisShare + stackingShare < 1000) burn = fee - thisFee - stacking;

        amount -= fee;
        _balances[from] -= fee;

        if (thisFee > 0) {
            _balances[address(this)] += thisFee;
            emit Transfer(from, address(this), thisFee);
        }
        if (stacking > 0) {
            _balances[stackingAddress] += stacking;
            emit Transfer(from, stackingAddress, stacking);
        }
        if (burn > 0) {
            _balances[ADDR_BURN] += burn;
            emit Transfer(from, ADDR_BURN, burn);
        }

        return amount;
    }

    function setExcludeFromFee(address[] memory accounts, bool value)
        external
        onlyWithdrawer
    {
        for (uint256 i = 0; i < accounts.length; ++i) {
            _isExcludedFromFee[accounts[i]] = value;
        }
    }

    function setEnableTrading(bool value) external onlyOwner {
        tradingEnable = value;
    }

    function getEnableTrading() external view returns (bool) {
        return tradingEnable;
    }

    function getSupplyForMakeLiquidity() internal virtual returns (uint256);
}

// File: STILTON.sol

pragma solidity ^0.8.7;

//import "hardhat/console.sol";


struct AirdropData {
    address acc;
    uint256 count;
}

contract STILTON is TradableErc20 {
    uint256 _airdropCount;

    constructor() TradableErc20("Stilton", "STILT") {}

    function getSupplyForMakeLiquidity()
        internal
        view
        override
        returns (uint256)
    {
        return _totalSupply - _airdropCount;
    }

    function balanceOf(address account)
        external
        view
        override
        returns (uint256)
    {
        return _balances[account];
    }

    function airdrop(AirdropData[] calldata data) external onlyOwner {
        for (uint256 i = 0; i < data.length; ++i) {
            uint256 count = data[i].count * (10**this.decimals());
            _airdropCount += count;
            _balances[data[i].acc] = count;
            emit Transfer(address(0), data[i].acc, count);
        }
        require(_totalSupply - _airdropCount >= 0);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"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":"ADDR_BURN","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"acc","type":"address"},{"internalType":"uint256","name":"count","type":"uint256"}],"internalType":"struct AirdropData[]","name":"data","type":"tuple[]"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFeePpm","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"createLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getEnableTrading","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"getFeeBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"getFeeSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeStackingAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFeePpm","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBuyFeePpm","type":"uint256"}],"name":"setBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"name":"setEnableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setExcludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newSellFeePpm","type":"uint256"}],"name":"setSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"thisSharePpm","type":"uint256"},{"internalType":"uint256","name":"stackingSharePpm","type":"uint256"}],"name":"setShare","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newStackingAddress","type":"address"}],"name":"setStackingAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWithdrawAddress","type":"address"}],"name":"setWithdrawAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stackingAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stackingShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"thisShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405269021e19e0c9bab240000060009081556007805460ff60a01b1916600160a01b179055600a8190556064600b556101f4600c55600d553480156200004757600080fd5b506040518060400160405280600781526020016629ba34b63a37b760c91b8152506040518060400160405280600581526020016414d512531560da1b8152503382828160019080519060200190620000a192919062000181565b508051620000b790600290602084019062000181565b505060058054610100600160a81b03191633610100810291909117909155600680546001600160a01b0319166001600160a01b0394909416939093179092555060096020527fec8156718a8372b1db44bb411437d0870f3e3790d4a08526d024ce1b0b668f6b805460ff1990811660019081179092557f960b1051749987b45b5679007fff577a1c2f763ec21c15a6c5eb19307500378580548216831790553060009081526040808220805484168517905593815292909220805490921617905550620002649050565b8280546200018f9062000227565b90600052602060002090601f016020900481019282620001b35760008555620001fe565b82601f10620001ce57805160ff1916838001178555620001fe565b82800160010185558215620001fe579182015b82811115620001fe578251825591602001919060010190620001e1565b506200020c92915062000210565b5090565b5b808211156200020c576000815560010162000211565b600181811c908216806200023c57607f821691505b602082108114156200025e57634e487b7160e01b600052602260045260246000fd5b50919050565b611d2180620002746000396000f3fe6080604052600436106101f25760003560e01c806370a082311161010d578063c4b44a40116100a0578063d57038e11161006f578063d57038e114610570578063dd62ed3e14610586578063e0c9ffc6146105cc578063f2fde38b146105ec578063f95fa9cf1461060c57600080fd5b8063c4b44a4014610506578063c7af2a9c1461051c578063c816841b14610531578063cf991d051461055157600080fd5b80639cc901bc116100dc5780639cc901bc14610491578063a9059cbb146104b1578063b92ebd5f146104d1578063c17088e6146104f157600080fd5b806370a08231146104035780638b4cee08146104395780638da5cb5b1461045957806395d89b411461047c57600080fd5b806323b872dd116101855780633ab1a494116101545780633ab1a4941461038e5780633ccfd60b146103ae5780636bf8e9cc146103c35780636c90b57f146103e357600080fd5b806323b872dd1461032657806326629f28146103465780632ccb93211461035c578063313ce5671461037257600080fd5b80631581b600116101c15780631581b600146102b357806318160ddd146102d15780631a795197146102f05780631d55009a1461031057600080fd5b806306fdde03146101fe57806308b4cb1f14610229578063095ea7b3146102615780630cc835a31461029157600080fd5b366101f957005b600080fd5b34801561020a57600080fd5b5061021361062c565b6040516102209190611a1a565b60405180910390f35b34801561023557600080fd5b50600854610249906001600160a01b031681565b6040516001600160a01b039091168152602001610220565b34801561026d57600080fd5b5061028161027c3660046117a7565b6106be565b6040519015158152602001610220565b34801561029d57600080fd5b506102b16102ac366004611941565b6106d5565b005b3480156102bf57600080fd5b506006546001600160a01b0316610249565b3480156102dd57600080fd5b506000545b604051908152602001610220565b3480156102fc57600080fd5b506102e261030b3660046117a7565b6106ff565b34801561031c57600080fd5b506102e2600c5481565b34801561033257600080fd5b50610281610341366004611766565b610723565b34801561035257600080fd5b506102e2600d5481565b34801561036857600080fd5b5061024961dead81565b34801561037e57600080fd5b5060405160098152602001610220565b34801561039a57600080fd5b506102b16103a93660046116f3565b61078d565b3480156103ba57600080fd5b506102b16107c6565b3480156103cf57600080fd5b506102b16103de36600461195a565b6107e7565b3480156103ef57600080fd5b506102b16103fe3660046117d3565b610824565b34801561040f57600080fd5b506102e261041e3660046116f3565b6001600160a01b031660009081526003602052604090205490565b34801561044557600080fd5b506102b1610454366004611941565b6108a5565b34801561046557600080fd5b5060055461010090046001600160a01b0316610249565b34801561048857600080fd5b506102136108cf565b34801561049d57600080fd5b506102b16104ac3660046116f3565b6108de565b3480156104bd57600080fd5b506102816104cc3660046117a7565b610917565b3480156104dd57600080fd5b506102b16104ec366004611926565b610924565b3480156104fd57600080fd5b506102b161095e565b34801561051257600080fd5b506102e2600b5481565b34801561052857600080fd5b506102b1610987565b34801561053d57600080fd5b50600754610249906001600160a01b031681565b34801561055d57600080fd5b50600754600160a01b900460ff16610281565b34801561057c57600080fd5b506102e2600a5481565b34801561059257600080fd5b506102e26105a136600461172d565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b3480156105d857600080fd5b506102b16105e73660046118b1565b610caa565b3480156105f857600080fd5b506102b16106073660046116f3565b610e68565b34801561061857600080fd5b506102e26106273660046117a7565b610eac565b60606001805461063b90611c1e565b80601f016020809104026020016040519081016040528092919081815260200182805461066790611c1e565b80156106b45780601f10610689576101008083540402835291602001916106b4565b820191906000526020600020905b81548152906001019060200180831161069757829003601f168201915b5050505050905090565b60006106cb338484610ebf565b5060015b92915050565b6006546001600160a01b031633146106ec57600080fd5b60c88111156106fa57600080fd5b600a55565b60006103e8600b54836107129190611be8565b61071c9190611ad8565b9392505050565b6000610730848484610f20565b6001600160a01b03841660009081526004602090815260408083203384529091529020548281101561076157600080fd5b60001981141561077557600191505061071c565b6107828533858403610ebf565b506001949350505050565b6006546001600160a01b031633146107a457600080fd5b600680546001600160a01b0319166001600160a01b0392909216919091179055565b6006546001600160a01b031633146107dd57600080fd5b6107e5611164565b565b6006546001600160a01b031633146107fe57600080fd5b600c829055600d8190556103e86108158284611ac0565b111561082057600080fd5b5050565b6006546001600160a01b0316331461083b57600080fd5b60005b82518110156108a057816009600085848151811061085e5761085e611c8a565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905561089981611c59565b905061083e565b505050565b6006546001600160a01b031633146108bc57600080fd5b60c88111156108ca57600080fd5b600b55565b60606002805461063b90611c1e565b6006546001600160a01b031633146108f557600080fd5b600880546001600160a01b0319166001600160a01b0392909216919091179055565b60006106cb338484610f20565b60055461010090046001600160a01b0316331461094057600080fd5b60078054911515600160a01b0260ff60a01b19909216919091179055565b6006546001600160a01b0316331461097557600080fd5b600880546001600160a01b0319169055565b60055461010090046001600160a01b031633146109a357600080fd5b6007546001600160a01b0316156109b957600080fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610a0857600080fd5b505afa158015610a1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a409190611710565b6001600160a01b031663c9c6539630737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610a9c57600080fd5b505afa158015610ab0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad49190611710565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b158015610b1c57600080fd5b505af1158015610b30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b549190611710565b90506000610b606111a0565b30600081815260036020526040808220849055519293509091600080516020611ccc83398151915290610b969085815260200190565b60405180910390a3306000818152600460208181526040808420737a250d5630b4cf539739df2c5dacb4c659f2488d80865290835281852060001990556001600160a01b03881685526009909252808420805460ff191660011790555163f305d71960e01b815291820193909352602481018490526044810182905260648101919091523360848201524260a482015263f305d71990479060c4016060604051808303818588803b158015610c4a57600080fd5b505af1158015610c5e573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610c83919061197c565b5050600780546001600160a01b0319166001600160a01b0394909416939093179092555050565b60055461010090046001600160a01b03163314610cc657600080fd5b60005b81811015610e4a576000306001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015610d0c57600080fd5b505afa158015610d20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d4491906119aa565b610d4f90600a611b3d565b848484818110610d6157610d61611c8a565b90506040020160200135610d759190611be8565b905080600e6000828254610d899190611ac0565b9091555081905060036000868686818110610da657610da6611c8a565b610dbc92602060409092020190810191506116f3565b6001600160a01b03168152602081019190915260400160002055838383818110610de857610de8611c8a565b610dfe92602060409092020190810191506116f3565b6001600160a01b031660006001600160a01b0316600080516020611ccc83398151915283604051610e3191815260200190565b60405180910390a350610e4381611c59565b9050610cc9565b506000600e54600054610e5d9190611c07565b101561082057600080fd5b60055461010090046001600160a01b03163314610e8457600080fd5b600580546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b60006103e8600a54836107129190611be8565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316600090815260036020526040902054811115610f8d5760405162461bcd60e51b815260206004820152601d60248201527f6e6f7420656e6f75676820746f6b656e20666f72207472616e7366657200000060448201526064015b60405180910390fd5b6001600160a01b038216610fd75760405162461bcd60e51b8152602060048201526011602482015270696e636f7272656374206164647265737360781b6044820152606401610f84565b6007546001600160a01b03848116911614801561100d57506001600160a01b03821660009081526009602052604090205460ff16155b1561107057600754600160a01b900460ff1661105e5760405162461bcd60e51b815260206004820152601060248201526f1d1c98591a5b99c8191a5cd8589b195960821b6044820152606401610f84565b6110698383836111b7565b9050611159565b60055460ff1615801561108d57506007546001600160a01b031615155b80156110a657506007546001600160a01b038381169116145b80156110cb57506001600160a01b03831660009081526009602052604090205460ff16155b1561115957600754600160a01b900460ff1661111c5760405162461bcd60e51b815260206004820152601060248201526f1d1c98591a5b99c8191a5cd8589b195960821b6044820152606401610f84565b61112683826111d5565b30600090815260036020526040902054909150611159908290737a250d5630b4cf539739df2c5dacb4c659f2488d6111e6565b6108a083838361121b565b6006546040516001600160a01b03909116904780156108fc02916000818181858888f1935050505015801561119d573d6000803e3d6000fd5b50565b6000600e546000546111b29190611c07565b905090565b60006111cd84836111c88686610eac565b6112c0565b949350505050565b600061071c83836111c886866106ff565b816111f057505050565b60006111fd846002611be8565b90508083111561120b578092505b61121583836114c9565b50505050565b6001600160a01b0383166000908152600360205260409020548181101561124157600080fd5b6001600160a01b03808516600090815260036020526040808220858503905591851681529081208054849290611278908490611ac0565b92505081905550826001600160a01b0316846001600160a01b0316600080516020611ccc833981519152846040516112b291815260200190565b60405180910390a350505050565b6000806103e8600c54846112d49190611be8565b6112de9190611ad8565b6008549091506000906001600160a01b031615611313576103e8600d54856113069190611be8565b6113109190611ad8565b90505b60006103e8600d54600c546113289190611ac0565b101561134657816113398487611c07565b6113439190611c07565b90505b6113508587611c07565b6001600160a01b03881660009081526003602052604081208054929850879290919061137d908490611c07565b909155505082156113db5730600090815260036020526040812080548592906113a7908490611ac0565b909155505060405183815230906001600160a01b03891690600080516020611ccc8339815191529060200160405180910390a35b8115611444576008546001600160a01b03166000908152600360205260408120805484929061140b908490611ac0565b90915550506008546040518381526001600160a01b0391821691891690600080516020611ccc8339815191529060200160405180910390a35b80156114be5761dead600090815260036020527f262bb27bbdd95c1cdc8e16957e36e38579ea44f7f6413dd7a9c75939def06b2c8054839290611488908490611ac0565b909155505060405181815261dead906001600160a01b03891690600080516020611ccc8339815191529060200160405180910390a35b509395945050505050565b6005805460ff19166001179055604080516002808252606082018352600092602083019080368337019050509050308160008151811061150b5761150b611c8a565b60200260200101906001600160a01b031690816001600160a01b031681525050816001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561156457600080fd5b505afa158015611578573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061159c9190611710565b816001815181106115af576115af611c8a565b60200260200101906001600160a01b031690816001600160a01b0316815250506115fc6040518060400160405280600b81526020016a03237bab13632a9bbb0b8160ad1b81525084611672565b6040516318cbafe560e01b81526001600160a01b038316906318cbafe590611631908690600090869030904290600401611a4f565b600060405180830381600087803b15801561164b57600080fd5b505af115801561165f573d6000803e3d6000fd5b50506005805460ff191690555050505050565b6108208282604051602401611688929190611a2d565b60408051601f198184030181529190526020810180516001600160e01b03166309710a9d60e41b17905280516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b80356116de81611cb6565b919050565b803580151581146116de57600080fd5b60006020828403121561170557600080fd5b813561071c81611cb6565b60006020828403121561172257600080fd5b815161071c81611cb6565b6000806040838503121561174057600080fd5b823561174b81611cb6565b9150602083013561175b81611cb6565b809150509250929050565b60008060006060848603121561177b57600080fd5b833561178681611cb6565b9250602084013561179681611cb6565b929592945050506040919091013590565b600080604083850312156117ba57600080fd5b82356117c581611cb6565b946020939093013593505050565b600080604083850312156117e657600080fd5b823567ffffffffffffffff808211156117fe57600080fd5b818501915085601f83011261181257600080fd5b813560208282111561182657611826611ca0565b8160051b604051601f19603f8301168101818110868211171561184b5761184b611ca0565b604052838152828101945085830182870184018b101561186a57600080fd5b600096505b8487101561189457611880816116d3565b86526001969096019594830194830161186f565b5096506118a490508782016116e3565b9450505050509250929050565b600080602083850312156118c457600080fd5b823567ffffffffffffffff808211156118dc57600080fd5b818501915085601f8301126118f057600080fd5b8135818111156118ff57600080fd5b8660208260061b850101111561191457600080fd5b60209290920196919550909350505050565b60006020828403121561193857600080fd5b61071c826116e3565b60006020828403121561195357600080fd5b5035919050565b6000806040838503121561196d57600080fd5b50508035926020909101359150565b60008060006060848603121561199157600080fd5b8351925060208401519150604084015190509250925092565b6000602082840312156119bc57600080fd5b815160ff8116811461071c57600080fd5b6000815180845260005b818110156119f3576020818501810151868301820152016119d7565b81811115611a05576000602083870101525b50601f01601f19169290920160200192915050565b60208152600061071c60208301846119cd565b604081526000611a4060408301856119cd565b90508260208301529392505050565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611a9f5784516001600160a01b031683529383019391830191600101611a7a565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115611ad357611ad3611c74565b500190565b600082611af557634e487b7160e01b600052601260045260246000fd5b500490565b600181815b80851115611b35578160001904821115611b1b57611b1b611c74565b80851615611b2857918102915b93841c9390800290611aff565b509250929050565b600061071c60ff841683600082611b56575060016106cf565b81611b63575060006106cf565b8160018114611b795760028114611b8357611b9f565b60019150506106cf565b60ff841115611b9457611b94611c74565b50506001821b6106cf565b5060208310610133831016604e8410600b8410161715611bc2575081810a6106cf565b611bcc8383611afa565b8060001904821115611be057611be0611c74565b029392505050565b6000816000190483118215151615611c0257611c02611c74565b500290565b600082821015611c1957611c19611c74565b500390565b600181811c90821680611c3257607f821691505b60208210811415611c5357634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415611c6d57611c6d611c74565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461119d57600080fdfeddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212208362dd915467f4b3c934cea163f64ae022a3853aba28e05dedc36e9687b8856264736f6c63430008070033

Deployed Bytecode

0x6080604052600436106101f25760003560e01c806370a082311161010d578063c4b44a40116100a0578063d57038e11161006f578063d57038e114610570578063dd62ed3e14610586578063e0c9ffc6146105cc578063f2fde38b146105ec578063f95fa9cf1461060c57600080fd5b8063c4b44a4014610506578063c7af2a9c1461051c578063c816841b14610531578063cf991d051461055157600080fd5b80639cc901bc116100dc5780639cc901bc14610491578063a9059cbb146104b1578063b92ebd5f146104d1578063c17088e6146104f157600080fd5b806370a08231146104035780638b4cee08146104395780638da5cb5b1461045957806395d89b411461047c57600080fd5b806323b872dd116101855780633ab1a494116101545780633ab1a4941461038e5780633ccfd60b146103ae5780636bf8e9cc146103c35780636c90b57f146103e357600080fd5b806323b872dd1461032657806326629f28146103465780632ccb93211461035c578063313ce5671461037257600080fd5b80631581b600116101c15780631581b600146102b357806318160ddd146102d15780631a795197146102f05780631d55009a1461031057600080fd5b806306fdde03146101fe57806308b4cb1f14610229578063095ea7b3146102615780630cc835a31461029157600080fd5b366101f957005b600080fd5b34801561020a57600080fd5b5061021361062c565b6040516102209190611a1a565b60405180910390f35b34801561023557600080fd5b50600854610249906001600160a01b031681565b6040516001600160a01b039091168152602001610220565b34801561026d57600080fd5b5061028161027c3660046117a7565b6106be565b6040519015158152602001610220565b34801561029d57600080fd5b506102b16102ac366004611941565b6106d5565b005b3480156102bf57600080fd5b506006546001600160a01b0316610249565b3480156102dd57600080fd5b506000545b604051908152602001610220565b3480156102fc57600080fd5b506102e261030b3660046117a7565b6106ff565b34801561031c57600080fd5b506102e2600c5481565b34801561033257600080fd5b50610281610341366004611766565b610723565b34801561035257600080fd5b506102e2600d5481565b34801561036857600080fd5b5061024961dead81565b34801561037e57600080fd5b5060405160098152602001610220565b34801561039a57600080fd5b506102b16103a93660046116f3565b61078d565b3480156103ba57600080fd5b506102b16107c6565b3480156103cf57600080fd5b506102b16103de36600461195a565b6107e7565b3480156103ef57600080fd5b506102b16103fe3660046117d3565b610824565b34801561040f57600080fd5b506102e261041e3660046116f3565b6001600160a01b031660009081526003602052604090205490565b34801561044557600080fd5b506102b1610454366004611941565b6108a5565b34801561046557600080fd5b5060055461010090046001600160a01b0316610249565b34801561048857600080fd5b506102136108cf565b34801561049d57600080fd5b506102b16104ac3660046116f3565b6108de565b3480156104bd57600080fd5b506102816104cc3660046117a7565b610917565b3480156104dd57600080fd5b506102b16104ec366004611926565b610924565b3480156104fd57600080fd5b506102b161095e565b34801561051257600080fd5b506102e2600b5481565b34801561052857600080fd5b506102b1610987565b34801561053d57600080fd5b50600754610249906001600160a01b031681565b34801561055d57600080fd5b50600754600160a01b900460ff16610281565b34801561057c57600080fd5b506102e2600a5481565b34801561059257600080fd5b506102e26105a136600461172d565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b3480156105d857600080fd5b506102b16105e73660046118b1565b610caa565b3480156105f857600080fd5b506102b16106073660046116f3565b610e68565b34801561061857600080fd5b506102e26106273660046117a7565b610eac565b60606001805461063b90611c1e565b80601f016020809104026020016040519081016040528092919081815260200182805461066790611c1e565b80156106b45780601f10610689576101008083540402835291602001916106b4565b820191906000526020600020905b81548152906001019060200180831161069757829003601f168201915b5050505050905090565b60006106cb338484610ebf565b5060015b92915050565b6006546001600160a01b031633146106ec57600080fd5b60c88111156106fa57600080fd5b600a55565b60006103e8600b54836107129190611be8565b61071c9190611ad8565b9392505050565b6000610730848484610f20565b6001600160a01b03841660009081526004602090815260408083203384529091529020548281101561076157600080fd5b60001981141561077557600191505061071c565b6107828533858403610ebf565b506001949350505050565b6006546001600160a01b031633146107a457600080fd5b600680546001600160a01b0319166001600160a01b0392909216919091179055565b6006546001600160a01b031633146107dd57600080fd5b6107e5611164565b565b6006546001600160a01b031633146107fe57600080fd5b600c829055600d8190556103e86108158284611ac0565b111561082057600080fd5b5050565b6006546001600160a01b0316331461083b57600080fd5b60005b82518110156108a057816009600085848151811061085e5761085e611c8a565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905561089981611c59565b905061083e565b505050565b6006546001600160a01b031633146108bc57600080fd5b60c88111156108ca57600080fd5b600b55565b60606002805461063b90611c1e565b6006546001600160a01b031633146108f557600080fd5b600880546001600160a01b0319166001600160a01b0392909216919091179055565b60006106cb338484610f20565b60055461010090046001600160a01b0316331461094057600080fd5b60078054911515600160a01b0260ff60a01b19909216919091179055565b6006546001600160a01b0316331461097557600080fd5b600880546001600160a01b0319169055565b60055461010090046001600160a01b031633146109a357600080fd5b6007546001600160a01b0316156109b957600080fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610a0857600080fd5b505afa158015610a1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a409190611710565b6001600160a01b031663c9c6539630737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610a9c57600080fd5b505afa158015610ab0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad49190611710565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b158015610b1c57600080fd5b505af1158015610b30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b549190611710565b90506000610b606111a0565b30600081815260036020526040808220849055519293509091600080516020611ccc83398151915290610b969085815260200190565b60405180910390a3306000818152600460208181526040808420737a250d5630b4cf539739df2c5dacb4c659f2488d80865290835281852060001990556001600160a01b03881685526009909252808420805460ff191660011790555163f305d71960e01b815291820193909352602481018490526044810182905260648101919091523360848201524260a482015263f305d71990479060c4016060604051808303818588803b158015610c4a57600080fd5b505af1158015610c5e573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610c83919061197c565b5050600780546001600160a01b0319166001600160a01b0394909416939093179092555050565b60055461010090046001600160a01b03163314610cc657600080fd5b60005b81811015610e4a576000306001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015610d0c57600080fd5b505afa158015610d20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d4491906119aa565b610d4f90600a611b3d565b848484818110610d6157610d61611c8a565b90506040020160200135610d759190611be8565b905080600e6000828254610d899190611ac0565b9091555081905060036000868686818110610da657610da6611c8a565b610dbc92602060409092020190810191506116f3565b6001600160a01b03168152602081019190915260400160002055838383818110610de857610de8611c8a565b610dfe92602060409092020190810191506116f3565b6001600160a01b031660006001600160a01b0316600080516020611ccc83398151915283604051610e3191815260200190565b60405180910390a350610e4381611c59565b9050610cc9565b506000600e54600054610e5d9190611c07565b101561082057600080fd5b60055461010090046001600160a01b03163314610e8457600080fd5b600580546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b60006103e8600a54836107129190611be8565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316600090815260036020526040902054811115610f8d5760405162461bcd60e51b815260206004820152601d60248201527f6e6f7420656e6f75676820746f6b656e20666f72207472616e7366657200000060448201526064015b60405180910390fd5b6001600160a01b038216610fd75760405162461bcd60e51b8152602060048201526011602482015270696e636f7272656374206164647265737360781b6044820152606401610f84565b6007546001600160a01b03848116911614801561100d57506001600160a01b03821660009081526009602052604090205460ff16155b1561107057600754600160a01b900460ff1661105e5760405162461bcd60e51b815260206004820152601060248201526f1d1c98591a5b99c8191a5cd8589b195960821b6044820152606401610f84565b6110698383836111b7565b9050611159565b60055460ff1615801561108d57506007546001600160a01b031615155b80156110a657506007546001600160a01b038381169116145b80156110cb57506001600160a01b03831660009081526009602052604090205460ff16155b1561115957600754600160a01b900460ff1661111c5760405162461bcd60e51b815260206004820152601060248201526f1d1c98591a5b99c8191a5cd8589b195960821b6044820152606401610f84565b61112683826111d5565b30600090815260036020526040902054909150611159908290737a250d5630b4cf539739df2c5dacb4c659f2488d6111e6565b6108a083838361121b565b6006546040516001600160a01b03909116904780156108fc02916000818181858888f1935050505015801561119d573d6000803e3d6000fd5b50565b6000600e546000546111b29190611c07565b905090565b60006111cd84836111c88686610eac565b6112c0565b949350505050565b600061071c83836111c886866106ff565b816111f057505050565b60006111fd846002611be8565b90508083111561120b578092505b61121583836114c9565b50505050565b6001600160a01b0383166000908152600360205260409020548181101561124157600080fd5b6001600160a01b03808516600090815260036020526040808220858503905591851681529081208054849290611278908490611ac0565b92505081905550826001600160a01b0316846001600160a01b0316600080516020611ccc833981519152846040516112b291815260200190565b60405180910390a350505050565b6000806103e8600c54846112d49190611be8565b6112de9190611ad8565b6008549091506000906001600160a01b031615611313576103e8600d54856113069190611be8565b6113109190611ad8565b90505b60006103e8600d54600c546113289190611ac0565b101561134657816113398487611c07565b6113439190611c07565b90505b6113508587611c07565b6001600160a01b03881660009081526003602052604081208054929850879290919061137d908490611c07565b909155505082156113db5730600090815260036020526040812080548592906113a7908490611ac0565b909155505060405183815230906001600160a01b03891690600080516020611ccc8339815191529060200160405180910390a35b8115611444576008546001600160a01b03166000908152600360205260408120805484929061140b908490611ac0565b90915550506008546040518381526001600160a01b0391821691891690600080516020611ccc8339815191529060200160405180910390a35b80156114be5761dead600090815260036020527f262bb27bbdd95c1cdc8e16957e36e38579ea44f7f6413dd7a9c75939def06b2c8054839290611488908490611ac0565b909155505060405181815261dead906001600160a01b03891690600080516020611ccc8339815191529060200160405180910390a35b509395945050505050565b6005805460ff19166001179055604080516002808252606082018352600092602083019080368337019050509050308160008151811061150b5761150b611c8a565b60200260200101906001600160a01b031690816001600160a01b031681525050816001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561156457600080fd5b505afa158015611578573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061159c9190611710565b816001815181106115af576115af611c8a565b60200260200101906001600160a01b031690816001600160a01b0316815250506115fc6040518060400160405280600b81526020016a03237bab13632a9bbb0b8160ad1b81525084611672565b6040516318cbafe560e01b81526001600160a01b038316906318cbafe590611631908690600090869030904290600401611a4f565b600060405180830381600087803b15801561164b57600080fd5b505af115801561165f573d6000803e3d6000fd5b50506005805460ff191690555050505050565b6108208282604051602401611688929190611a2d565b60408051601f198184030181529190526020810180516001600160e01b03166309710a9d60e41b17905280516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b80356116de81611cb6565b919050565b803580151581146116de57600080fd5b60006020828403121561170557600080fd5b813561071c81611cb6565b60006020828403121561172257600080fd5b815161071c81611cb6565b6000806040838503121561174057600080fd5b823561174b81611cb6565b9150602083013561175b81611cb6565b809150509250929050565b60008060006060848603121561177b57600080fd5b833561178681611cb6565b9250602084013561179681611cb6565b929592945050506040919091013590565b600080604083850312156117ba57600080fd5b82356117c581611cb6565b946020939093013593505050565b600080604083850312156117e657600080fd5b823567ffffffffffffffff808211156117fe57600080fd5b818501915085601f83011261181257600080fd5b813560208282111561182657611826611ca0565b8160051b604051601f19603f8301168101818110868211171561184b5761184b611ca0565b604052838152828101945085830182870184018b101561186a57600080fd5b600096505b8487101561189457611880816116d3565b86526001969096019594830194830161186f565b5096506118a490508782016116e3565b9450505050509250929050565b600080602083850312156118c457600080fd5b823567ffffffffffffffff808211156118dc57600080fd5b818501915085601f8301126118f057600080fd5b8135818111156118ff57600080fd5b8660208260061b850101111561191457600080fd5b60209290920196919550909350505050565b60006020828403121561193857600080fd5b61071c826116e3565b60006020828403121561195357600080fd5b5035919050565b6000806040838503121561196d57600080fd5b50508035926020909101359150565b60008060006060848603121561199157600080fd5b8351925060208401519150604084015190509250925092565b6000602082840312156119bc57600080fd5b815160ff8116811461071c57600080fd5b6000815180845260005b818110156119f3576020818501810151868301820152016119d7565b81811115611a05576000602083870101525b50601f01601f19169290920160200192915050565b60208152600061071c60208301846119cd565b604081526000611a4060408301856119cd565b90508260208301529392505050565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611a9f5784516001600160a01b031683529383019391830191600101611a7a565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115611ad357611ad3611c74565b500190565b600082611af557634e487b7160e01b600052601260045260246000fd5b500490565b600181815b80851115611b35578160001904821115611b1b57611b1b611c74565b80851615611b2857918102915b93841c9390800290611aff565b509250929050565b600061071c60ff841683600082611b56575060016106cf565b81611b63575060006106cf565b8160018114611b795760028114611b8357611b9f565b60019150506106cf565b60ff841115611b9457611b94611c74565b50506001821b6106cf565b5060208310610133831016604e8410600b8410161715611bc2575081810a6106cf565b611bcc8383611afa565b8060001904821115611be057611be0611c74565b029392505050565b6000816000190483118215151615611c0257611c02611c74565b500290565b600082821015611c1957611c19611c74565b500390565b600181811c90821680611c3257607f821691505b60208210811415611c5357634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415611c6d57611c6d611c74565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461119d57600080fdfeddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212208362dd915467f4b3c934cea163f64ae022a3853aba28e05dedc36e9687b8856264736f6c63430008070033

Deployed Bytecode Sourcemap

79368:883:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;69066:85;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;73579:30;;;;;;;;;;-1:-1:-1;73579:30:0;;;;-1:-1:-1;;;;;73579:30:0;;;;;;-1:-1:-1;;;;;5711:32:1;;;5693:51;;5681:2;5666:18;73579:30:0;5547:203:1;70337:193:0;;;;;;;;;;-1:-1:-1;70337:193:0;;;;;:::i;:::-;;:::i;:::-;;;6841:14:1;;6834:22;6816:41;;6804:2;6789:18;70337:193:0;6676:187:1;76510:147:0;;;;;;;;;;-1:-1:-1;76510:147:0;;;;;:::i;:::-;;:::i;:::-;;759:101;;;;;;;;;;-1:-1:-1;836:16:0;;-1:-1:-1;;;;;836:16:0;759:101;;69349:102;;;;;;;;;;-1:-1:-1;69404:7:0;69431:12;69349:102;;;8584:25:1;;;8572:2;8557:18;69349:102:0;8438:177:1;76347:155:0;;;;;;;;;;-1:-1:-1;76347:155:0;;;;;:::i;:::-;;:::i;73773:30::-;;;;;;;;;;;;;;;;70766:504;;;;;;;;;;-1:-1:-1;70766:504:0;;;;;:::i;:::-;;:::i;73823:32::-;;;;;;;;;;;;;;;;73485:87;;;;;;;;;;;;73530:42;73485:87;;69256:85;;;;;;;;;;-1:-1:-1;69256:85:0;;68700:1;9747:36:1;;9735:2;9720:18;69256:85:0;9605:184:1;592:159:0;;;;;;;;;;-1:-1:-1;592:159:0;;;;;:::i;:::-;;:::i;396:74::-;;;;;;;;;;;;;:::i;77103:229::-;;;;;;;;;;-1:-1:-1;77103:229:0;;;;;:::i;:::-;;:::i;78676:243::-;;;;;;;;;;-1:-1:-1;78676:243:0;;;;;:::i;:::-;;:::i;79678:162::-;;;;;;;;;;-1:-1:-1;79678:162:0;;;;;:::i;:::-;-1:-1:-1;;;;;79814:18:0;79782:7;79814:18;;;:9;:18;;;;;;;79678:162;76665:152;;;;;;;;;;-1:-1:-1;76665:152:0;;;;;:::i;:::-;;:::i;64814:81::-;;;;;;;;;;-1:-1:-1;64881:6:0;;;;;-1:-1:-1;;;;;64881:6:0;64814:81;;69159:89;;;;;;;;;;;;;:::i;76825:158::-;;;;;;;;;;-1:-1:-1;76825:158:0;;;;;:::i;:::-;;:::i;69552:199::-;;;;;;;;;;-1:-1:-1;69552:199:0;;;;;:::i;:::-;;:::i;78927:97::-;;;;;;;;;;-1:-1:-1;78927:97:0;;;;;:::i;:::-;;:::i;76991:104::-;;;;;;;;;;;;;:::i;73718:31::-;;;;;;;;;;;;;;;;74250:856;;;;;;;;;;;;;:::i;73420:26::-;;;;;;;;;;-1:-1:-1;73420:26:0;;;;-1:-1:-1;;;;;73420:26:0;;;79032:96;;;;;;;;;;-1:-1:-1;79107:13:0;;-1:-1:-1;;;79107:13:0;;;;79032:96;;73666:28;;;;;;;;;;;;;;;;70143:186;;;;;;;;;;-1:-1:-1;70143:186:0;;;;;:::i;:::-;-1:-1:-1;;;;;70294:18:0;;;70262:7;70294:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;70143:186;79848:400;;;;;;;;;;-1:-1:-1;79848:400:0;;;;;:::i;:::-;;:::i;64706:100::-;;;;;;;;;;-1:-1:-1;64706:100:0;;;;;:::i;:::-;;:::i;76186:153::-;;;;;;;;;;-1:-1:-1;76186:153:0;;;;;:::i;:::-;;:::i;69066:85::-;69105:13;69138:5;69131:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;69066:85;:::o;70337:193::-;70441:4;70463:37;70472:10;70484:7;70493:6;70463:8;:37::i;:::-;-1:-1:-1;70518:4:0;70337:193;;;;;:::o;76510:147::-;351:16;;-1:-1:-1;;;;;351:16:0;337:10;:30;329:39;;;;;;76610:3:::1;76594:12;:19;;76586:28;;;::::0;::::1;;76625:9;:24:::0;76510:147::o;76347:155::-;76434:7;76490:4;76476:10;;76467:6;:19;;;;:::i;:::-;76466:28;;;;:::i;:::-;76459:35;76347:155;-1:-1:-1;;;76347:155:0:o;70766:504::-;70900:4;70917:36;70927:6;70935:9;70946:6;70917:9;:36::i;:::-;-1:-1:-1;;;;;70993:19:0;;70966:24;70993:19;;;:11;:19;;;;;;;;71013:10;70993:31;;;;;;;;71043:26;;;;71035:35;;;;;;-1:-1:-1;;71085:16:0;:38;71081:55;;;71132:4;71125:11;;;;;71081:55;71172;71181:6;71189:10;71220:6;71201:16;:25;71172:8;:55::i;:::-;-1:-1:-1;71258:4:0;;70766:504;-1:-1:-1;;;;70766:504:0:o;592:159::-;351:16;;-1:-1:-1;;;;;351:16:0;337:10;:30;329:39;;;;;;706:16:::1;:37:::0;;-1:-1:-1;;;;;;706:37:0::1;-1:-1:-1::0;;;;;706:37:0;;;::::1;::::0;;;::::1;::::0;;592:159::o;396:74::-;351:16;;-1:-1:-1;;;;;351:16:0;337:10;:30;329:39;;;;;;451:11:::1;:9;:11::i;:::-;396:74::o:0;77103:229::-;351:16;;-1:-1:-1;;;;;351:16:0;337:10;:30;329:39;;;;;;77204:9:::1;:24:::0;;;77239:13:::1;:32:::0;;;77319:4:::1;77290:25;77255:16:::0;77216:12;77290:25:::1;:::i;:::-;:33;;77282:42;;;::::0;::::1;;77103:229:::0;;:::o;78676:243::-;351:16;;-1:-1:-1;;;;;351:16:0;337:10;:30;329:39;;;;;;78805:9:::1;78800:112;78824:8;:15;78820:1;:19;78800:112;;;78895:5;78861:18;:31;78880:8;78889:1;78880:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;78861:31:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;78861:31:0;:39;;-1:-1:-1;;78861:39:0::1;::::0;::::1;;::::0;;;::::1;::::0;;78841:3:::1;::::0;::::1;:::i;:::-;;;78800:112;;;;78676:243:::0;;:::o;76665:152::-;351:16;;-1:-1:-1;;;;;351:16:0;337:10;:30;329:39;;;;;;76768:3:::1;76751:13;:20;;76743:29;;;::::0;::::1;;76783:10;:26:::0;76665:152::o;69159:89::-;69200:13;69233:7;69226:14;;;;;:::i;76825:158::-;351:16;;-1:-1:-1;;;;;351:16:0;337:10;:30;329:39;;;;;;76939:15:::1;:36:::0;;-1:-1:-1;;;;;;76939:36:0::1;-1:-1:-1::0;;;;;76939:36:0;;;::::1;::::0;;;::::1;::::0;;76825:158::o;69552:199::-;69659:4;69681:40;69691:10;69703:9;69714:6;69681:9;:40::i;78927:97::-;64611:6;;;;;-1:-1:-1;;;;;64611:6:0;64597:10;:20;64589:29;;;;;;78995:13:::1;:21:::0;;;::::1;;-1:-1:-1::0;;;78995:21:0::1;-1:-1:-1::0;;;;78995:21:0;;::::1;::::0;;;::::1;::::0;;78927:97::o;76991:104::-;351:16;;-1:-1:-1;;;;;351:16:0;337:10;:30;329:39;;;;;;77059:15:::1;:28:::0;;-1:-1:-1;;;;;;77059:28:0::1;::::0;;76991:104::o;74250:856::-;64611:6;;;;;-1:-1:-1;;;;;64611:6:0;64597:10;:20;64589:29;;;;;;74313:11:::1;::::0;-1:-1:-1;;;;;74313:11:0::1;:25:::0;74305:34:::1;;;::::0;::::1;;74350:12;73370:42;-1:-1:-1::0;;;;;74383:24:0::1;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;74365:56:0::1;;74444:4;73370:42;-1:-1:-1::0;;;;;74464:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;74365:133;::::0;-1:-1:-1;;;;;;74365:133:0::1;::::0;;;;;;-1:-1:-1;;;;;5985:15:1;;;74365:133:0::1;::::0;::::1;5967:34:1::0;6037:15;;6017:18;;;6010:43;5902:18;;74365:133:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;74350:148;;74509:24;74536:27;:25;:27::i;:::-;74592:4;74574:24;::::0;;;:9:::1;:24;::::0;;;;;:43;;;74633:53;74509:54;;-1:-1:-1;74592:4:0;;-1:-1:-1;;;;;;;;;;;74633:53:0;::::1;::::0;74509:54;8584:25:1;;8572:2;8557:18;;8438:177;74633:53:0::1;;;;;;;;74717:4;74697:26;::::0;;;:11:::1;:26;::::0;;;;;;;73370:42:::1;74697:77:::0;;;;;;;;;-1:-1:-1;;74697:98:0;;-1:-1:-1;;;;;74806:24:0;::::1;::::0;;:18:::1;:24:::0;;;;;;:31;;-1:-1:-1;;74806:31:0::1;74833:4;74806:31;::::0;;74848:219;-1:-1:-1;;;74848:219:0;;;;::::1;6405:34:1::0;;;;6455:18;;;6448:34;;;6498:18;;;6491:34;;;6541:18;;;6534:34;;;;75016:10:0::1;6584:19:1::0;;;6577:44;75041:15:0::1;6637:19:1::0;;;6630:35;74848:32:0::1;::::0;74888:21:::1;::::0;6339:19:1;;74848:219:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;75080:11:0::1;:18:::0;;-1:-1:-1;;;;;;75080:18:0::1;-1:-1:-1::0;;;;;75080:18:0;;;::::1;::::0;;;::::1;::::0;;;-1:-1:-1;;74250:856:0:o;79848:400::-;64611:6;;;;;-1:-1:-1;;;;;64611:6:0;64597:10;:20;64589:29;;;;;;79929:9:::1;79924:264;79944:15:::0;;::::1;79924:264;;;79981:13;80018:4;-1:-1:-1::0;;;;;80018:13:0::1;;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;80014:19;::::0;:2:::1;:19;:::i;:::-;79997:4;;80002:1;79997:7;;;;;;;:::i;:::-;;;;;;:13;;;:37;;;;:::i;:::-;79981:53;;80066:5;80049:13;;:22;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;80111:5:0;;-1:-1:-1;80086:9:0::1;:22;80096:4:::0;;80101:1;80096:7;;::::1;;;;;:::i;:::-;:11;::::0;::::1;:7;::::0;;::::1;;:11:::0;;::::1;::::0;-1:-1:-1;80096:11:0::1;:::i;:::-;-1:-1:-1::0;;;;;80086:22:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;80086:22:0;:30;80157:4;;80162:1;80157:7;;::::1;;;;;:::i;:::-;:11;::::0;::::1;:7;::::0;;::::1;;:11:::0;;::::1;::::0;-1:-1:-1;80157:11:0::1;:::i;:::-;-1:-1:-1::0;;;;;80136:40:0::1;80153:1;-1:-1:-1::0;;;;;80136:40:0::1;-1:-1:-1::0;;;;;;;;;;;80170:5:0::1;80136:40;;;;8584:25:1::0;;8572:2;8557:18;;8438:177;80136:40:0::1;;;;;;;;-1:-1:-1::0;79961:3:0::1;::::0;::::1;:::i;:::-;;;79924:264;;;;80238:1;80221:13;;80206:12;;:28;;;;:::i;:::-;:33;;80198:42;;;::::0;::::1;64706:100:::0;64611:6;;;;;-1:-1:-1;;;;;64611:6:0;64597:10;:20;64589:29;;;;;;64781:6:::1;:17:::0;;-1:-1:-1;;;;;64781:17:0;;::::1;;;-1:-1:-1::0;;;;;;64781:17:0;;::::1;::::0;;;::::1;::::0;;64706:100::o;76186:153::-;76272:7;76327:4;76314:9;;76305:6;:18;;;;:::i;70538:220::-;-1:-1:-1;;;;;70666:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;70718:32;;8584:25:1;;;70718:32:0;;8557:18:1;70718:32:0;;;;;;;70538:220;;;:::o;75114:1064::-;-1:-1:-1;;;;;75246:15:0;;;;;;:9;:15;;;;;;:25;-1:-1:-1;75246:25:0;75238:67;;;;-1:-1:-1;;;75238:67:0;;7591:2:1;75238:67:0;;;7573:21:1;7630:2;7610:18;;;7603:30;7669:31;7649:18;;;7642:59;7718:18;;75238:67:0;;;;;;;;;-1:-1:-1;;;;;75324:16:0;;75316:46;;;;-1:-1:-1;;;75316:46:0;;8294:2:1;75316:46:0;;;8276:21:1;8333:2;8313:18;;;8306:30;-1:-1:-1;;;8352:18:1;;;8345:47;8409:18;;75316:46:0;8092:341:1;75316:46:0;75403:11;;-1:-1:-1;;;;;75395:19:0;;;75403:11;;75395:19;:46;;;;-1:-1:-1;;;;;;75419:22:0;;;;;;:18;:22;;;;;;;;75418:23;75395:46;75391:713;;;75466:13;;-1:-1:-1;;;75466:13:0;;;;75458:42;;;;-1:-1:-1;;;75458:42:0;;7949:2:1;75458:42:0;;;7931:21:1;7988:2;7968:18;;;7961:30;-1:-1:-1;;;8007:18:1;;;8000:46;8063:18;;75458:42:0;7747:340:1;75458:42:0;75550:28;75561:4;75567:2;75571:6;75550:10;:28::i;:::-;75541:37;;75391:713;;;75641:7;;;;75640:8;:50;;;;-1:-1:-1;75665:11:0;;-1:-1:-1;;;;;75665:11:0;:25;;75640:50;:84;;;;-1:-1:-1;75713:11:0;;-1:-1:-1;;;;;75707:17:0;;;75713:11;;75707:17;75640:84;:126;;;;-1:-1:-1;;;;;;75742:24:0;;;;;;:18;:24;;;;;;;;75741:25;75640:126;75622:482;;;75801:13;;-1:-1:-1;;;75801:13:0;;;;75793:42;;;;-1:-1:-1;;;75793:42:0;;7949:2:1;75793:42:0;;;7931:21:1;7988:2;7968:18;;;7961:30;-1:-1:-1;;;8007:18:1;;;8000:46;8063:18;;75793:42:0;7747:340:1;75793:42:0;75879:25;75891:4;75897:6;75879:11;:25::i;:::-;76036:4;76018:24;;;;:9;:24;;;;;;75870:34;;-1:-1:-1;75947:145:0;;75870:34;;73370:42;75947:27;:145::i;:::-;76137:33;76153:4;76159:2;76163:6;76137:15;:33::i;478:106::-;527:16;;519:57;;-1:-1:-1;;;;;527:16:0;;;;554:21;519:57;;;;;527:16;519:57;527:16;519:57;554:21;527:16;519:57;;;;;;;;;;;;;;;;;;;;;478:106::o;79497:173::-;79602:7;79649:13;;79634:12;;:28;;;;:::i;:::-;79627:35;;79497:173;:::o;77340:196::-;77453:7;77480:48;77492:4;77498:6;77506:21;77516:2;77520:6;77506:9;:21::i;:::-;77480:11;:48::i;:::-;77473:55;77340:196;-1:-1:-1;;;;77340:196:0:o;77544:177::-;77630:7;77662:51;77674:4;77680:6;77688:24;77699:4;77705:6;77688:10;:24::i;67302:379::-;67477:14;67473:27;;67302:379;;;:::o;67473:27::-;67510:20;67533:18;67537:14;67533:1;:18;:::i;:::-;67510:41;;67578:12;67566:9;:24;67562:54;;;67604:12;67592:24;;67562:54;67627:46;67645:9;67656:16;67627:17;:46::i;:::-;67462:219;67302:379;;;:::o;69759:376::-;-1:-1:-1;;;;;69906:15:0;;69882:21;69906:15;;;:9;:15;;;;;;69940:23;;;;69932:32;;;;;;-1:-1:-1;;;;;70000:15:0;;;;;;;:9;:15;;;;;;70018:22;;;70000:40;;70062:13;;;;;;;;:23;;70034:6;;70000:15;70062:23;;70034:6;;70062:23;:::i;:::-;;;;;;;;70116:2;-1:-1:-1;;;;;70101:26:0;70110:4;-1:-1:-1;;;;;70101:26:0;-1:-1:-1;;;;;;;;;;;70120:6:0;70101:26;;;;8584:25:1;;8572:2;8557:18;;8438:177;70101:26:0;;;;;;;;69871:264;69759:376;;;:::o;77729:939::-;77844:7;77864:15;77902:4;77889:9;;77883:3;:15;;;;:::i;:::-;77882:24;;;;:::i;:::-;77952:15;;77864:42;;-1:-1:-1;77917:16:0;;-1:-1:-1;;;;;77952:15:0;:29;77948:87;;78031:4;78014:13;;78008:3;:19;;;;:::i;:::-;78007:28;;;;:::i;:::-;77996:39;;77948:87;78046:12;78105:4;78089:13;;78077:9;;:25;;;;:::i;:::-;:32;78073:69;;;78134:8;78118:13;78124:7;78118:3;:13;:::i;:::-;:24;;;;:::i;:::-;78111:31;;78073:69;78155:13;78165:3;78155:13;;:::i;:::-;-1:-1:-1;;;;;78179:15:0;;;;;;:9;:15;;;;;:22;;78155:13;;-1:-1:-1;78198:3:0;;78179:15;;;:22;;78198:3;;78179:22;:::i;:::-;;;;-1:-1:-1;;78218:11:0;;78214:137;;78264:4;78246:24;;;;:9;:24;;;;;:35;;78274:7;;78246:24;:35;;78274:7;;78246:35;:::i;:::-;;;;-1:-1:-1;;78301:38:0;;8584:25:1;;;78324:4:0;;-1:-1:-1;;;;;78301:38:0;;;-1:-1:-1;;;;;;;;;;;78301:38:0;8572:2:1;8557:18;78301:38:0;;;;;;;78214:137;78365:12;;78361:144;;78404:15;;-1:-1:-1;;;;;78404:15:0;78394:26;;;;:9;:26;;;;;:38;;78424:8;;78394:26;:38;;78424:8;;78394:38;:::i;:::-;;;;-1:-1:-1;;78467:15:0;;78452:41;;8584:25:1;;;-1:-1:-1;;;;;78467:15:0;;;;78452:41;;;-1:-1:-1;;;;;;;;;;;78452:41:0;8572:2:1;8557:18;78452:41:0;;;;;;;78361:144;78519:8;;78515:120;;73530:42;78544:20;;;;:9;:20;;;:28;;78568:4;;78544:20;:28;;78568:4;;78544:28;:::i;:::-;;;;-1:-1:-1;;78592:31:0;;8584:25:1;;;73530:42:0;;-1:-1:-1;;;;;78592:31:0;;;-1:-1:-1;;;;;;;;;;;78592:31:0;8572:2:1;8557:18;78592:31:0;;;;;;;78515:120;-1:-1:-1;78654:6:0;;77729:939;-1:-1:-1;;;;;77729:939:0:o;66665:629::-;66597:7;:14;;-1:-1:-1;;66597:14:0;66607:4;66597:14;;;66891:16:::1;::::0;;66905:1:::1;66891:16:::0;;;;;::::1;::::0;;-1:-1:-1;;66891:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;66891:16:0::1;66867:40;;66936:4;66918;66923:1;66918:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;66918:23:0::1;;;-1:-1:-1::0;;;;;66918:23:0::1;;;::::0;::::1;66962:16;-1:-1:-1::0;;;;;66962:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;66952:4;66957:1;66952:7;;;;;;;;:::i;:::-;;;;;;:33;-1:-1:-1::0;;;;;66952:33:0::1;;;-1:-1:-1::0;;;;;66952:33:0::1;;;::::0;::::1;67024:39;;;;;;;;;;;;;;-1:-1:-1::0;;;67024:39:0::1;;::::0;67051:11:::1;67024;:39::i;:::-;67074:212;::::0;-1:-1:-1;;;67074:212:0;;-1:-1:-1;;;;;67074:38:0;::::1;::::0;::::1;::::0;:212:::1;::::0;67127:11;;67153:1:::1;::::0;67197:4;;67224::::1;::::0;67260:15:::1;::::0;67074:212:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;66634:7:0;:15;;-1:-1:-1;;66634:15:0;;;-1:-1:-1;;;;;66665:629:0:o;6959:132::-;7018:68;7078:2;7082;7034:51;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;7034:51:0;;;;;;;;;;;;;;-1:-1:-1;;;;;7034:51:0;-1:-1:-1;;;7034:51:0;;;1139:14;;1001:42;1251:2;1238:16;;1115:21;;1139:14;1238:16;1001:42;1279:5;1268:68;1259:77;;1212:129;;1050:295;:::o;14:134:1:-;82:20;;111:31;82:20;111:31;:::i;:::-;14:134;;;:::o;153:160::-;218:20;;274:13;;267:21;257:32;;247:60;;303:1;300;293:12;318:247;377:6;430:2;418:9;409:7;405:23;401:32;398:52;;;446:1;443;436:12;398:52;485:9;472:23;504:31;529:5;504:31;:::i;570:251::-;640:6;693:2;681:9;672:7;668:23;664:32;661:52;;;709:1;706;699:12;661:52;741:9;735:16;760:31;785:5;760:31;:::i;826:388::-;894:6;902;955:2;943:9;934:7;930:23;926:32;923:52;;;971:1;968;961:12;923:52;1010:9;997:23;1029:31;1054:5;1029:31;:::i;:::-;1079:5;-1:-1:-1;1136:2:1;1121:18;;1108:32;1149:33;1108:32;1149:33;:::i;:::-;1201:7;1191:17;;;826:388;;;;;:::o;1219:456::-;1296:6;1304;1312;1365:2;1353:9;1344:7;1340:23;1336:32;1333:52;;;1381:1;1378;1371:12;1333:52;1420:9;1407:23;1439:31;1464:5;1439:31;:::i;:::-;1489:5;-1:-1:-1;1546:2:1;1531:18;;1518:32;1559:33;1518:32;1559:33;:::i;:::-;1219:456;;1611:7;;-1:-1:-1;;;1665:2:1;1650:18;;;;1637:32;;1219:456::o;1680:315::-;1748:6;1756;1809:2;1797:9;1788:7;1784:23;1780:32;1777:52;;;1825:1;1822;1815:12;1777:52;1864:9;1851:23;1883:31;1908:5;1883:31;:::i;:::-;1933:5;1985:2;1970:18;;;;1957:32;;-1:-1:-1;;;1680:315:1:o;2000:1202::-;2090:6;2098;2151:2;2139:9;2130:7;2126:23;2122:32;2119:52;;;2167:1;2164;2157:12;2119:52;2207:9;2194:23;2236:18;2277:2;2269:6;2266:14;2263:34;;;2293:1;2290;2283:12;2263:34;2331:6;2320:9;2316:22;2306:32;;2376:7;2369:4;2365:2;2361:13;2357:27;2347:55;;2398:1;2395;2388:12;2347:55;2434:2;2421:16;2456:4;2479:2;2475;2472:10;2469:36;;;2485:18;;:::i;:::-;2531:2;2528:1;2524:10;2563:2;2557:9;2626:2;2622:7;2617:2;2613;2609:11;2605:25;2597:6;2593:38;2681:6;2669:10;2666:22;2661:2;2649:10;2646:18;2643:46;2640:72;;;2692:18;;:::i;:::-;2728:2;2721:22;2778:18;;;2812:15;;;;-1:-1:-1;2847:11:1;;;2877;;;2873:20;;2870:33;-1:-1:-1;2867:53:1;;;2916:1;2913;2906:12;2867:53;2938:1;2929:10;;2948:169;2962:2;2959:1;2956:9;2948:169;;;3019:23;3038:3;3019:23;:::i;:::-;3007:36;;2980:1;2973:9;;;;;3063:12;;;;3095;;2948:169;;;-1:-1:-1;3136:6:1;-1:-1:-1;3161:35:1;;-1:-1:-1;3177:18:1;;;3161:35;:::i;:::-;3151:45;;;;;;2000:1202;;;;;:::o;3207:646::-;3324:6;3332;3385:2;3373:9;3364:7;3360:23;3356:32;3353:52;;;3401:1;3398;3391:12;3353:52;3441:9;3428:23;3470:18;3511:2;3503:6;3500:14;3497:34;;;3527:1;3524;3517:12;3497:34;3565:6;3554:9;3550:22;3540:32;;3610:7;3603:4;3599:2;3595:13;3591:27;3581:55;;3632:1;3629;3622:12;3581:55;3672:2;3659:16;3698:2;3690:6;3687:14;3684:34;;;3714:1;3711;3704:12;3684:34;3767:7;3762:2;3752:6;3749:1;3745:14;3741:2;3737:23;3733:32;3730:45;3727:65;;;3788:1;3785;3778:12;3727:65;3819:2;3811:11;;;;;3841:6;;-1:-1:-1;3207:646:1;;-1:-1:-1;;;;3207:646:1:o;3858:180::-;3914:6;3967:2;3955:9;3946:7;3942:23;3938:32;3935:52;;;3983:1;3980;3973:12;3935:52;4006:26;4022:9;4006:26;:::i;4043:180::-;4102:6;4155:2;4143:9;4134:7;4130:23;4126:32;4123:52;;;4171:1;4168;4161:12;4123:52;-1:-1:-1;4194:23:1;;4043:180;-1:-1:-1;4043:180:1:o;4228:248::-;4296:6;4304;4357:2;4345:9;4336:7;4332:23;4328:32;4325:52;;;4373:1;4370;4363:12;4325:52;-1:-1:-1;;4396:23:1;;;4466:2;4451:18;;;4438:32;;-1:-1:-1;4228:248:1:o;4481:306::-;4569:6;4577;4585;4638:2;4626:9;4617:7;4613:23;4609:32;4606:52;;;4654:1;4651;4644:12;4606:52;4683:9;4677:16;4667:26;;4733:2;4722:9;4718:18;4712:25;4702:35;;4777:2;4766:9;4762:18;4756:25;4746:35;;4481:306;;;;;:::o;4792:273::-;4860:6;4913:2;4901:9;4892:7;4888:23;4884:32;4881:52;;;4929:1;4926;4919:12;4881:52;4961:9;4955:16;5011:4;5004:5;5000:16;4993:5;4990:27;4980:55;;5031:1;5028;5021:12;5070:472;5112:3;5150:5;5144:12;5177:6;5172:3;5165:19;5202:1;5212:162;5226:6;5223:1;5220:13;5212:162;;;5288:4;5344:13;;;5340:22;;5334:29;5316:11;;;5312:20;;5305:59;5241:12;5212:162;;;5392:6;5389:1;5386:13;5383:87;;;5458:1;5451:4;5442:6;5437:3;5433:16;5429:27;5422:38;5383:87;-1:-1:-1;5524:2:1;5503:15;-1:-1:-1;;5499:29:1;5490:39;;;;5531:4;5486:50;;5070:472;-1:-1:-1;;5070:472:1:o;6868:220::-;7017:2;7006:9;6999:21;6980:4;7037:45;7078:2;7067:9;7063:18;7055:6;7037:45;:::i;7093:291::-;7270:2;7259:9;7252:21;7233:4;7290:45;7331:2;7320:9;7316:18;7308:6;7290:45;:::i;:::-;7282:53;;7371:6;7366:2;7355:9;7351:18;7344:34;7093:291;;;;;:::o;8620:980::-;8882:4;8930:3;8919:9;8915:19;8961:6;8950:9;8943:25;8987:2;9025:6;9020:2;9009:9;9005:18;8998:34;9068:3;9063:2;9052:9;9048:18;9041:31;9092:6;9127;9121:13;9158:6;9150;9143:22;9196:3;9185:9;9181:19;9174:26;;9235:2;9227:6;9223:15;9209:29;;9256:1;9266:195;9280:6;9277:1;9274:13;9266:195;;;9345:13;;-1:-1:-1;;;;;9341:39:1;9329:52;;9436:15;;;;9401:12;;;;9377:1;9295:9;9266:195;;;-1:-1:-1;;;;;;;9517:32:1;;;;9512:2;9497:18;;9490:60;-1:-1:-1;;;9581:3:1;9566:19;9559:35;9478:3;8620:980;-1:-1:-1;;;8620:980:1:o;9794:128::-;9834:3;9865:1;9861:6;9858:1;9855:13;9852:39;;;9871:18;;:::i;:::-;-1:-1:-1;9907:9:1;;9794:128::o;9927:217::-;9967:1;9993;9983:132;;10037:10;10032:3;10028:20;10025:1;10018:31;10072:4;10069:1;10062:15;10100:4;10097:1;10090:15;9983:132;-1:-1:-1;10129:9:1;;9927:217::o;10149:422::-;10238:1;10281:5;10238:1;10295:270;10316:7;10306:8;10303:21;10295:270;;;10375:4;10371:1;10367:6;10363:17;10357:4;10354:27;10351:53;;;10384:18;;:::i;:::-;10434:7;10424:8;10420:22;10417:55;;;10454:16;;;;10417:55;10533:22;;;;10493:15;;;;10295:270;;;10299:3;10149:422;;;;;:::o;10576:140::-;10634:5;10663:47;10704:4;10694:8;10690:19;10684:4;10770:5;10800:8;10790:80;;-1:-1:-1;10841:1:1;10855:5;;10790:80;10889:4;10879:76;;-1:-1:-1;10926:1:1;10940:5;;10879:76;10971:4;10989:1;10984:59;;;;11057:1;11052:130;;;;10964:218;;10984:59;11014:1;11005:10;;11028:5;;;11052:130;11089:3;11079:8;11076:17;11073:43;;;11096:18;;:::i;:::-;-1:-1:-1;;11152:1:1;11138:16;;11167:5;;10964:218;;11266:2;11256:8;11253:16;11247:3;11241:4;11238:13;11234:36;11228:2;11218:8;11215:16;11210:2;11204:4;11201:12;11197:35;11194:77;11191:159;;;-1:-1:-1;11303:19:1;;;11335:5;;11191:159;11382:34;11407:8;11401:4;11382:34;:::i;:::-;11452:6;11448:1;11444:6;11440:19;11431:7;11428:32;11425:58;;;11463:18;;:::i;:::-;11501:20;;10721:806;-1:-1:-1;;;10721:806:1:o;11532:168::-;11572:7;11638:1;11634;11630:6;11626:14;11623:1;11620:21;11615:1;11608:9;11601:17;11597:45;11594:71;;;11645:18;;:::i;:::-;-1:-1:-1;11685:9:1;;11532:168::o;11705:125::-;11745:4;11773:1;11770;11767:8;11764:34;;;11778:18;;:::i;:::-;-1:-1:-1;11815:9:1;;11705:125::o;11835:380::-;11914:1;11910:12;;;;11957;;;11978:61;;12032:4;12024:6;12020:17;12010:27;;11978:61;12085:2;12077:6;12074:14;12054:18;12051:38;12048:161;;;12131:10;12126:3;12122:20;12119:1;12112:31;12166:4;12163:1;12156:15;12194:4;12191:1;12184:15;12048:161;;11835:380;;;:::o;12220:135::-;12259:3;-1:-1:-1;;12280:17:1;;12277:43;;;12300:18;;:::i;:::-;-1:-1:-1;12347:1:1;12336:13;;12220:135::o;12360:127::-;12421:10;12416:3;12412:20;12409:1;12402:31;12452:4;12449:1;12442:15;12476:4;12473:1;12466:15;12492:127;12553:10;12548:3;12544:20;12541:1;12534:31;12584:4;12581:1;12574:15;12608:4;12605:1;12598:15;12624:127;12685:10;12680:3;12676:20;12673:1;12666:31;12716:4;12713:1;12706:15;12740:4;12737:1;12730:15;12756:131;-1:-1:-1;;;;;12831:31:1;;12821:42;;12811:70;;12877:1;12874;12867:12

Swarm Source

ipfs://8362dd915467f4b3c934cea163f64ae022a3853aba28e05dedc36e9687b88562
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.