ETH Price: $2,525.64 (+0.02%)

Token

CrypTicket (CRTK)
 

Overview

Max Total Supply

43 CRTK

Holders

31

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
eddiejp.eth
Balance
1 CRTK

Value
$0.00
0x906d2b7862ad17bf6535de17fc4dac54ea2a5c38
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:
CrypTicket

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-02-16
*/

// 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: @openzeppelin/contracts/utils/cryptography/MerkleProof.sol


// OpenZeppelin Contracts (last updated v4.5.0) (utils/cryptography/MerkleProof.sol)

pragma solidity ^0.8.0;

/**
 * @dev These functions deal with verification of Merkle Trees proofs.
 *
 * The proofs can be generated using the JavaScript library
 * https://github.com/miguelmota/merkletreejs[merkletreejs].
 * Note: the hashing algorithm should be keccak256 and pair sorting should be enabled.
 *
 * See `test/utils/cryptography/MerkleProof.test.js` for some examples.
 */
library MerkleProof {
    /**
     * @dev Returns true if a `leaf` can be proved to be a part of a Merkle tree
     * defined by `root`. For this, a `proof` must be provided, containing
     * sibling hashes on the branch from the leaf to the root of the tree. Each
     * pair of leaves and each pair of pre-images are assumed to be sorted.
     */
    function verify(
        bytes32[] memory proof,
        bytes32 root,
        bytes32 leaf
    ) internal pure returns (bool) {
        return processProof(proof, leaf) == root;
    }

    /**
     * @dev Returns the rebuilt hash obtained by traversing a Merklee tree up
     * from `leaf` using `proof`. A `proof` is valid if and only if the rebuilt
     * hash matches the root of the tree. When processing the proof, the pairs
     * of leafs & pre-images are assumed to be sorted.
     *
     * _Available since v4.4._
     */
    function processProof(bytes32[] memory proof, bytes32 leaf) internal pure returns (bytes32) {
        bytes32 computedHash = leaf;
        for (uint256 i = 0; i < proof.length; i++) {
            bytes32 proofElement = proof[i];
            if (computedHash <= proofElement) {
                // Hash(current computed hash + current element of the proof)
                computedHash = _efficientHash(computedHash, proofElement);
            } else {
                // Hash(current element of the proof + current computed hash)
                computedHash = _efficientHash(proofElement, computedHash);
            }
        }
        return computedHash;
    }

    function _efficientHash(bytes32 a, bytes32 b) private pure returns (bytes32 value) {
        assembly {
            mstore(0x00, a)
            mstore(0x20, b)
            value := keccak256(0x00, 0x40)
        }
    }
}

// File: @openzeppelin/contracts/utils/Context.sol


// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

pragma solidity ^0.8.0;

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

// File: @openzeppelin/contracts/token/ERC20/IERC20.sol


// OpenZeppelin Contracts v4.4.1 (token/ERC20/IERC20.sol)

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

// File: @openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol


// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)

pragma solidity ^0.8.0;


/**
 * @dev Interface for the optional metadata functions from the ERC20 standard.
 *
 * _Available since v4.1._
 */
interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}

// File: @openzeppelin/contracts/token/ERC20/ERC20.sol


// OpenZeppelin Contracts v4.4.1 (token/ERC20/ERC20.sol)

pragma solidity ^0.8.0;




/**
 * @dev Implementation of the {IERC20} interface.
 *
 * This implementation is agnostic to the way tokens are created. This means
 * that a supply mechanism has to be added in a derived contract using {_mint}.
 * For a generic mechanism see {ERC20PresetMinterPauser}.
 *
 * TIP: For a detailed writeup see our guide
 * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How
 * to implement supply mechanisms].
 *
 * We have followed general OpenZeppelin Contracts guidelines: functions revert
 * instead returning `false` on failure. This behavior is nonetheless
 * conventional and does not conflict with the expectations of ERC20
 * applications.
 *
 * Additionally, an {Approval} event is emitted on calls to {transferFrom}.
 * This allows applications to reconstruct the allowance for all accounts just
 * by listening to said events. Other implementations of the EIP may not emit
 * these events, as it isn't required by the specification.
 *
 * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}
 * functions have been added to mitigate the well-known issues around setting
 * allowances. See {IERC20-approve}.
 */
contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * The default value of {decimals} is 18. To select a different value for
     * {decimals} you should overload it.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    /**
     * @dev Returns the name of the token.
     */
    function name() public view virtual override returns (string memory) {
        return _name;
    }

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5.05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 18, imitating the relationship between
     * Ether and Wei. This is the value {ERC20} uses, unless this function is
     * overridden;
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }

    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `recipient` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    /**
     * @dev See {IERC20-allowance}.
     */
    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    /**
     * @dev See {IERC20-approve}.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * Requirements:
     *
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     * - the caller must have allowance for ``sender``'s tokens of at least
     * `amount`.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        unchecked {
            _approve(sender, _msgSender(), currentAllowance - amount);
        }

        return true;
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    /**
     * @dev Moves `amount` of tokens from `sender` to `recipient`.
     *
     * This internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     */
    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);

        _afterTokenTransfer(address(0), account, amount);
    }

    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

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

        _afterTokenTransfer(account, address(0), amount);
    }

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    /**
     * @dev Hook that is called before any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * will be transferred to `to`.
     * - when `from` is zero, `amount` tokens will be minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

    /**
     * @dev Hook that is called after any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * has been transferred to `to`.
     * - when `from` is zero, `amount` tokens have been minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens have been burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

// File: contracts/CrypTickets.sol



pragma solidity ^0.8.0;




contract CrypTicket is ERC20{

    bytes32 private merkleRoot;
    address private burnerAddress;
    address private contractOwner;
    bool private burnerAddressSet;
    mapping(address=> bool) public  addresses;
   

    constructor() ERC20("CrypTicket","CRTK"){
        // _mint(msg.sender,2000*10**18);
        contractOwner = msg.sender;
    }

  
    function setMerkleRoot(bytes32 _merkleRoot) public{
        require(msg.sender==contractOwner,"You are not the contract owner!");
        merkleRoot = _merkleRoot;
    }

    function setBurnerAddress(address _addr) public{
        require(msg.sender==contractOwner,"You are not the contract owner!");
        require(burnerAddressSet == false,"Burner address already set and can not be changed!");
        burnerAddress = _addr;
        burnerAddressSet = true;
    } 

   //claimable mintings
   function mint(uint256 amount,bytes32[] calldata merkleProof) external{
         require(!addresses[msg.sender],"You've already claimed your tokens.");
         bytes32 leaf = keccak256(abi.encodePacked(msg.sender,amount));
        
        require(MerkleProof.verify(merkleProof, merkleRoot, leaf), "Invalid proof!");
       
         _mint(msg.sender,amount);
        addresses[msg.sender] = true;
      
   } 
    function specialBurn(address from,uint256 amount) public {
        require(msg.sender==burnerAddress,"This address can't call this contract!");
        _burn(from,amount*10**18);
    }

}

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":[{"internalType":"address","name":"","type":"address"}],"name":"addresses","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes32[]","name":"merkleProof","type":"bytes32[]"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"setBurnerAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_merkleRoot","type":"bytes32"}],"name":"setMerkleRoot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"specialBurn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"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"}]

60806040523480156200001157600080fd5b506040518060400160405280600a81526020017f437279705469636b6574000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f4352544b00000000000000000000000000000000000000000000000000000000815250816003908051906020019062000096929190620000f9565b508060049080519060200190620000af929190620000f9565b50505033600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200020e565b8280546200010790620001a9565b90600052602060002090601f0160209004810192826200012b576000855562000177565b82601f106200014657805160ff191683800117855562000177565b8280016001018555821562000177579182015b828111156200017657825182559160200191906001019062000159565b5b5090506200018691906200018a565b5090565b5b80821115620001a55760008160009055506001016200018b565b5090565b60006002820490506001821680620001c257607f821691505b60208210811415620001d957620001d8620001df565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6123c0806200021e6000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80637cb6475911610097578063a457c2d711610066578063a457c2d7146102c1578063a9059cbb146102f1578063ba41b0c614610321578063dd62ed3e1461033d57610100565b80637cb647591461023b57806382d389541461025757806395d89b41146102875780639df806d6146102a557610100565b8063313ce567116100d3578063313ce567146101a157806334ac0766146101bf57806339509351146101db57806370a082311461020b57610100565b806306fdde0314610105578063095ea7b31461012357806318160ddd1461015357806323b872dd14610171575b600080fd5b61010d61036d565b60405161011a91906119df565b60405180910390f35b61013d6004803603810190610138919061162a565b6103ff565b60405161014a91906119c4565b60405180910390f35b61015b61041d565b6040516101689190611be1565b60405180910390f35b61018b600480360381019061018691906115d7565b610427565b60405161019891906119c4565b60405180910390f35b6101a961051f565b6040516101b69190611bfc565b60405180910390f35b6101d960048036038101906101d4919061162a565b610528565b005b6101f560048036038101906101f0919061162a565b6105d9565b60405161020291906119c4565b60405180910390f35b6102256004803603810190610220919061156a565b610685565b6040516102329190611be1565b60405180910390f35b6102556004803603810190610250919061166a565b6106cd565b005b610271600480360381019061026c919061156a565b610767565b60405161027e91906119c4565b60405180910390f35b61028f610787565b60405161029c91906119df565b60405180910390f35b6102bf60048036038101906102ba919061156a565b610819565b005b6102db60048036038101906102d6919061162a565b61095e565b6040516102e891906119c4565b60405180910390f35b61030b6004803603810190610306919061162a565b610a49565b60405161031891906119c4565b60405180910390f35b61033b60048036038101906103369190611697565b610a67565b005b61035760048036038101906103529190611597565b610c16565b6040516103649190611be1565b60405180910390f35b60606003805461037c90611da9565b80601f01602080910402602001604051908101604052809291908181526020018280546103a890611da9565b80156103f55780601f106103ca576101008083540402835291602001916103f5565b820191906000526020600020905b8154815290600101906020018083116103d857829003601f168201915b5050505050905090565b600061041361040c610c9d565b8484610ca5565b6001905092915050565b6000600254905090565b6000610434848484610e70565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061047f610c9d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156104ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104f690611ae1565b60405180910390fd5b6105138561050b610c9d565b858403610ca5565b60019150509392505050565b60006012905090565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105af90611b81565b60405180910390fd5b6105d582670de0b6b3a7640000836105d09190611c89565b6110f1565b5050565b600061067b6105e6610c9d565b8484600160006105f4610c9d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546106769190611c33565b610ca5565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461075d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075490611a41565b60405180910390fd5b8060058190555050565b60086020528060005260406000206000915054906101000a900460ff1681565b60606004805461079690611da9565b80601f01602080910402602001604051908101604052809291908181526020018280546107c290611da9565b801561080f5780601f106107e45761010080835404028352916020019161080f565b820191906000526020600020905b8154815290600101906020018083116107f257829003601f168201915b5050505050905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a090611a41565b60405180910390fd5b60001515600760149054906101000a900460ff161515146108ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108f690611ac1565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600760146101000a81548160ff02191690831515021790555050565b6000806001600061096d610c9d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610a2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2190611ba1565b60405180910390fd5b610a3e610a35610c9d565b85858403610ca5565b600191505092915050565b6000610a5d610a56610c9d565b8484610e70565b6001905092915050565b600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610af4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aeb90611b61565b60405180910390fd5b60003384604051602001610b09929190611998565b604051602081830303815290604052805190602001209050610b6f838380806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050600554836112c8565b610bae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba590611a61565b60405180910390fd5b610bb833856112df565b6001600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610d15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0c90611b41565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610d85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7c90611a81565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610e639190611be1565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610ee0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed790611b21565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610f50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4790611a01565b60405180910390fd5b610f5b83838361143f565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610fe1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd890611aa1565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546110749190611c33565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516110d89190611be1565b60405180910390a36110eb848484611444565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611161576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115890611b01565b60405180910390fd5b61116d8260008361143f565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156111f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ea90611a21565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816002600082825461124a9190611ce3565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516112af9190611be1565b60405180910390a36112c383600084611444565b505050565b6000826112d58584611449565b1490509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561134f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134690611bc1565b60405180910390fd5b61135b6000838361143f565b806002600082825461136d9190611c33565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546113c29190611c33565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516114279190611be1565b60405180910390a361143b60008383611444565b5050565b505050565b505050565b60008082905060005b84518110156114b35760008582815181106114705761146f611eb0565b5b602002602001015190508083116114925761148b83826114be565b925061149f565b61149c81846114be565b92505b5080806114ab90611ddb565b915050611452565b508091505092915050565b600082600052816020526040600020905092915050565b6000813590506114e481612345565b92915050565b60008083601f840112611500576114ff611ee4565b5b8235905067ffffffffffffffff81111561151d5761151c611edf565b5b60208301915083602082028301111561153957611538611ee9565b5b9250929050565b60008135905061154f8161235c565b92915050565b60008135905061156481612373565b92915050565b6000602082840312156115805761157f611ef3565b5b600061158e848285016114d5565b91505092915050565b600080604083850312156115ae576115ad611ef3565b5b60006115bc858286016114d5565b92505060206115cd858286016114d5565b9150509250929050565b6000806000606084860312156115f0576115ef611ef3565b5b60006115fe868287016114d5565b935050602061160f868287016114d5565b925050604061162086828701611555565b9150509250925092565b6000806040838503121561164157611640611ef3565b5b600061164f858286016114d5565b925050602061166085828601611555565b9150509250929050565b6000602082840312156116805761167f611ef3565b5b600061168e84828501611540565b91505092915050565b6000806000604084860312156116b0576116af611ef3565b5b60006116be86828701611555565b935050602084013567ffffffffffffffff8111156116df576116de611eee565b5b6116eb868287016114ea565b92509250509250925092565b61170861170382611d17565b611e24565b82525050565b61171781611d29565b82525050565b600061172882611c17565b6117328185611c22565b9350611742818560208601611d76565b61174b81611ef8565b840191505092915050565b6000611763602383611c22565b915061176e82611f16565b604082019050919050565b6000611786602283611c22565b915061179182611f65565b604082019050919050565b60006117a9601f83611c22565b91506117b482611fb4565b602082019050919050565b60006117cc600e83611c22565b91506117d782611fdd565b602082019050919050565b60006117ef602283611c22565b91506117fa82612006565b604082019050919050565b6000611812602683611c22565b915061181d82612055565b604082019050919050565b6000611835603283611c22565b9150611840826120a4565b604082019050919050565b6000611858602883611c22565b9150611863826120f3565b604082019050919050565b600061187b602183611c22565b915061188682612142565b604082019050919050565b600061189e602583611c22565b91506118a982612191565b604082019050919050565b60006118c1602483611c22565b91506118cc826121e0565b604082019050919050565b60006118e4602383611c22565b91506118ef8261222f565b604082019050919050565b6000611907602683611c22565b91506119128261227e565b604082019050919050565b600061192a602583611c22565b9150611935826122cd565b604082019050919050565b600061194d601f83611c22565b91506119588261231c565b602082019050919050565b61196c81611d5f565b82525050565b61198361197e82611d5f565b611e48565b82525050565b61199281611d69565b82525050565b60006119a482856116f7565b6014820191506119b48284611972565b6020820191508190509392505050565b60006020820190506119d9600083018461170e565b92915050565b600060208201905081810360008301526119f9818461171d565b905092915050565b60006020820190508181036000830152611a1a81611756565b9050919050565b60006020820190508181036000830152611a3a81611779565b9050919050565b60006020820190508181036000830152611a5a8161179c565b9050919050565b60006020820190508181036000830152611a7a816117bf565b9050919050565b60006020820190508181036000830152611a9a816117e2565b9050919050565b60006020820190508181036000830152611aba81611805565b9050919050565b60006020820190508181036000830152611ada81611828565b9050919050565b60006020820190508181036000830152611afa8161184b565b9050919050565b60006020820190508181036000830152611b1a8161186e565b9050919050565b60006020820190508181036000830152611b3a81611891565b9050919050565b60006020820190508181036000830152611b5a816118b4565b9050919050565b60006020820190508181036000830152611b7a816118d7565b9050919050565b60006020820190508181036000830152611b9a816118fa565b9050919050565b60006020820190508181036000830152611bba8161191d565b9050919050565b60006020820190508181036000830152611bda81611940565b9050919050565b6000602082019050611bf66000830184611963565b92915050565b6000602082019050611c116000830184611989565b92915050565b600081519050919050565b600082825260208201905092915050565b6000611c3e82611d5f565b9150611c4983611d5f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611c7e57611c7d611e52565b5b828201905092915050565b6000611c9482611d5f565b9150611c9f83611d5f565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611cd857611cd7611e52565b5b828202905092915050565b6000611cee82611d5f565b9150611cf983611d5f565b925082821015611d0c57611d0b611e52565b5b828203905092915050565b6000611d2282611d3f565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015611d94578082015181840152602081019050611d79565b83811115611da3576000848401525b50505050565b60006002820490506001821680611dc157607f821691505b60208210811415611dd557611dd4611e81565b5b50919050565b6000611de682611d5f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611e1957611e18611e52565b5b600182019050919050565b6000611e2f82611e36565b9050919050565b6000611e4182611f09565b9050919050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b7f596f7520617265206e6f742074686520636f6e7472616374206f776e65722100600082015250565b7f496e76616c69642070726f6f6621000000000000000000000000000000000000600082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f4275726e6572206164647265737320616c72656164792073657420616e64206360008201527f616e206e6f74206265206368616e676564210000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f596f7527766520616c726561647920636c61696d656420796f757220746f6b6560008201527f6e732e0000000000000000000000000000000000000000000000000000000000602082015250565b7f5468697320616464726573732063616e27742063616c6c207468697320636f6e60008201527f7472616374210000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b61234e81611d17565b811461235957600080fd5b50565b61236581611d35565b811461237057600080fd5b50565b61237c81611d5f565b811461238757600080fd5b5056fea26469706673582212204e5d53325f4e8e87acb5f086816c9fbf27a801fde10699fa90fd0ed2eae1681964736f6c63430008070033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101005760003560e01c80637cb6475911610097578063a457c2d711610066578063a457c2d7146102c1578063a9059cbb146102f1578063ba41b0c614610321578063dd62ed3e1461033d57610100565b80637cb647591461023b57806382d389541461025757806395d89b41146102875780639df806d6146102a557610100565b8063313ce567116100d3578063313ce567146101a157806334ac0766146101bf57806339509351146101db57806370a082311461020b57610100565b806306fdde0314610105578063095ea7b31461012357806318160ddd1461015357806323b872dd14610171575b600080fd5b61010d61036d565b60405161011a91906119df565b60405180910390f35b61013d6004803603810190610138919061162a565b6103ff565b60405161014a91906119c4565b60405180910390f35b61015b61041d565b6040516101689190611be1565b60405180910390f35b61018b600480360381019061018691906115d7565b610427565b60405161019891906119c4565b60405180910390f35b6101a961051f565b6040516101b69190611bfc565b60405180910390f35b6101d960048036038101906101d4919061162a565b610528565b005b6101f560048036038101906101f0919061162a565b6105d9565b60405161020291906119c4565b60405180910390f35b6102256004803603810190610220919061156a565b610685565b6040516102329190611be1565b60405180910390f35b6102556004803603810190610250919061166a565b6106cd565b005b610271600480360381019061026c919061156a565b610767565b60405161027e91906119c4565b60405180910390f35b61028f610787565b60405161029c91906119df565b60405180910390f35b6102bf60048036038101906102ba919061156a565b610819565b005b6102db60048036038101906102d6919061162a565b61095e565b6040516102e891906119c4565b60405180910390f35b61030b6004803603810190610306919061162a565b610a49565b60405161031891906119c4565b60405180910390f35b61033b60048036038101906103369190611697565b610a67565b005b61035760048036038101906103529190611597565b610c16565b6040516103649190611be1565b60405180910390f35b60606003805461037c90611da9565b80601f01602080910402602001604051908101604052809291908181526020018280546103a890611da9565b80156103f55780601f106103ca576101008083540402835291602001916103f5565b820191906000526020600020905b8154815290600101906020018083116103d857829003601f168201915b5050505050905090565b600061041361040c610c9d565b8484610ca5565b6001905092915050565b6000600254905090565b6000610434848484610e70565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061047f610c9d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156104ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104f690611ae1565b60405180910390fd5b6105138561050b610c9d565b858403610ca5565b60019150509392505050565b60006012905090565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105af90611b81565b60405180910390fd5b6105d582670de0b6b3a7640000836105d09190611c89565b6110f1565b5050565b600061067b6105e6610c9d565b8484600160006105f4610c9d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546106769190611c33565b610ca5565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461075d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075490611a41565b60405180910390fd5b8060058190555050565b60086020528060005260406000206000915054906101000a900460ff1681565b60606004805461079690611da9565b80601f01602080910402602001604051908101604052809291908181526020018280546107c290611da9565b801561080f5780601f106107e45761010080835404028352916020019161080f565b820191906000526020600020905b8154815290600101906020018083116107f257829003601f168201915b5050505050905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a090611a41565b60405180910390fd5b60001515600760149054906101000a900460ff161515146108ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108f690611ac1565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600760146101000a81548160ff02191690831515021790555050565b6000806001600061096d610c9d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610a2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2190611ba1565b60405180910390fd5b610a3e610a35610c9d565b85858403610ca5565b600191505092915050565b6000610a5d610a56610c9d565b8484610e70565b6001905092915050565b600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610af4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aeb90611b61565b60405180910390fd5b60003384604051602001610b09929190611998565b604051602081830303815290604052805190602001209050610b6f838380806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050600554836112c8565b610bae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba590611a61565b60405180910390fd5b610bb833856112df565b6001600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610d15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0c90611b41565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610d85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7c90611a81565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610e639190611be1565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610ee0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed790611b21565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610f50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4790611a01565b60405180910390fd5b610f5b83838361143f565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610fe1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd890611aa1565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546110749190611c33565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516110d89190611be1565b60405180910390a36110eb848484611444565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611161576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115890611b01565b60405180910390fd5b61116d8260008361143f565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156111f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ea90611a21565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816002600082825461124a9190611ce3565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516112af9190611be1565b60405180910390a36112c383600084611444565b505050565b6000826112d58584611449565b1490509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561134f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134690611bc1565b60405180910390fd5b61135b6000838361143f565b806002600082825461136d9190611c33565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546113c29190611c33565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516114279190611be1565b60405180910390a361143b60008383611444565b5050565b505050565b505050565b60008082905060005b84518110156114b35760008582815181106114705761146f611eb0565b5b602002602001015190508083116114925761148b83826114be565b925061149f565b61149c81846114be565b92505b5080806114ab90611ddb565b915050611452565b508091505092915050565b600082600052816020526040600020905092915050565b6000813590506114e481612345565b92915050565b60008083601f840112611500576114ff611ee4565b5b8235905067ffffffffffffffff81111561151d5761151c611edf565b5b60208301915083602082028301111561153957611538611ee9565b5b9250929050565b60008135905061154f8161235c565b92915050565b60008135905061156481612373565b92915050565b6000602082840312156115805761157f611ef3565b5b600061158e848285016114d5565b91505092915050565b600080604083850312156115ae576115ad611ef3565b5b60006115bc858286016114d5565b92505060206115cd858286016114d5565b9150509250929050565b6000806000606084860312156115f0576115ef611ef3565b5b60006115fe868287016114d5565b935050602061160f868287016114d5565b925050604061162086828701611555565b9150509250925092565b6000806040838503121561164157611640611ef3565b5b600061164f858286016114d5565b925050602061166085828601611555565b9150509250929050565b6000602082840312156116805761167f611ef3565b5b600061168e84828501611540565b91505092915050565b6000806000604084860312156116b0576116af611ef3565b5b60006116be86828701611555565b935050602084013567ffffffffffffffff8111156116df576116de611eee565b5b6116eb868287016114ea565b92509250509250925092565b61170861170382611d17565b611e24565b82525050565b61171781611d29565b82525050565b600061172882611c17565b6117328185611c22565b9350611742818560208601611d76565b61174b81611ef8565b840191505092915050565b6000611763602383611c22565b915061176e82611f16565b604082019050919050565b6000611786602283611c22565b915061179182611f65565b604082019050919050565b60006117a9601f83611c22565b91506117b482611fb4565b602082019050919050565b60006117cc600e83611c22565b91506117d782611fdd565b602082019050919050565b60006117ef602283611c22565b91506117fa82612006565b604082019050919050565b6000611812602683611c22565b915061181d82612055565b604082019050919050565b6000611835603283611c22565b9150611840826120a4565b604082019050919050565b6000611858602883611c22565b9150611863826120f3565b604082019050919050565b600061187b602183611c22565b915061188682612142565b604082019050919050565b600061189e602583611c22565b91506118a982612191565b604082019050919050565b60006118c1602483611c22565b91506118cc826121e0565b604082019050919050565b60006118e4602383611c22565b91506118ef8261222f565b604082019050919050565b6000611907602683611c22565b91506119128261227e565b604082019050919050565b600061192a602583611c22565b9150611935826122cd565b604082019050919050565b600061194d601f83611c22565b91506119588261231c565b602082019050919050565b61196c81611d5f565b82525050565b61198361197e82611d5f565b611e48565b82525050565b61199281611d69565b82525050565b60006119a482856116f7565b6014820191506119b48284611972565b6020820191508190509392505050565b60006020820190506119d9600083018461170e565b92915050565b600060208201905081810360008301526119f9818461171d565b905092915050565b60006020820190508181036000830152611a1a81611756565b9050919050565b60006020820190508181036000830152611a3a81611779565b9050919050565b60006020820190508181036000830152611a5a8161179c565b9050919050565b60006020820190508181036000830152611a7a816117bf565b9050919050565b60006020820190508181036000830152611a9a816117e2565b9050919050565b60006020820190508181036000830152611aba81611805565b9050919050565b60006020820190508181036000830152611ada81611828565b9050919050565b60006020820190508181036000830152611afa8161184b565b9050919050565b60006020820190508181036000830152611b1a8161186e565b9050919050565b60006020820190508181036000830152611b3a81611891565b9050919050565b60006020820190508181036000830152611b5a816118b4565b9050919050565b60006020820190508181036000830152611b7a816118d7565b9050919050565b60006020820190508181036000830152611b9a816118fa565b9050919050565b60006020820190508181036000830152611bba8161191d565b9050919050565b60006020820190508181036000830152611bda81611940565b9050919050565b6000602082019050611bf66000830184611963565b92915050565b6000602082019050611c116000830184611989565b92915050565b600081519050919050565b600082825260208201905092915050565b6000611c3e82611d5f565b9150611c4983611d5f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611c7e57611c7d611e52565b5b828201905092915050565b6000611c9482611d5f565b9150611c9f83611d5f565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611cd857611cd7611e52565b5b828202905092915050565b6000611cee82611d5f565b9150611cf983611d5f565b925082821015611d0c57611d0b611e52565b5b828203905092915050565b6000611d2282611d3f565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015611d94578082015181840152602081019050611d79565b83811115611da3576000848401525b50505050565b60006002820490506001821680611dc157607f821691505b60208210811415611dd557611dd4611e81565b5b50919050565b6000611de682611d5f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611e1957611e18611e52565b5b600182019050919050565b6000611e2f82611e36565b9050919050565b6000611e4182611f09565b9050919050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b7f596f7520617265206e6f742074686520636f6e7472616374206f776e65722100600082015250565b7f496e76616c69642070726f6f6621000000000000000000000000000000000000600082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f4275726e6572206164647265737320616c72656164792073657420616e64206360008201527f616e206e6f74206265206368616e676564210000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f596f7527766520616c726561647920636c61696d656420796f757220746f6b6560008201527f6e732e0000000000000000000000000000000000000000000000000000000000602082015250565b7f5468697320616464726573732063616e27742063616c6c207468697320636f6e60008201527f7472616374210000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b61234e81611d17565b811461235957600080fd5b50565b61236581611d35565b811461237057600080fd5b50565b61237c81611d5f565b811461238757600080fd5b5056fea26469706673582212204e5d53325f4e8e87acb5f086816c9fbf27a801fde10699fa90fd0ed2eae1681964736f6c63430008070033

Deployed Bytecode Sourcemap

82663:1502:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;72627:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;74794:169;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;73747:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;75445:492;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;73589:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;83973:187;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;76346:215;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;73918:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;83036:172;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;82841:41;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;72846:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;83216:298;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;77064:413;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;74258:175;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;83547:419;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;74496:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;72627:100;72681:13;72714:5;72707:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;72627:100;:::o;74794:169::-;74877:4;74894:39;74903:12;:10;:12::i;:::-;74917:7;74926:6;74894:8;:39::i;:::-;74951:4;74944:11;;74794:169;;;;:::o;73747:108::-;73808:7;73835:12;;73828:19;;73747:108;:::o;75445:492::-;75585:4;75602:36;75612:6;75620:9;75631:6;75602:9;:36::i;:::-;75651:24;75678:11;:19;75690:6;75678:19;;;;;;;;;;;;;;;:33;75698:12;:10;:12::i;:::-;75678:33;;;;;;;;;;;;;;;;75651:60;;75750:6;75730:16;:26;;75722:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;75837:57;75846:6;75854:12;:10;:12::i;:::-;75887:6;75868:16;:25;75837:8;:57::i;:::-;75925:4;75918:11;;;75445:492;;;;;:::o;73589:93::-;73647:5;73672:2;73665:9;;73589:93;:::o;83973:187::-;84061:13;;;;;;;;;;;84049:25;;:10;:25;;;84041:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;84127:25;84133:4;84145:6;84138;:13;;;;:::i;:::-;84127:5;:25::i;:::-;83973:187;;:::o;76346:215::-;76434:4;76451:80;76460:12;:10;:12::i;:::-;76474:7;76520:10;76483:11;:25;76495:12;:10;:12::i;:::-;76483:25;;;;;;;;;;;;;;;:34;76509:7;76483:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;76451:8;:80::i;:::-;76549:4;76542:11;;76346:215;;;;:::o;73918:127::-;73992:7;74019:9;:18;74029:7;74019:18;;;;;;;;;;;;;;;;74012:25;;73918:127;;;:::o;83036:172::-;83117:13;;;;;;;;;;;83105:25;;:10;:25;;;83097:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;83189:11;83176:10;:24;;;;83036:172;:::o;82841:41::-;;;;;;;;;;;;;;;;;;;;;;:::o;72846:104::-;72902:13;72935:7;72928:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;72846:104;:::o;83216:298::-;83294:13;;;;;;;;;;;83282:25;;:10;:25;;;83274:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;83381:5;83361:25;;:16;;;;;;;;;;;:25;;;83353:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;83467:5;83451:13;;:21;;;;;;;;;;;;;;;;;;83502:4;83483:16;;:23;;;;;;;;;;;;;;;;;;83216:298;:::o;77064:413::-;77157:4;77174:24;77201:11;:25;77213:12;:10;:12::i;:::-;77201:25;;;;;;;;;;;;;;;:34;77227:7;77201:34;;;;;;;;;;;;;;;;77174:61;;77274:15;77254:16;:35;;77246:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;77367:67;77376:12;:10;:12::i;:::-;77390:7;77418:15;77399:16;:34;77367:8;:67::i;:::-;77465:4;77458:11;;;77064:413;;;;:::o;74258:175::-;74344:4;74361:42;74371:12;:10;:12::i;:::-;74385:9;74396:6;74361:9;:42::i;:::-;74421:4;74414:11;;74258:175;;;;:::o;83547:419::-;83637:9;:21;83647:10;83637:21;;;;;;;;;;;;;;;;;;;;;;;;;83636:22;83628:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;83709:12;83751:10;83762:6;83734:35;;;;;;;;;:::i;:::-;;;;;;;;;;;;;83724:46;;;;;;83709:61;;83799:49;83818:11;;83799:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;83831:10;;83843:4;83799:18;:49::i;:::-;83791:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;83888:24;83894:10;83905:6;83888:5;:24::i;:::-;83947:4;83923:9;:21;83933:10;83923:21;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;83616:350;83547:419;;;:::o;74496:151::-;74585:7;74612:11;:18;74624:5;74612:18;;;;;;;;;;;;;;;:27;74631:7;74612:27;;;;;;;;;;;;;;;;74605:34;;74496:151;;;;:::o;66651:98::-;66704:7;66731:10;66724:17;;66651:98;:::o;80748:380::-;80901:1;80884:19;;:5;:19;;;;80876:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;80982:1;80963:21;;:7;:21;;;;80955:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;81066:6;81036:11;:18;81048:5;81036:18;;;;;;;;;;;;;;;:27;81055:7;81036:27;;;;;;;;;;;;;;;:36;;;;81104:7;81088:32;;81097:5;81088:32;;;81113:6;81088:32;;;;;;:::i;:::-;;;;;;;;80748:380;;;:::o;77967:733::-;78125:1;78107:20;;:6;:20;;;;78099:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;78209:1;78188:23;;:9;:23;;;;78180:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;78264:47;78285:6;78293:9;78304:6;78264:20;:47::i;:::-;78324:21;78348:9;:17;78358:6;78348:17;;;;;;;;;;;;;;;;78324:41;;78401:6;78384:13;:23;;78376:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;78522:6;78506:13;:22;78486:9;:17;78496:6;78486:17;;;;;;;;;;;;;;;:42;;;;78574:6;78550:9;:20;78560:9;78550:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;78615:9;78598:35;;78607:6;78598:35;;;78626:6;78598:35;;;;;;:::i;:::-;;;;;;;;78646:46;78666:6;78674:9;78685:6;78646:19;:46::i;:::-;78088:612;77967:733;;;:::o;79719:591::-;79822:1;79803:21;;:7;:21;;;;79795:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;79875:49;79896:7;79913:1;79917:6;79875:20;:49::i;:::-;79937:22;79962:9;:18;79972:7;79962:18;;;;;;;;;;;;;;;;79937:43;;80017:6;79999:14;:24;;79991:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;80136:6;80119:14;:23;80098:9;:18;80108:7;80098:18;;;;;;;;;;;;;;;:44;;;;80180:6;80164:12;;:22;;;;;;;:::i;:::-;;;;;;;;80230:1;80204:37;;80213:7;80204:37;;;80234:6;80204:37;;;;;;:::i;:::-;;;;;;;;80254:48;80274:7;80291:1;80295:6;80254:19;:48::i;:::-;79784:526;79719:591;;:::o;64506:190::-;64631:4;64684;64655:25;64668:5;64675:4;64655:12;:25::i;:::-;:33;64648:40;;64506:190;;;;;:::o;78987:399::-;79090:1;79071:21;;:7;:21;;;;79063:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;79141:49;79170:1;79174:7;79183:6;79141:20;:49::i;:::-;79219:6;79203:12;;:22;;;;;;;:::i;:::-;;;;;;;;79258:6;79236:9;:18;79246:7;79236:18;;;;;;;;;;;;;;;;:28;;;;;;;:::i;:::-;;;;;;;;79301:7;79280:37;;79297:1;79280:37;;;79310:6;79280:37;;;;;;:::i;:::-;;;;;;;;79330:48;79358:1;79362:7;79371:6;79330:19;:48::i;:::-;78987:399;;:::o;81728:125::-;;;;:::o;82457:124::-;;;;:::o;65058:675::-;65141:7;65161:20;65184:4;65161:27;;65204:9;65199:497;65223:5;:12;65219:1;:16;65199:497;;;65257:20;65280:5;65286:1;65280:8;;;;;;;;:::i;:::-;;;;;;;;65257:31;;65323:12;65307;:28;65303:382;;65450:42;65465:12;65479;65450:14;:42::i;:::-;65435:57;;65303:382;;;65627:42;65642:12;65656;65627:14;:42::i;:::-;65612:57;;65303:382;65242:454;65237:3;;;;;:::i;:::-;;;;65199:497;;;;65713:12;65706:19;;;65058:675;;;;:::o;65741:224::-;65809:13;65872:1;65866:4;65859:15;65901:1;65895:4;65888:15;65942:4;65936;65926:21;65917:30;;65741:224;;;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;7:139;;;;:::o;169:568::-;242:8;252:6;302:3;295:4;287:6;283:17;279:27;269:122;;310:79;;:::i;:::-;269:122;423:6;410:20;400:30;;453:18;445:6;442:30;439:117;;;475:79;;:::i;:::-;439:117;589:4;581:6;577:17;565:29;;643:3;635:4;627:6;623:17;613:8;609:32;606:41;603:128;;;650:79;;:::i;:::-;603:128;169:568;;;;;:::o;743:139::-;789:5;827:6;814:20;805:29;;843:33;870:5;843:33;:::i;:::-;743:139;;;;:::o;888:::-;934:5;972:6;959:20;950:29;;988:33;1015:5;988:33;:::i;:::-;888:139;;;;:::o;1033:329::-;1092:6;1141:2;1129:9;1120:7;1116:23;1112:32;1109:119;;;1147:79;;:::i;:::-;1109:119;1267:1;1292:53;1337:7;1328:6;1317:9;1313:22;1292:53;:::i;:::-;1282:63;;1238:117;1033:329;;;;:::o;1368:474::-;1436:6;1444;1493:2;1481:9;1472:7;1468:23;1464:32;1461:119;;;1499:79;;:::i;:::-;1461:119;1619:1;1644:53;1689:7;1680:6;1669:9;1665:22;1644:53;:::i;:::-;1634:63;;1590:117;1746:2;1772:53;1817:7;1808:6;1797:9;1793:22;1772:53;:::i;:::-;1762:63;;1717:118;1368:474;;;;;:::o;1848:619::-;1925:6;1933;1941;1990:2;1978:9;1969:7;1965:23;1961:32;1958:119;;;1996:79;;:::i;:::-;1958:119;2116:1;2141:53;2186:7;2177:6;2166:9;2162:22;2141:53;:::i;:::-;2131:63;;2087:117;2243:2;2269:53;2314:7;2305:6;2294:9;2290:22;2269:53;:::i;:::-;2259:63;;2214:118;2371:2;2397:53;2442:7;2433:6;2422:9;2418:22;2397:53;:::i;:::-;2387:63;;2342:118;1848:619;;;;;:::o;2473:474::-;2541:6;2549;2598:2;2586:9;2577:7;2573:23;2569:32;2566:119;;;2604:79;;:::i;:::-;2566:119;2724:1;2749:53;2794:7;2785:6;2774:9;2770:22;2749:53;:::i;:::-;2739:63;;2695:117;2851:2;2877:53;2922:7;2913:6;2902:9;2898:22;2877:53;:::i;:::-;2867:63;;2822:118;2473:474;;;;;:::o;2953:329::-;3012:6;3061:2;3049:9;3040:7;3036:23;3032:32;3029:119;;;3067:79;;:::i;:::-;3029:119;3187:1;3212:53;3257:7;3248:6;3237:9;3233:22;3212:53;:::i;:::-;3202:63;;3158:117;2953:329;;;;:::o;3288:704::-;3383:6;3391;3399;3448:2;3436:9;3427:7;3423:23;3419:32;3416:119;;;3454:79;;:::i;:::-;3416:119;3574:1;3599:53;3644:7;3635:6;3624:9;3620:22;3599:53;:::i;:::-;3589:63;;3545:117;3729:2;3718:9;3714:18;3701:32;3760:18;3752:6;3749:30;3746:117;;;3782:79;;:::i;:::-;3746:117;3895:80;3967:7;3958:6;3947:9;3943:22;3895:80;:::i;:::-;3877:98;;;;3672:313;3288:704;;;;;:::o;3998:157::-;4103:45;4123:24;4141:5;4123:24;:::i;:::-;4103:45;:::i;:::-;4098:3;4091:58;3998:157;;:::o;4161:109::-;4242:21;4257:5;4242:21;:::i;:::-;4237:3;4230:34;4161:109;;:::o;4276:364::-;4364:3;4392:39;4425:5;4392:39;:::i;:::-;4447:71;4511:6;4506:3;4447:71;:::i;:::-;4440:78;;4527:52;4572:6;4567:3;4560:4;4553:5;4549:16;4527:52;:::i;:::-;4604:29;4626:6;4604:29;:::i;:::-;4599:3;4595:39;4588:46;;4368:272;4276:364;;;;:::o;4646:366::-;4788:3;4809:67;4873:2;4868:3;4809:67;:::i;:::-;4802:74;;4885:93;4974:3;4885:93;:::i;:::-;5003:2;4998:3;4994:12;4987:19;;4646:366;;;:::o;5018:::-;5160:3;5181:67;5245:2;5240:3;5181:67;:::i;:::-;5174:74;;5257:93;5346:3;5257:93;:::i;:::-;5375:2;5370:3;5366:12;5359:19;;5018:366;;;:::o;5390:::-;5532:3;5553:67;5617:2;5612:3;5553:67;:::i;:::-;5546:74;;5629:93;5718:3;5629:93;:::i;:::-;5747:2;5742:3;5738:12;5731:19;;5390:366;;;:::o;5762:::-;5904:3;5925:67;5989:2;5984:3;5925:67;:::i;:::-;5918:74;;6001:93;6090:3;6001:93;:::i;:::-;6119:2;6114:3;6110:12;6103:19;;5762:366;;;:::o;6134:::-;6276:3;6297:67;6361:2;6356:3;6297:67;:::i;:::-;6290:74;;6373:93;6462:3;6373:93;:::i;:::-;6491:2;6486:3;6482:12;6475:19;;6134:366;;;:::o;6506:::-;6648:3;6669:67;6733:2;6728:3;6669:67;:::i;:::-;6662:74;;6745:93;6834:3;6745:93;:::i;:::-;6863:2;6858:3;6854:12;6847:19;;6506:366;;;:::o;6878:::-;7020:3;7041:67;7105:2;7100:3;7041:67;:::i;:::-;7034:74;;7117:93;7206:3;7117:93;:::i;:::-;7235:2;7230:3;7226:12;7219:19;;6878:366;;;:::o;7250:::-;7392:3;7413:67;7477:2;7472:3;7413:67;:::i;:::-;7406:74;;7489:93;7578:3;7489:93;:::i;:::-;7607:2;7602:3;7598:12;7591:19;;7250:366;;;:::o;7622:::-;7764:3;7785:67;7849:2;7844:3;7785:67;:::i;:::-;7778:74;;7861:93;7950:3;7861:93;:::i;:::-;7979:2;7974:3;7970:12;7963:19;;7622:366;;;:::o;7994:::-;8136:3;8157:67;8221:2;8216:3;8157:67;:::i;:::-;8150:74;;8233:93;8322:3;8233:93;:::i;:::-;8351:2;8346:3;8342:12;8335:19;;7994:366;;;:::o;8366:::-;8508:3;8529:67;8593:2;8588:3;8529:67;:::i;:::-;8522:74;;8605:93;8694:3;8605:93;:::i;:::-;8723:2;8718:3;8714:12;8707:19;;8366:366;;;:::o;8738:::-;8880:3;8901:67;8965:2;8960:3;8901:67;:::i;:::-;8894:74;;8977:93;9066:3;8977:93;:::i;:::-;9095:2;9090:3;9086:12;9079:19;;8738:366;;;:::o;9110:::-;9252:3;9273:67;9337:2;9332:3;9273:67;:::i;:::-;9266:74;;9349:93;9438:3;9349:93;:::i;:::-;9467:2;9462:3;9458:12;9451:19;;9110:366;;;:::o;9482:::-;9624:3;9645:67;9709:2;9704:3;9645:67;:::i;:::-;9638:74;;9721:93;9810:3;9721:93;:::i;:::-;9839:2;9834:3;9830:12;9823:19;;9482:366;;;:::o;9854:::-;9996:3;10017:67;10081:2;10076:3;10017:67;:::i;:::-;10010:74;;10093:93;10182:3;10093:93;:::i;:::-;10211:2;10206:3;10202:12;10195:19;;9854:366;;;:::o;10226:118::-;10313:24;10331:5;10313:24;:::i;:::-;10308:3;10301:37;10226:118;;:::o;10350:157::-;10455:45;10475:24;10493:5;10475:24;:::i;:::-;10455:45;:::i;:::-;10450:3;10443:58;10350:157;;:::o;10513:112::-;10596:22;10612:5;10596:22;:::i;:::-;10591:3;10584:35;10513:112;;:::o;10631:397::-;10771:3;10786:75;10857:3;10848:6;10786:75;:::i;:::-;10886:2;10881:3;10877:12;10870:19;;10899:75;10970:3;10961:6;10899:75;:::i;:::-;10999:2;10994:3;10990:12;10983:19;;11019:3;11012:10;;10631:397;;;;;:::o;11034:210::-;11121:4;11159:2;11148:9;11144:18;11136:26;;11172:65;11234:1;11223:9;11219:17;11210:6;11172:65;:::i;:::-;11034:210;;;;:::o;11250:313::-;11363:4;11401:2;11390:9;11386:18;11378:26;;11450:9;11444:4;11440:20;11436:1;11425:9;11421:17;11414:47;11478:78;11551:4;11542:6;11478:78;:::i;:::-;11470:86;;11250:313;;;;:::o;11569:419::-;11735:4;11773:2;11762:9;11758:18;11750:26;;11822:9;11816:4;11812:20;11808:1;11797:9;11793:17;11786:47;11850:131;11976:4;11850:131;:::i;:::-;11842:139;;11569:419;;;:::o;11994:::-;12160:4;12198:2;12187:9;12183:18;12175:26;;12247:9;12241:4;12237:20;12233:1;12222:9;12218:17;12211:47;12275:131;12401:4;12275:131;:::i;:::-;12267:139;;11994:419;;;:::o;12419:::-;12585:4;12623:2;12612:9;12608:18;12600:26;;12672:9;12666:4;12662:20;12658:1;12647:9;12643:17;12636:47;12700:131;12826:4;12700:131;:::i;:::-;12692:139;;12419:419;;;:::o;12844:::-;13010:4;13048:2;13037:9;13033:18;13025:26;;13097:9;13091:4;13087:20;13083:1;13072:9;13068:17;13061:47;13125:131;13251:4;13125:131;:::i;:::-;13117:139;;12844:419;;;:::o;13269:::-;13435:4;13473:2;13462:9;13458:18;13450:26;;13522:9;13516:4;13512:20;13508:1;13497:9;13493:17;13486:47;13550:131;13676:4;13550:131;:::i;:::-;13542:139;;13269:419;;;:::o;13694:::-;13860:4;13898:2;13887:9;13883:18;13875:26;;13947:9;13941:4;13937:20;13933:1;13922:9;13918:17;13911:47;13975:131;14101:4;13975:131;:::i;:::-;13967:139;;13694:419;;;:::o;14119:::-;14285:4;14323:2;14312:9;14308:18;14300:26;;14372:9;14366:4;14362:20;14358:1;14347:9;14343:17;14336:47;14400:131;14526:4;14400:131;:::i;:::-;14392:139;;14119:419;;;:::o;14544:::-;14710:4;14748:2;14737:9;14733:18;14725:26;;14797:9;14791:4;14787:20;14783:1;14772:9;14768:17;14761:47;14825:131;14951:4;14825:131;:::i;:::-;14817:139;;14544:419;;;:::o;14969:::-;15135:4;15173:2;15162:9;15158:18;15150:26;;15222:9;15216:4;15212:20;15208:1;15197:9;15193:17;15186:47;15250:131;15376:4;15250:131;:::i;:::-;15242:139;;14969:419;;;:::o;15394:::-;15560:4;15598:2;15587:9;15583:18;15575:26;;15647:9;15641:4;15637:20;15633:1;15622:9;15618:17;15611:47;15675:131;15801:4;15675:131;:::i;:::-;15667:139;;15394:419;;;:::o;15819:::-;15985:4;16023:2;16012:9;16008:18;16000:26;;16072:9;16066:4;16062:20;16058:1;16047:9;16043:17;16036:47;16100:131;16226:4;16100:131;:::i;:::-;16092:139;;15819:419;;;:::o;16244:::-;16410:4;16448:2;16437:9;16433:18;16425:26;;16497:9;16491:4;16487:20;16483:1;16472:9;16468:17;16461:47;16525:131;16651:4;16525:131;:::i;:::-;16517:139;;16244:419;;;:::o;16669:::-;16835:4;16873:2;16862:9;16858:18;16850:26;;16922:9;16916:4;16912:20;16908:1;16897:9;16893:17;16886:47;16950:131;17076:4;16950:131;:::i;:::-;16942:139;;16669:419;;;:::o;17094:::-;17260:4;17298:2;17287:9;17283:18;17275:26;;17347:9;17341:4;17337:20;17333:1;17322:9;17318:17;17311:47;17375:131;17501:4;17375:131;:::i;:::-;17367:139;;17094:419;;;:::o;17519:::-;17685:4;17723:2;17712:9;17708:18;17700:26;;17772:9;17766:4;17762:20;17758:1;17747:9;17743:17;17736:47;17800:131;17926:4;17800:131;:::i;:::-;17792:139;;17519:419;;;:::o;17944:222::-;18037:4;18075:2;18064:9;18060:18;18052:26;;18088:71;18156:1;18145:9;18141:17;18132:6;18088:71;:::i;:::-;17944:222;;;;:::o;18172:214::-;18261:4;18299:2;18288:9;18284:18;18276:26;;18312:67;18376:1;18365:9;18361:17;18352:6;18312:67;:::i;:::-;18172:214;;;;:::o;18473:99::-;18525:6;18559:5;18553:12;18543:22;;18473:99;;;:::o;18578:169::-;18662:11;18696:6;18691:3;18684:19;18736:4;18731:3;18727:14;18712:29;;18578:169;;;;:::o;18753:305::-;18793:3;18812:20;18830:1;18812:20;:::i;:::-;18807:25;;18846:20;18864:1;18846:20;:::i;:::-;18841:25;;19000:1;18932:66;18928:74;18925:1;18922:81;18919:107;;;19006:18;;:::i;:::-;18919:107;19050:1;19047;19043:9;19036:16;;18753:305;;;;:::o;19064:348::-;19104:7;19127:20;19145:1;19127:20;:::i;:::-;19122:25;;19161:20;19179:1;19161:20;:::i;:::-;19156:25;;19349:1;19281:66;19277:74;19274:1;19271:81;19266:1;19259:9;19252:17;19248:105;19245:131;;;19356:18;;:::i;:::-;19245:131;19404:1;19401;19397:9;19386:20;;19064:348;;;;:::o;19418:191::-;19458:4;19478:20;19496:1;19478:20;:::i;:::-;19473:25;;19512:20;19530:1;19512:20;:::i;:::-;19507:25;;19551:1;19548;19545:8;19542:34;;;19556:18;;:::i;:::-;19542:34;19601:1;19598;19594:9;19586:17;;19418:191;;;;:::o;19615:96::-;19652:7;19681:24;19699:5;19681:24;:::i;:::-;19670:35;;19615:96;;;:::o;19717:90::-;19751:7;19794:5;19787:13;19780:21;19769:32;;19717:90;;;:::o;19813:77::-;19850:7;19879:5;19868:16;;19813:77;;;:::o;19896:126::-;19933:7;19973:42;19966:5;19962:54;19951:65;;19896:126;;;:::o;20028:77::-;20065:7;20094:5;20083:16;;20028:77;;;:::o;20111:86::-;20146:7;20186:4;20179:5;20175:16;20164:27;;20111:86;;;:::o;20203:307::-;20271:1;20281:113;20295:6;20292:1;20289:13;20281:113;;;20380:1;20375:3;20371:11;20365:18;20361:1;20356:3;20352:11;20345:39;20317:2;20314:1;20310:10;20305:15;;20281:113;;;20412:6;20409:1;20406:13;20403:101;;;20492:1;20483:6;20478:3;20474:16;20467:27;20403:101;20252:258;20203:307;;;:::o;20516:320::-;20560:6;20597:1;20591:4;20587:12;20577:22;;20644:1;20638:4;20634:12;20665:18;20655:81;;20721:4;20713:6;20709:17;20699:27;;20655:81;20783:2;20775:6;20772:14;20752:18;20749:38;20746:84;;;20802:18;;:::i;:::-;20746:84;20567:269;20516:320;;;:::o;20842:233::-;20881:3;20904:24;20922:5;20904:24;:::i;:::-;20895:33;;20950:66;20943:5;20940:77;20937:103;;;21020:18;;:::i;:::-;20937:103;21067:1;21060:5;21056:13;21049:20;;20842:233;;;:::o;21081:100::-;21120:7;21149:26;21169:5;21149:26;:::i;:::-;21138:37;;21081:100;;;:::o;21187:94::-;21226:7;21255:20;21269:5;21255:20;:::i;:::-;21244:31;;21187:94;;;:::o;21287:79::-;21326:7;21355:5;21344:16;;21287:79;;;:::o;21372:180::-;21420:77;21417:1;21410:88;21517:4;21514:1;21507:15;21541:4;21538:1;21531:15;21558:180;21606:77;21603:1;21596:88;21703:4;21700:1;21693:15;21727:4;21724:1;21717:15;21744:180;21792:77;21789:1;21782:88;21889:4;21886:1;21879:15;21913:4;21910:1;21903:15;21930:117;22039:1;22036;22029:12;22053:117;22162:1;22159;22152:12;22176:117;22285:1;22282;22275:12;22299:117;22408:1;22405;22398:12;22422:117;22531:1;22528;22521:12;22545:102;22586:6;22637:2;22633:7;22628:2;22621:5;22617:14;22613:28;22603:38;;22545:102;;;:::o;22653:94::-;22686:8;22734:5;22730:2;22726:14;22705:35;;22653:94;;;:::o;22753:222::-;22893:34;22889:1;22881:6;22877:14;22870:58;22962:5;22957:2;22949:6;22945:15;22938:30;22753:222;:::o;22981:221::-;23121:34;23117:1;23109:6;23105:14;23098:58;23190:4;23185:2;23177:6;23173:15;23166:29;22981:221;:::o;23208:181::-;23348:33;23344:1;23336:6;23332:14;23325:57;23208:181;:::o;23395:164::-;23535:16;23531:1;23523:6;23519:14;23512:40;23395:164;:::o;23565:221::-;23705:34;23701:1;23693:6;23689:14;23682:58;23774:4;23769:2;23761:6;23757:15;23750:29;23565:221;:::o;23792:225::-;23932:34;23928:1;23920:6;23916:14;23909:58;24001:8;23996:2;23988:6;23984:15;23977:33;23792:225;:::o;24023:237::-;24163:34;24159:1;24151:6;24147:14;24140:58;24232:20;24227:2;24219:6;24215:15;24208:45;24023:237;:::o;24266:227::-;24406:34;24402:1;24394:6;24390:14;24383:58;24475:10;24470:2;24462:6;24458:15;24451:35;24266:227;:::o;24499:220::-;24639:34;24635:1;24627:6;24623:14;24616:58;24708:3;24703:2;24695:6;24691:15;24684:28;24499:220;:::o;24725:224::-;24865:34;24861:1;24853:6;24849:14;24842:58;24934:7;24929:2;24921:6;24917:15;24910:32;24725:224;:::o;24955:223::-;25095:34;25091:1;25083:6;25079:14;25072:58;25164:6;25159:2;25151:6;25147:15;25140:31;24955:223;:::o;25184:222::-;25324:34;25320:1;25312:6;25308:14;25301:58;25393:5;25388:2;25380:6;25376:15;25369:30;25184:222;:::o;25412:225::-;25552:34;25548:1;25540:6;25536:14;25529:58;25621:8;25616:2;25608:6;25604:15;25597:33;25412:225;:::o;25643:224::-;25783:34;25779:1;25771:6;25767:14;25760:58;25852:7;25847:2;25839:6;25835:15;25828:32;25643:224;:::o;25873:181::-;26013:33;26009:1;26001:6;25997:14;25990:57;25873:181;:::o;26060:122::-;26133:24;26151:5;26133:24;:::i;:::-;26126:5;26123:35;26113:63;;26172:1;26169;26162:12;26113:63;26060:122;:::o;26188:::-;26261:24;26279:5;26261:24;:::i;:::-;26254:5;26251:35;26241:63;;26300:1;26297;26290:12;26241:63;26188:122;:::o;26316:::-;26389:24;26407:5;26389:24;:::i;:::-;26382:5;26379:35;26369:63;;26428:1;26425;26418:12;26369:63;26316:122;:::o

Swarm Source

ipfs://4e5d53325f4e8e87acb5f086816c9fbf27a801fde10699fa90fd0ed2eae16819
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.