Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
SubCapitalVault
Compiler Version
v0.8.17+commit.8df45f5f
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
//SPDX-License-Identifier: UNLICENSED // ________ _______ _________ ________ ________ // |\ __ \|\ ___ \|\___ ___\\ __ \|\ ____\ // \ \ \|\ \ \ __/\|___ \ \_\ \ \|\ \ \ \___|_ // \ \ __ \ \ \_|/__ \ \ \ \ \ \\\ \ \_____ \ // \ \ \ \ \ \ \_|\ \ \ \ \ \ \ \\\ \|____|\ \ // \ \__\ \__\ \_______\ \ \__\ \ \_______\____\_\ \ // \|__|\|__|\|_______| \|__| \|_______|\_________\ // \|_________| pragma solidity ^0.8.9; import "../interfaces/IAetos.sol"; import "../interfaces/IReturnsVault.sol"; import "../interfaces/IOperationsVault.sol"; import "../interfaces/IProposalManager.sol"; import "../utils/DAO.sol"; contract SubCapitalVault is DAO { IAetos aetos; IReturnsVault returnsVault; IOperationsVault operationsVault; /************************* Events **************************/ event ProposeProposal(uint256 indexed _id, Proposal _proposal); event VoteProposal(uint256 indexed _id, Vote indexed _vote); event ProcessProposal(uint256 indexed _id, Status _status); /******************** Public Variables *********************/ mapping(address => bool) public managers; uint256 public totalManagers; bool public isActive; bool public initialized = false; /******************** Structs and Definitions *********************/ /*********************** Constructor ************************/ /** * @notice Unused, needed to deploy implementation */ constructor() {} function initialize(address _aetosContract, address[] memory _managers) external { require(!initialized, "ES8"); //Contract already initialised aetos = IAetos(_aetosContract); returnsVault = IReturnsVault(aetos.getReturnsVault()); operationsVault = IOperationsVault(aetos.getOperationsVault()); for (uint256 i = 0; i < _managers.length; i++) { managers[_managers[i]] = true; } totalManagers = _managers.length; isActive = true; initialized = true; } /********************* Getter Functions *********************/ function getIsManager(address _manager) public view returns (bool) { return managers[_manager]; } function getIsActive() public view returns (bool) { return isActive; } /********************* Setter Functions *********************/ /** * @notice propose * @param _proposalDraft Proposal being put forth to the DAO */ function propose(ProposalDraft memory _proposalDraft) external _onlyCouncilOrManager { require(_proposalDraft.proposalType <= 5, "ES0"); //Proposal Type Out of Bounds require(bytes(_proposalDraft.propVarsDraft.detailsURI).length > 0, "ES6"); //Need details uri // Assign object to inherit most relevant members; proposals[proposalIndex].proposalType = _proposalDraft.proposalType; _proposalDraft.propVarsDraft.proposer = msg.sender; proposals[proposalIndex].propVars = IProposalManager(aetos.getProposalManager()).handlePropVars(_proposalDraft.propVarsDraft); proposals[proposalIndex].propVars.threshold = aetos.getDAOConfigBaseVotingThreshold(); proposals[proposalIndex].propVars.endDate = block.timestamp + aetos.getDAOConfigVotingPeriod(); proposals[proposalIndex].existingAddress = _proposalDraft.existingAddress; proposals[proposalIndex].newAddress = _proposalDraft.newAddress; proposals[proposalIndex].amountOrIndex = _proposalDraft.amountOrIndex; proposals[proposalIndex].propVars.quorum = totalManagers; proposals[proposalIndex].propVars.totalMembers = totalManagers; /* CustomTxn */ if (_proposalDraft.proposalType == 0) { proposals[proposalIndex].propVars.threshold = 100; // Require 100% proposals[proposalIndex].customTxn = _proposalDraft.customTxn; } /* CloseSub */ if (_proposalDraft.proposalType == 1) { require(getIsActive() != _proposalDraft.active, "ES1"); //Vault already this state proposals[proposalIndex].active = _proposalDraft.active; } /* SubManager */ if (_proposalDraft.proposalType == 2 || _proposalDraft.proposalType == 3 || _proposalDraft.proposalType == 4) { _nullCheck(_proposalDraft.newAddress); _nullCheck( _proposalDraft.existingAddress); proposals[proposalIndex].newAddress = _proposalDraft.newAddress; proposals[proposalIndex].existingAddress = _proposalDraft.existingAddress; } /* Returns */ if (_proposalDraft.proposalType == 5) { require(!aetos.getCanJoin(), "ES2"); //Signups must have already stopped require(operationsVault.getWhitelistedTokens(_proposalDraft.token), "ES3"); //Op Token not approved require(returnsVault.getPrimaryToken() == _proposalDraft.token, "ES4"); //Return Vault Token not approved proposals[proposalIndex].amountOrIndex = _proposalDraft.amountOrIndex; proposals[proposalIndex].token = _proposalDraft.token; } emit ProposeProposal(proposalIndex, proposals[proposalIndex]); proposalIndex++; } /* Voting */ /** * @notice vote * @param _index The index of the proposal * @param _vote What vote the user is casting */ function vote(uint256 _index, Vote _vote) external _onlyCouncilOrManager { proposals[_index].propVars = IProposalManager(aetos.getProposalManager()).voteProposal(msg.sender, proposals[_index].propVars, _vote); proposals[_index].propVars.voters.push(msg.sender); emit VoteProposal(_index, _vote); } /* Processing */ /** * @notice processInternalProposal * @param _index The index of the proposal */ function process(uint256 _index) external _onlyCouncilOrManager { proposals[_index].propVars = IProposalManager(aetos.getProposalManager()).processProposalSecurity(proposals[_index].propVars); if (proposals[_index].propVars.status == Status.Passed) { /* Token */ if (proposals[_index].proposalType == 0) { processCustomTxn(proposals[_index].customTxn.contractAddress, proposals[_index].customTxn.params); } if (proposals[_index].proposalType == 1) { setIsActive(proposals[_index].active); } if (proposals[_index].proposalType == 2) { addManager(proposals[_index].newAddress); } if (proposals[_index].proposalType == 3) { require(totalManagers > 1, "ES9"); //Need at least 1 manager removeManager(proposals[_index].existingAddress); } if (proposals[_index].proposalType == 4) { replaceManager(proposals[_index].existingAddress, proposals[_index].newAddress); } if (proposals[_index].proposalType == 5) { /* Requires a check, because when you proposed is not the same as when you process */ require(returnsVault.getPrimaryToken() == proposals[_index].token, "ES3"); /* Send to returns vault */ uint256 returnsVaultAmount = (proposals[_index].amountOrIndex * _safeSubtract(1000, aetos.getOperationsVaultPercentage())) / 1000; IERC20DP tempToken = IERC20DP(proposals[_index].token); tempToken.transfer(aetos.getReturnsVault(), returnsVaultAmount); /* Send to operations vault */ uint256 operationsVaultAmount = (proposals[_index].amountOrIndex * aetos.getOperationsVaultPercentage()) / 1000; IERC20DP(proposals[_index].token).transfer(aetos.getOperationsVault(), operationsVaultAmount); emit CurrentBalance(proposals[_index].token, tempToken.balanceOf(address(this)), address(this)); emit CurrentBalance(proposals[_index].token, tempToken.balanceOf(aetos.getOperationsVault()), aetos.getOperationsVault()); emit CurrentBalance(proposals[_index].token, tempToken.balanceOf(aetos.getReturnsVault()), aetos.getReturnsVault()); } } emit ProcessProposal(_index, proposals[_index].propVars.status); } function setIsActive(bool _isActive) private { isActive = _isActive; } function addManager(address _member) private { managers[_member] = true; totalManagers++; } function removeManager(address _manager) private { managers[_manager] = false; totalManagers--; } function replaceManager(address _oldManager, address _newManager) private { managers[_newManager] = true; managers[_oldManager] = false; } function processCustomTxn(address _address, bytes memory _params) private { (bool success, ) = _address.call(_params); require(success, "ES5"); //Failed txn } /************************ Modifiers *************************/ modifier _onlyCouncilOrManager() { MemberStatus status = MemberStatus(aetos.getMemberStatus(msg.sender)); require(status == MemberStatus.Council || managers[msg.sender], "ES7"); //Not a council member or manager _; } }
//SPDX-License-Identifier: UNLICENSED pragma solidity ^0.8.9; import "hardhat/console.sol"; import "./IDAO.sol"; interface IAetos is IDAO { enum CommitStatus { Pending, Slashed, Met, Pardoned } struct Members { uint256 shares; MemberStatus status; uint256 commited; CommitStatus[] commitSchedule; uint256 votesCasted; uint256 claimed; uint256 lastClaimed; string nickname; } enum CallStatus { Awaiting, Called } /********************* Getter Functions *********************/ function getDAOEndTime() external view returns (uint256); function getDAOConfigBaseVotingThreshold() external view returns (uint256); function getDAOConfigVotingPeriod() external view returns (uint256); function getMemberStatus(address _member) external view returns (MemberStatus); function getNumMembers() external view returns (uint256); function getCanJoin() external view returns (bool); function getOperationsVault() external view returns (address); function getReturnsVault() external view returns (address); function getProposalManager() external view returns (address); function getOperationsVaultPercentage() external view returns (uint256); function getNumCurrentCouncil() external view returns (uint256); function getTotalCouncilLength() external view returns (uint256); }
//SPDX-License-Identifier: UNLICENSED pragma solidity ^0.8.9; interface IReturnsVault { function initialize(address _baseToken) external; function getPrimaryToken() external view returns (address); function getWhitelistedTokens(address _token) external view returns (bool); function getTotalReturns(address _token) external returns (uint256); function sync(address _token) external; function withdraw( address _token, address _recipient, uint256 _amount ) external; }
//SPDX-License-Identifier: UNLICENSED pragma solidity ^0.8.9; interface IOperationsVault { function initialize(address _baseToken) external; function getWhitelistedTokens(address _token) external view returns (bool); }
//SPDX-License-Identifier: UNLICENSED pragma solidity ^0.8.9; import "../interfaces/IDAO.sol"; interface IProposalManager is IDAO { function handlePropVars(ProposalVariablesDraft calldata _propVarsDraft) external view returns (ProposalVariables memory); function voteProposal(address _voter, ProposalVariables calldata _propVars, Vote _vote) external view returns (ProposalVariables memory); function processProposalSecurity(ProposalVariables calldata _propVars) external view returns (ProposalVariables memory); }
//SPDX-License-Identifier: UNLICENSED pragma solidity ^0.8.9; import "../interfaces/IDAO.sol"; import "../tokens/IERC20DP.sol"; contract DAO is IDAO { /******************** Constants *********************/ /******************** Public Variables *********************/ mapping(address => bool) public whitelistedTokens; //Tokens whitelisted per vault (only stables should be used in v1 due to the shares mechanics) Sub vaults can interact with any tokens. uint256 public proposalIndex; /******************** Structs and Definitions *********************/ mapping(uint256 => Proposal) public proposals; function _safeSubtract(uint256 _num1, uint256 _num2) internal pure returns (uint256) { if (_num2 >= _num1) { return 0; } else { return (_num1 - _num2); } } function _nullCheck(address _address) internal pure { require(_address != address(0), "ED0"); //This address cannot be null } }
//SPDX-License-Identifier: UNLICENSED pragma solidity ^0.8.9; interface IDAO { event CurrentBalance(address _token, uint256 _amount, address _vault); enum Vote { Null, Yes, No } enum Status { Pending, Passed, Failed } enum MemberStatus { NonMember, Member, Council } /* Aetos Proposal Types: 0: Text vote, 1: Replace a single council member, 2: Existing member kick, 3: Stop signups, 4: Stop DAO, 5: New Member, 6: Slash member, 7: Pardon member, 8: Issue bonus shares, 9: Nominate new council, 10: Assume role and withdraw Capital Vault Proposal Types: 0: AMM Swap, 1: Token Whitelist, 2: Funding Operations Vault Proposal Types: 0: AMM Swap, 1: Token Whitelist, 2: Contributor Returns Vault Proposal Types: 0: AMM Swap, 1: Token Whitelist Sub Vault Proposal Types: 0: Token Whitelist, 1: Custom Txn, 2: Close Sub Vault, 3: Manager add, 4: Manager remove, 5: Manager replace, 6: Issue Returns to main vaults */ struct Proposal { uint256 proposalType; address existingAddress; // Used in proposals that require existing member addresses address newAddress; // Used in proposals that introduce new member addresses address[] addressArray; uint256[] amountArray; address amm; address token; uint256 amountOrIndex; bool whitelist; bool active; CustomTxn customTxn; ProposalVariables propVars; } struct ProposalDraft { uint256 proposalType; address existingAddress; // Used in proposals that require existing member addresses address newAddress; // Used in proposals that introduce new member addresses address[] addressArray; uint256[] amountArray; address amm; address token; uint256 amountOrIndex; bool whitelist; bool active; CustomTxn customTxn; ProposalVariablesDraft propVarsDraft; } struct CustomTxn { address contractAddress; bytes params; } struct ProposalVariables { address proposer; uint256 startDate; // When the proposal was created uint256 endDate; // When the voting period ends for the proposal uint256 closedDate; // When the proposal was finalised uint256 threshold /* Between 0-100, i.e. 50 = 50% */; uint256 quorum; // Min amount of votes required uint256 totalMembers; //Total members that can potentially vote for this string detailsURI; uint256 yesVotes; uint256 noVotes; Status status; address[] voters; } struct ProposalVariablesDraft { address proposer; string detailsURI; } }
// SPDX-License-Identifier: MIT 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(int256 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(int256)", p0)); } function logUint(uint256 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256)", 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(uint256 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256)", 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(uint256 p0, uint256 p1) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256)", p0, p1)); } function log(uint256 p0, string memory p1) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,string)", p0, p1)); } function log(uint256 p0, bool p1) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,bool)", p0, p1)); } function log(uint256 p0, address p1) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,address)", p0, p1)); } function log(string memory p0, uint256 p1) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint256)", 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, uint256 p1) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint256)", 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, uint256 p1) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint256)", 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(uint256 p0, uint256 p1, uint256 p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,uint256)", p0, p1, p2)); } function log(uint256 p0, uint256 p1, string memory p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,string)", p0, p1, p2)); } function log(uint256 p0, uint256 p1, bool p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,bool)", p0, p1, p2)); } function log(uint256 p0, uint256 p1, address p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,address)", p0, p1, p2)); } function log(uint256 p0, string memory p1, uint256 p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,string,uint256)", p0, p1, p2)); } function log(uint256 p0, string memory p1, string memory p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,string,string)", p0, p1, p2)); } function log(uint256 p0, string memory p1, bool p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,string,bool)", p0, p1, p2)); } function log(uint256 p0, string memory p1, address p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,string,address)", p0, p1, p2)); } function log(uint256 p0, bool p1, uint256 p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,uint256)", p0, p1, p2)); } function log(uint256 p0, bool p1, string memory p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,string)", p0, p1, p2)); } function log(uint256 p0, bool p1, bool p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,bool)", p0, p1, p2)); } function log(uint256 p0, bool p1, address p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,address)", p0, p1, p2)); } function log(uint256 p0, address p1, uint256 p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,address,uint256)", p0, p1, p2)); } function log(uint256 p0, address p1, string memory p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,address,string)", p0, p1, p2)); } function log(uint256 p0, address p1, bool p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,address,bool)", p0, p1, p2)); } function log(uint256 p0, address p1, address p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,address,address)", p0, p1, p2)); } function log(string memory p0, uint256 p1, uint256 p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint256,uint256)", p0, p1, p2)); } function log(string memory p0, uint256 p1, string memory p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint256,string)", p0, p1, p2)); } function log(string memory p0, uint256 p1, bool p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint256,bool)", p0, p1, p2)); } function log(string memory p0, uint256 p1, address p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint256,address)", p0, p1, p2)); } function log(string memory p0, string memory p1, uint256 p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string,uint256)", 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, uint256 p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool,uint256)", 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, uint256 p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address,uint256)", 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, uint256 p1, uint256 p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,uint256)", p0, p1, p2)); } function log(bool p0, uint256 p1, string memory p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,string)", p0, p1, p2)); } function log(bool p0, uint256 p1, bool p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,bool)", p0, p1, p2)); } function log(bool p0, uint256 p1, address p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,address)", p0, p1, p2)); } function log(bool p0, string memory p1, uint256 p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string,uint256)", 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, uint256 p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint256)", 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, uint256 p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address,uint256)", 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, uint256 p1, uint256 p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint256,uint256)", p0, p1, p2)); } function log(address p0, uint256 p1, string memory p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint256,string)", p0, p1, p2)); } function log(address p0, uint256 p1, bool p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint256,bool)", p0, p1, p2)); } function log(address p0, uint256 p1, address p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint256,address)", p0, p1, p2)); } function log(address p0, string memory p1, uint256 p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string,uint256)", 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, uint256 p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool,uint256)", 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, uint256 p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address,uint256)", 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(uint256 p0, uint256 p1, uint256 p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,uint256,uint256)", p0, p1, p2, p3)); } function log(uint256 p0, uint256 p1, uint256 p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,uint256,string)", p0, p1, p2, p3)); } function log(uint256 p0, uint256 p1, uint256 p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,uint256,bool)", p0, p1, p2, p3)); } function log(uint256 p0, uint256 p1, uint256 p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,uint256,address)", p0, p1, p2, p3)); } function log(uint256 p0, uint256 p1, string memory p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,string,uint256)", p0, p1, p2, p3)); } function log(uint256 p0, uint256 p1, string memory p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,string,string)", p0, p1, p2, p3)); } function log(uint256 p0, uint256 p1, string memory p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,string,bool)", p0, p1, p2, p3)); } function log(uint256 p0, uint256 p1, string memory p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,string,address)", p0, p1, p2, p3)); } function log(uint256 p0, uint256 p1, bool p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,bool,uint256)", p0, p1, p2, p3)); } function log(uint256 p0, uint256 p1, bool p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,bool,string)", p0, p1, p2, p3)); } function log(uint256 p0, uint256 p1, bool p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,bool,bool)", p0, p1, p2, p3)); } function log(uint256 p0, uint256 p1, bool p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,bool,address)", p0, p1, p2, p3)); } function log(uint256 p0, uint256 p1, address p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,address,uint256)", p0, p1, p2, p3)); } function log(uint256 p0, uint256 p1, address p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,address,string)", p0, p1, p2, p3)); } function log(uint256 p0, uint256 p1, address p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,address,bool)", p0, p1, p2, p3)); } function log(uint256 p0, uint256 p1, address p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,address,address)", p0, p1, p2, p3)); } function log(uint256 p0, string memory p1, uint256 p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,string,uint256,uint256)", p0, p1, p2, p3)); } function log(uint256 p0, string memory p1, uint256 p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,string,uint256,string)", p0, p1, p2, p3)); } function log(uint256 p0, string memory p1, uint256 p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,string,uint256,bool)", p0, p1, p2, p3)); } function log(uint256 p0, string memory p1, uint256 p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,string,uint256,address)", p0, p1, p2, p3)); } function log(uint256 p0, string memory p1, string memory p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,string,string,uint256)", p0, p1, p2, p3)); } function log(uint256 p0, string memory p1, string memory p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,string,string,string)", p0, p1, p2, p3)); } function log(uint256 p0, string memory p1, string memory p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,string,string,bool)", p0, p1, p2, p3)); } function log(uint256 p0, string memory p1, string memory p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,string,string,address)", p0, p1, p2, p3)); } function log(uint256 p0, string memory p1, bool p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,string,bool,uint256)", p0, p1, p2, p3)); } function log(uint256 p0, string memory p1, bool p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,string,bool,string)", p0, p1, p2, p3)); } function log(uint256 p0, string memory p1, bool p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,string,bool,bool)", p0, p1, p2, p3)); } function log(uint256 p0, string memory p1, bool p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,string,bool,address)", p0, p1, p2, p3)); } function log(uint256 p0, string memory p1, address p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,string,address,uint256)", p0, p1, p2, p3)); } function log(uint256 p0, string memory p1, address p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,string,address,string)", p0, p1, p2, p3)); } function log(uint256 p0, string memory p1, address p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,string,address,bool)", p0, p1, p2, p3)); } function log(uint256 p0, string memory p1, address p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,string,address,address)", p0, p1, p2, p3)); } function log(uint256 p0, bool p1, uint256 p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,uint256,uint256)", p0, p1, p2, p3)); } function log(uint256 p0, bool p1, uint256 p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,uint256,string)", p0, p1, p2, p3)); } function log(uint256 p0, bool p1, uint256 p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,uint256,bool)", p0, p1, p2, p3)); } function log(uint256 p0, bool p1, uint256 p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,uint256,address)", p0, p1, p2, p3)); } function log(uint256 p0, bool p1, string memory p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,string,uint256)", p0, p1, p2, p3)); } function log(uint256 p0, bool p1, string memory p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,string,string)", p0, p1, p2, p3)); } function log(uint256 p0, bool p1, string memory p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,string,bool)", p0, p1, p2, p3)); } function log(uint256 p0, bool p1, string memory p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,string,address)", p0, p1, p2, p3)); } function log(uint256 p0, bool p1, bool p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,bool,uint256)", p0, p1, p2, p3)); } function log(uint256 p0, bool p1, bool p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,bool,string)", p0, p1, p2, p3)); } function log(uint256 p0, bool p1, bool p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,bool,bool)", p0, p1, p2, p3)); } function log(uint256 p0, bool p1, bool p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,bool,address)", p0, p1, p2, p3)); } function log(uint256 p0, bool p1, address p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,address,uint256)", p0, p1, p2, p3)); } function log(uint256 p0, bool p1, address p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,address,string)", p0, p1, p2, p3)); } function log(uint256 p0, bool p1, address p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,address,bool)", p0, p1, p2, p3)); } function log(uint256 p0, bool p1, address p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,address,address)", p0, p1, p2, p3)); } function log(uint256 p0, address p1, uint256 p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,address,uint256,uint256)", p0, p1, p2, p3)); } function log(uint256 p0, address p1, uint256 p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,address,uint256,string)", p0, p1, p2, p3)); } function log(uint256 p0, address p1, uint256 p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,address,uint256,bool)", p0, p1, p2, p3)); } function log(uint256 p0, address p1, uint256 p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,address,uint256,address)", p0, p1, p2, p3)); } function log(uint256 p0, address p1, string memory p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,address,string,uint256)", p0, p1, p2, p3)); } function log(uint256 p0, address p1, string memory p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,address,string,string)", p0, p1, p2, p3)); } function log(uint256 p0, address p1, string memory p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,address,string,bool)", p0, p1, p2, p3)); } function log(uint256 p0, address p1, string memory p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,address,string,address)", p0, p1, p2, p3)); } function log(uint256 p0, address p1, bool p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,address,bool,uint256)", p0, p1, p2, p3)); } function log(uint256 p0, address p1, bool p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,address,bool,string)", p0, p1, p2, p3)); } function log(uint256 p0, address p1, bool p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,address,bool,bool)", p0, p1, p2, p3)); } function log(uint256 p0, address p1, bool p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,address,bool,address)", p0, p1, p2, p3)); } function log(uint256 p0, address p1, address p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,address,address,uint256)", p0, p1, p2, p3)); } function log(uint256 p0, address p1, address p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,address,address,string)", p0, p1, p2, p3)); } function log(uint256 p0, address p1, address p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,address,address,bool)", p0, p1, p2, p3)); } function log(uint256 p0, address p1, address p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,address,address,address)", p0, p1, p2, p3)); } function log(string memory p0, uint256 p1, uint256 p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint256,uint256,uint256)", p0, p1, p2, p3)); } function log(string memory p0, uint256 p1, uint256 p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint256,uint256,string)", p0, p1, p2, p3)); } function log(string memory p0, uint256 p1, uint256 p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint256,uint256,bool)", p0, p1, p2, p3)); } function log(string memory p0, uint256 p1, uint256 p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint256,uint256,address)", p0, p1, p2, p3)); } function log(string memory p0, uint256 p1, string memory p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint256,string,uint256)", p0, p1, p2, p3)); } function log(string memory p0, uint256 p1, string memory p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint256,string,string)", p0, p1, p2, p3)); } function log(string memory p0, uint256 p1, string memory p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint256,string,bool)", p0, p1, p2, p3)); } function log(string memory p0, uint256 p1, string memory p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint256,string,address)", p0, p1, p2, p3)); } function log(string memory p0, uint256 p1, bool p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint256,bool,uint256)", p0, p1, p2, p3)); } function log(string memory p0, uint256 p1, bool p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint256,bool,string)", p0, p1, p2, p3)); } function log(string memory p0, uint256 p1, bool p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint256,bool,bool)", p0, p1, p2, p3)); } function log(string memory p0, uint256 p1, bool p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint256,bool,address)", p0, p1, p2, p3)); } function log(string memory p0, uint256 p1, address p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint256,address,uint256)", p0, p1, p2, p3)); } function log(string memory p0, uint256 p1, address p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint256,address,string)", p0, p1, p2, p3)); } function log(string memory p0, uint256 p1, address p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint256,address,bool)", p0, p1, p2, p3)); } function log(string memory p0, uint256 p1, address p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint256,address,address)", p0, p1, p2, p3)); } function log(string memory p0, string memory p1, uint256 p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string,uint256,uint256)", p0, p1, p2, p3)); } function log(string memory p0, string memory p1, uint256 p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string,uint256,string)", p0, p1, p2, p3)); } function log(string memory p0, string memory p1, uint256 p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string,uint256,bool)", p0, p1, p2, p3)); } function log(string memory p0, string memory p1, uint256 p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string,uint256,address)", p0, p1, p2, p3)); } function log(string memory p0, string memory p1, string memory p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string,string,uint256)", 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, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string,bool,uint256)", 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, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string,address,uint256)", 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, uint256 p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool,uint256,uint256)", p0, p1, p2, p3)); } function log(string memory p0, bool p1, uint256 p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool,uint256,string)", p0, p1, p2, p3)); } function log(string memory p0, bool p1, uint256 p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool,uint256,bool)", p0, p1, p2, p3)); } function log(string memory p0, bool p1, uint256 p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool,uint256,address)", p0, p1, p2, p3)); } function log(string memory p0, bool p1, string memory p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool,string,uint256)", 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, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,uint256)", 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, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool,address,uint256)", 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, uint256 p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address,uint256,uint256)", p0, p1, p2, p3)); } function log(string memory p0, address p1, uint256 p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address,uint256,string)", p0, p1, p2, p3)); } function log(string memory p0, address p1, uint256 p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address,uint256,bool)", p0, p1, p2, p3)); } function log(string memory p0, address p1, uint256 p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address,uint256,address)", p0, p1, p2, p3)); } function log(string memory p0, address p1, string memory p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address,string,uint256)", 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, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address,bool,uint256)", 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, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address,address,uint256)", 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, uint256 p1, uint256 p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,uint256,uint256)", p0, p1, p2, p3)); } function log(bool p0, uint256 p1, uint256 p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,uint256,string)", p0, p1, p2, p3)); } function log(bool p0, uint256 p1, uint256 p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,uint256,bool)", p0, p1, p2, p3)); } function log(bool p0, uint256 p1, uint256 p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,uint256,address)", p0, p1, p2, p3)); } function log(bool p0, uint256 p1, string memory p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,string,uint256)", p0, p1, p2, p3)); } function log(bool p0, uint256 p1, string memory p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,string,string)", p0, p1, p2, p3)); } function log(bool p0, uint256 p1, string memory p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,string,bool)", p0, p1, p2, p3)); } function log(bool p0, uint256 p1, string memory p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,string,address)", p0, p1, p2, p3)); } function log(bool p0, uint256 p1, bool p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,bool,uint256)", p0, p1, p2, p3)); } function log(bool p0, uint256 p1, bool p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,bool,string)", p0, p1, p2, p3)); } function log(bool p0, uint256 p1, bool p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,bool,bool)", p0, p1, p2, p3)); } function log(bool p0, uint256 p1, bool p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,bool,address)", p0, p1, p2, p3)); } function log(bool p0, uint256 p1, address p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,address,uint256)", p0, p1, p2, p3)); } function log(bool p0, uint256 p1, address p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,address,string)", p0, p1, p2, p3)); } function log(bool p0, uint256 p1, address p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,address,bool)", p0, p1, p2, p3)); } function log(bool p0, uint256 p1, address p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,address,address)", p0, p1, p2, p3)); } function log(bool p0, string memory p1, uint256 p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string,uint256,uint256)", p0, p1, p2, p3)); } function log(bool p0, string memory p1, uint256 p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string,uint256,string)", p0, p1, p2, p3)); } function log(bool p0, string memory p1, uint256 p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string,uint256,bool)", p0, p1, p2, p3)); } function log(bool p0, string memory p1, uint256 p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string,uint256,address)", p0, p1, p2, p3)); } function log(bool p0, string memory p1, string memory p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string,string,uint256)", 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, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,uint256)", 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, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string,address,uint256)", 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, uint256 p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint256,uint256)", p0, p1, p2, p3)); } function log(bool p0, bool p1, uint256 p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint256,string)", p0, p1, p2, p3)); } function log(bool p0, bool p1, uint256 p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint256,bool)", p0, p1, p2, p3)); } function log(bool p0, bool p1, uint256 p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint256,address)", p0, p1, p2, p3)); } function log(bool p0, bool p1, string memory p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,uint256)", 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, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,uint256)", 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, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,uint256)", 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, uint256 p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address,uint256,uint256)", p0, p1, p2, p3)); } function log(bool p0, address p1, uint256 p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address,uint256,string)", p0, p1, p2, p3)); } function log(bool p0, address p1, uint256 p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address,uint256,bool)", p0, p1, p2, p3)); } function log(bool p0, address p1, uint256 p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address,uint256,address)", p0, p1, p2, p3)); } function log(bool p0, address p1, string memory p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address,string,uint256)", 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, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,uint256)", 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, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address,address,uint256)", 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, uint256 p1, uint256 p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint256,uint256,uint256)", p0, p1, p2, p3)); } function log(address p0, uint256 p1, uint256 p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint256,uint256,string)", p0, p1, p2, p3)); } function log(address p0, uint256 p1, uint256 p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint256,uint256,bool)", p0, p1, p2, p3)); } function log(address p0, uint256 p1, uint256 p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint256,uint256,address)", p0, p1, p2, p3)); } function log(address p0, uint256 p1, string memory p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint256,string,uint256)", p0, p1, p2, p3)); } function log(address p0, uint256 p1, string memory p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint256,string,string)", p0, p1, p2, p3)); } function log(address p0, uint256 p1, string memory p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint256,string,bool)", p0, p1, p2, p3)); } function log(address p0, uint256 p1, string memory p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint256,string,address)", p0, p1, p2, p3)); } function log(address p0, uint256 p1, bool p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint256,bool,uint256)", p0, p1, p2, p3)); } function log(address p0, uint256 p1, bool p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint256,bool,string)", p0, p1, p2, p3)); } function log(address p0, uint256 p1, bool p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint256,bool,bool)", p0, p1, p2, p3)); } function log(address p0, uint256 p1, bool p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint256,bool,address)", p0, p1, p2, p3)); } function log(address p0, uint256 p1, address p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint256,address,uint256)", p0, p1, p2, p3)); } function log(address p0, uint256 p1, address p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint256,address,string)", p0, p1, p2, p3)); } function log(address p0, uint256 p1, address p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint256,address,bool)", p0, p1, p2, p3)); } function log(address p0, uint256 p1, address p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint256,address,address)", p0, p1, p2, p3)); } function log(address p0, string memory p1, uint256 p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string,uint256,uint256)", p0, p1, p2, p3)); } function log(address p0, string memory p1, uint256 p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string,uint256,string)", p0, p1, p2, p3)); } function log(address p0, string memory p1, uint256 p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string,uint256,bool)", p0, p1, p2, p3)); } function log(address p0, string memory p1, uint256 p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string,uint256,address)", p0, p1, p2, p3)); } function log(address p0, string memory p1, string memory p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string,string,uint256)", 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, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string,bool,uint256)", 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, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string,address,uint256)", 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, uint256 p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool,uint256,uint256)", p0, p1, p2, p3)); } function log(address p0, bool p1, uint256 p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool,uint256,string)", p0, p1, p2, p3)); } function log(address p0, bool p1, uint256 p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool,uint256,bool)", p0, p1, p2, p3)); } function log(address p0, bool p1, uint256 p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool,uint256,address)", p0, p1, p2, p3)); } function log(address p0, bool p1, string memory p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool,string,uint256)", 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, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,uint256)", 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, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool,address,uint256)", 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, uint256 p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address,uint256,uint256)", p0, p1, p2, p3)); } function log(address p0, address p1, uint256 p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address,uint256,string)", p0, p1, p2, p3)); } function log(address p0, address p1, uint256 p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address,uint256,bool)", p0, p1, p2, p3)); } function log(address p0, address p1, uint256 p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address,uint256,address)", p0, p1, p2, p3)); } function log(address p0, address p1, string memory p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address,string,uint256)", 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, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address,bool,uint256)", 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, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address,address,uint256)", 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)); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20DP { /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of decimals. */ function decimals() external view returns (uint8); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, uint256 amount) external; /** * @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; /** * @dev Moves `amount` tokens from `from` to `to` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 amount ) external; }
{ "optimizer": { "enabled": true, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_token","type":"address"},{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"},{"indexed":false,"internalType":"address","name":"_vault","type":"address"}],"name":"CurrentBalance","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"_id","type":"uint256"},{"indexed":false,"internalType":"enum IDAO.Status","name":"_status","type":"uint8"}],"name":"ProcessProposal","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"_id","type":"uint256"},{"components":[{"internalType":"uint256","name":"proposalType","type":"uint256"},{"internalType":"address","name":"existingAddress","type":"address"},{"internalType":"address","name":"newAddress","type":"address"},{"internalType":"address[]","name":"addressArray","type":"address[]"},{"internalType":"uint256[]","name":"amountArray","type":"uint256[]"},{"internalType":"address","name":"amm","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amountOrIndex","type":"uint256"},{"internalType":"bool","name":"whitelist","type":"bool"},{"internalType":"bool","name":"active","type":"bool"},{"components":[{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"bytes","name":"params","type":"bytes"}],"internalType":"struct IDAO.CustomTxn","name":"customTxn","type":"tuple"},{"components":[{"internalType":"address","name":"proposer","type":"address"},{"internalType":"uint256","name":"startDate","type":"uint256"},{"internalType":"uint256","name":"endDate","type":"uint256"},{"internalType":"uint256","name":"closedDate","type":"uint256"},{"internalType":"uint256","name":"threshold","type":"uint256"},{"internalType":"uint256","name":"quorum","type":"uint256"},{"internalType":"uint256","name":"totalMembers","type":"uint256"},{"internalType":"string","name":"detailsURI","type":"string"},{"internalType":"uint256","name":"yesVotes","type":"uint256"},{"internalType":"uint256","name":"noVotes","type":"uint256"},{"internalType":"enum IDAO.Status","name":"status","type":"uint8"},{"internalType":"address[]","name":"voters","type":"address[]"}],"internalType":"struct IDAO.ProposalVariables","name":"propVars","type":"tuple"}],"indexed":false,"internalType":"struct IDAO.Proposal","name":"_proposal","type":"tuple"}],"name":"ProposeProposal","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"_id","type":"uint256"},{"indexed":true,"internalType":"enum IDAO.Vote","name":"_vote","type":"uint8"}],"name":"VoteProposal","type":"event"},{"inputs":[],"name":"getIsActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_manager","type":"address"}],"name":"getIsManager","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_aetosContract","type":"address"},{"internalType":"address[]","name":"_managers","type":"address[]"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"initialized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"managers","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"name":"process","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"proposalIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"proposals","outputs":[{"internalType":"uint256","name":"proposalType","type":"uint256"},{"internalType":"address","name":"existingAddress","type":"address"},{"internalType":"address","name":"newAddress","type":"address"},{"internalType":"address","name":"amm","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amountOrIndex","type":"uint256"},{"internalType":"bool","name":"whitelist","type":"bool"},{"internalType":"bool","name":"active","type":"bool"},{"components":[{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"bytes","name":"params","type":"bytes"}],"internalType":"struct IDAO.CustomTxn","name":"customTxn","type":"tuple"},{"components":[{"internalType":"address","name":"proposer","type":"address"},{"internalType":"uint256","name":"startDate","type":"uint256"},{"internalType":"uint256","name":"endDate","type":"uint256"},{"internalType":"uint256","name":"closedDate","type":"uint256"},{"internalType":"uint256","name":"threshold","type":"uint256"},{"internalType":"uint256","name":"quorum","type":"uint256"},{"internalType":"uint256","name":"totalMembers","type":"uint256"},{"internalType":"string","name":"detailsURI","type":"string"},{"internalType":"uint256","name":"yesVotes","type":"uint256"},{"internalType":"uint256","name":"noVotes","type":"uint256"},{"internalType":"enum IDAO.Status","name":"status","type":"uint8"},{"internalType":"address[]","name":"voters","type":"address[]"}],"internalType":"struct IDAO.ProposalVariables","name":"propVars","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"proposalType","type":"uint256"},{"internalType":"address","name":"existingAddress","type":"address"},{"internalType":"address","name":"newAddress","type":"address"},{"internalType":"address[]","name":"addressArray","type":"address[]"},{"internalType":"uint256[]","name":"amountArray","type":"uint256[]"},{"internalType":"address","name":"amm","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amountOrIndex","type":"uint256"},{"internalType":"bool","name":"whitelist","type":"bool"},{"internalType":"bool","name":"active","type":"bool"},{"components":[{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"bytes","name":"params","type":"bytes"}],"internalType":"struct IDAO.CustomTxn","name":"customTxn","type":"tuple"},{"components":[{"internalType":"address","name":"proposer","type":"address"},{"internalType":"string","name":"detailsURI","type":"string"}],"internalType":"struct IDAO.ProposalVariablesDraft","name":"propVarsDraft","type":"tuple"}],"internalType":"struct IDAO.ProposalDraft","name":"_proposalDraft","type":"tuple"}],"name":"propose","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalManagers","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"},{"internalType":"enum IDAO.Vote","name":"_vote","type":"uint8"}],"name":"vote","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"whitelistedTokens","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60806040526008805461ff001916905534801561001b57600080fd5b506130d48061002b6000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c8063943e82161161008c578063daf9c21011610066578063daf9c210146101bc578063fba7cc79146101df578063fdff9b4d146101ea578063ffb2c4791461020d57600080fd5b8063943e82161461018d578063946d9204146101a0578063d5eb7cf4146101b357600080fd5b8063013cf08b146100d4578063132cd06214610106578063158ef93e1461011b578063198e14f81461013d57806322f3e2d4146101695780635977e0f214610176575b600080fd5b6100e76100e23660046121f8565b610220565b6040516100fd9a9998979695949392919061239d565b60405180910390f35b6101196101143660046126b4565b6104cb565b005b60085461012d90610100900460ff1681565b60405190151581526020016100fd565b61012d61014b366004612810565b6001600160a01b031660009081526006602052604090205460ff1690565b60085461012d9060ff1681565b61017f60015481565b6040519081526020016100fd565b61011961019b366004612841565b610dbe565b6101196101ae366004612871565b6110ce565b61017f60075481565b61012d6101ca366004612810565b60006020819052908152604090205460ff1681565b60085460ff1661012d565b61012d6101f8366004612810565b60066020526000908152604090205460ff1681565b61011961021b3660046121f8565b6112a9565b600260208181526000928352604092839020805460018201549382015460058301546006840154600785015460088601548951808b01909a526009870180546001600160a01b039081168c52600a89018054989c9b82169b9782169a968216999590911697939660ff808516976101009095041695949093840191906102a5906128c1565b80601f01602080910402602001604051908101604052809291908181526020018280546102d1906128c1565b801561031e5780601f106102f35761010080835404028352916020019161031e565b820191906000526020600020905b81548152906001019060200180831161030157829003601f168201915b5050509190925250506040805161018081018252600b850180546001600160a01b03168252600c8601546020830152600d86015492820192909252600e8501546060820152600f8501546080820152601085015460a0820152601185015460c082015260128501805494959491935060e084019161039b906128c1565b80601f01602080910402602001604051908101604052809291908181526020018280546103c7906128c1565b80156104145780601f106103e957610100808354040283529160200191610414565b820191906000526020600020905b8154815290600101906020018083116103f757829003601f168201915b50505091835250506008820154602082015260098201546040820152600a82015460609091019060ff16600281111561044f5761044f612261565b600281111561046057610460612261565b8152602001600b82018054806020026020016040519081016040528092919081815260200182805480156104bd57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161049f575b50505050508152505090508a565b60035460405163dde8535f60e01b81523360048201526000916001600160a01b03169063dde8535f90602401602060405180830381865afa158015610514573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105389190612906565b9050600281600281111561054e5761054e612261565b148061056957503360009081526006602052604090205460ff165b61058e5760405162461bcd60e51b815260040161058590612923565b60405180910390fd5b8151600510156105c65760405162461bcd60e51b815260206004820152600360248201526204553360ec1b6044820152606401610585565b60008261016001516020015151116106065760405162461bcd60e51b815260206004820152600360248201526222a99b60e91b6044820152606401610585565b8151600154600090815260026020908152604091829020929092556101608401513390526003548151635d97505b60e01b815291516001600160a01b0390911692635d97505b92600480820193918290030181865afa15801561066d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610691919061294b565b6001600160a01b031663f11202348361016001516040518263ffffffff1660e01b81526004016106c19190612968565b600060405180830381865afa1580156106de573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526107069190810190612a46565b6001546000908152600260209081526040918290208351600b820180546001600160a01b0319166001600160a01b0390921691909117815591840151600c82015591830151600d8301556060830151600e8301556080830151600f83015560a0830151601083015560c0830151601183015560e083015190916012019061078d9082612b8e565b5061010082015160088201556101208201516009820155610140820151600a8201805460ff191660018360028111156107c8576107c8612261565b021790555061016082015180516107e991600b84019160209091019061217e565b50506003546040805163e3d27f2960e01b815290516001600160a01b03909216925063e3d27f299160048083019260209291908290030181865afa158015610835573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108599190612c4e565b600154600090815260026020908152604091829020600f01929092556003548151634f6c488b60e01b815291516001600160a01b0390911692634f6c488b92600481810193918290030181865afa1580156108b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108dc9190612c4e565b6108e69042612c7d565b600180546000908152600260208181526040808420600d019590955586015183548352848320840180546001600160a01b039283166001600160a01b0319918216179091558786015185548552868520909301805493909216921691909117905560e08501518254825283822060079081019190915554825482528382206010018190559154815291822060110155825190036109e2576001805460009081526002602090815260408083206064600f909101556101408601519354835290912082516009820180546001600160a01b0319166001600160a01b0390921691909117815591830151600a909101906109de9082612b8e565b5050505b8151600103610a655781610120015115156109ff60085460ff1690565b151503610a345760405162461bcd60e51b815260206004820152600360248201526245533160e81b6044820152606401610585565b610120820151600154600090815260026020526040902060080180549115156101000261ff00199092169190911790555b815160021480610a76575081516003145b80610a82575081516004145b15610af857610a94826040015161201c565b610aa1826020015161201c565b6040808301516001805460009081526002602081815285832090910180546001600160a01b039586166001600160a01b03199182161790915590870151835483529490912090910180549390921692169190911790555b8151600503610d5d57600360009054906101000a90046001600160a01b03166001600160a01b031663289c25f46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b789190612c90565b15610bab5760405162461bcd60e51b815260206004820152600360248201526222a99960e91b6044820152606401610585565b60055460c08301516040516324d6c8d560e01b81526001600160a01b0391821660048201529116906324d6c8d590602401602060405180830381865afa158015610bf9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c1d9190612c90565b610c4f5760405162461bcd60e51b815260206004820152600360248201526245533360e81b6044820152606401610585565b8160c001516001600160a01b0316600460009054906101000a90046001600160a01b03166001600160a01b031663a77588836040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cb0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd4919061294b565b6001600160a01b031614610d105760405162461bcd60e51b81526020600482015260036024820152621154cd60ea1b6044820152606401610585565b60e0820151600180546000908152600260205260408082206007019390935560c0850151915481529190912060060180546001600160a01b0319166001600160a01b039092169190911790555b6001546000818152600260205260409081902090517fc71a1e2cb91ef76d3fec5535207e4457a4bd2b772f99618204772d34df8ebb9891610d9d91612e88565b60405180910390a260018054906000610db583612f8d565b91905055505050565b60035460405163dde8535f60e01b81523360048201526000916001600160a01b03169063dde8535f90602401602060405180830381865afa158015610e07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e2b9190612906565b90506002816002811115610e4157610e41612261565b1480610e5c57503360009081526006602052604090205460ff165b610e785760405162461bcd60e51b815260040161058590612923565b600360009054906101000a90046001600160a01b03166001600160a01b0316635d97505b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ecb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eef919061294b565b600084815260026020526040908190209051630836aaf960e21b81526001600160a01b0392909216916320daabe491610f32913391600b01908790600401612fa6565b600060405180830381865afa158015610f4f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f779190810190612a46565b6000848152600260209081526040918290208351600b820180546001600160a01b0319166001600160a01b0390921691909117815591840151600c82015591830151600d8301556060830151600e8301556080830151600f83015560a0830151601083015560c0830151601183015560e0830151909160120190610ffb9082612b8e565b5061010082015160088201556101208201516009820155610140820151600a8201805460ff1916600183600281111561103657611036612261565b0217905550610160820151805161105791600b84019160209091019061217e565b505050600083815260026020818152604083206016018054600181018255908452922090910180546001600160a01b03191633179055829081111561109e5761109e612261565b60405184907fc92326dacbba7a4c0f0b5ca0bab775311245300cea304ed0655a887fb568662890600090a3505050565b600854610100900460ff161561110c5760405162461bcd60e51b815260206004820152600360248201526208aa6760eb1b6044820152606401610585565b600380546001600160a01b0319166001600160a01b03841690811790915560408051638652169d60e01b81529051638652169d916004808201926020929091908290030181865afa158015611165573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611189919061294b565b600480546001600160a01b0319166001600160a01b039283161781556003546040805163207a069960e11b8152905191909316926340f40d3292818101926020929091908290030181865afa1580156111e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061120a919061294b565b600580546001600160a01b0319166001600160a01b039290921691909117905560005b81518110156112925760016006600084848151811061124e5761124e612fe3565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061128a81612f8d565b91505061122d565b5051600755506008805461ffff1916610101179055565b60035460405163dde8535f60e01b81523360048201526000916001600160a01b03169063dde8535f90602401602060405180830381865afa1580156112f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113169190612906565b9050600281600281111561132c5761132c612261565b148061134757503360009081526006602052604090205460ff165b6113635760405162461bcd60e51b815260040161058590612923565b600360009054906101000a90046001600160a01b03166001600160a01b0316635d97505b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113da919061294b565b6001600160a01b031663e0d90d2260026000858152602001908152602001600020600b016040518263ffffffff1660e01b815260040161141a9190612ff9565b600060405180830381865afa158015611437573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261145f9190810190612a46565b6000838152600260209081526040918290208351600b820180546001600160a01b0319166001600160a01b0390921691909117815591840151600c82015591830151600d8301556060830151600e8301556080830151600f83015560a0830151601083015560c0830151601183015560e08301519091601201906114e39082612b8e565b5061010082015160088201556101208201516009820155610140820151600a8201805460ff1916600183600281111561151e5761151e612261565b0217905550610160820151805161153f91600b84019160209091019061217e565b506001915061154b9050565b60008381526002602081905260409091206015015460ff169081111561157357611573612261565b03611fc95760008281526002602052604081205490036116425760008281526002602052604090206009810154600a9091018054611642926001600160a01b031691906115bf906128c1565b80601f01602080910402602001604051908101604052809291908181526020018280546115eb906128c1565b80156116385780601f1061160d57610100808354040283529160200191611638565b820191906000526020600020905b81548152906001019060200180831161161b57829003601f168201915b505050505061205b565b600082815260026020526040902054600103611681576000828152600260205260409020600890810154815460ff191661010090910460ff1615151790555b60008281526002602081905260409091205490036116be57600082815260026020819052604090912001546116be906001600160a01b03166120f3565b6000828152600260205260409020546003036117305760016007541161170c5760405162461bcd60e51b815260206004820152600360248201526245533960e81b6044820152606401610585565b600082815260026020526040902060010154611730906001600160a01b031661212c565b60008281526002602052604090205460040361179557600082815260026020818152604080842060018082015491909401546001600160a01b0390811686526006909352818520805460ff199081169095179055919091168352909120805490911690555b600082815260026020526040902054600503611fc9576000828152600260209081526040918290206006015460048054845163a775888360e01b815294516001600160a01b0393841695939091169363a77588839380840193919291908290030181865afa15801561180b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061182f919061294b565b6001600160a01b03161461186b5760405162461bcd60e51b815260206004820152600360248201526245533360e81b6044820152606401610585565b60006103e86118f26103e8600360009054906101000a90046001600160a01b03166001600160a01b0316634e3fe0fd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118ed9190612c4e565b61215a565b60008581526002602052604090206007015461190e919061300c565b6119189190613023565b600084815260026020908152604091829020600601546003548351638652169d60e01b815293519495506001600160a01b0391821694859463a9059cbb949390921692638652169d92600480820193918290030181865afa158015611981573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119a5919061294b565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101859052604401600060405180830381600087803b1580156119ed57600080fd5b505af1158015611a01573d6000803e3d6000fd5b5050505060006103e8600360009054906101000a90046001600160a01b03166001600160a01b0316634e3fe0fd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a819190612c4e565b600087815260026020526040902060070154611a9d919061300c565b611aa79190613023565b60008681526002602090815260409182902060060154600354835163207a069960e11b815293519495506001600160a01b039182169463a9059cbb9491909216926340f40d32926004808401938290030181865afa158015611b0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b31919061294b565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101849052604401600060405180830381600087803b158015611b7957600080fd5b505af1158015611b8d573d6000803e3d6000fd5b505050600086815260026020526040908190206006015490516370a0823160e01b81523060048201527ffbd50798349c0ef233dafbe6eea9f929785731d11f54b610aea96532af84a7fe92506001600160a01b03918216918516906370a0823190602401602060405180830381865afa158015611c0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c329190612c4e565b604080516001600160a01b0390931683526020830191909152309082015260600160405180910390a160008581526002602090815260409182902060060154600354835163207a069960e11b815293517ffbd50798349c0ef233dafbe6eea9f929785731d11f54b610aea96532af84a7fe946001600160a01b0393841694888516946370a082319416926340f40d329260048082019392918290030181865afa158015611ce3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d07919061294b565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015611d4b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d6f9190612c4e565b600360009054906101000a90046001600160a01b03166001600160a01b03166340f40d326040518163ffffffff1660e01b8152600401602060405180830381865afa158015611dc2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611de6919061294b565b604080516001600160a01b039485168152602081019390935292168183015290519081900360600190a1600085815260026020908152604091829020600601546003548351638652169d60e01b815293517ffbd50798349c0ef233dafbe6eea9f929785731d11f54b610aea96532af84a7fe946001600160a01b0393841694888516946370a08231941692638652169d9260048082019392918290030181865afa158015611e98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ebc919061294b565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015611f00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f249190612c4e565b600360009054906101000a90046001600160a01b03166001600160a01b0316638652169d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f9b919061294b565b604080516001600160a01b039485168152602081019390935292168183015290519081900360600190a15050505b6000828152600260205260409081902060150154905183917fbdb492b15201001c44f021370ca5ea73640ddcc4b4ee020fb9791241973cc37e916120109160ff1690613045565b60405180910390a25050565b6001600160a01b0381166120585760405162461bcd60e51b815260206004820152600360248201526204544360ec1b6044820152606401610585565b50565b6000826001600160a01b0316826040516120759190613058565b6000604051808303816000865af19150503d80600081146120b2576040519150601f19603f3d011682016040523d82523d6000602084013e6120b7565b606091505b50509050806120ee5760405162461bcd60e51b815260206004820152600360248201526245533560e81b6044820152606401610585565b505050565b6001600160a01b0381166000908152600660205260408120805460ff19166001179055600780549161212483612f8d565b919050555050565b6001600160a01b0381166000908152600660205260408120805460ff19169055600780549161212483613074565b600082821061216b57506000612178565b612175828461308b565b90505b92915050565b8280548282559060005260206000209081019282156121d3579160200282015b828111156121d357825182546001600160a01b0319166001600160a01b0390911617825560209092019160019091019061219e565b506121df9291506121e3565b5090565b5b808211156121df57600081556001016121e4565b60006020828403121561220a57600080fd5b5035919050565b60005b8381101561222c578181015183820152602001612214565b50506000910152565b6000815180845261224d816020860160208601612211565b601f01601f19169290920160200192915050565b634e487b7160e01b600052602160045260246000fd5b6003811061205857634e487b7160e01b600052602160045260246000fd5b61229e81612277565b9052565b600081518084526020808501945080840160005b838110156122db5781516001600160a01b0316875295820195908201906001016122b6565b509495945050505050565b80516001600160a01b0316825260006101806020830151602085015260408301516040850152606083015160608501526080830151608085015260a083015160a085015260c083015160c085015260e08301518160e086015261234b82860182612235565b9150506101008084015181860152506101208084015181860152506101408084015161237982870182612295565b5050610160808401518583038287015261239383826122a2565b9695505050505050565b60006101408c835260018060a01b03808d166020850152808c166040850152808b166060850152808a1660808501528860a085015287151560c085015286151560e085015281610100850152808651168285015250506020840151604061016084015261240e610180840182612235565b905082810361012084015261242381856122e6565b9d9c50505050505050505050505050565b634e487b7160e01b600052604160045260246000fd5b604051610180810167ffffffffffffffff8111828210171561246e5761246e612434565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171561249d5761249d612434565b604052919050565b6001600160a01b038116811461205857600080fd5b80356124c5816124a5565b919050565b600067ffffffffffffffff8211156124e4576124e4612434565b5060051b60200190565b600082601f8301126124ff57600080fd5b8135602061251461250f836124ca565b612474565b82815260059290921b8401810191818101908684111561253357600080fd5b8286015b8481101561255757803561254a816124a5565b8352918301918301612537565b509695505050505050565b600082601f83011261257357600080fd5b8135602061258361250f836124ca565b82815260059290921b840181019181810190868411156125a257600080fd5b8286015b8481101561255757803583529183019183016125a6565b801515811461205857600080fd5b80356124c5816125bd565b600067ffffffffffffffff8211156125f0576125f0612434565b50601f01601f191660200190565b60006040828403121561261057600080fd5b6040516040810167ffffffffffffffff828210818311171561263457612634612434565b8160405282935084359150612648826124a5565b908252602090848201358181111561265f57600080fd5b85019050601f8101861361267257600080fd5b803561268061250f826125d6565b818152878483850101111561269457600080fd5b818484018583013760008483830101528084860152505050505092915050565b6000602082840312156126c657600080fd5b813567ffffffffffffffff808211156126de57600080fd5b9083019061018082860312156126f357600080fd5b6126fb61244a565b8235815261270b602084016124ba565b602082015261271c604084016124ba565b604082015260608301358281111561273357600080fd5b61273f878286016124ee565b60608301525060808301358281111561275757600080fd5b61276387828601612562565b60808301525061277560a084016124ba565b60a082015261278660c084016124ba565b60c082015260e083013560e08201526101006127a38185016125cb565b908201526101206127b58482016125cb565b9082015261014083810135838111156127cd57600080fd5b6127d9888287016125fe565b82840152505061016080840135838111156127f357600080fd5b6127ff888287016125fe565b918301919091525095945050505050565b60006020828403121561282257600080fd5b813561282d816124a5565b9392505050565b6003811061205857600080fd5b6000806040838503121561285457600080fd5b82359150602083013561286681612834565b809150509250929050565b6000806040838503121561288457600080fd5b823561288f816124a5565b9150602083013567ffffffffffffffff8111156128ab57600080fd5b6128b7858286016124ee565b9150509250929050565b600181811c908216806128d557607f821691505b6020821081036128f557634e487b7160e01b600052602260045260246000fd5b50919050565b80516124c581612834565b60006020828403121561291857600080fd5b815161282d81612834565b60208082526003908201526245533760e81b604082015260600190565b80516124c5816124a5565b60006020828403121561295d57600080fd5b815161282d816124a5565b602080825282516001600160a01b0316828201528201516040808301526000906129956060840182612235565b949350505050565b600082601f8301126129ae57600080fd5b81516129bc61250f826125d6565b8181528460208386010111156129d157600080fd5b612995826020830160208701612211565b600082601f8301126129f357600080fd5b81516020612a0361250f836124ca565b82815260059290921b84018101918181019086841115612a2257600080fd5b8286015b84811015612557578051612a39816124a5565b8352918301918301612a26565b600060208284031215612a5857600080fd5b815167ffffffffffffffff80821115612a7057600080fd5b908301906101808286031215612a8557600080fd5b612a8d61244a565b612a9683612940565b81526020830151602082015260408301516040820152606083015160608201526080830151608082015260a083015160a082015260c083015160c082015260e083015182811115612ae657600080fd5b612af28782860161299d565b60e08301525061010083810151908201526101208084015190820152610140612b1c8185016128fb565b908201526101608381015183811115612b3457600080fd5b6127ff888287016129e2565b601f8211156120ee57600081815260208120601f850160051c81016020861015612b675750805b601f850160051c820191505b81811015612b8657828155600101612b73565b505050505050565b815167ffffffffffffffff811115612ba857612ba8612434565b612bbc81612bb684546128c1565b84612b40565b602080601f831160018114612bf15760008415612bd95750858301515b600019600386901b1c1916600185901b178555612b86565b600085815260208120601f198616915b82811015612c2057888601518255948401946001909101908401612c01565b5085821015612c3e5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060208284031215612c6057600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561217857612178612c67565b600060208284031215612ca257600080fd5b815161282d816125bd565b6000815480845260208085019450836000528060002060005b838110156122db5781546001600160a01b031687529582019560019182019101612cc6565b6000815480845260208085019450836000528060002060005b838110156122db57815487529582019560019182019101612d04565b60008154612d2d816128c1565b808552602060018381168015612d4a5760018114612d6457612d92565b60ff1985168884015283151560051b880183019550612d92565b866000528260002060005b85811015612d8a5781548a8201860152908301908401612d6f565b890184019650505b505050505092915050565b80546001600160a01b0316825260406020830181905260009061282d90840160018401612d20565b6000610180612dec84612ddf85546001600160a01b031690565b6001600160a01b03169052565b60018301546020850152600283015460408501526003830154606085015260048301546080850152600583015460a0850152600683015460c08501528060e0850152612e3d81850160078501612d20565b905060088301546101008501526009830154610120850152612e63600a84015460ff1690565b612e71610140860182612295565b5083810361016085015261299581600b8501612cad565b60208152815460208201526000612ea960018401546001600160a01b031690565b6001600160a01b039081166040840152600284015416606083015261018060808301819052612edf6101a0840160038601612cad565b601f19808583030160a0860152612ef98260048801612ceb565b9150612f0f60058701546001600160a01b031690565b6001600160a01b0390811660c087015260068701541660e0860152600786015461010086015260088087015460ff8082161515610120890152911c1615156101408601528482038101610160860152612f6b8260098801612d9d565b915080858303018386015250612f8481600b8701612dc5565b95945050505050565b600060018201612f9f57612f9f612c67565b5060010190565b6001600160a01b0384168152606060208201819052600090612fca90830185612dc5565b9050612fd583612277565b826040830152949350505050565b634e487b7160e01b600052603260045260246000fd5b60208152600061282d6020830184612dc5565b808202811582820484141761217857612178612c67565b60008261304057634e487b7160e01b600052601260045260246000fd5b500490565b6020810161305283612277565b91905290565b6000825161306a818460208701612211565b9190910192915050565b60008161308357613083612c67565b506000190190565b8181038181111561217857612178612c6756fea2646970667358221220ae88138909ec921298cf2b6b266a66313e8e2af021439d218be84960243d1ee864736f6c63430008110033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100cf5760003560e01c8063943e82161161008c578063daf9c21011610066578063daf9c210146101bc578063fba7cc79146101df578063fdff9b4d146101ea578063ffb2c4791461020d57600080fd5b8063943e82161461018d578063946d9204146101a0578063d5eb7cf4146101b357600080fd5b8063013cf08b146100d4578063132cd06214610106578063158ef93e1461011b578063198e14f81461013d57806322f3e2d4146101695780635977e0f214610176575b600080fd5b6100e76100e23660046121f8565b610220565b6040516100fd9a9998979695949392919061239d565b60405180910390f35b6101196101143660046126b4565b6104cb565b005b60085461012d90610100900460ff1681565b60405190151581526020016100fd565b61012d61014b366004612810565b6001600160a01b031660009081526006602052604090205460ff1690565b60085461012d9060ff1681565b61017f60015481565b6040519081526020016100fd565b61011961019b366004612841565b610dbe565b6101196101ae366004612871565b6110ce565b61017f60075481565b61012d6101ca366004612810565b60006020819052908152604090205460ff1681565b60085460ff1661012d565b61012d6101f8366004612810565b60066020526000908152604090205460ff1681565b61011961021b3660046121f8565b6112a9565b600260208181526000928352604092839020805460018201549382015460058301546006840154600785015460088601548951808b01909a526009870180546001600160a01b039081168c52600a89018054989c9b82169b9782169a968216999590911697939660ff808516976101009095041695949093840191906102a5906128c1565b80601f01602080910402602001604051908101604052809291908181526020018280546102d1906128c1565b801561031e5780601f106102f35761010080835404028352916020019161031e565b820191906000526020600020905b81548152906001019060200180831161030157829003601f168201915b5050509190925250506040805161018081018252600b850180546001600160a01b03168252600c8601546020830152600d86015492820192909252600e8501546060820152600f8501546080820152601085015460a0820152601185015460c082015260128501805494959491935060e084019161039b906128c1565b80601f01602080910402602001604051908101604052809291908181526020018280546103c7906128c1565b80156104145780601f106103e957610100808354040283529160200191610414565b820191906000526020600020905b8154815290600101906020018083116103f757829003601f168201915b50505091835250506008820154602082015260098201546040820152600a82015460609091019060ff16600281111561044f5761044f612261565b600281111561046057610460612261565b8152602001600b82018054806020026020016040519081016040528092919081815260200182805480156104bd57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161049f575b50505050508152505090508a565b60035460405163dde8535f60e01b81523360048201526000916001600160a01b03169063dde8535f90602401602060405180830381865afa158015610514573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105389190612906565b9050600281600281111561054e5761054e612261565b148061056957503360009081526006602052604090205460ff165b61058e5760405162461bcd60e51b815260040161058590612923565b60405180910390fd5b8151600510156105c65760405162461bcd60e51b815260206004820152600360248201526204553360ec1b6044820152606401610585565b60008261016001516020015151116106065760405162461bcd60e51b815260206004820152600360248201526222a99b60e91b6044820152606401610585565b8151600154600090815260026020908152604091829020929092556101608401513390526003548151635d97505b60e01b815291516001600160a01b0390911692635d97505b92600480820193918290030181865afa15801561066d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610691919061294b565b6001600160a01b031663f11202348361016001516040518263ffffffff1660e01b81526004016106c19190612968565b600060405180830381865afa1580156106de573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526107069190810190612a46565b6001546000908152600260209081526040918290208351600b820180546001600160a01b0319166001600160a01b0390921691909117815591840151600c82015591830151600d8301556060830151600e8301556080830151600f83015560a0830151601083015560c0830151601183015560e083015190916012019061078d9082612b8e565b5061010082015160088201556101208201516009820155610140820151600a8201805460ff191660018360028111156107c8576107c8612261565b021790555061016082015180516107e991600b84019160209091019061217e565b50506003546040805163e3d27f2960e01b815290516001600160a01b03909216925063e3d27f299160048083019260209291908290030181865afa158015610835573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108599190612c4e565b600154600090815260026020908152604091829020600f01929092556003548151634f6c488b60e01b815291516001600160a01b0390911692634f6c488b92600481810193918290030181865afa1580156108b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108dc9190612c4e565b6108e69042612c7d565b600180546000908152600260208181526040808420600d019590955586015183548352848320840180546001600160a01b039283166001600160a01b0319918216179091558786015185548552868520909301805493909216921691909117905560e08501518254825283822060079081019190915554825482528382206010018190559154815291822060110155825190036109e2576001805460009081526002602090815260408083206064600f909101556101408601519354835290912082516009820180546001600160a01b0319166001600160a01b0390921691909117815591830151600a909101906109de9082612b8e565b5050505b8151600103610a655781610120015115156109ff60085460ff1690565b151503610a345760405162461bcd60e51b815260206004820152600360248201526245533160e81b6044820152606401610585565b610120820151600154600090815260026020526040902060080180549115156101000261ff00199092169190911790555b815160021480610a76575081516003145b80610a82575081516004145b15610af857610a94826040015161201c565b610aa1826020015161201c565b6040808301516001805460009081526002602081815285832090910180546001600160a01b039586166001600160a01b03199182161790915590870151835483529490912090910180549390921692169190911790555b8151600503610d5d57600360009054906101000a90046001600160a01b03166001600160a01b031663289c25f46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b789190612c90565b15610bab5760405162461bcd60e51b815260206004820152600360248201526222a99960e91b6044820152606401610585565b60055460c08301516040516324d6c8d560e01b81526001600160a01b0391821660048201529116906324d6c8d590602401602060405180830381865afa158015610bf9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c1d9190612c90565b610c4f5760405162461bcd60e51b815260206004820152600360248201526245533360e81b6044820152606401610585565b8160c001516001600160a01b0316600460009054906101000a90046001600160a01b03166001600160a01b031663a77588836040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cb0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd4919061294b565b6001600160a01b031614610d105760405162461bcd60e51b81526020600482015260036024820152621154cd60ea1b6044820152606401610585565b60e0820151600180546000908152600260205260408082206007019390935560c0850151915481529190912060060180546001600160a01b0319166001600160a01b039092169190911790555b6001546000818152600260205260409081902090517fc71a1e2cb91ef76d3fec5535207e4457a4bd2b772f99618204772d34df8ebb9891610d9d91612e88565b60405180910390a260018054906000610db583612f8d565b91905055505050565b60035460405163dde8535f60e01b81523360048201526000916001600160a01b03169063dde8535f90602401602060405180830381865afa158015610e07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e2b9190612906565b90506002816002811115610e4157610e41612261565b1480610e5c57503360009081526006602052604090205460ff165b610e785760405162461bcd60e51b815260040161058590612923565b600360009054906101000a90046001600160a01b03166001600160a01b0316635d97505b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ecb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eef919061294b565b600084815260026020526040908190209051630836aaf960e21b81526001600160a01b0392909216916320daabe491610f32913391600b01908790600401612fa6565b600060405180830381865afa158015610f4f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f779190810190612a46565b6000848152600260209081526040918290208351600b820180546001600160a01b0319166001600160a01b0390921691909117815591840151600c82015591830151600d8301556060830151600e8301556080830151600f83015560a0830151601083015560c0830151601183015560e0830151909160120190610ffb9082612b8e565b5061010082015160088201556101208201516009820155610140820151600a8201805460ff1916600183600281111561103657611036612261565b0217905550610160820151805161105791600b84019160209091019061217e565b505050600083815260026020818152604083206016018054600181018255908452922090910180546001600160a01b03191633179055829081111561109e5761109e612261565b60405184907fc92326dacbba7a4c0f0b5ca0bab775311245300cea304ed0655a887fb568662890600090a3505050565b600854610100900460ff161561110c5760405162461bcd60e51b815260206004820152600360248201526208aa6760eb1b6044820152606401610585565b600380546001600160a01b0319166001600160a01b03841690811790915560408051638652169d60e01b81529051638652169d916004808201926020929091908290030181865afa158015611165573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611189919061294b565b600480546001600160a01b0319166001600160a01b039283161781556003546040805163207a069960e11b8152905191909316926340f40d3292818101926020929091908290030181865afa1580156111e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061120a919061294b565b600580546001600160a01b0319166001600160a01b039290921691909117905560005b81518110156112925760016006600084848151811061124e5761124e612fe3565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061128a81612f8d565b91505061122d565b5051600755506008805461ffff1916610101179055565b60035460405163dde8535f60e01b81523360048201526000916001600160a01b03169063dde8535f90602401602060405180830381865afa1580156112f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113169190612906565b9050600281600281111561132c5761132c612261565b148061134757503360009081526006602052604090205460ff165b6113635760405162461bcd60e51b815260040161058590612923565b600360009054906101000a90046001600160a01b03166001600160a01b0316635d97505b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113da919061294b565b6001600160a01b031663e0d90d2260026000858152602001908152602001600020600b016040518263ffffffff1660e01b815260040161141a9190612ff9565b600060405180830381865afa158015611437573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261145f9190810190612a46565b6000838152600260209081526040918290208351600b820180546001600160a01b0319166001600160a01b0390921691909117815591840151600c82015591830151600d8301556060830151600e8301556080830151600f83015560a0830151601083015560c0830151601183015560e08301519091601201906114e39082612b8e565b5061010082015160088201556101208201516009820155610140820151600a8201805460ff1916600183600281111561151e5761151e612261565b0217905550610160820151805161153f91600b84019160209091019061217e565b506001915061154b9050565b60008381526002602081905260409091206015015460ff169081111561157357611573612261565b03611fc95760008281526002602052604081205490036116425760008281526002602052604090206009810154600a9091018054611642926001600160a01b031691906115bf906128c1565b80601f01602080910402602001604051908101604052809291908181526020018280546115eb906128c1565b80156116385780601f1061160d57610100808354040283529160200191611638565b820191906000526020600020905b81548152906001019060200180831161161b57829003601f168201915b505050505061205b565b600082815260026020526040902054600103611681576000828152600260205260409020600890810154815460ff191661010090910460ff1615151790555b60008281526002602081905260409091205490036116be57600082815260026020819052604090912001546116be906001600160a01b03166120f3565b6000828152600260205260409020546003036117305760016007541161170c5760405162461bcd60e51b815260206004820152600360248201526245533960e81b6044820152606401610585565b600082815260026020526040902060010154611730906001600160a01b031661212c565b60008281526002602052604090205460040361179557600082815260026020818152604080842060018082015491909401546001600160a01b0390811686526006909352818520805460ff199081169095179055919091168352909120805490911690555b600082815260026020526040902054600503611fc9576000828152600260209081526040918290206006015460048054845163a775888360e01b815294516001600160a01b0393841695939091169363a77588839380840193919291908290030181865afa15801561180b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061182f919061294b565b6001600160a01b03161461186b5760405162461bcd60e51b815260206004820152600360248201526245533360e81b6044820152606401610585565b60006103e86118f26103e8600360009054906101000a90046001600160a01b03166001600160a01b0316634e3fe0fd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118ed9190612c4e565b61215a565b60008581526002602052604090206007015461190e919061300c565b6119189190613023565b600084815260026020908152604091829020600601546003548351638652169d60e01b815293519495506001600160a01b0391821694859463a9059cbb949390921692638652169d92600480820193918290030181865afa158015611981573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119a5919061294b565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101859052604401600060405180830381600087803b1580156119ed57600080fd5b505af1158015611a01573d6000803e3d6000fd5b5050505060006103e8600360009054906101000a90046001600160a01b03166001600160a01b0316634e3fe0fd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a819190612c4e565b600087815260026020526040902060070154611a9d919061300c565b611aa79190613023565b60008681526002602090815260409182902060060154600354835163207a069960e11b815293519495506001600160a01b039182169463a9059cbb9491909216926340f40d32926004808401938290030181865afa158015611b0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b31919061294b565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101849052604401600060405180830381600087803b158015611b7957600080fd5b505af1158015611b8d573d6000803e3d6000fd5b505050600086815260026020526040908190206006015490516370a0823160e01b81523060048201527ffbd50798349c0ef233dafbe6eea9f929785731d11f54b610aea96532af84a7fe92506001600160a01b03918216918516906370a0823190602401602060405180830381865afa158015611c0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c329190612c4e565b604080516001600160a01b0390931683526020830191909152309082015260600160405180910390a160008581526002602090815260409182902060060154600354835163207a069960e11b815293517ffbd50798349c0ef233dafbe6eea9f929785731d11f54b610aea96532af84a7fe946001600160a01b0393841694888516946370a082319416926340f40d329260048082019392918290030181865afa158015611ce3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d07919061294b565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015611d4b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d6f9190612c4e565b600360009054906101000a90046001600160a01b03166001600160a01b03166340f40d326040518163ffffffff1660e01b8152600401602060405180830381865afa158015611dc2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611de6919061294b565b604080516001600160a01b039485168152602081019390935292168183015290519081900360600190a1600085815260026020908152604091829020600601546003548351638652169d60e01b815293517ffbd50798349c0ef233dafbe6eea9f929785731d11f54b610aea96532af84a7fe946001600160a01b0393841694888516946370a08231941692638652169d9260048082019392918290030181865afa158015611e98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ebc919061294b565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015611f00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f249190612c4e565b600360009054906101000a90046001600160a01b03166001600160a01b0316638652169d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f9b919061294b565b604080516001600160a01b039485168152602081019390935292168183015290519081900360600190a15050505b6000828152600260205260409081902060150154905183917fbdb492b15201001c44f021370ca5ea73640ddcc4b4ee020fb9791241973cc37e916120109160ff1690613045565b60405180910390a25050565b6001600160a01b0381166120585760405162461bcd60e51b815260206004820152600360248201526204544360ec1b6044820152606401610585565b50565b6000826001600160a01b0316826040516120759190613058565b6000604051808303816000865af19150503d80600081146120b2576040519150601f19603f3d011682016040523d82523d6000602084013e6120b7565b606091505b50509050806120ee5760405162461bcd60e51b815260206004820152600360248201526245533560e81b6044820152606401610585565b505050565b6001600160a01b0381166000908152600660205260408120805460ff19166001179055600780549161212483612f8d565b919050555050565b6001600160a01b0381166000908152600660205260408120805460ff19169055600780549161212483613074565b600082821061216b57506000612178565b612175828461308b565b90505b92915050565b8280548282559060005260206000209081019282156121d3579160200282015b828111156121d357825182546001600160a01b0319166001600160a01b0390911617825560209092019160019091019061219e565b506121df9291506121e3565b5090565b5b808211156121df57600081556001016121e4565b60006020828403121561220a57600080fd5b5035919050565b60005b8381101561222c578181015183820152602001612214565b50506000910152565b6000815180845261224d816020860160208601612211565b601f01601f19169290920160200192915050565b634e487b7160e01b600052602160045260246000fd5b6003811061205857634e487b7160e01b600052602160045260246000fd5b61229e81612277565b9052565b600081518084526020808501945080840160005b838110156122db5781516001600160a01b0316875295820195908201906001016122b6565b509495945050505050565b80516001600160a01b0316825260006101806020830151602085015260408301516040850152606083015160608501526080830151608085015260a083015160a085015260c083015160c085015260e08301518160e086015261234b82860182612235565b9150506101008084015181860152506101208084015181860152506101408084015161237982870182612295565b5050610160808401518583038287015261239383826122a2565b9695505050505050565b60006101408c835260018060a01b03808d166020850152808c166040850152808b166060850152808a1660808501528860a085015287151560c085015286151560e085015281610100850152808651168285015250506020840151604061016084015261240e610180840182612235565b905082810361012084015261242381856122e6565b9d9c50505050505050505050505050565b634e487b7160e01b600052604160045260246000fd5b604051610180810167ffffffffffffffff8111828210171561246e5761246e612434565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171561249d5761249d612434565b604052919050565b6001600160a01b038116811461205857600080fd5b80356124c5816124a5565b919050565b600067ffffffffffffffff8211156124e4576124e4612434565b5060051b60200190565b600082601f8301126124ff57600080fd5b8135602061251461250f836124ca565b612474565b82815260059290921b8401810191818101908684111561253357600080fd5b8286015b8481101561255757803561254a816124a5565b8352918301918301612537565b509695505050505050565b600082601f83011261257357600080fd5b8135602061258361250f836124ca565b82815260059290921b840181019181810190868411156125a257600080fd5b8286015b8481101561255757803583529183019183016125a6565b801515811461205857600080fd5b80356124c5816125bd565b600067ffffffffffffffff8211156125f0576125f0612434565b50601f01601f191660200190565b60006040828403121561261057600080fd5b6040516040810167ffffffffffffffff828210818311171561263457612634612434565b8160405282935084359150612648826124a5565b908252602090848201358181111561265f57600080fd5b85019050601f8101861361267257600080fd5b803561268061250f826125d6565b818152878483850101111561269457600080fd5b818484018583013760008483830101528084860152505050505092915050565b6000602082840312156126c657600080fd5b813567ffffffffffffffff808211156126de57600080fd5b9083019061018082860312156126f357600080fd5b6126fb61244a565b8235815261270b602084016124ba565b602082015261271c604084016124ba565b604082015260608301358281111561273357600080fd5b61273f878286016124ee565b60608301525060808301358281111561275757600080fd5b61276387828601612562565b60808301525061277560a084016124ba565b60a082015261278660c084016124ba565b60c082015260e083013560e08201526101006127a38185016125cb565b908201526101206127b58482016125cb565b9082015261014083810135838111156127cd57600080fd5b6127d9888287016125fe565b82840152505061016080840135838111156127f357600080fd5b6127ff888287016125fe565b918301919091525095945050505050565b60006020828403121561282257600080fd5b813561282d816124a5565b9392505050565b6003811061205857600080fd5b6000806040838503121561285457600080fd5b82359150602083013561286681612834565b809150509250929050565b6000806040838503121561288457600080fd5b823561288f816124a5565b9150602083013567ffffffffffffffff8111156128ab57600080fd5b6128b7858286016124ee565b9150509250929050565b600181811c908216806128d557607f821691505b6020821081036128f557634e487b7160e01b600052602260045260246000fd5b50919050565b80516124c581612834565b60006020828403121561291857600080fd5b815161282d81612834565b60208082526003908201526245533760e81b604082015260600190565b80516124c5816124a5565b60006020828403121561295d57600080fd5b815161282d816124a5565b602080825282516001600160a01b0316828201528201516040808301526000906129956060840182612235565b949350505050565b600082601f8301126129ae57600080fd5b81516129bc61250f826125d6565b8181528460208386010111156129d157600080fd5b612995826020830160208701612211565b600082601f8301126129f357600080fd5b81516020612a0361250f836124ca565b82815260059290921b84018101918181019086841115612a2257600080fd5b8286015b84811015612557578051612a39816124a5565b8352918301918301612a26565b600060208284031215612a5857600080fd5b815167ffffffffffffffff80821115612a7057600080fd5b908301906101808286031215612a8557600080fd5b612a8d61244a565b612a9683612940565b81526020830151602082015260408301516040820152606083015160608201526080830151608082015260a083015160a082015260c083015160c082015260e083015182811115612ae657600080fd5b612af28782860161299d565b60e08301525061010083810151908201526101208084015190820152610140612b1c8185016128fb565b908201526101608381015183811115612b3457600080fd5b6127ff888287016129e2565b601f8211156120ee57600081815260208120601f850160051c81016020861015612b675750805b601f850160051c820191505b81811015612b8657828155600101612b73565b505050505050565b815167ffffffffffffffff811115612ba857612ba8612434565b612bbc81612bb684546128c1565b84612b40565b602080601f831160018114612bf15760008415612bd95750858301515b600019600386901b1c1916600185901b178555612b86565b600085815260208120601f198616915b82811015612c2057888601518255948401946001909101908401612c01565b5085821015612c3e5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060208284031215612c6057600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561217857612178612c67565b600060208284031215612ca257600080fd5b815161282d816125bd565b6000815480845260208085019450836000528060002060005b838110156122db5781546001600160a01b031687529582019560019182019101612cc6565b6000815480845260208085019450836000528060002060005b838110156122db57815487529582019560019182019101612d04565b60008154612d2d816128c1565b808552602060018381168015612d4a5760018114612d6457612d92565b60ff1985168884015283151560051b880183019550612d92565b866000528260002060005b85811015612d8a5781548a8201860152908301908401612d6f565b890184019650505b505050505092915050565b80546001600160a01b0316825260406020830181905260009061282d90840160018401612d20565b6000610180612dec84612ddf85546001600160a01b031690565b6001600160a01b03169052565b60018301546020850152600283015460408501526003830154606085015260048301546080850152600583015460a0850152600683015460c08501528060e0850152612e3d81850160078501612d20565b905060088301546101008501526009830154610120850152612e63600a84015460ff1690565b612e71610140860182612295565b5083810361016085015261299581600b8501612cad565b60208152815460208201526000612ea960018401546001600160a01b031690565b6001600160a01b039081166040840152600284015416606083015261018060808301819052612edf6101a0840160038601612cad565b601f19808583030160a0860152612ef98260048801612ceb565b9150612f0f60058701546001600160a01b031690565b6001600160a01b0390811660c087015260068701541660e0860152600786015461010086015260088087015460ff8082161515610120890152911c1615156101408601528482038101610160860152612f6b8260098801612d9d565b915080858303018386015250612f8481600b8701612dc5565b95945050505050565b600060018201612f9f57612f9f612c67565b5060010190565b6001600160a01b0384168152606060208201819052600090612fca90830185612dc5565b9050612fd583612277565b826040830152949350505050565b634e487b7160e01b600052603260045260246000fd5b60208152600061282d6020830184612dc5565b808202811582820484141761217857612178612c67565b60008261304057634e487b7160e01b600052601260045260246000fd5b500490565b6020810161305283612277565b91905290565b6000825161306a818460208701612211565b9190910192915050565b60008161308357613083612c67565b506000190190565b8181038181111561217857612178612c6756fea2646970667358221220ae88138909ec921298cf2b6b266a66313e8e2af021439d218be84960243d1ee864736f6c63430008110033
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 31 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.