Skip to content

Instantly share code, notes, and snippets.

@d-smith
Created February 19, 2023 16:26
Show Gist options
  • Save d-smith/4f5de5d6fd7e8487ca9ed349e2c3aa42 to your computer and use it in GitHub Desktop.
Save d-smith/4f5de5d6fd7e8487ca9ed349e2c3aa42 to your computer and use it in GitHub Desktop.
Created using remix-ide: Realtime Ethereum Contract Compiler and Runtime. Load this file by pasting this gists URL or ID at https://remix.ethereum.org/#version=soljson-v0.8.17+commit.8df45f5f.js&optimize=false&runs=200&gist=
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.4.22 <0.9.0;
library TestsAccounts {
function getAccount(uint index) pure public returns (address) {
address[15] memory accounts;
accounts[0] = 0x5B38Da6a701c568545dCfcB03FcB875f56beddC4;
accounts[1] = 0xAb8483F64d9C6d1EcF9b849Ae677dD3315835cb2;
accounts[2] = 0x4B20993Bc481177ec7E8f571ceCaE8A9e22C02db;
accounts[3] = 0x78731D3Ca6b7E34aC0F824c42a7cC18A495cabaB;
accounts[4] = 0x617F2E2fD72FD9D5503197092aC168c91465E7f2;
accounts[5] = 0x17F6AD8Ef982297579C203069C1DbfFE4348c372;
accounts[6] = 0x5c6B0f7Bf3E7ce046039Bd8FABdfD3f9F5021678;
accounts[7] = 0x03C6FcED478cBbC9a4FAB34eF9f40767739D1Ff7;
accounts[8] = 0x1aE0EA34a72D944a8C7603FfB3eC30a6669E454C;
accounts[9] = 0x0A098Eda01Ce92ff4A4CCb7A4fFFb5A43EBC70DC;
accounts[10] = 0xCA35b7d915458EF540aDe6068dFe2F44E8fa733c;
accounts[11] = 0x14723A09ACff6D2A60DcdF7aA4AFf308FDDC160C;
accounts[12] = 0x4B0897b0513fdC7C541B6d9D7E929C4e5364D2dB;
accounts[13] = 0x583031D1113aD414F02576BD6afaBfb302140225;
accounts[14] = 0xdD870fA1b7C4700F2BD7f44238821C26f7392148;
return accounts[index];
}
}
// 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": {}
}
]
}
{
"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": "610c8b610053600b82828239805160001a607314610046577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100405760003560e01c80635ced058e14610045578063fdc8530814610075575b600080fd5b61005f600480360381019061005a9190610681565b61008c565b60405161006c91906106ef565b60405180910390f35b81801561008157600080fd5b5061008a610099565b005b60008160001c9050919050565b60006100b873e0f5206bbd039e7b0592d8918820024e2a7437b961014d565b905060006040518060400160405280838152602001600a815250905060006100e882600001518360200151610170565b9050600061010060008361019c90919063ffffffff16565b9050600061010d826101c7565b90507fee0e21a0909c175792d67fa4e7c4f99d844405993e69b1ac9985af378f4cda4b8160405161013e9190610723565b60405180910390a15050505050565b60008173ffffffffffffffffffffffffffffffffffffffff1660001b9050919050565b60608282604051602001610185929190610780565b604051602081830303815290604052905092915050565b6000808351905060006020850190506101bd8464ffffffffff1682846101ec565b9250505092915050565b60006101e56020808462ffffff19166102539092919063ffffffff16565b9050919050565b60008082846101fb91906107db565b905060405181111561020c57600090505b6000810361023d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000091505061024c565b61024885858561028a565b9150505b9392505050565b60006008826020610264919061081c565b61026e9190610851565b60ff1661027c8585856102b5565b60001c901c90509392505050565b60008060609050600060189050858317821b9250848317821b9250838317811b925050509392505050565b6000808260ff16036102cc576000801b90506103f2565b6102d5846103f9565b6bffffffffffffffffffffffff168260ff16846102f291906107db565b111561036f576103336103048561041f565b6bffffffffffffffffffffffff1661031b866103f9565b6bffffffffffffffffffffffff16858560ff16610448565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610366919061091e565b60405180910390fd5b60208260ff1611156103b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103ad906109b2565b60405180910390fd5b600060088302905060006103c98661041f565b6bffffffffffffffffffffffff16905060006103e4836104b6565b905080868301511693505050505b9392505050565b6000806bffffffffffffffffffffffff90506000601890508184821c1692505050919050565b6000806bffffffffffffffffffffffff90506000607860ff1690508184821c1692505050919050565b60606000610455866104e5565b9150506000610463866104e5565b9150506000610471866104e5565b915050600061047f866104e5565b915050838383836040516020016104999493929190610ba1565b604051602081830303815290604052945050505050949350505050565b60007f8000000000000000000000000000000000000000000000000000000000000000600183031d9050919050565b6000806000601f90505b600f8160ff16111561054257600060088261050a9190610851565b60ff1685901c905061051b816105a3565b61ffff168417935060108260ff161461053657601084901b93505b600182039150506104ef565b506000600f90505b60ff8160ff16101561059d5760006008826105659190610851565b60ff1685901c9050610576816105a3565b61ffff168317925060008260ff161461059157601083901b92505b6001820391505061054a565b50915091565b60006105b560048360ff16901c6105dc565b60ff168117905060088161ffff16901b90506105d0826105dc565b60ff1681179050919050565b600080600f831690506040518060400160405280601081526020017f30313233343536373839616263646566000000000000000000000000000000008152508160ff16815181106106305761062f610c26565b5b602001015160f81c60f81b60f81c915050919050565b600080fd5b6000819050919050565b61065e8161064b565b811461066957600080fd5b50565b60008135905061067b81610655565b92915050565b60006020828403121561069757610696610646565b5b60006106a58482850161066c565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006106d9826106ae565b9050919050565b6106e9816106ce565b82525050565b600060208201905061070460008301846106e0565b92915050565b6000819050919050565b61071d8161070a565b82525050565b60006020820190506107386000830184610714565b92915050565b6000819050919050565b6107596107548261064b565b61073e565b82525050565b6000819050919050565b61077a6107758261070a565b61075f565b82525050565b600061078c8285610748565b60208201915061079c8284610769565b6020820191508190509392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006107e68261070a565b91506107f18361070a565b9250828201905080821115610809576108086107ac565b5b92915050565b600060ff82169050919050565b60006108278261080f565b91506108328361080f565b9250828203905060ff81111561084b5761084a6107ac565b5b92915050565b600061085c8261080f565b91506108678361080f565b92508282026108758161080f565b9150808214610887576108866107ac565b5b5092915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156108c85780820151818401526020810190506108ad565b60008484015250505050565b6000601f19601f8301169050919050565b60006108f08261088e565b6108fa8185610899565b935061090a8185602086016108aa565b610913816108d4565b840191505092915050565b6000602082019050818103600083015261093881846108e5565b905092915050565b7f54797065644d656d566965772f696e646578202d20417474656d70746564207460008201527f6f20696e646578206d6f7265207468616e203332206279746573000000000000602082015250565b600061099c603a83610899565b91506109a782610940565b604082019050919050565b600060208201905081810360008301526109cb8161098f565b9050919050565b600081905092915050565b7f54797065644d656d566965772f696e646578202d204f76657272616e2074686560008201527f20766965772e20536c6963652069732061742030780000000000000000000000602082015250565b6000610a396035836109d2565b9150610a44826109dd565b603582019050919050565b600065ffffffffffff82169050919050565b60008160d01b9050919050565b6000610a7982610a61565b9050919050565b610a91610a8c82610a4f565b610a6e565b82525050565b7f2077697468206c656e6774682030780000000000000000000000000000000000600082015250565b6000610acd600f836109d2565b9150610ad882610a97565b600f82019050919050565b7f2e20417474656d7074656420746f20696e646578206174206f6666736574203060008201527f7800000000000000000000000000000000000000000000000000000000000000602082015250565b6000610b3f6021836109d2565b9150610b4a82610ae3565b602182019050919050565b7f2e00000000000000000000000000000000000000000000000000000000000000600082015250565b6000610b8b6001836109d2565b9150610b9682610b55565b600182019050919050565b6000610bac82610a2c565b9150610bb88287610a80565b600682019150610bc782610ac0565b9150610bd38286610a80565b600682019150610be282610b32565b9150610bee8285610a80565b600682019150610bfd82610ac0565b9150610c098284610a80565b600682019150610c1882610b7e565b915081905095945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea26469706673582212207129c3efaa5671b2862731b6a07442d28f4d1c3b58120d5222333ed1b2719a6d64736f6c63430008110033",
"opcodes": "PUSH2 0xC8B PUSH2 0x53 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH2 0x46 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x40 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x5CED058E EQ PUSH2 0x45 JUMPI DUP1 PUSH4 0xFDC85308 EQ PUSH2 0x75 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5F PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x5A SWAP2 SWAP1 PUSH2 0x681 JUMP JUMPDEST PUSH2 0x8C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x6C SWAP2 SWAP1 PUSH2 0x6EF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x81 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x8A PUSH2 0x99 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 SHR SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB8 PUSH20 0xE0F5206BBD039E7B0592D8918820024E2A7437B9 PUSH2 0x14D JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0xA DUP2 MSTORE POP SWAP1 POP PUSH1 0x0 PUSH2 0xE8 DUP3 PUSH1 0x0 ADD MLOAD DUP4 PUSH1 0x20 ADD MLOAD PUSH2 0x170 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x100 PUSH1 0x0 DUP4 PUSH2 0x19C SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x10D DUP3 PUSH2 0x1C7 JUMP JUMPDEST SWAP1 POP PUSH32 0xEE0E21A0909C175792D67FA4E7C4F99D844405993E69B1AC9985AF378F4CDA4B DUP2 PUSH1 0x40 MLOAD PUSH2 0x13E SWAP2 SWAP1 PUSH2 0x723 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SHL SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x185 SWAP3 SWAP2 SWAP1 PUSH2 0x780 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 MLOAD SWAP1 POP PUSH1 0x0 PUSH1 0x20 DUP6 ADD SWAP1 POP PUSH2 0x1BD DUP5 PUSH5 0xFFFFFFFFFF AND DUP3 DUP5 PUSH2 0x1EC JUMP JUMPDEST SWAP3 POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1E5 PUSH1 0x20 DUP1 DUP5 PUSH3 0xFFFFFF NOT AND PUSH2 0x253 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 PUSH2 0x1FB SWAP2 SWAP1 PUSH2 0x7DB JUMP JUMPDEST SWAP1 POP PUSH1 0x40 MLOAD DUP2 GT ISZERO PUSH2 0x20C JUMPI PUSH1 0x0 SWAP1 POP JUMPDEST PUSH1 0x0 DUP2 SUB PUSH2 0x23D JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000 SWAP2 POP POP PUSH2 0x24C JUMP JUMPDEST PUSH2 0x248 DUP6 DUP6 DUP6 PUSH2 0x28A JUMP JUMPDEST SWAP2 POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x8 DUP3 PUSH1 0x20 PUSH2 0x264 SWAP2 SWAP1 PUSH2 0x81C JUMP JUMPDEST PUSH2 0x26E SWAP2 SWAP1 PUSH2 0x851 JUMP JUMPDEST PUSH1 0xFF AND PUSH2 0x27C DUP6 DUP6 DUP6 PUSH2 0x2B5 JUMP JUMPDEST PUSH1 0x0 SHR SWAP1 SHR SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x60 SWAP1 POP PUSH1 0x0 PUSH1 0x18 SWAP1 POP DUP6 DUP4 OR DUP3 SHL SWAP3 POP DUP5 DUP4 OR DUP3 SHL SWAP3 POP DUP4 DUP4 OR DUP2 SHL SWAP3 POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0xFF AND SUB PUSH2 0x2CC JUMPI PUSH1 0x0 DUP1 SHL SWAP1 POP PUSH2 0x3F2 JUMP JUMPDEST PUSH2 0x2D5 DUP5 PUSH2 0x3F9 JUMP JUMPDEST PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH1 0xFF AND DUP5 PUSH2 0x2F2 SWAP2 SWAP1 PUSH2 0x7DB JUMP JUMPDEST GT ISZERO PUSH2 0x36F JUMPI PUSH2 0x333 PUSH2 0x304 DUP6 PUSH2 0x41F JUMP JUMPDEST PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x31B DUP7 PUSH2 0x3F9 JUMP JUMPDEST PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 DUP6 PUSH1 0xFF AND PUSH2 0x448 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x366 SWAP2 SWAP1 PUSH2 0x91E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x20 DUP3 PUSH1 0xFF AND GT ISZERO PUSH2 0x3B6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3AD SWAP1 PUSH2 0x9B2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x8 DUP4 MUL SWAP1 POP PUSH1 0x0 PUSH2 0x3C9 DUP7 PUSH2 0x41F JUMP JUMPDEST PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 PUSH2 0x3E4 DUP4 PUSH2 0x4B6 JUMP JUMPDEST SWAP1 POP DUP1 DUP7 DUP4 ADD MLOAD AND SWAP4 POP POP POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 POP PUSH1 0x0 PUSH1 0x18 SWAP1 POP DUP2 DUP5 DUP3 SHR AND SWAP3 POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 POP PUSH1 0x0 PUSH1 0x78 PUSH1 0xFF AND SWAP1 POP DUP2 DUP5 DUP3 SHR AND SWAP3 POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x455 DUP7 PUSH2 0x4E5 JUMP JUMPDEST SWAP2 POP POP PUSH1 0x0 PUSH2 0x463 DUP7 PUSH2 0x4E5 JUMP JUMPDEST SWAP2 POP POP PUSH1 0x0 PUSH2 0x471 DUP7 PUSH2 0x4E5 JUMP JUMPDEST SWAP2 POP POP PUSH1 0x0 PUSH2 0x47F DUP7 PUSH2 0x4E5 JUMP JUMPDEST SWAP2 POP POP DUP4 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x499 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xBA1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP5 POP POP POP POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x8000000000000000000000000000000000000000000000000000000000000000 PUSH1 0x1 DUP4 SUB SAR SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x1F SWAP1 POP JUMPDEST PUSH1 0xF DUP2 PUSH1 0xFF AND GT ISZERO PUSH2 0x542 JUMPI PUSH1 0x0 PUSH1 0x8 DUP3 PUSH2 0x50A SWAP2 SWAP1 PUSH2 0x851 JUMP JUMPDEST PUSH1 0xFF AND DUP6 SWAP1 SHR SWAP1 POP PUSH2 0x51B DUP2 PUSH2 0x5A3 JUMP JUMPDEST PUSH2 0xFFFF AND DUP5 OR SWAP4 POP PUSH1 0x10 DUP3 PUSH1 0xFF AND EQ PUSH2 0x536 JUMPI PUSH1 0x10 DUP5 SWAP1 SHL SWAP4 POP JUMPDEST PUSH1 0x1 DUP3 SUB SWAP2 POP POP PUSH2 0x4EF JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0xF SWAP1 POP JUMPDEST PUSH1 0xFF DUP2 PUSH1 0xFF AND LT ISZERO PUSH2 0x59D JUMPI PUSH1 0x0 PUSH1 0x8 DUP3 PUSH2 0x565 SWAP2 SWAP1 PUSH2 0x851 JUMP JUMPDEST PUSH1 0xFF AND DUP6 SWAP1 SHR SWAP1 POP PUSH2 0x576 DUP2 PUSH2 0x5A3 JUMP JUMPDEST PUSH2 0xFFFF AND DUP4 OR SWAP3 POP PUSH1 0x0 DUP3 PUSH1 0xFF AND EQ PUSH2 0x591 JUMPI PUSH1 0x10 DUP4 SWAP1 SHL SWAP3 POP JUMPDEST PUSH1 0x1 DUP3 SUB SWAP2 POP POP PUSH2 0x54A JUMP JUMPDEST POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5B5 PUSH1 0x4 DUP4 PUSH1 0xFF AND SWAP1 SHR PUSH2 0x5DC JUMP JUMPDEST PUSH1 0xFF AND DUP2 OR SWAP1 POP PUSH1 0x8 DUP2 PUSH2 0xFFFF AND SWAP1 SHL SWAP1 POP PUSH2 0x5D0 DUP3 PUSH2 0x5DC JUMP JUMPDEST PUSH1 0xFF AND DUP2 OR SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0xF DUP4 AND SWAP1 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x10 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x3031323334353637383961626364656600000000000000000000000000000000 DUP2 MSTORE POP DUP2 PUSH1 0xFF AND DUP2 MLOAD DUP2 LT PUSH2 0x630 JUMPI PUSH2 0x62F PUSH2 0xC26 JUMP JUMPDEST JUMPDEST PUSH1 0x20 ADD ADD MLOAD PUSH1 0xF8 SHR PUSH1 0xF8 SHL PUSH1 0xF8 SHR SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x65E DUP2 PUSH2 0x64B JUMP JUMPDEST DUP2 EQ PUSH2 0x669 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x67B DUP2 PUSH2 0x655 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x697 JUMPI PUSH2 0x696 PUSH2 0x646 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x6A5 DUP5 DUP3 DUP6 ADD PUSH2 0x66C JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6D9 DUP3 PUSH2 0x6AE JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x6E9 DUP2 PUSH2 0x6CE JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x704 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x6E0 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x71D DUP2 PUSH2 0x70A JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x738 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x714 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x759 PUSH2 0x754 DUP3 PUSH2 0x64B JUMP JUMPDEST PUSH2 0x73E JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x77A PUSH2 0x775 DUP3 PUSH2 0x70A JUMP JUMPDEST PUSH2 0x75F JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x78C DUP3 DUP6 PUSH2 0x748 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH2 0x79C DUP3 DUP5 PUSH2 0x769 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP2 POP DUP2 SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x7E6 DUP3 PUSH2 0x70A JUMP JUMPDEST SWAP2 POP PUSH2 0x7F1 DUP4 PUSH2 0x70A JUMP JUMPDEST SWAP3 POP DUP3 DUP3 ADD SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x809 JUMPI PUSH2 0x808 PUSH2 0x7AC JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x827 DUP3 PUSH2 0x80F JUMP JUMPDEST SWAP2 POP PUSH2 0x832 DUP4 PUSH2 0x80F JUMP JUMPDEST SWAP3 POP DUP3 DUP3 SUB SWAP1 POP PUSH1 0xFF DUP2 GT ISZERO PUSH2 0x84B JUMPI PUSH2 0x84A PUSH2 0x7AC JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x85C DUP3 PUSH2 0x80F JUMP JUMPDEST SWAP2 POP PUSH2 0x867 DUP4 PUSH2 0x80F JUMP JUMPDEST SWAP3 POP DUP3 DUP3 MUL PUSH2 0x875 DUP2 PUSH2 0x80F JUMP JUMPDEST SWAP2 POP DUP1 DUP3 EQ PUSH2 0x887 JUMPI PUSH2 0x886 PUSH2 0x7AC JUMP JUMPDEST JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x8C8 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x8AD JUMP JUMPDEST PUSH1 0x0 DUP5 DUP5 ADD MSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8F0 DUP3 PUSH2 0x88E JUMP JUMPDEST PUSH2 0x8FA DUP2 DUP6 PUSH2 0x899 JUMP JUMPDEST SWAP4 POP PUSH2 0x90A DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x8AA JUMP JUMPDEST PUSH2 0x913 DUP2 PUSH2 0x8D4 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x938 DUP2 DUP5 PUSH2 0x8E5 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x54797065644D656D566965772F696E646578202D20417474656D707465642074 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6F20696E646578206D6F7265207468616E203332206279746573000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x99C PUSH1 0x3A DUP4 PUSH2 0x899 JUMP JUMPDEST SWAP2 POP PUSH2 0x9A7 DUP3 PUSH2 0x940 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x9CB DUP2 PUSH2 0x98F JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x54797065644D656D566965772F696E646578202D204F76657272616E20746865 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x20766965772E20536C6963652069732061742030780000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA39 PUSH1 0x35 DUP4 PUSH2 0x9D2 JUMP JUMPDEST SWAP2 POP PUSH2 0xA44 DUP3 PUSH2 0x9DD JUMP JUMPDEST PUSH1 0x35 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH6 0xFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0xD0 SHL SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA79 DUP3 PUSH2 0xA61 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xA91 PUSH2 0xA8C DUP3 PUSH2 0xA4F JUMP JUMPDEST PUSH2 0xA6E JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH32 0x2077697468206C656E6774682030780000000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xACD PUSH1 0xF DUP4 PUSH2 0x9D2 JUMP JUMPDEST SWAP2 POP PUSH2 0xAD8 DUP3 PUSH2 0xA97 JUMP JUMPDEST PUSH1 0xF DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x2E20417474656D7074656420746F20696E646578206174206F66667365742030 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x7800000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB3F PUSH1 0x21 DUP4 PUSH2 0x9D2 JUMP JUMPDEST SWAP2 POP PUSH2 0xB4A DUP3 PUSH2 0xAE3 JUMP JUMPDEST PUSH1 0x21 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x2E00000000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB8B PUSH1 0x1 DUP4 PUSH2 0x9D2 JUMP JUMPDEST SWAP2 POP PUSH2 0xB96 DUP3 PUSH2 0xB55 JUMP JUMPDEST PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xBAC DUP3 PUSH2 0xA2C JUMP JUMPDEST SWAP2 POP PUSH2 0xBB8 DUP3 DUP8 PUSH2 0xA80 JUMP JUMPDEST PUSH1 0x6 DUP3 ADD SWAP2 POP PUSH2 0xBC7 DUP3 PUSH2 0xAC0 JUMP JUMPDEST SWAP2 POP PUSH2 0xBD3 DUP3 DUP7 PUSH2 0xA80 JUMP JUMPDEST PUSH1 0x6 DUP3 ADD SWAP2 POP PUSH2 0xBE2 DUP3 PUSH2 0xB32 JUMP JUMPDEST SWAP2 POP PUSH2 0xBEE DUP3 DUP6 PUSH2 0xA80 JUMP JUMPDEST PUSH1 0x6 DUP3 ADD SWAP2 POP PUSH2 0xBFD DUP3 PUSH2 0xAC0 JUMP JUMPDEST SWAP2 POP PUSH2 0xC09 DUP3 DUP5 PUSH2 0xA80 JUMP JUMPDEST PUSH1 0x6 DUP3 ADD SWAP2 POP PUSH2 0xC18 DUP3 PUSH2 0xB7E JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH18 0x29C3EFAA5671B2862731B6A07442D28F4D1C EXTCODESIZE PC SLT 0xD MSTORE 0x22 CALLER RETURNDATACOPY 0xD1 0xB2 PUSH18 0x9A6D64736F6C634300081100330000000000 ",
"sourceMap": "91:1332:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
},
"deployedBytecode": {
"functionDebugData": {
"@_amount_67": {
"entryPoint": 455,
"id": 67,
"parameterSlots": 1,
"returnSlots": 1
},
"@addressToBytes32_86": {
"entryPoint": 333,
"id": 86,
"parameterSlots": 1,
"returnSlots": 1
},
"@build_663": {
"entryPoint": 492,
"id": 663,
"parameterSlots": 3,
"returnSlots": 1
},
"@byteHex_228": {
"entryPoint": 1443,
"id": 228,
"parameterSlots": 1,
"returnSlots": 1
},
"@bytes32ToAddress_105": {
"entryPoint": 140,
"id": 105,
"parameterSlots": 1,
"returnSlots": 1
},
"@encodeHex_321": {
"entryPoint": 1253,
"id": 321,
"parameterSlots": 1,
"returnSlots": 2
},
"@formatSample_33": {
"entryPoint": 368,
"id": 33,
"parameterSlots": 2,
"returnSlots": 1
},
"@indexErrOverrun_975": {
"entryPoint": 1096,
"id": 975,
"parameterSlots": 4,
"returnSlots": 1
},
"@indexUint_1082": {
"entryPoint": 595,
"id": 1082,
"parameterSlots": 3,
"returnSlots": 1
},
"@index_1052": {
"entryPoint": 693,
"id": 1052,
"parameterSlots": 3,
"returnSlots": 1
},
"@leftMask_428": {
"entryPoint": 1206,
"id": 428,
"parameterSlots": 1,
"returnSlots": 1
},
"@len_795": {
"entryPoint": 1017,
"id": 795,
"parameterSlots": 1,
"returnSlots": 1
},
"@loc_741": {
"entryPoint": 1055,
"id": 741,
"parameterSlots": 1,
"returnSlots": 1
},
"@nibbleHex_201": {
"entryPoint": 1500,
"id": 201,
"parameterSlots": 1,
"returnSlots": 1
},
"@ref_689": {
"entryPoint": 412,
"id": 689,
"parameterSlots": 2,
"returnSlots": 1
},
"@tryIt_150": {
"entryPoint": 153,
"id": 150,
"parameterSlots": 0,
"returnSlots": 0
},
"@unsafeBuildUnchecked_628": {
"entryPoint": 650,
"id": 628,
"parameterSlots": 3,
"returnSlots": 1
},
"abi_decode_t_bytes32": {
"entryPoint": 1644,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_bytes32": {
"entryPoint": 1665,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_t_address_to_t_address_fromStack_library": {
"entryPoint": 1760,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_bytes32_to_t_bytes32_nonPadded_inplace_fromStack": {
"entryPoint": 1864,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack": {
"entryPoint": 2277,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_t_stringliteral_3e6849d566dba71a1ac686a5bd3af1bed003e25465c91471808028cdad9d144b_to_t_string_memory_ptr_nonPadded_inplace_fromStack": {
"entryPoint": 2752,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_6f010af653ebe3cb07d297a4ef13366103d392ceffa68dd48232e6e9ff2187bf_to_t_string_memory_ptr_nonPadded_inplace_fromStack": {
"entryPoint": 2942,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_76d133faf43042eef7167f01d32e0891632a5651573db9fc8b6aa42fdbcaf509_to_t_string_memory_ptr_nonPadded_inplace_fromStack": {
"entryPoint": 2866,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_b2c061d25dd4dec479f0720f15754fff58a1a4debc7353bd1d3f4b7b23876297_to_t_string_memory_ptr_fromStack": {
"entryPoint": 2447,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_fb6c6ce939dcb005b895abe7a9570250d9c1c31a5440a6a6e28e0acc2d1c6af1_to_t_string_memory_ptr_nonPadded_inplace_fromStack": {
"entryPoint": 2604,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_uint256_to_t_uint256_fromStack": {
"entryPoint": 1812,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_uint256_to_t_uint256_nonPadded_inplace_fromStack": {
"entryPoint": 1897,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_uint48_to_t_uint48_nonPadded_inplace_fromStack": {
"entryPoint": 2688,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_tuple_packed_t_bytes32_t_uint256__to_t_bytes32_t_uint256__nonPadded_inplace_fromStack_reversed": {
"entryPoint": 1920,
"id": null,
"parameterSlots": 3,
"returnSlots": 1
},
"abi_encode_tuple_packed_t_stringliteral_fb6c6ce939dcb005b895abe7a9570250d9c1c31a5440a6a6e28e0acc2d1c6af1_t_uint48_t_stringliteral_3e6849d566dba71a1ac686a5bd3af1bed003e25465c91471808028cdad9d144b_t_uint48_t_stringliteral_76d133faf43042eef7167f01d32e0891632a5651573db9fc8b6aa42fdbcaf509_t_uint48_t_stringliteral_3e6849d566dba71a1ac686a5bd3af1bed003e25465c91471808028cdad9d144b_t_uint48_t_stringliteral_6f010af653ebe3cb07d297a4ef13366103d392ceffa68dd48232e6e9ff2187bf__to_t_string_memory_ptr_t_uint48_t_string_memory_ptr_t_uint48_t_string_memory_ptr_t_uint48_t_string_memory_ptr_t_uint48_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed": {
"entryPoint": 2977,
"id": null,
"parameterSlots": 5,
"returnSlots": 1
},
"abi_encode_tuple_t_address__to_t_address__fromStack_library_reversed": {
"entryPoint": 1775,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 2334,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_b2c061d25dd4dec479f0720f15754fff58a1a4debc7353bd1d3f4b7b23876297__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 2482,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
"entryPoint": 1827,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"allocate_unbounded": {
"entryPoint": null,
"id": null,
"parameterSlots": 0,
"returnSlots": 1
},
"array_length_t_string_memory_ptr": {
"entryPoint": 2190,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"array_storeLengthForEncoding_t_string_memory_ptr_fromStack": {
"entryPoint": 2201,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack": {
"entryPoint": 2514,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"checked_add_t_uint256": {
"entryPoint": 2011,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"checked_mul_t_uint8": {
"entryPoint": 2129,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"checked_sub_t_uint8": {
"entryPoint": 2076,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"cleanup_t_address": {
"entryPoint": 1742,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_bytes32": {
"entryPoint": 1611,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_uint160": {
"entryPoint": 1710,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_uint256": {
"entryPoint": 1802,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_uint48": {
"entryPoint": 2639,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_uint8": {
"entryPoint": 2063,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"copy_memory_to_memory_with_cleanup": {
"entryPoint": 2218,
"id": null,
"parameterSlots": 3,
"returnSlots": 0
},
"leftAlign_t_bytes32": {
"entryPoint": 1854,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"leftAlign_t_uint256": {
"entryPoint": 1887,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"leftAlign_t_uint48": {
"entryPoint": 2670,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"panic_error_0x11": {
"entryPoint": 1964,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"panic_error_0x32": {
"entryPoint": 3110,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db": {
"entryPoint": null,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b": {
"entryPoint": 1606,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"round_up_to_mul_of_32": {
"entryPoint": 2260,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"shift_left_208": {
"entryPoint": 2657,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"store_literal_in_memory_3e6849d566dba71a1ac686a5bd3af1bed003e25465c91471808028cdad9d144b": {
"entryPoint": 2711,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_6f010af653ebe3cb07d297a4ef13366103d392ceffa68dd48232e6e9ff2187bf": {
"entryPoint": 2901,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_76d133faf43042eef7167f01d32e0891632a5651573db9fc8b6aa42fdbcaf509": {
"entryPoint": 2787,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_b2c061d25dd4dec479f0720f15754fff58a1a4debc7353bd1d3f4b7b23876297": {
"entryPoint": 2368,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_fb6c6ce939dcb005b895abe7a9570250d9c1c31a5440a6a6e28e0acc2d1c6af1": {
"entryPoint": 2525,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"validator_revert_t_bytes32": {
"entryPoint": 1621,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
}
},
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:11534:2",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "47:35:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "57:19:2",
"value": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "73:2:2",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "67:5:2"
},
"nodeType": "YulFunctionCall",
"src": "67:9:2"
},
"variableNames": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "57:6:2"
}
]
}
]
},
"name": "allocate_unbounded",
"nodeType": "YulFunctionDefinition",
"returnVariables": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "40:6:2",
"type": ""
}
],
"src": "7:75:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "177:28:2",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "194:1:2",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "197:1:2",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "187:6:2"
},
"nodeType": "YulFunctionCall",
"src": "187:12:2"
},
"nodeType": "YulExpressionStatement",
"src": "187:12:2"
}
]
},
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulFunctionDefinition",
"src": "88:117:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "300:28:2",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "317:1:2",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "320:1:2",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "310:6:2"
},
"nodeType": "YulFunctionCall",
"src": "310:12:2"
},
"nodeType": "YulExpressionStatement",
"src": "310:12:2"
}
]
},
"name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db",
"nodeType": "YulFunctionDefinition",
"src": "211:117:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "379:32:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "389:16:2",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "400:5:2"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "389:7:2"
}
]
}
]
},
"name": "cleanup_t_bytes32",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "361:5:2",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "371:7:2",
"type": ""
}
],
"src": "334:77:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "460:79:2",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "517:16:2",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "526:1:2",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "529:1:2",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "519:6:2"
},
"nodeType": "YulFunctionCall",
"src": "519:12:2"
},
"nodeType": "YulExpressionStatement",
"src": "519:12:2"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "483:5:2"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "508:5:2"
}
],
"functionName": {
"name": "cleanup_t_bytes32",
"nodeType": "YulIdentifier",
"src": "490:17:2"
},
"nodeType": "YulFunctionCall",
"src": "490:24:2"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "480:2:2"
},
"nodeType": "YulFunctionCall",
"src": "480:35:2"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "473:6:2"
},
"nodeType": "YulFunctionCall",
"src": "473:43:2"
},
"nodeType": "YulIf",
"src": "470:63:2"
}
]
},
"name": "validator_revert_t_bytes32",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "453:5:2",
"type": ""
}
],
"src": "417:122:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "597:87:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "607:29:2",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "629:6:2"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "616:12:2"
},
"nodeType": "YulFunctionCall",
"src": "616:20:2"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "607:5:2"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "672:5:2"
}
],
"functionName": {
"name": "validator_revert_t_bytes32",
"nodeType": "YulIdentifier",
"src": "645:26:2"
},
"nodeType": "YulFunctionCall",
"src": "645:33:2"
},
"nodeType": "YulExpressionStatement",
"src": "645:33:2"
}
]
},
"name": "abi_decode_t_bytes32",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "575:6:2",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "583:3:2",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "591:5:2",
"type": ""
}
],
"src": "545:139:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "756:263:2",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "802:83:2",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulIdentifier",
"src": "804:77:2"
},
"nodeType": "YulFunctionCall",
"src": "804:79:2"
},
"nodeType": "YulExpressionStatement",
"src": "804:79:2"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "777:7:2"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "786:9:2"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "773:3:2"
},
"nodeType": "YulFunctionCall",
"src": "773:23:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "798:2:2",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "769:3:2"
},
"nodeType": "YulFunctionCall",
"src": "769:32:2"
},
"nodeType": "YulIf",
"src": "766:119:2"
},
{
"nodeType": "YulBlock",
"src": "895:117:2",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "910:15:2",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "924:1:2",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "914:6:2",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "939:63:2",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "974:9:2"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "985:6:2"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "970:3:2"
},
"nodeType": "YulFunctionCall",
"src": "970:22:2"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "994:7:2"
}
],
"functionName": {
"name": "abi_decode_t_bytes32",
"nodeType": "YulIdentifier",
"src": "949:20:2"
},
"nodeType": "YulFunctionCall",
"src": "949:53:2"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "939:6:2"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_bytes32",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "726:9:2",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "737:7:2",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "749:6:2",
"type": ""
}
],
"src": "690:329:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1070:81:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1080:65:2",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1095:5:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1102:42:2",
"type": "",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "1091:3:2"
},
"nodeType": "YulFunctionCall",
"src": "1091:54:2"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "1080:7:2"
}
]
}
]
},
"name": "cleanup_t_uint160",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1052:5:2",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "1062:7:2",
"type": ""
}
],
"src": "1025:126:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1202:51:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1212:35:2",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1241:5:2"
}
],
"functionName": {
"name": "cleanup_t_uint160",
"nodeType": "YulIdentifier",
"src": "1223:17:2"
},
"nodeType": "YulFunctionCall",
"src": "1223:24:2"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "1212:7:2"
}
]
}
]
},
"name": "cleanup_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1184:5:2",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "1194:7:2",
"type": ""
}
],
"src": "1157:96:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1332:53:2",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "1349:3:2"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1372:5:2"
}
],
"functionName": {
"name": "cleanup_t_address",
"nodeType": "YulIdentifier",
"src": "1354:17:2"
},
"nodeType": "YulFunctionCall",
"src": "1354:24:2"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1342:6:2"
},
"nodeType": "YulFunctionCall",
"src": "1342:37:2"
},
"nodeType": "YulExpressionStatement",
"src": "1342:37:2"
}
]
},
"name": "abi_encode_t_address_to_t_address_fromStack_library",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1320:5:2",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "1327:3:2",
"type": ""
}
],
"src": "1259:126:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1497:132:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1507:26:2",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1519:9:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1530:2:2",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1515:3:2"
},
"nodeType": "YulFunctionCall",
"src": "1515:18:2"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "1507:4:2"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "1595:6:2"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1608:9:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1619:1:2",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1604:3:2"
},
"nodeType": "YulFunctionCall",
"src": "1604:17:2"
}
],
"functionName": {
"name": "abi_encode_t_address_to_t_address_fromStack_library",
"nodeType": "YulIdentifier",
"src": "1543:51:2"
},
"nodeType": "YulFunctionCall",
"src": "1543:79:2"
},
"nodeType": "YulExpressionStatement",
"src": "1543:79:2"
}
]
},
"name": "abi_encode_tuple_t_address__to_t_address__fromStack_library_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "1469:9:2",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "1481:6:2",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "1492:4:2",
"type": ""
}
],
"src": "1391:238:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1680:32:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1690:16:2",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "1701:5:2"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "1690:7:2"
}
]
}
]
},
"name": "cleanup_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1662:5:2",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "1672:7:2",
"type": ""
}
],
"src": "1635:77:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1783:53:2",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "1800:3:2"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1823:5:2"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "1805:17:2"
},
"nodeType": "YulFunctionCall",
"src": "1805:24:2"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1793:6:2"
},
"nodeType": "YulFunctionCall",
"src": "1793:37:2"
},
"nodeType": "YulExpressionStatement",
"src": "1793:37:2"
}
]
},
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1771:5:2",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "1778:3:2",
"type": ""
}
],
"src": "1718:118:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1940:124:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1950:26:2",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1962:9:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1973:2:2",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1958:3:2"
},
"nodeType": "YulFunctionCall",
"src": "1958:18:2"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "1950:4:2"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "2030:6:2"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2043:9:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2054:1:2",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2039:3:2"
},
"nodeType": "YulFunctionCall",
"src": "2039:17:2"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulIdentifier",
"src": "1986:43:2"
},
"nodeType": "YulFunctionCall",
"src": "1986:71:2"
},
"nodeType": "YulExpressionStatement",
"src": "1986:71:2"
}
]
},
"name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "1912:9:2",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "1924:6:2",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "1935:4:2",
"type": ""
}
],
"src": "1842:222:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2117:32:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2127:16:2",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "2138:5:2"
},
"variableNames": [
{
"name": "aligned",
"nodeType": "YulIdentifier",
"src": "2127:7:2"
}
]
}
]
},
"name": "leftAlign_t_bytes32",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "2099:5:2",
"type": ""
}
],
"returnVariables": [
{
"name": "aligned",
"nodeType": "YulTypedName",
"src": "2109:7:2",
"type": ""
}
],
"src": "2070:79:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2238:74:2",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "2255:3:2"
},
{
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2298:5:2"
}
],
"functionName": {
"name": "cleanup_t_bytes32",
"nodeType": "YulIdentifier",
"src": "2280:17:2"
},
"nodeType": "YulFunctionCall",
"src": "2280:24:2"
}
],
"functionName": {
"name": "leftAlign_t_bytes32",
"nodeType": "YulIdentifier",
"src": "2260:19:2"
},
"nodeType": "YulFunctionCall",
"src": "2260:45:2"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "2248:6:2"
},
"nodeType": "YulFunctionCall",
"src": "2248:58:2"
},
"nodeType": "YulExpressionStatement",
"src": "2248:58:2"
}
]
},
"name": "abi_encode_t_bytes32_to_t_bytes32_nonPadded_inplace_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "2226:5:2",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "2233:3:2",
"type": ""
}
],
"src": "2155:157:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2365:32:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2375:16:2",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "2386:5:2"
},
"variableNames": [
{
"name": "aligned",
"nodeType": "YulIdentifier",
"src": "2375:7:2"
}
]
}
]
},
"name": "leftAlign_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "2347:5:2",
"type": ""
}
],
"returnVariables": [
{
"name": "aligned",
"nodeType": "YulTypedName",
"src": "2357:7:2",
"type": ""
}
],
"src": "2318:79:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2486:74:2",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "2503:3:2"
},
{
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2546:5:2"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "2528:17:2"
},
"nodeType": "YulFunctionCall",
"src": "2528:24:2"
}
],
"functionName": {
"name": "leftAlign_t_uint256",
"nodeType": "YulIdentifier",
"src": "2508:19:2"
},
"nodeType": "YulFunctionCall",
"src": "2508:45:2"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "2496:6:2"
},
"nodeType": "YulFunctionCall",
"src": "2496:58:2"
},
"nodeType": "YulExpressionStatement",
"src": "2496:58:2"
}
]
},
"name": "abi_encode_t_uint256_to_t_uint256_nonPadded_inplace_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "2474:5:2",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "2481:3:2",
"type": ""
}
],
"src": "2403:157:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2710:253:2",
"statements": [
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "2783:6:2"
},
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "2792:3:2"
}
],
"functionName": {
"name": "abi_encode_t_bytes32_to_t_bytes32_nonPadded_inplace_fromStack",
"nodeType": "YulIdentifier",
"src": "2721:61:2"
},
"nodeType": "YulFunctionCall",
"src": "2721:75:2"
},
"nodeType": "YulExpressionStatement",
"src": "2721:75:2"
},
{
"nodeType": "YulAssignment",
"src": "2805:19:2",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "2816:3:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2821:2:2",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2812:3:2"
},
"nodeType": "YulFunctionCall",
"src": "2812:12:2"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "2805:3:2"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "2896:6:2"
},
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "2905:3:2"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_nonPadded_inplace_fromStack",
"nodeType": "YulIdentifier",
"src": "2834:61:2"
},
"nodeType": "YulFunctionCall",
"src": "2834:75:2"
},
"nodeType": "YulExpressionStatement",
"src": "2834:75:2"
},
{
"nodeType": "YulAssignment",
"src": "2918:19:2",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "2929:3:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2934:2:2",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2925:3:2"
},
"nodeType": "YulFunctionCall",
"src": "2925:12:2"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "2918:3:2"
}
]
},
{
"nodeType": "YulAssignment",
"src": "2947:10:2",
"value": {
"name": "pos",
"nodeType": "YulIdentifier",
"src": "2954:3:2"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "2947:3:2"
}
]
}
]
},
"name": "abi_encode_tuple_packed_t_bytes32_t_uint256__to_t_bytes32_t_uint256__nonPadded_inplace_fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "2681:3:2",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "2687:6:2",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "2695:6:2",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "2706:3:2",
"type": ""
}
],
"src": "2566:397:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2997:152:2",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3014:1:2",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3017:77:2",
"type": "",
"value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3007:6:2"
},
"nodeType": "YulFunctionCall",
"src": "3007:88:2"
},
"nodeType": "YulExpressionStatement",
"src": "3007:88:2"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3111:1:2",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3114:4:2",
"type": "",
"value": "0x11"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3104:6:2"
},
"nodeType": "YulFunctionCall",
"src": "3104:15:2"
},
"nodeType": "YulExpressionStatement",
"src": "3104:15:2"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3135:1:2",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3138:4:2",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "3128:6:2"
},
"nodeType": "YulFunctionCall",
"src": "3128:15:2"
},
"nodeType": "YulExpressionStatement",
"src": "3128:15:2"
}
]
},
"name": "panic_error_0x11",
"nodeType": "YulFunctionDefinition",
"src": "2969:180:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3199:147:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "3209:25:2",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "3232:1:2"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "3214:17:2"
},
"nodeType": "YulFunctionCall",
"src": "3214:20:2"
},
"variableNames": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "3209:1:2"
}
]
},
{
"nodeType": "YulAssignment",
"src": "3243:25:2",
"value": {
"arguments": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "3266:1:2"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "3248:17:2"
},
"nodeType": "YulFunctionCall",
"src": "3248:20:2"
},
"variableNames": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "3243:1:2"
}
]
},
{
"nodeType": "YulAssignment",
"src": "3277:16:2",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "3288:1:2"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "3291:1:2"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3284:3:2"
},
"nodeType": "YulFunctionCall",
"src": "3284:9:2"
},
"variableNames": [
{
"name": "sum",
"nodeType": "YulIdentifier",
"src": "3277:3:2"
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "3317:22:2",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nodeType": "YulIdentifier",
"src": "3319:16:2"
},
"nodeType": "YulFunctionCall",
"src": "3319:18:2"
},
"nodeType": "YulExpressionStatement",
"src": "3319:18:2"
}
]
},
"condition": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "3309:1:2"
},
{
"name": "sum",
"nodeType": "YulIdentifier",
"src": "3312:3:2"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "3306:2:2"
},
"nodeType": "YulFunctionCall",
"src": "3306:10:2"
},
"nodeType": "YulIf",
"src": "3303:36:2"
}
]
},
"name": "checked_add_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "x",
"nodeType": "YulTypedName",
"src": "3186:1:2",
"type": ""
},
{
"name": "y",
"nodeType": "YulTypedName",
"src": "3189:1:2",
"type": ""
}
],
"returnVariables": [
{
"name": "sum",
"nodeType": "YulTypedName",
"src": "3195:3:2",
"type": ""
}
],
"src": "3155:191:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3395:43:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "3405:27:2",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "3420:5:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3427:4:2",
"type": "",
"value": "0xff"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "3416:3:2"
},
"nodeType": "YulFunctionCall",
"src": "3416:16:2"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "3405:7:2"
}
]
}
]
},
"name": "cleanup_t_uint8",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "3377:5:2",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "3387:7:2",
"type": ""
}
],
"src": "3352:86:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3487:148:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "3497:23:2",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "3518:1:2"
}
],
"functionName": {
"name": "cleanup_t_uint8",
"nodeType": "YulIdentifier",
"src": "3502:15:2"
},
"nodeType": "YulFunctionCall",
"src": "3502:18:2"
},
"variableNames": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "3497:1:2"
}
]
},
{
"nodeType": "YulAssignment",
"src": "3529:23:2",
"value": {
"arguments": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "3550:1:2"
}
],
"functionName": {
"name": "cleanup_t_uint8",
"nodeType": "YulIdentifier",
"src": "3534:15:2"
},
"nodeType": "YulFunctionCall",
"src": "3534:18:2"
},
"variableNames": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "3529:1:2"
}
]
},
{
"nodeType": "YulAssignment",
"src": "3561:17:2",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "3573:1:2"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "3576:1:2"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "3569:3:2"
},
"nodeType": "YulFunctionCall",
"src": "3569:9:2"
},
"variableNames": [
{
"name": "diff",
"nodeType": "YulIdentifier",
"src": "3561:4:2"
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "3606:22:2",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nodeType": "YulIdentifier",
"src": "3608:16:2"
},
"nodeType": "YulFunctionCall",
"src": "3608:18:2"
},
"nodeType": "YulExpressionStatement",
"src": "3608:18:2"
}
]
},
"condition": {
"arguments": [
{
"name": "diff",
"nodeType": "YulIdentifier",
"src": "3594:4:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3600:4:2",
"type": "",
"value": "0xff"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "3591:2:2"
},
"nodeType": "YulFunctionCall",
"src": "3591:14:2"
},
"nodeType": "YulIf",
"src": "3588:40:2"
}
]
},
"name": "checked_sub_t_uint8",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "x",
"nodeType": "YulTypedName",
"src": "3473:1:2",
"type": ""
},
{
"name": "y",
"nodeType": "YulTypedName",
"src": "3476:1:2",
"type": ""
}
],
"returnVariables": [
{
"name": "diff",
"nodeType": "YulTypedName",
"src": "3482:4:2",
"type": ""
}
],
"src": "3444:191:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3687:225:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "3697:23:2",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "3718:1:2"
}
],
"functionName": {
"name": "cleanup_t_uint8",
"nodeType": "YulIdentifier",
"src": "3702:15:2"
},
"nodeType": "YulFunctionCall",
"src": "3702:18:2"
},
"variableNames": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "3697:1:2"
}
]
},
{
"nodeType": "YulAssignment",
"src": "3729:23:2",
"value": {
"arguments": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "3750:1:2"
}
],
"functionName": {
"name": "cleanup_t_uint8",
"nodeType": "YulIdentifier",
"src": "3734:15:2"
},
"nodeType": "YulFunctionCall",
"src": "3734:18:2"
},
"variableNames": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "3729:1:2"
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "3761:28:2",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "3784:1:2"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "3787:1:2"
}
],
"functionName": {
"name": "mul",
"nodeType": "YulIdentifier",
"src": "3780:3:2"
},
"nodeType": "YulFunctionCall",
"src": "3780:9:2"
},
"variables": [
{
"name": "product_raw",
"nodeType": "YulTypedName",
"src": "3765:11:2",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "3798:39:2",
"value": {
"arguments": [
{
"name": "product_raw",
"nodeType": "YulIdentifier",
"src": "3825:11:2"
}
],
"functionName": {
"name": "cleanup_t_uint8",
"nodeType": "YulIdentifier",
"src": "3809:15:2"
},
"nodeType": "YulFunctionCall",
"src": "3809:28:2"
},
"variableNames": [
{
"name": "product",
"nodeType": "YulIdentifier",
"src": "3798:7:2"
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "3883:22:2",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nodeType": "YulIdentifier",
"src": "3885:16:2"
},
"nodeType": "YulFunctionCall",
"src": "3885:18:2"
},
"nodeType": "YulExpressionStatement",
"src": "3885:18:2"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "product",
"nodeType": "YulIdentifier",
"src": "3860:7:2"
},
{
"name": "product_raw",
"nodeType": "YulIdentifier",
"src": "3869:11:2"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "3857:2:2"
},
"nodeType": "YulFunctionCall",
"src": "3857:24:2"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "3850:6:2"
},
"nodeType": "YulFunctionCall",
"src": "3850:32:2"
},
"nodeType": "YulIf",
"src": "3847:58:2"
}
]
},
"name": "checked_mul_t_uint8",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "x",
"nodeType": "YulTypedName",
"src": "3670:1:2",
"type": ""
},
{
"name": "y",
"nodeType": "YulTypedName",
"src": "3673:1:2",
"type": ""
}
],
"returnVariables": [
{
"name": "product",
"nodeType": "YulTypedName",
"src": "3679:7:2",
"type": ""
}
],
"src": "3641:271:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3977:40:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "3988:22:2",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "4004:5:2"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "3998:5:2"
},
"nodeType": "YulFunctionCall",
"src": "3998:12:2"
},
"variableNames": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "3988:6:2"
}
]
}
]
},
"name": "array_length_t_string_memory_ptr",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "3960:5:2",
"type": ""
}
],
"returnVariables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "3970:6:2",
"type": ""
}
],
"src": "3918:99:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4119:73:2",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "4136:3:2"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "4141:6:2"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "4129:6:2"
},
"nodeType": "YulFunctionCall",
"src": "4129:19:2"
},
"nodeType": "YulExpressionStatement",
"src": "4129:19:2"
},
{
"nodeType": "YulAssignment",
"src": "4157:29:2",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "4176:3:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4181:4:2",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4172:3:2"
},
"nodeType": "YulFunctionCall",
"src": "4172:14:2"
},
"variableNames": [
{
"name": "updated_pos",
"nodeType": "YulIdentifier",
"src": "4157:11:2"
}
]
}
]
},
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "4091:3:2",
"type": ""
},
{
"name": "length",
"nodeType": "YulTypedName",
"src": "4096:6:2",
"type": ""
}
],
"returnVariables": [
{
"name": "updated_pos",
"nodeType": "YulTypedName",
"src": "4107:11:2",
"type": ""
}
],
"src": "4023:169:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4260:184:2",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "4270:10:2",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "4279:1:2",
"type": "",
"value": "0"
},
"variables": [
{
"name": "i",
"nodeType": "YulTypedName",
"src": "4274:1:2",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "4339:63:2",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "4364:3:2"
},
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "4369:1:2"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4360:3:2"
},
"nodeType": "YulFunctionCall",
"src": "4360:11:2"
},
{
"arguments": [
{
"arguments": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "4383:3:2"
},
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "4388:1:2"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4379:3:2"
},
"nodeType": "YulFunctionCall",
"src": "4379:11:2"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "4373:5:2"
},
"nodeType": "YulFunctionCall",
"src": "4373:18:2"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "4353:6:2"
},
"nodeType": "YulFunctionCall",
"src": "4353:39:2"
},
"nodeType": "YulExpressionStatement",
"src": "4353:39:2"
}
]
},
"condition": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "4300:1:2"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "4303:6:2"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "4297:2:2"
},
"nodeType": "YulFunctionCall",
"src": "4297:13:2"
},
"nodeType": "YulForLoop",
"post": {
"nodeType": "YulBlock",
"src": "4311:19:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "4313:15:2",
"value": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "4322:1:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4325:2:2",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4318:3:2"
},
"nodeType": "YulFunctionCall",
"src": "4318:10:2"
},
"variableNames": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "4313:1:2"
}
]
}
]
},
"pre": {
"nodeType": "YulBlock",
"src": "4293:3:2",
"statements": []
},
"src": "4289:113:2"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "4422:3:2"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "4427:6:2"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4418:3:2"
},
"nodeType": "YulFunctionCall",
"src": "4418:16:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4436:1:2",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "4411:6:2"
},
"nodeType": "YulFunctionCall",
"src": "4411:27:2"
},
"nodeType": "YulExpressionStatement",
"src": "4411:27:2"
}
]
},
"name": "copy_memory_to_memory_with_cleanup",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "src",
"nodeType": "YulTypedName",
"src": "4242:3:2",
"type": ""
},
{
"name": "dst",
"nodeType": "YulTypedName",
"src": "4247:3:2",
"type": ""
},
{
"name": "length",
"nodeType": "YulTypedName",
"src": "4252:6:2",
"type": ""
}
],
"src": "4198:246:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4498:54:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "4508:38:2",
"value": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "4526:5:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4533:2:2",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4522:3:2"
},
"nodeType": "YulFunctionCall",
"src": "4522:14:2"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4542:2:2",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "4538:3:2"
},
"nodeType": "YulFunctionCall",
"src": "4538:7:2"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "4518:3:2"
},
"nodeType": "YulFunctionCall",
"src": "4518:28:2"
},
"variableNames": [
{
"name": "result",
"nodeType": "YulIdentifier",
"src": "4508:6:2"
}
]
}
]
},
"name": "round_up_to_mul_of_32",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "4481:5:2",
"type": ""
}
],
"returnVariables": [
{
"name": "result",
"nodeType": "YulTypedName",
"src": "4491:6:2",
"type": ""
}
],
"src": "4450:102:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4650:285:2",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "4660:53:2",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "4707:5:2"
}
],
"functionName": {
"name": "array_length_t_string_memory_ptr",
"nodeType": "YulIdentifier",
"src": "4674:32:2"
},
"nodeType": "YulFunctionCall",
"src": "4674:39:2"
},
"variables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "4664:6:2",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "4722:78:2",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "4788:3:2"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "4793:6:2"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "4729:58:2"
},
"nodeType": "YulFunctionCall",
"src": "4729:71:2"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "4722:3:2"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "4848:5:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4855:4:2",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4844:3:2"
},
"nodeType": "YulFunctionCall",
"src": "4844:16:2"
},
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "4862:3:2"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "4867:6:2"
}
],
"functionName": {
"name": "copy_memory_to_memory_with_cleanup",
"nodeType": "YulIdentifier",
"src": "4809:34:2"
},
"nodeType": "YulFunctionCall",
"src": "4809:65:2"
},
"nodeType": "YulExpressionStatement",
"src": "4809:65:2"
},
{
"nodeType": "YulAssignment",
"src": "4883:46:2",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "4894:3:2"
},
{
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "4921:6:2"
}
],
"functionName": {
"name": "round_up_to_mul_of_32",
"nodeType": "YulIdentifier",
"src": "4899:21:2"
},
"nodeType": "YulFunctionCall",
"src": "4899:29:2"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4890:3:2"
},
"nodeType": "YulFunctionCall",
"src": "4890:39:2"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "4883:3:2"
}
]
}
]
},
"name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "4631:5:2",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "4638:3:2",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "4646:3:2",
"type": ""
}
],
"src": "4558:377:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5059:195:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "5069:26:2",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5081:9:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5092:2:2",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5077:3:2"
},
"nodeType": "YulFunctionCall",
"src": "5077:18:2"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "5069:4:2"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5116:9:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5127:1:2",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5112:3:2"
},
"nodeType": "YulFunctionCall",
"src": "5112:17:2"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "5135:4:2"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5141:9:2"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "5131:3:2"
},
"nodeType": "YulFunctionCall",
"src": "5131:20:2"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "5105:6:2"
},
"nodeType": "YulFunctionCall",
"src": "5105:47:2"
},
"nodeType": "YulExpressionStatement",
"src": "5105:47:2"
},
{
"nodeType": "YulAssignment",
"src": "5161:86:2",
"value": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "5233:6:2"
},
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "5242:4:2"
}
],
"functionName": {
"name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "5169:63:2"
},
"nodeType": "YulFunctionCall",
"src": "5169:78:2"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "5161:4:2"
}
]
}
]
},
"name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "5031:9:2",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "5043:6:2",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "5054:4:2",
"type": ""
}
],
"src": "4941:313:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5366:139:2",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "5388:6:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5396:1:2",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5384:3:2"
},
"nodeType": "YulFunctionCall",
"src": "5384:14:2"
},
{
"hexValue": "54797065644d656d566965772f696e646578202d20417474656d707465642074",
"kind": "string",
"nodeType": "YulLiteral",
"src": "5400:34:2",
"type": "",
"value": "TypedMemView/index - Attempted t"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "5377:6:2"
},
"nodeType": "YulFunctionCall",
"src": "5377:58:2"
},
"nodeType": "YulExpressionStatement",
"src": "5377:58:2"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "5456:6:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5464:2:2",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5452:3:2"
},
"nodeType": "YulFunctionCall",
"src": "5452:15:2"
},
{
"hexValue": "6f20696e646578206d6f7265207468616e203332206279746573",
"kind": "string",
"nodeType": "YulLiteral",
"src": "5469:28:2",
"type": "",
"value": "o index more than 32 bytes"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "5445:6:2"
},
"nodeType": "YulFunctionCall",
"src": "5445:53:2"
},
"nodeType": "YulExpressionStatement",
"src": "5445:53:2"
}
]
},
"name": "store_literal_in_memory_b2c061d25dd4dec479f0720f15754fff58a1a4debc7353bd1d3f4b7b23876297",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "5358:6:2",
"type": ""
}
],
"src": "5260:245:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5657:220:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "5667:74:2",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "5733:3:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5738:2:2",
"type": "",
"value": "58"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "5674:58:2"
},
"nodeType": "YulFunctionCall",
"src": "5674:67:2"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "5667:3:2"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "5839:3:2"
}
],
"functionName": {
"name": "store_literal_in_memory_b2c061d25dd4dec479f0720f15754fff58a1a4debc7353bd1d3f4b7b23876297",
"nodeType": "YulIdentifier",
"src": "5750:88:2"
},
"nodeType": "YulFunctionCall",
"src": "5750:93:2"
},
"nodeType": "YulExpressionStatement",
"src": "5750:93:2"
},
{
"nodeType": "YulAssignment",
"src": "5852:19:2",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "5863:3:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5868:2:2",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5859:3:2"
},
"nodeType": "YulFunctionCall",
"src": "5859:12:2"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "5852:3:2"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_b2c061d25dd4dec479f0720f15754fff58a1a4debc7353bd1d3f4b7b23876297_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "5645:3:2",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "5653:3:2",
"type": ""
}
],
"src": "5511:366:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6054:248:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "6064:26:2",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "6076:9:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6087:2:2",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6072:3:2"
},
"nodeType": "YulFunctionCall",
"src": "6072:18:2"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "6064:4:2"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "6111:9:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6122:1:2",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6107:3:2"
},
"nodeType": "YulFunctionCall",
"src": "6107:17:2"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "6130:4:2"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "6136:9:2"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "6126:3:2"
},
"nodeType": "YulFunctionCall",
"src": "6126:20:2"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "6100:6:2"
},
"nodeType": "YulFunctionCall",
"src": "6100:47:2"
},
"nodeType": "YulExpressionStatement",
"src": "6100:47:2"
},
{
"nodeType": "YulAssignment",
"src": "6156:139:2",
"value": {
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "6290:4:2"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_b2c061d25dd4dec479f0720f15754fff58a1a4debc7353bd1d3f4b7b23876297_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "6164:124:2"
},
"nodeType": "YulFunctionCall",
"src": "6164:131:2"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "6156:4:2"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_b2c061d25dd4dec479f0720f15754fff58a1a4debc7353bd1d3f4b7b23876297__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "6034:9:2",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "6049:4:2",
"type": ""
}
],
"src": "5883:419:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6422:34:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "6432:18:2",
"value": {
"name": "pos",
"nodeType": "YulIdentifier",
"src": "6447:3:2"
},
"variableNames": [
{
"name": "updated_pos",
"nodeType": "YulIdentifier",
"src": "6432:11:2"
}
]
}
]
},
"name": "array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "6394:3:2",
"type": ""
},
{
"name": "length",
"nodeType": "YulTypedName",
"src": "6399:6:2",
"type": ""
}
],
"returnVariables": [
{
"name": "updated_pos",
"nodeType": "YulTypedName",
"src": "6410:11:2",
"type": ""
}
],
"src": "6308:148:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6568:134:2",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "6590:6:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6598:1:2",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6586:3:2"
},
"nodeType": "YulFunctionCall",
"src": "6586:14:2"
},
{
"hexValue": "54797065644d656d566965772f696e646578202d204f76657272616e20746865",
"kind": "string",
"nodeType": "YulLiteral",
"src": "6602:34:2",
"type": "",
"value": "TypedMemView/index - Overran the"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "6579:6:2"
},
"nodeType": "YulFunctionCall",
"src": "6579:58:2"
},
"nodeType": "YulExpressionStatement",
"src": "6579:58:2"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "6658:6:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6666:2:2",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6654:3:2"
},
"nodeType": "YulFunctionCall",
"src": "6654:15:2"
},
{
"hexValue": "20766965772e20536c696365206973206174203078",
"kind": "string",
"nodeType": "YulLiteral",
"src": "6671:23:2",
"type": "",
"value": " view. Slice is at 0x"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "6647:6:2"
},
"nodeType": "YulFunctionCall",
"src": "6647:48:2"
},
"nodeType": "YulExpressionStatement",
"src": "6647:48:2"
}
]
},
"name": "store_literal_in_memory_fb6c6ce939dcb005b895abe7a9570250d9c1c31a5440a6a6e28e0acc2d1c6af1",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "6560:6:2",
"type": ""
}
],
"src": "6462:240:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6872:238:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "6882:92:2",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "6966:3:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6971:2:2",
"type": "",
"value": "53"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulIdentifier",
"src": "6889:76:2"
},
"nodeType": "YulFunctionCall",
"src": "6889:85:2"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "6882:3:2"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "7072:3:2"
}
],
"functionName": {
"name": "store_literal_in_memory_fb6c6ce939dcb005b895abe7a9570250d9c1c31a5440a6a6e28e0acc2d1c6af1",
"nodeType": "YulIdentifier",
"src": "6983:88:2"
},
"nodeType": "YulFunctionCall",
"src": "6983:93:2"
},
"nodeType": "YulExpressionStatement",
"src": "6983:93:2"
},
{
"nodeType": "YulAssignment",
"src": "7085:19:2",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "7096:3:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7101:2:2",
"type": "",
"value": "53"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7092:3:2"
},
"nodeType": "YulFunctionCall",
"src": "7092:12:2"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "7085:3:2"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_fb6c6ce939dcb005b895abe7a9570250d9c1c31a5440a6a6e28e0acc2d1c6af1_to_t_string_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "6860:3:2",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "6868:3:2",
"type": ""
}
],
"src": "6708:402:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "7160:53:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "7170:37:2",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "7185:5:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7192:14:2",
"type": "",
"value": "0xffffffffffff"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "7181:3:2"
},
"nodeType": "YulFunctionCall",
"src": "7181:26:2"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "7170:7:2"
}
]
}
]
},
"name": "cleanup_t_uint48",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "7142:5:2",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "7152:7:2",
"type": ""
}
],
"src": "7116:97:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "7262:53:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "7272:36:2",
"value": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7297:3:2",
"type": "",
"value": "208"
},
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "7302:5:2"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "7293:3:2"
},
"nodeType": "YulFunctionCall",
"src": "7293:15:2"
},
"variableNames": [
{
"name": "newValue",
"nodeType": "YulIdentifier",
"src": "7272:8:2"
}
]
}
]
},
"name": "shift_left_208",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "7243:5:2",
"type": ""
}
],
"returnVariables": [
{
"name": "newValue",
"nodeType": "YulTypedName",
"src": "7253:8:2",
"type": ""
}
],
"src": "7219:96:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "7367:48:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "7377:32:2",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "7403:5:2"
}
],
"functionName": {
"name": "shift_left_208",
"nodeType": "YulIdentifier",
"src": "7388:14:2"
},
"nodeType": "YulFunctionCall",
"src": "7388:21:2"
},
"variableNames": [
{
"name": "aligned",
"nodeType": "YulIdentifier",
"src": "7377:7:2"
}
]
}
]
},
"name": "leftAlign_t_uint48",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "7349:5:2",
"type": ""
}
],
"returnVariables": [
{
"name": "aligned",
"nodeType": "YulTypedName",
"src": "7359:7:2",
"type": ""
}
],
"src": "7321:94:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "7502:72:2",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "7519:3:2"
},
{
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "7560:5:2"
}
],
"functionName": {
"name": "cleanup_t_uint48",
"nodeType": "YulIdentifier",
"src": "7543:16:2"
},
"nodeType": "YulFunctionCall",
"src": "7543:23:2"
}
],
"functionName": {
"name": "leftAlign_t_uint48",
"nodeType": "YulIdentifier",
"src": "7524:18:2"
},
"nodeType": "YulFunctionCall",
"src": "7524:43:2"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "7512:6:2"
},
"nodeType": "YulFunctionCall",
"src": "7512:56:2"
},
"nodeType": "YulExpressionStatement",
"src": "7512:56:2"
}
]
},
"name": "abi_encode_t_uint48_to_t_uint48_nonPadded_inplace_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "7490:5:2",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "7497:3:2",
"type": ""
}
],
"src": "7421:153:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "7686:59:2",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "7708:6:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7716:1:2",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7704:3:2"
},
"nodeType": "YulFunctionCall",
"src": "7704:14:2"
},
{
"hexValue": "2077697468206c656e677468203078",
"kind": "string",
"nodeType": "YulLiteral",
"src": "7720:17:2",
"type": "",
"value": " with length 0x"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "7697:6:2"
},
"nodeType": "YulFunctionCall",
"src": "7697:41:2"
},
"nodeType": "YulExpressionStatement",
"src": "7697:41:2"
}
]
},
"name": "store_literal_in_memory_3e6849d566dba71a1ac686a5bd3af1bed003e25465c91471808028cdad9d144b",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "7678:6:2",
"type": ""
}
],
"src": "7580:165:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "7915:238:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "7925:92:2",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "8009:3:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8014:2:2",
"type": "",
"value": "15"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulIdentifier",
"src": "7932:76:2"
},
"nodeType": "YulFunctionCall",
"src": "7932:85:2"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "7925:3:2"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "8115:3:2"
}
],
"functionName": {
"name": "store_literal_in_memory_3e6849d566dba71a1ac686a5bd3af1bed003e25465c91471808028cdad9d144b",
"nodeType": "YulIdentifier",
"src": "8026:88:2"
},
"nodeType": "YulFunctionCall",
"src": "8026:93:2"
},
"nodeType": "YulExpressionStatement",
"src": "8026:93:2"
},
{
"nodeType": "YulAssignment",
"src": "8128:19:2",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "8139:3:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8144:2:2",
"type": "",
"value": "15"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8135:3:2"
},
"nodeType": "YulFunctionCall",
"src": "8135:12:2"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "8128:3:2"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_3e6849d566dba71a1ac686a5bd3af1bed003e25465c91471808028cdad9d144b_to_t_string_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "7903:3:2",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "7911:3:2",
"type": ""
}
],
"src": "7751:402:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "8265:114:2",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "8287:6:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8295:1:2",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8283:3:2"
},
"nodeType": "YulFunctionCall",
"src": "8283:14:2"
},
{
"hexValue": "2e20417474656d7074656420746f20696e646578206174206f66667365742030",
"kind": "string",
"nodeType": "YulLiteral",
"src": "8299:34:2",
"type": "",
"value": ". Attempted to index at offset 0"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "8276:6:2"
},
"nodeType": "YulFunctionCall",
"src": "8276:58:2"
},
"nodeType": "YulExpressionStatement",
"src": "8276:58:2"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "8355:6:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8363:2:2",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8351:3:2"
},
"nodeType": "YulFunctionCall",
"src": "8351:15:2"
},
{
"hexValue": "78",
"kind": "string",
"nodeType": "YulLiteral",
"src": "8368:3:2",
"type": "",
"value": "x"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "8344:6:2"
},
"nodeType": "YulFunctionCall",
"src": "8344:28:2"
},
"nodeType": "YulExpressionStatement",
"src": "8344:28:2"
}
]
},
"name": "store_literal_in_memory_76d133faf43042eef7167f01d32e0891632a5651573db9fc8b6aa42fdbcaf509",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "8257:6:2",
"type": ""
}
],
"src": "8159:220:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "8549:238:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "8559:92:2",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "8643:3:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8648:2:2",
"type": "",
"value": "33"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulIdentifier",
"src": "8566:76:2"
},
"nodeType": "YulFunctionCall",
"src": "8566:85:2"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "8559:3:2"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "8749:3:2"
}
],
"functionName": {
"name": "store_literal_in_memory_76d133faf43042eef7167f01d32e0891632a5651573db9fc8b6aa42fdbcaf509",
"nodeType": "YulIdentifier",
"src": "8660:88:2"
},
"nodeType": "YulFunctionCall",
"src": "8660:93:2"
},
"nodeType": "YulExpressionStatement",
"src": "8660:93:2"
},
{
"nodeType": "YulAssignment",
"src": "8762:19:2",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "8773:3:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8778:2:2",
"type": "",
"value": "33"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8769:3:2"
},
"nodeType": "YulFunctionCall",
"src": "8769:12:2"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "8762:3:2"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_76d133faf43042eef7167f01d32e0891632a5651573db9fc8b6aa42fdbcaf509_to_t_string_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "8537:3:2",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "8545:3:2",
"type": ""
}
],
"src": "8385:402:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "8899:45:2",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "8921:6:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8929:1:2",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8917:3:2"
},
"nodeType": "YulFunctionCall",
"src": "8917:14:2"
},
{
"hexValue": "2e",
"kind": "string",
"nodeType": "YulLiteral",
"src": "8933:3:2",
"type": "",
"value": "."
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "8910:6:2"
},
"nodeType": "YulFunctionCall",
"src": "8910:27:2"
},
"nodeType": "YulExpressionStatement",
"src": "8910:27:2"
}
]
},
"name": "store_literal_in_memory_6f010af653ebe3cb07d297a4ef13366103d392ceffa68dd48232e6e9ff2187bf",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "8891:6:2",
"type": ""
}
],
"src": "8793:151:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "9114:236:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "9124:91:2",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "9208:3:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9213:1:2",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulIdentifier",
"src": "9131:76:2"
},
"nodeType": "YulFunctionCall",
"src": "9131:84:2"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "9124:3:2"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "9313:3:2"
}
],
"functionName": {
"name": "store_literal_in_memory_6f010af653ebe3cb07d297a4ef13366103d392ceffa68dd48232e6e9ff2187bf",
"nodeType": "YulIdentifier",
"src": "9224:88:2"
},
"nodeType": "YulFunctionCall",
"src": "9224:93:2"
},
"nodeType": "YulExpressionStatement",
"src": "9224:93:2"
},
{
"nodeType": "YulAssignment",
"src": "9326:18:2",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "9337:3:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9342:1:2",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "9333:3:2"
},
"nodeType": "YulFunctionCall",
"src": "9333:11:2"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "9326:3:2"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_6f010af653ebe3cb07d297a4ef13366103d392ceffa68dd48232e6e9ff2187bf_to_t_string_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "9102:3:2",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "9110:3:2",
"type": ""
}
],
"src": "8950:400:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "10053:1292:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "10064:155:2",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "10215:3:2"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_fb6c6ce939dcb005b895abe7a9570250d9c1c31a5440a6a6e28e0acc2d1c6af1_to_t_string_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulIdentifier",
"src": "10071:142:2"
},
"nodeType": "YulFunctionCall",
"src": "10071:148:2"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "10064:3:2"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "10289:6:2"
},
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "10298:3:2"
}
],
"functionName": {
"name": "abi_encode_t_uint48_to_t_uint48_nonPadded_inplace_fromStack",
"nodeType": "YulIdentifier",
"src": "10229:59:2"
},
"nodeType": "YulFunctionCall",
"src": "10229:73:2"
},
"nodeType": "YulExpressionStatement",
"src": "10229:73:2"
},
{
"nodeType": "YulAssignment",
"src": "10311:18:2",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "10322:3:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10327:1:2",
"type": "",
"value": "6"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "10318:3:2"
},
"nodeType": "YulFunctionCall",
"src": "10318:11:2"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "10311:3:2"
}
]
},
{
"nodeType": "YulAssignment",
"src": "10339:155:2",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "10490:3:2"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_3e6849d566dba71a1ac686a5bd3af1bed003e25465c91471808028cdad9d144b_to_t_string_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulIdentifier",
"src": "10346:142:2"
},
"nodeType": "YulFunctionCall",
"src": "10346:148:2"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "10339:3:2"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "10564:6:2"
},
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "10573:3:2"
}
],
"functionName": {
"name": "abi_encode_t_uint48_to_t_uint48_nonPadded_inplace_fromStack",
"nodeType": "YulIdentifier",
"src": "10504:59:2"
},
"nodeType": "YulFunctionCall",
"src": "10504:73:2"
},
"nodeType": "YulExpressionStatement",
"src": "10504:73:2"
},
{
"nodeType": "YulAssignment",
"src": "10586:18:2",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "10597:3:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10602:1:2",
"type": "",
"value": "6"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "10593:3:2"
},
"nodeType": "YulFunctionCall",
"src": "10593:11:2"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "10586:3:2"
}
]
},
{
"nodeType": "YulAssignment",
"src": "10614:155:2",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "10765:3:2"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_76d133faf43042eef7167f01d32e0891632a5651573db9fc8b6aa42fdbcaf509_to_t_string_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulIdentifier",
"src": "10621:142:2"
},
"nodeType": "YulFunctionCall",
"src": "10621:148:2"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "10614:3:2"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value2",
"nodeType": "YulIdentifier",
"src": "10839:6:2"
},
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "10848:3:2"
}
],
"functionName": {
"name": "abi_encode_t_uint48_to_t_uint48_nonPadded_inplace_fromStack",
"nodeType": "YulIdentifier",
"src": "10779:59:2"
},
"nodeType": "YulFunctionCall",
"src": "10779:73:2"
},
"nodeType": "YulExpressionStatement",
"src": "10779:73:2"
},
{
"nodeType": "YulAssignment",
"src": "10861:18:2",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "10872:3:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10877:1:2",
"type": "",
"value": "6"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "10868:3:2"
},
"nodeType": "YulFunctionCall",
"src": "10868:11:2"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "10861:3:2"
}
]
},
{
"nodeType": "YulAssignment",
"src": "10889:155:2",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "11040:3:2"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_3e6849d566dba71a1ac686a5bd3af1bed003e25465c91471808028cdad9d144b_to_t_string_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulIdentifier",
"src": "10896:142:2"
},
"nodeType": "YulFunctionCall",
"src": "10896:148:2"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "10889:3:2"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value3",
"nodeType": "YulIdentifier",
"src": "11114:6:2"
},
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "11123:3:2"
}
],
"functionName": {
"name": "abi_encode_t_uint48_to_t_uint48_nonPadded_inplace_fromStack",
"nodeType": "YulIdentifier",
"src": "11054:59:2"
},
"nodeType": "YulFunctionCall",
"src": "11054:73:2"
},
"nodeType": "YulExpressionStatement",
"src": "11054:73:2"
},
{
"nodeType": "YulAssignment",
"src": "11136:18:2",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "11147:3:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11152:1:2",
"type": "",
"value": "6"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "11143:3:2"
},
"nodeType": "YulFunctionCall",
"src": "11143:11:2"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "11136:3:2"
}
]
},
{
"nodeType": "YulAssignment",
"src": "11164:155:2",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "11315:3:2"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_6f010af653ebe3cb07d297a4ef13366103d392ceffa68dd48232e6e9ff2187bf_to_t_string_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulIdentifier",
"src": "11171:142:2"
},
"nodeType": "YulFunctionCall",
"src": "11171:148:2"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "11164:3:2"
}
]
},
{
"nodeType": "YulAssignment",
"src": "11329:10:2",
"value": {
"name": "pos",
"nodeType": "YulIdentifier",
"src": "11336:3:2"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "11329:3:2"
}
]
}
]
},
"name": "abi_encode_tuple_packed_t_stringliteral_fb6c6ce939dcb005b895abe7a9570250d9c1c31a5440a6a6e28e0acc2d1c6af1_t_uint48_t_stringliteral_3e6849d566dba71a1ac686a5bd3af1bed003e25465c91471808028cdad9d144b_t_uint48_t_stringliteral_76d133faf43042eef7167f01d32e0891632a5651573db9fc8b6aa42fdbcaf509_t_uint48_t_stringliteral_3e6849d566dba71a1ac686a5bd3af1bed003e25465c91471808028cdad9d144b_t_uint48_t_stringliteral_6f010af653ebe3cb07d297a4ef13366103d392ceffa68dd48232e6e9ff2187bf__to_t_string_memory_ptr_t_uint48_t_string_memory_ptr_t_uint48_t_string_memory_ptr_t_uint48_t_string_memory_ptr_t_uint48_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "10008:3:2",
"type": ""
},
{
"name": "value3",
"nodeType": "YulTypedName",
"src": "10014:6:2",
"type": ""
},
{
"name": "value2",
"nodeType": "YulTypedName",
"src": "10022:6:2",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "10030:6:2",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "10038:6:2",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "10049:3:2",
"type": ""
}
],
"src": "9356:1989:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "11379:152:2",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11396:1:2",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11399:77:2",
"type": "",
"value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "11389:6:2"
},
"nodeType": "YulFunctionCall",
"src": "11389:88:2"
},
"nodeType": "YulExpressionStatement",
"src": "11389:88:2"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11493:1:2",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11496:4:2",
"type": "",
"value": "0x32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "11486:6:2"
},
"nodeType": "YulFunctionCall",
"src": "11486:15:2"
},
"nodeType": "YulExpressionStatement",
"src": "11486:15:2"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11517:1:2",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11520:4:2",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "11510:6:2"
},
"nodeType": "YulFunctionCall",
"src": "11510:15:2"
},
"nodeType": "YulExpressionStatement",
"src": "11510:15:2"
}
]
},
"name": "panic_error_0x32",
"nodeType": "YulFunctionDefinition",
"src": "11351:180:2"
}
]
},
"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_bytes32(value) -> cleaned {\n cleaned := value\n }\n\n function validator_revert_t_bytes32(value) {\n if iszero(eq(value, cleanup_t_bytes32(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_bytes32(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_bytes32(value)\n }\n\n function abi_decode_tuple_t_bytes32(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_bytes32(add(headStart, offset), dataEnd)\n }\n\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 abi_encode_t_address_to_t_address_fromStack_library(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n function abi_encode_tuple_t_address__to_t_address__fromStack_library_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_address_to_t_address_fromStack_library(value0, add(headStart, 0))\n\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\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 function leftAlign_t_bytes32(value) -> aligned {\n aligned := value\n }\n\n function abi_encode_t_bytes32_to_t_bytes32_nonPadded_inplace_fromStack(value, pos) {\n mstore(pos, leftAlign_t_bytes32(cleanup_t_bytes32(value)))\n }\n\n function leftAlign_t_uint256(value) -> aligned {\n aligned := value\n }\n\n function abi_encode_t_uint256_to_t_uint256_nonPadded_inplace_fromStack(value, pos) {\n mstore(pos, leftAlign_t_uint256(cleanup_t_uint256(value)))\n }\n\n function abi_encode_tuple_packed_t_bytes32_t_uint256__to_t_bytes32_t_uint256__nonPadded_inplace_fromStack_reversed(pos , value1, value0) -> end {\n\n abi_encode_t_bytes32_to_t_bytes32_nonPadded_inplace_fromStack(value0, pos)\n pos := add(pos, 32)\n\n abi_encode_t_uint256_to_t_uint256_nonPadded_inplace_fromStack(value1, pos)\n pos := add(pos, 32)\n\n end := pos\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 cleanup_t_uint8(value) -> cleaned {\n cleaned := and(value, 0xff)\n }\n\n function checked_sub_t_uint8(x, y) -> diff {\n x := cleanup_t_uint8(x)\n y := cleanup_t_uint8(y)\n diff := sub(x, y)\n\n if gt(diff, 0xff) { panic_error_0x11() }\n\n }\n\n function checked_mul_t_uint8(x, y) -> product {\n x := cleanup_t_uint8(x)\n y := cleanup_t_uint8(y)\n let product_raw := mul(x, y)\n product := cleanup_t_uint8(product_raw)\n\n if iszero(eq(product, product_raw)) { panic_error_0x11() }\n\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_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_string_memory_ptr_to_t_string_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_string_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_string_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_string_memory_ptr__to_t_string_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_string_memory_ptr_to_t_string_memory_ptr_fromStack(value0, tail)\n\n }\n\n function store_literal_in_memory_b2c061d25dd4dec479f0720f15754fff58a1a4debc7353bd1d3f4b7b23876297(memPtr) {\n\n mstore(add(memPtr, 0), \"TypedMemView/index - Attempted t\")\n\n mstore(add(memPtr, 32), \"o index more than 32 bytes\")\n\n }\n\n function abi_encode_t_stringliteral_b2c061d25dd4dec479f0720f15754fff58a1a4debc7353bd1d3f4b7b23876297_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 58)\n store_literal_in_memory_b2c061d25dd4dec479f0720f15754fff58a1a4debc7353bd1d3f4b7b23876297(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_b2c061d25dd4dec479f0720f15754fff58a1a4debc7353bd1d3f4b7b23876297__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_b2c061d25dd4dec479f0720f15754fff58a1a4debc7353bd1d3f4b7b23876297_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack(pos, length) -> updated_pos {\n updated_pos := pos\n }\n\n function store_literal_in_memory_fb6c6ce939dcb005b895abe7a9570250d9c1c31a5440a6a6e28e0acc2d1c6af1(memPtr) {\n\n mstore(add(memPtr, 0), \"TypedMemView/index - Overran the\")\n\n mstore(add(memPtr, 32), \" view. Slice is at 0x\")\n\n }\n\n function abi_encode_t_stringliteral_fb6c6ce939dcb005b895abe7a9570250d9c1c31a5440a6a6e28e0acc2d1c6af1_to_t_string_memory_ptr_nonPadded_inplace_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack(pos, 53)\n store_literal_in_memory_fb6c6ce939dcb005b895abe7a9570250d9c1c31a5440a6a6e28e0acc2d1c6af1(pos)\n end := add(pos, 53)\n }\n\n function cleanup_t_uint48(value) -> cleaned {\n cleaned := and(value, 0xffffffffffff)\n }\n\n function shift_left_208(value) -> newValue {\n newValue :=\n\n shl(208, value)\n\n }\n\n function leftAlign_t_uint48(value) -> aligned {\n aligned := shift_left_208(value)\n }\n\n function abi_encode_t_uint48_to_t_uint48_nonPadded_inplace_fromStack(value, pos) {\n mstore(pos, leftAlign_t_uint48(cleanup_t_uint48(value)))\n }\n\n function store_literal_in_memory_3e6849d566dba71a1ac686a5bd3af1bed003e25465c91471808028cdad9d144b(memPtr) {\n\n mstore(add(memPtr, 0), \" with length 0x\")\n\n }\n\n function abi_encode_t_stringliteral_3e6849d566dba71a1ac686a5bd3af1bed003e25465c91471808028cdad9d144b_to_t_string_memory_ptr_nonPadded_inplace_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack(pos, 15)\n store_literal_in_memory_3e6849d566dba71a1ac686a5bd3af1bed003e25465c91471808028cdad9d144b(pos)\n end := add(pos, 15)\n }\n\n function store_literal_in_memory_76d133faf43042eef7167f01d32e0891632a5651573db9fc8b6aa42fdbcaf509(memPtr) {\n\n mstore(add(memPtr, 0), \". Attempted to index at offset 0\")\n\n mstore(add(memPtr, 32), \"x\")\n\n }\n\n function abi_encode_t_stringliteral_76d133faf43042eef7167f01d32e0891632a5651573db9fc8b6aa42fdbcaf509_to_t_string_memory_ptr_nonPadded_inplace_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack(pos, 33)\n store_literal_in_memory_76d133faf43042eef7167f01d32e0891632a5651573db9fc8b6aa42fdbcaf509(pos)\n end := add(pos, 33)\n }\n\n function store_literal_in_memory_6f010af653ebe3cb07d297a4ef13366103d392ceffa68dd48232e6e9ff2187bf(memPtr) {\n\n mstore(add(memPtr, 0), \".\")\n\n }\n\n function abi_encode_t_stringliteral_6f010af653ebe3cb07d297a4ef13366103d392ceffa68dd48232e6e9ff2187bf_to_t_string_memory_ptr_nonPadded_inplace_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack(pos, 1)\n store_literal_in_memory_6f010af653ebe3cb07d297a4ef13366103d392ceffa68dd48232e6e9ff2187bf(pos)\n end := add(pos, 1)\n }\n\n function abi_encode_tuple_packed_t_stringliteral_fb6c6ce939dcb005b895abe7a9570250d9c1c31a5440a6a6e28e0acc2d1c6af1_t_uint48_t_stringliteral_3e6849d566dba71a1ac686a5bd3af1bed003e25465c91471808028cdad9d144b_t_uint48_t_stringliteral_76d133faf43042eef7167f01d32e0891632a5651573db9fc8b6aa42fdbcaf509_t_uint48_t_stringliteral_3e6849d566dba71a1ac686a5bd3af1bed003e25465c91471808028cdad9d144b_t_uint48_t_stringliteral_6f010af653ebe3cb07d297a4ef13366103d392ceffa68dd48232e6e9ff2187bf__to_t_string_memory_ptr_t_uint48_t_string_memory_ptr_t_uint48_t_string_memory_ptr_t_uint48_t_string_memory_ptr_t_uint48_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos , value3, value2, value1, value0) -> end {\n\n pos := abi_encode_t_stringliteral_fb6c6ce939dcb005b895abe7a9570250d9c1c31a5440a6a6e28e0acc2d1c6af1_to_t_string_memory_ptr_nonPadded_inplace_fromStack( pos)\n\n abi_encode_t_uint48_to_t_uint48_nonPadded_inplace_fromStack(value0, pos)\n pos := add(pos, 6)\n\n pos := abi_encode_t_stringliteral_3e6849d566dba71a1ac686a5bd3af1bed003e25465c91471808028cdad9d144b_to_t_string_memory_ptr_nonPadded_inplace_fromStack( pos)\n\n abi_encode_t_uint48_to_t_uint48_nonPadded_inplace_fromStack(value1, pos)\n pos := add(pos, 6)\n\n pos := abi_encode_t_stringliteral_76d133faf43042eef7167f01d32e0891632a5651573db9fc8b6aa42fdbcaf509_to_t_string_memory_ptr_nonPadded_inplace_fromStack( pos)\n\n abi_encode_t_uint48_to_t_uint48_nonPadded_inplace_fromStack(value2, pos)\n pos := add(pos, 6)\n\n pos := abi_encode_t_stringliteral_3e6849d566dba71a1ac686a5bd3af1bed003e25465c91471808028cdad9d144b_to_t_string_memory_ptr_nonPadded_inplace_fromStack( pos)\n\n abi_encode_t_uint48_to_t_uint48_nonPadded_inplace_fromStack(value3, pos)\n pos := add(pos, 6)\n\n pos := abi_encode_t_stringliteral_6f010af653ebe3cb07d297a4ef13366103d392ceffa68dd48232e6e9ff2187bf_to_t_string_memory_ptr_nonPadded_inplace_fromStack( pos)\n\n end := pos\n }\n\n function panic_error_0x32() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n\n}\n",
"id": 2,
"language": "Yul",
"name": "#utility.yul"
}
],
"immutableReferences": {},
"linkReferences": {},
"object": "73000000000000000000000000000000000000000030146080604052600436106100405760003560e01c80635ced058e14610045578063fdc8530814610075575b600080fd5b61005f600480360381019061005a9190610681565b61008c565b60405161006c91906106ef565b60405180910390f35b81801561008157600080fd5b5061008a610099565b005b60008160001c9050919050565b60006100b873e0f5206bbd039e7b0592d8918820024e2a7437b961014d565b905060006040518060400160405280838152602001600a815250905060006100e882600001518360200151610170565b9050600061010060008361019c90919063ffffffff16565b9050600061010d826101c7565b90507fee0e21a0909c175792d67fa4e7c4f99d844405993e69b1ac9985af378f4cda4b8160405161013e9190610723565b60405180910390a15050505050565b60008173ffffffffffffffffffffffffffffffffffffffff1660001b9050919050565b60608282604051602001610185929190610780565b604051602081830303815290604052905092915050565b6000808351905060006020850190506101bd8464ffffffffff1682846101ec565b9250505092915050565b60006101e56020808462ffffff19166102539092919063ffffffff16565b9050919050565b60008082846101fb91906107db565b905060405181111561020c57600090505b6000810361023d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000091505061024c565b61024885858561028a565b9150505b9392505050565b60006008826020610264919061081c565b61026e9190610851565b60ff1661027c8585856102b5565b60001c901c90509392505050565b60008060609050600060189050858317821b9250848317821b9250838317811b925050509392505050565b6000808260ff16036102cc576000801b90506103f2565b6102d5846103f9565b6bffffffffffffffffffffffff168260ff16846102f291906107db565b111561036f576103336103048561041f565b6bffffffffffffffffffffffff1661031b866103f9565b6bffffffffffffffffffffffff16858560ff16610448565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610366919061091e565b60405180910390fd5b60208260ff1611156103b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103ad906109b2565b60405180910390fd5b600060088302905060006103c98661041f565b6bffffffffffffffffffffffff16905060006103e4836104b6565b905080868301511693505050505b9392505050565b6000806bffffffffffffffffffffffff90506000601890508184821c1692505050919050565b6000806bffffffffffffffffffffffff90506000607860ff1690508184821c1692505050919050565b60606000610455866104e5565b9150506000610463866104e5565b9150506000610471866104e5565b915050600061047f866104e5565b915050838383836040516020016104999493929190610ba1565b604051602081830303815290604052945050505050949350505050565b60007f8000000000000000000000000000000000000000000000000000000000000000600183031d9050919050565b6000806000601f90505b600f8160ff16111561054257600060088261050a9190610851565b60ff1685901c905061051b816105a3565b61ffff168417935060108260ff161461053657601084901b93505b600182039150506104ef565b506000600f90505b60ff8160ff16101561059d5760006008826105659190610851565b60ff1685901c9050610576816105a3565b61ffff168317925060008260ff161461059157601083901b92505b6001820391505061054a565b50915091565b60006105b560048360ff16901c6105dc565b60ff168117905060088161ffff16901b90506105d0826105dc565b60ff1681179050919050565b600080600f831690506040518060400160405280601081526020017f30313233343536373839616263646566000000000000000000000000000000008152508160ff16815181106106305761062f610c26565b5b602001015160f81c60f81b60f81c915050919050565b600080fd5b6000819050919050565b61065e8161064b565b811461066957600080fd5b50565b60008135905061067b81610655565b92915050565b60006020828403121561069757610696610646565b5b60006106a58482850161066c565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006106d9826106ae565b9050919050565b6106e9816106ce565b82525050565b600060208201905061070460008301846106e0565b92915050565b6000819050919050565b61071d8161070a565b82525050565b60006020820190506107386000830184610714565b92915050565b6000819050919050565b6107596107548261064b565b61073e565b82525050565b6000819050919050565b61077a6107758261070a565b61075f565b82525050565b600061078c8285610748565b60208201915061079c8284610769565b6020820191508190509392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006107e68261070a565b91506107f18361070a565b9250828201905080821115610809576108086107ac565b5b92915050565b600060ff82169050919050565b60006108278261080f565b91506108328361080f565b9250828203905060ff81111561084b5761084a6107ac565b5b92915050565b600061085c8261080f565b91506108678361080f565b92508282026108758161080f565b9150808214610887576108866107ac565b5b5092915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156108c85780820151818401526020810190506108ad565b60008484015250505050565b6000601f19601f8301169050919050565b60006108f08261088e565b6108fa8185610899565b935061090a8185602086016108aa565b610913816108d4565b840191505092915050565b6000602082019050818103600083015261093881846108e5565b905092915050565b7f54797065644d656d566965772f696e646578202d20417474656d70746564207460008201527f6f20696e646578206d6f7265207468616e203332206279746573000000000000602082015250565b600061099c603a83610899565b91506109a782610940565b604082019050919050565b600060208201905081810360008301526109cb8161098f565b9050919050565b600081905092915050565b7f54797065644d656d566965772f696e646578202d204f76657272616e2074686560008201527f20766965772e20536c6963652069732061742030780000000000000000000000602082015250565b6000610a396035836109d2565b9150610a44826109dd565b603582019050919050565b600065ffffffffffff82169050919050565b60008160d01b9050919050565b6000610a7982610a61565b9050919050565b610a91610a8c82610a4f565b610a6e565b82525050565b7f2077697468206c656e6774682030780000000000000000000000000000000000600082015250565b6000610acd600f836109d2565b9150610ad882610a97565b600f82019050919050565b7f2e20417474656d7074656420746f20696e646578206174206f6666736574203060008201527f7800000000000000000000000000000000000000000000000000000000000000602082015250565b6000610b3f6021836109d2565b9150610b4a82610ae3565b602182019050919050565b7f2e00000000000000000000000000000000000000000000000000000000000000600082015250565b6000610b8b6001836109d2565b9150610b9682610b55565b600182019050919050565b6000610bac82610a2c565b9150610bb88287610a80565b600682019150610bc782610ac0565b9150610bd38286610a80565b600682019150610be282610b32565b9150610bee8285610a80565b600682019150610bfd82610ac0565b9150610c098284610a80565b600682019150610c1882610b7e565b915081905095945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea26469706673582212207129c3efaa5671b2862731b6a07442d28f4d1c3b58120d5222333ed1b2719a6d64736f6c63430008110033",
"opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x40 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x5CED058E EQ PUSH2 0x45 JUMPI DUP1 PUSH4 0xFDC85308 EQ PUSH2 0x75 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5F PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x5A SWAP2 SWAP1 PUSH2 0x681 JUMP JUMPDEST PUSH2 0x8C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x6C SWAP2 SWAP1 PUSH2 0x6EF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x81 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x8A PUSH2 0x99 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 SHR SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB8 PUSH20 0xE0F5206BBD039E7B0592D8918820024E2A7437B9 PUSH2 0x14D JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0xA DUP2 MSTORE POP SWAP1 POP PUSH1 0x0 PUSH2 0xE8 DUP3 PUSH1 0x0 ADD MLOAD DUP4 PUSH1 0x20 ADD MLOAD PUSH2 0x170 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x100 PUSH1 0x0 DUP4 PUSH2 0x19C SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x10D DUP3 PUSH2 0x1C7 JUMP JUMPDEST SWAP1 POP PUSH32 0xEE0E21A0909C175792D67FA4E7C4F99D844405993E69B1AC9985AF378F4CDA4B DUP2 PUSH1 0x40 MLOAD PUSH2 0x13E SWAP2 SWAP1 PUSH2 0x723 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SHL SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x185 SWAP3 SWAP2 SWAP1 PUSH2 0x780 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 MLOAD SWAP1 POP PUSH1 0x0 PUSH1 0x20 DUP6 ADD SWAP1 POP PUSH2 0x1BD DUP5 PUSH5 0xFFFFFFFFFF AND DUP3 DUP5 PUSH2 0x1EC JUMP JUMPDEST SWAP3 POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1E5 PUSH1 0x20 DUP1 DUP5 PUSH3 0xFFFFFF NOT AND PUSH2 0x253 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 PUSH2 0x1FB SWAP2 SWAP1 PUSH2 0x7DB JUMP JUMPDEST SWAP1 POP PUSH1 0x40 MLOAD DUP2 GT ISZERO PUSH2 0x20C JUMPI PUSH1 0x0 SWAP1 POP JUMPDEST PUSH1 0x0 DUP2 SUB PUSH2 0x23D JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000 SWAP2 POP POP PUSH2 0x24C JUMP JUMPDEST PUSH2 0x248 DUP6 DUP6 DUP6 PUSH2 0x28A JUMP JUMPDEST SWAP2 POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x8 DUP3 PUSH1 0x20 PUSH2 0x264 SWAP2 SWAP1 PUSH2 0x81C JUMP JUMPDEST PUSH2 0x26E SWAP2 SWAP1 PUSH2 0x851 JUMP JUMPDEST PUSH1 0xFF AND PUSH2 0x27C DUP6 DUP6 DUP6 PUSH2 0x2B5 JUMP JUMPDEST PUSH1 0x0 SHR SWAP1 SHR SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x60 SWAP1 POP PUSH1 0x0 PUSH1 0x18 SWAP1 POP DUP6 DUP4 OR DUP3 SHL SWAP3 POP DUP5 DUP4 OR DUP3 SHL SWAP3 POP DUP4 DUP4 OR DUP2 SHL SWAP3 POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0xFF AND SUB PUSH2 0x2CC JUMPI PUSH1 0x0 DUP1 SHL SWAP1 POP PUSH2 0x3F2 JUMP JUMPDEST PUSH2 0x2D5 DUP5 PUSH2 0x3F9 JUMP JUMPDEST PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH1 0xFF AND DUP5 PUSH2 0x2F2 SWAP2 SWAP1 PUSH2 0x7DB JUMP JUMPDEST GT ISZERO PUSH2 0x36F JUMPI PUSH2 0x333 PUSH2 0x304 DUP6 PUSH2 0x41F JUMP JUMPDEST PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x31B DUP7 PUSH2 0x3F9 JUMP JUMPDEST PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 DUP6 PUSH1 0xFF AND PUSH2 0x448 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x366 SWAP2 SWAP1 PUSH2 0x91E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x20 DUP3 PUSH1 0xFF AND GT ISZERO PUSH2 0x3B6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3AD SWAP1 PUSH2 0x9B2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x8 DUP4 MUL SWAP1 POP PUSH1 0x0 PUSH2 0x3C9 DUP7 PUSH2 0x41F JUMP JUMPDEST PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 PUSH2 0x3E4 DUP4 PUSH2 0x4B6 JUMP JUMPDEST SWAP1 POP DUP1 DUP7 DUP4 ADD MLOAD AND SWAP4 POP POP POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 POP PUSH1 0x0 PUSH1 0x18 SWAP1 POP DUP2 DUP5 DUP3 SHR AND SWAP3 POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 POP PUSH1 0x0 PUSH1 0x78 PUSH1 0xFF AND SWAP1 POP DUP2 DUP5 DUP3 SHR AND SWAP3 POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x455 DUP7 PUSH2 0x4E5 JUMP JUMPDEST SWAP2 POP POP PUSH1 0x0 PUSH2 0x463 DUP7 PUSH2 0x4E5 JUMP JUMPDEST SWAP2 POP POP PUSH1 0x0 PUSH2 0x471 DUP7 PUSH2 0x4E5 JUMP JUMPDEST SWAP2 POP POP PUSH1 0x0 PUSH2 0x47F DUP7 PUSH2 0x4E5 JUMP JUMPDEST SWAP2 POP POP DUP4 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x499 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xBA1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP5 POP POP POP POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x8000000000000000000000000000000000000000000000000000000000000000 PUSH1 0x1 DUP4 SUB SAR SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x1F SWAP1 POP JUMPDEST PUSH1 0xF DUP2 PUSH1 0xFF AND GT ISZERO PUSH2 0x542 JUMPI PUSH1 0x0 PUSH1 0x8 DUP3 PUSH2 0x50A SWAP2 SWAP1 PUSH2 0x851 JUMP JUMPDEST PUSH1 0xFF AND DUP6 SWAP1 SHR SWAP1 POP PUSH2 0x51B DUP2 PUSH2 0x5A3 JUMP JUMPDEST PUSH2 0xFFFF AND DUP5 OR SWAP4 POP PUSH1 0x10 DUP3 PUSH1 0xFF AND EQ PUSH2 0x536 JUMPI PUSH1 0x10 DUP5 SWAP1 SHL SWAP4 POP JUMPDEST PUSH1 0x1 DUP3 SUB SWAP2 POP POP PUSH2 0x4EF JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0xF SWAP1 POP JUMPDEST PUSH1 0xFF DUP2 PUSH1 0xFF AND LT ISZERO PUSH2 0x59D JUMPI PUSH1 0x0 PUSH1 0x8 DUP3 PUSH2 0x565 SWAP2 SWAP1 PUSH2 0x851 JUMP JUMPDEST PUSH1 0xFF AND DUP6 SWAP1 SHR SWAP1 POP PUSH2 0x576 DUP2 PUSH2 0x5A3 JUMP JUMPDEST PUSH2 0xFFFF AND DUP4 OR SWAP3 POP PUSH1 0x0 DUP3 PUSH1 0xFF AND EQ PUSH2 0x591 JUMPI PUSH1 0x10 DUP4 SWAP1 SHL SWAP3 POP JUMPDEST PUSH1 0x1 DUP3 SUB SWAP2 POP POP PUSH2 0x54A JUMP JUMPDEST POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5B5 PUSH1 0x4 DUP4 PUSH1 0xFF AND SWAP1 SHR PUSH2 0x5DC JUMP JUMPDEST PUSH1 0xFF AND DUP2 OR SWAP1 POP PUSH1 0x8 DUP2 PUSH2 0xFFFF AND SWAP1 SHL SWAP1 POP PUSH2 0x5D0 DUP3 PUSH2 0x5DC JUMP JUMPDEST PUSH1 0xFF AND DUP2 OR SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0xF DUP4 AND SWAP1 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x10 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x3031323334353637383961626364656600000000000000000000000000000000 DUP2 MSTORE POP DUP2 PUSH1 0xFF AND DUP2 MLOAD DUP2 LT PUSH2 0x630 JUMPI PUSH2 0x62F PUSH2 0xC26 JUMP JUMPDEST JUMPDEST PUSH1 0x20 ADD ADD MLOAD PUSH1 0xF8 SHR PUSH1 0xF8 SHL PUSH1 0xF8 SHR SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x65E DUP2 PUSH2 0x64B JUMP JUMPDEST DUP2 EQ PUSH2 0x669 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x67B DUP2 PUSH2 0x655 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x697 JUMPI PUSH2 0x696 PUSH2 0x646 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x6A5 DUP5 DUP3 DUP6 ADD PUSH2 0x66C JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6D9 DUP3 PUSH2 0x6AE JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x6E9 DUP2 PUSH2 0x6CE JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x704 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x6E0 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x71D DUP2 PUSH2 0x70A JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x738 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x714 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x759 PUSH2 0x754 DUP3 PUSH2 0x64B JUMP JUMPDEST PUSH2 0x73E JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x77A PUSH2 0x775 DUP3 PUSH2 0x70A JUMP JUMPDEST PUSH2 0x75F JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x78C DUP3 DUP6 PUSH2 0x748 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH2 0x79C DUP3 DUP5 PUSH2 0x769 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP2 POP DUP2 SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x7E6 DUP3 PUSH2 0x70A JUMP JUMPDEST SWAP2 POP PUSH2 0x7F1 DUP4 PUSH2 0x70A JUMP JUMPDEST SWAP3 POP DUP3 DUP3 ADD SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x809 JUMPI PUSH2 0x808 PUSH2 0x7AC JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x827 DUP3 PUSH2 0x80F JUMP JUMPDEST SWAP2 POP PUSH2 0x832 DUP4 PUSH2 0x80F JUMP JUMPDEST SWAP3 POP DUP3 DUP3 SUB SWAP1 POP PUSH1 0xFF DUP2 GT ISZERO PUSH2 0x84B JUMPI PUSH2 0x84A PUSH2 0x7AC JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x85C DUP3 PUSH2 0x80F JUMP JUMPDEST SWAP2 POP PUSH2 0x867 DUP4 PUSH2 0x80F JUMP JUMPDEST SWAP3 POP DUP3 DUP3 MUL PUSH2 0x875 DUP2 PUSH2 0x80F JUMP JUMPDEST SWAP2 POP DUP1 DUP3 EQ PUSH2 0x887 JUMPI PUSH2 0x886 PUSH2 0x7AC JUMP JUMPDEST JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x8C8 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x8AD JUMP JUMPDEST PUSH1 0x0 DUP5 DUP5 ADD MSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8F0 DUP3 PUSH2 0x88E JUMP JUMPDEST PUSH2 0x8FA DUP2 DUP6 PUSH2 0x899 JUMP JUMPDEST SWAP4 POP PUSH2 0x90A DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x8AA JUMP JUMPDEST PUSH2 0x913 DUP2 PUSH2 0x8D4 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x938 DUP2 DUP5 PUSH2 0x8E5 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x54797065644D656D566965772F696E646578202D20417474656D707465642074 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6F20696E646578206D6F7265207468616E203332206279746573000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x99C PUSH1 0x3A DUP4 PUSH2 0x899 JUMP JUMPDEST SWAP2 POP PUSH2 0x9A7 DUP3 PUSH2 0x940 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x9CB DUP2 PUSH2 0x98F JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x54797065644D656D566965772F696E646578202D204F76657272616E20746865 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x20766965772E20536C6963652069732061742030780000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA39 PUSH1 0x35 DUP4 PUSH2 0x9D2 JUMP JUMPDEST SWAP2 POP PUSH2 0xA44 DUP3 PUSH2 0x9DD JUMP JUMPDEST PUSH1 0x35 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH6 0xFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0xD0 SHL SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA79 DUP3 PUSH2 0xA61 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xA91 PUSH2 0xA8C DUP3 PUSH2 0xA4F JUMP JUMPDEST PUSH2 0xA6E JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH32 0x2077697468206C656E6774682030780000000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xACD PUSH1 0xF DUP4 PUSH2 0x9D2 JUMP JUMPDEST SWAP2 POP PUSH2 0xAD8 DUP3 PUSH2 0xA97 JUMP JUMPDEST PUSH1 0xF DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x2E20417474656D7074656420746F20696E646578206174206F66667365742030 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x7800000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB3F PUSH1 0x21 DUP4 PUSH2 0x9D2 JUMP JUMPDEST SWAP2 POP PUSH2 0xB4A DUP3 PUSH2 0xAE3 JUMP JUMPDEST PUSH1 0x21 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x2E00000000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB8B PUSH1 0x1 DUP4 PUSH2 0x9D2 JUMP JUMPDEST SWAP2 POP PUSH2 0xB96 DUP3 PUSH2 0xB55 JUMP JUMPDEST PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xBAC DUP3 PUSH2 0xA2C JUMP JUMPDEST SWAP2 POP PUSH2 0xBB8 DUP3 DUP8 PUSH2 0xA80 JUMP JUMPDEST PUSH1 0x6 DUP3 ADD SWAP2 POP PUSH2 0xBC7 DUP3 PUSH2 0xAC0 JUMP JUMPDEST SWAP2 POP PUSH2 0xBD3 DUP3 DUP7 PUSH2 0xA80 JUMP JUMPDEST PUSH1 0x6 DUP3 ADD SWAP2 POP PUSH2 0xBE2 DUP3 PUSH2 0xB32 JUMP JUMPDEST SWAP2 POP PUSH2 0xBEE DUP3 DUP6 PUSH2 0xA80 JUMP JUMPDEST PUSH1 0x6 DUP3 ADD SWAP2 POP PUSH2 0xBFD DUP3 PUSH2 0xAC0 JUMP JUMPDEST SWAP2 POP PUSH2 0xC09 DUP3 DUP5 PUSH2 0xA80 JUMP JUMPDEST PUSH1 0x6 DUP3 ADD SWAP2 POP PUSH2 0xC18 DUP3 PUSH2 0xB7E JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH18 0x29C3EFAA5671B2862731B6A07442D28F4D1C EXTCODESIZE PC SLT 0xD MSTORE 0x22 CALLER RETURNDATACOPY 0xD1 0xB2 PUSH18 0x9A6D64736F6C634300081100330000000000 ",
"sourceMap": "91:1332:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;910:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1045:367;;;;;;;;;;;;;:::i;:::-;;910:127;971:7;1022:4;1014:13;;991:38;;910:127;;;:::o;1045:367::-;1080:12;1095:60;1112:42;1095:16;:60::i;:::-;1080:75;;1166:10;1180:11;;;;;;;;1182:4;1180:11;;;;1188:2;1180:11;;;1166:25;;1204:20;1227:42;1247:1;:11;;;1260:1;:8;;;1227:19;:42::i;:::-;1204:65;;1280:20;1303:14;1315:1;1303:7;:11;;:14;;;;:::i;:::-;1280:37;;1330:16;1349:21;1357:12;1349:7;:21::i;:::-;1330:40;;1388:16;1395:8;1388:16;;;;;;:::i;:::-;;;;;;;;1070:342;;;;;1045:367::o;773:129::-;836:7;887:4;871:22;;863:31;;856:38;;773:129;;;:::o;295:201::-;384:12;447:9;471:6;416:72;;;;;;;;;:::i;:::-;;;;;;;;;;;;;409:79;;295:201;;;;:::o;12905:369:1:-;12975:7;12995:12;13010:3;:10;12995:25;;13033:12;13162:4;13157:3;13153:14;13145:22;;13240:26;13246:7;13240:26;;13255:4;13261;13240:5;:26::i;:::-;13233:33;;;;12905:369;;;;:::o;637:127:0:-;695:7;730:25;749:2;752;730:8;:18;;;;;:25;;;;;:::i;:::-;715:41;;637:127;;;:::o;12084:414:1:-;12165:15;12193:12;12215:4;12208;:11;;;;:::i;:::-;12193:26;;12337:4;12331:11;12325:4;12322:21;12319:38;;;12354:1;12346:9;;12319:38;12390:1;12382:4;:9;12378:53;;12415:4;12408:11;;;;;12378:53;12451:39;12472:5;12479:4;12485;12451:20;:39::i;:::-;12441:49;;12182:316;12084:414;;;;;;:::o;20447:193::-;20536:14;20630:1;20620:6;20615:2;:11;;;;:::i;:::-;20614:17;;;;:::i;:::-;20570:62;;20578:30;20584:7;20593:6;20601;20578:5;:30::i;:::-;20570:39;;:62;;20563:69;;20447:193;;;;;:::o;11005:528::-;11100:15;11128:19;11150:2;11128:24;;11163:18;11184:2;11163:23;;11334:5;11325:7;11322:18;11309:11;11305:36;11294:47;;11410:4;11401:7;11398:17;11385:11;11381:35;11370:46;;11484:4;11475:7;11472:17;11460:10;11456:34;11445:45;;11206:320;;11005:528;;;;;:::o;19357:734::-;19442:14;19483:1;19473:6;:11;;;19469:34;;19501:1;19493:10;;19486:17;;;;19469:34;19536:12;19540:7;19536:3;:12::i;:::-;19518:30;;19527:6;19518:15;;:6;:15;;;;:::i;:::-;:30;19514:139;;;19572:68;19588:12;19592:7;19588:3;:12::i;:::-;19572:68;;19602:12;19606:7;19602:3;:12::i;:::-;19572:68;;19616:6;19632;19624:15;;19572;:68::i;:::-;19565:76;;;;;;;;;;;:::i;:::-;;;;;;;;19514:139;19681:2;19671:6;:12;;;;19663:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;19759:15;19831:1;19822:6;:10;19810:22;;19854:12;19869;19873:7;19869:3;:12::i;:::-;19854:27;;;;19892:13;19908:19;19917:9;19908:8;:19::i;:::-;19892:35;;20067:5;20057:6;20051:4;20047:17;20041:24;20037:36;20027:46;;19947:137;;;19357:734;;;;;;:::o;15553:339::-;15606:11;15630:13;2806:26;15630:27;;15699:18;15720:2;15699:23;;15868:5;15858:7;15846:10;15842:24;15838:36;15830:44;;15742:143;;15553:339;;;:::o;14364:341::-;14417:11;14441:13;2806:26;14441:27;;14510:14;2932:7;14510:29;;;;14681:5;14671:7;14663:6;14659:20;14655:32;14647:40;;14559:139;;14364:341;;;:::o;18090:753::-;18225:17;18263:9;18276:15;18286:4;18276:9;:15::i;:::-;18260:31;;;18305:9;18318:15;18328:4;18318:9;:15::i;:::-;18302:31;;;18347:9;18360:17;18370:6;18360:9;:17::i;:::-;18344:33;;;18391:9;18404:17;18414:6;18404:9;:17::i;:::-;18388:33;;;18575:1;18639;18721;18785;18459:365;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;18432:403;;18249:594;;;;18090:753;;;;;;:::o;6389:318::-;6441:12;6622:66;6618:1;6612:4;6608:12;6604:85;6596:93;;6389:318;;;:::o;4189:688::-;4243:13;4258:14;4290:7;4300:2;4290:12;;4285:266;4308:2;4304:1;:6;;;4285:266;;;4328:11;4359:1;4355;:5;;;;:::i;:::-;4348:13;;:2;:13;;4328:34;;4386:14;4394:5;4386:7;:14::i;:::-;4377:23;;;;;;4424:2;4419:1;:7;;;4415:60;;4457:2;4447:12;;;;;4415:60;4523:1;4518:6;;;;4313:238;4285:266;;;;4607:7;4617:2;4607:12;;4602:268;4625:3;4621:1;:7;;;4602:268;;;4646:11;4677:1;4673;:5;;;;:::i;:::-;4666:13;;:2;:13;;4646:34;;4705:14;4713:5;4705:7;:14::i;:::-;4695:24;;;;;;4743:1;4738;:6;;;4734:60;;4776:2;4765:13;;;;;4734:60;4842:1;4837:6;;;;4631:239;4602:268;;;;4189:688;;;:::o;3652:203::-;3702:14;3740:18;3756:1;3750:2;:7;;;;3740:9;:18::i;:::-;3729:29;;;;;;3795:1;3783:13;;;;;;;3818;3828:2;3818:9;:13::i;:::-;3807:24;;;;;;3652:203;;;:::o;3286:189::-;3341:11;3365:13;3389:4;3381:5;:12;3365:28;;3444:13;;;;;;;;;;;;;;;;;3458:7;3444:22;;;;;;;;;;:::i;:::-;;;;;;;;;;3438:29;;3430:37;;3354:121;3286:189;;;:::o;88:117:2:-;197:1;194;187: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:329::-;749:6;798:2;786:9;777:7;773:23;769:32;766:119;;;804:79;;:::i;:::-;766:119;924:1;949:53;994:7;985:6;974:9;970:22;949:53;:::i;:::-;939:63;;895:117;690:329;;;;:::o;1025:126::-;1062:7;1102:42;1095:5;1091:54;1080:65;;1025:126;;;:::o;1157:96::-;1194:7;1223:24;1241:5;1223:24;:::i;:::-;1212:35;;1157:96;;;:::o;1259:126::-;1354:24;1372:5;1354:24;:::i;:::-;1349:3;1342:37;1259:126;;:::o;1391:238::-;1492:4;1530:2;1519:9;1515:18;1507:26;;1543:79;1619:1;1608:9;1604:17;1595:6;1543:79;:::i;:::-;1391:238;;;;:::o;1635:77::-;1672:7;1701:5;1690:16;;1635:77;;;:::o;1718:118::-;1805:24;1823:5;1805:24;:::i;:::-;1800:3;1793:37;1718:118;;:::o;1842:222::-;1935:4;1973:2;1962:9;1958:18;1950:26;;1986:71;2054:1;2043:9;2039:17;2030:6;1986:71;:::i;:::-;1842:222;;;;:::o;2070:79::-;2109:7;2138:5;2127:16;;2070:79;;;:::o;2155:157::-;2260:45;2280:24;2298:5;2280:24;:::i;:::-;2260:45;:::i;:::-;2255:3;2248:58;2155:157;;:::o;2318:79::-;2357:7;2386:5;2375:16;;2318:79;;;:::o;2403:157::-;2508:45;2528:24;2546:5;2528:24;:::i;:::-;2508:45;:::i;:::-;2503:3;2496:58;2403:157;;:::o;2566:397::-;2706:3;2721:75;2792:3;2783:6;2721:75;:::i;:::-;2821:2;2816:3;2812:12;2805:19;;2834:75;2905:3;2896:6;2834:75;:::i;:::-;2934:2;2929:3;2925:12;2918:19;;2954:3;2947:10;;2566:397;;;;;:::o;2969:180::-;3017:77;3014:1;3007:88;3114:4;3111:1;3104:15;3138:4;3135:1;3128:15;3155:191;3195:3;3214:20;3232:1;3214:20;:::i;:::-;3209:25;;3248:20;3266:1;3248:20;:::i;:::-;3243:25;;3291:1;3288;3284:9;3277:16;;3312:3;3309:1;3306:10;3303:36;;;3319:18;;:::i;:::-;3303:36;3155:191;;;;:::o;3352:86::-;3387:7;3427:4;3420:5;3416:16;3405:27;;3352:86;;;:::o;3444:191::-;3482:4;3502:18;3518:1;3502:18;:::i;:::-;3497:23;;3534:18;3550:1;3534:18;:::i;:::-;3529:23;;3576:1;3573;3569:9;3561:17;;3600:4;3594;3591:14;3588:40;;;3608:18;;:::i;:::-;3588:40;3444:191;;;;:::o;3641:271::-;3679:7;3702:18;3718:1;3702:18;:::i;:::-;3697:23;;3734:18;3750:1;3734:18;:::i;:::-;3729:23;;3787:1;3784;3780:9;3809:28;3825:11;3809:28;:::i;:::-;3798:39;;3869:11;3860:7;3857:24;3847:58;;3885:18;;:::i;:::-;3847:58;3687:225;3641:271;;;;:::o;3918:99::-;3970:6;4004:5;3998:12;3988:22;;3918:99;;;:::o;4023:169::-;4107:11;4141:6;4136:3;4129:19;4181:4;4176:3;4172:14;4157:29;;4023:169;;;;:::o;4198:246::-;4279:1;4289:113;4303:6;4300:1;4297:13;4289:113;;;4388:1;4383:3;4379:11;4373:18;4369:1;4364:3;4360:11;4353:39;4325:2;4322:1;4318:10;4313:15;;4289:113;;;4436:1;4427:6;4422:3;4418:16;4411:27;4260:184;4198:246;;;:::o;4450:102::-;4491:6;4542:2;4538:7;4533:2;4526:5;4522:14;4518:28;4508:38;;4450:102;;;:::o;4558:377::-;4646:3;4674:39;4707:5;4674:39;:::i;:::-;4729:71;4793:6;4788:3;4729:71;:::i;:::-;4722:78;;4809:65;4867:6;4862:3;4855:4;4848:5;4844:16;4809:65;:::i;:::-;4899:29;4921:6;4899:29;:::i;:::-;4894:3;4890:39;4883:46;;4650:285;4558:377;;;;:::o;4941:313::-;5054:4;5092:2;5081:9;5077:18;5069:26;;5141:9;5135:4;5131:20;5127:1;5116:9;5112:17;5105:47;5169:78;5242:4;5233:6;5169:78;:::i;:::-;5161:86;;4941:313;;;;:::o;5260:245::-;5400:34;5396:1;5388:6;5384:14;5377:58;5469:28;5464:2;5456:6;5452:15;5445:53;5260:245;:::o;5511:366::-;5653:3;5674:67;5738:2;5733:3;5674:67;:::i;:::-;5667:74;;5750:93;5839:3;5750:93;:::i;:::-;5868:2;5863:3;5859:12;5852:19;;5511:366;;;:::o;5883:419::-;6049:4;6087:2;6076:9;6072:18;6064:26;;6136:9;6130:4;6126:20;6122:1;6111:9;6107:17;6100:47;6164:131;6290:4;6164:131;:::i;:::-;6156:139;;5883:419;;;:::o;6308:148::-;6410:11;6447:3;6432:18;;6308:148;;;;:::o;6462:240::-;6602:34;6598:1;6590:6;6586:14;6579:58;6671:23;6666:2;6658:6;6654:15;6647:48;6462:240;:::o;6708:402::-;6868:3;6889:85;6971:2;6966:3;6889:85;:::i;:::-;6882:92;;6983:93;7072:3;6983:93;:::i;:::-;7101:2;7096:3;7092:12;7085:19;;6708:402;;;:::o;7116:97::-;7152:7;7192:14;7185:5;7181:26;7170:37;;7116:97;;;:::o;7219:96::-;7253:8;7302:5;7297:3;7293:15;7272:36;;7219:96;;;:::o;7321:94::-;7359:7;7388:21;7403:5;7388:21;:::i;:::-;7377:32;;7321:94;;;:::o;7421:153::-;7524:43;7543:23;7560:5;7543:23;:::i;:::-;7524:43;:::i;:::-;7519:3;7512:56;7421:153;;:::o;7580:165::-;7720:17;7716:1;7708:6;7704:14;7697:41;7580:165;:::o;7751:402::-;7911:3;7932:85;8014:2;8009:3;7932:85;:::i;:::-;7925:92;;8026:93;8115:3;8026:93;:::i;:::-;8144:2;8139:3;8135:12;8128:19;;7751:402;;;:::o;8159:220::-;8299:34;8295:1;8287:6;8283:14;8276:58;8368:3;8363:2;8355:6;8351:15;8344:28;8159:220;:::o;8385:402::-;8545:3;8566:85;8648:2;8643:3;8566:85;:::i;:::-;8559:92;;8660:93;8749:3;8660:93;:::i;:::-;8778:2;8773:3;8769:12;8762:19;;8385:402;;;:::o;8793:151::-;8933:3;8929:1;8921:6;8917:14;8910:27;8793:151;:::o;8950:400::-;9110:3;9131:84;9213:1;9208:3;9131:84;:::i;:::-;9124:91;;9224:93;9313:3;9224:93;:::i;:::-;9342:1;9337:3;9333:11;9326:18;;8950:400;;;:::o;9356:1989::-;10049:3;10071:148;10215:3;10071:148;:::i;:::-;10064:155;;10229:73;10298:3;10289:6;10229:73;:::i;:::-;10327:1;10322:3;10318:11;10311:18;;10346:148;10490:3;10346:148;:::i;:::-;10339:155;;10504:73;10573:3;10564:6;10504:73;:::i;:::-;10602:1;10597:3;10593:11;10586:18;;10621:148;10765:3;10621:148;:::i;:::-;10614:155;;10779:73;10848:3;10839:6;10779:73;:::i;:::-;10877:1;10872:3;10868:11;10861:18;;10896:148;11040:3;10896:148;:::i;:::-;10889:155;;11054:73;11123:3;11114:6;11054:73;:::i;:::-;11152:1;11147:3;11143:11;11136:18;;11171:148;11315:3;11171:148;:::i;:::-;11164:155;;11336:3;11329:10;;9356:1989;;;;;;;:::o;11351:180::-;11399:77;11396:1;11389:88;11496:4;11493:1;11486:15;11520:4;11517:1;11510:15"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "642200",
"executionCost": "701",
"totalCost": "642901"
},
"external": {
"bytes32ToAddress(bytes32)": "619",
"tryIt()": "infinite"
},
"internal": {
"_amount(bytes29)": "infinite",
"_recipient(bytes29)": "infinite",
"addressToBytes32(address)": "40",
"formatSample(bytes32,uint256)": "infinite"
}
},
"methodIdentifiers": {
"bytes32ToAddress(bytes32)": "5ced058e",
"tryIt()": "fdc85308"
}
},
"abi": [
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "Amount",
"type": "event"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_buf",
"type": "bytes32"
}
],
"name": "bytes32ToAddress",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "pure",
"type": "function"
}
]
}
{
"compiler": {
"version": "0.8.17+commit.8df45f5f"
},
"language": "Solidity",
"output": {
"abi": [
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "Amount",
"type": "event"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_buf",
"type": "bytes32"
}
],
"name": "bytes32ToAddress",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "pure",
"type": "function"
}
],
"devdoc": {
"kind": "dev",
"methods": {},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
},
"settings": {
"compilationTarget": {
"Sample.sol": "Sample"
},
"evmVersion": "london",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": false,
"runs": 200
},
"remappings": []
},
"sources": {
"Sample.sol": {
"keccak256": "0x5e3cc029b3e17b3deb01ecad7741e31db882f16341226776d3bc6afac9212736",
"license": "MIT",
"urls": [
"bzz-raw://c80f3dd992b39a5c745eb09f80a950fb4784d5f62a6785ec46d265b0a868848e",
"dweb:/ipfs/QmYUaKZuZYAth9Rpb5PgPoV27C8Ugj7tarKWNGbQnq5CfX"
]
},
"TypedMemView.sol": {
"keccak256": "0x72e0dbe7657416e4d2702a03f0152d3f5d29f58ba3d86f5d1daf7aeac4961717",
"license": "MIT OR Apache-2.0",
"urls": [
"bzz-raw://467b75a093cf94aa99f4fb8af1b1f602a65649ecdb821def1974c556c7016bd5",
"dweb:/ipfs/QmdKwpuFxKmB9GGrC2KHhyjwXGwGZouGbaTEXpUtG9J5tr"
]
}
},
"version": 1
}
{
"deploy": {
"VM:-": {
"linkReferences": {
"Sample.sol": {
"Sample": "<address>"
}
},
"autoDeployLib": true
},
"main:1": {
"linkReferences": {
"Sample.sol": {
"Sample": "<address>"
}
},
"autoDeployLib": true
},
"ropsten:3": {
"linkReferences": {
"Sample.sol": {
"Sample": "<address>"
}
},
"autoDeployLib": true
},
"rinkeby:4": {
"linkReferences": {
"Sample.sol": {
"Sample": "<address>"
}
},
"autoDeployLib": true
},
"kovan:42": {
"linkReferences": {
"Sample.sol": {
"Sample": "<address>"
}
},
"autoDeployLib": true
},
"goerli:5": {
"linkReferences": {
"Sample.sol": {
"Sample": "<address>"
}
},
"autoDeployLib": true
},
"Custom": {
"linkReferences": {
"Sample.sol": {
"Sample": "<address>"
}
},
"autoDeployLib": true
}
},
"data": {
"bytecode": {
"functionDebugData": {},
"generatedSources": [],
"linkReferences": {
"Sample.sol": {
"Sample": [
{
"length": 20,
"start": 330
},
{
"length": 20,
"start": 463
}
]
}
},
"object": "608060405234801561001057600080fd5b50610dfe806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c8063687888681461004657806386b234f514610064578063b29f083514610082575b600080fd5b61004e61008c565b60405161005b91906107a8565b60405180910390f35b61006c6100de565b6040516100799190610804565b60405180910390f35b61008a6101ad565b005b60008061009761020b565b905060006100ad82600001518360200151610253565b905060006100c560008361027f90919063ffffffff16565b905060006100d2826102aa565b90508094505050505090565b6000806100e961020b565b905060006100ff82600001518360200151610253565b9050600061011760008361027f90919063ffffffff16565b90506000610124826102cf565b9050600073__$444bebbe5b1c08ea17d8fdfa4d915df024$__635ced058e836040518263ffffffff1660e01b815260040161015f9190610838565b602060405180830381865af415801561017c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101a09190610884565b9050809550505050505090565b73__$444bebbe5b1c08ea17d8fdfa4d915df024$__63fdc853086040518163ffffffff1660e01b815260040160006040518083038186803b1580156101f157600080fd5b505af4158015610205573d6000803e3d6000fd5b50505050565b610213610772565b61021b610772565b61023873e0f5206bbd039e7b0592d8918820024e2a7437b96102f5565b816000018181525050607b8160200181815250508091505090565b606082826040516020016102689291906108f3565b604051602081830303815290604052905092915050565b6000808351905060006020850190506102a08464ffffffffff168284610318565b9250505092915050565b60006102c86020808462ffffff191661037f9092919063ffffffff16565b9050919050565b60006102ee600060208462ffffff19166103b69092919063ffffffff16565b9050919050565b60008173ffffffffffffffffffffffffffffffffffffffff1660001b9050919050565b6000808284610327919061094e565b905060405181111561033857600090505b60008103610369577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000915050610378565b6103748585856104fa565b9150505b9392505050565b60006008826020610390919061098f565b61039a91906109c4565b60ff166103a88585856103b6565b60001c901c90509392505050565b6000808260ff16036103cd576000801b90506104f3565b6103d684610525565b6bffffffffffffffffffffffff168260ff16846103f3919061094e565b1115610470576104346104058561054b565b6bffffffffffffffffffffffff1661041c86610525565b6bffffffffffffffffffffffff16858560ff16610574565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104679190610a91565b60405180910390fd5b60208260ff1611156104b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104ae90610b25565b60405180910390fd5b600060088302905060006104ca8661054b565b6bffffffffffffffffffffffff16905060006104e5836105e2565b905080868301511693505050505b9392505050565b60008060609050600060189050858317821b9250848317821b9250838317811b925050509392505050565b6000806bffffffffffffffffffffffff90506000601890508184821c1692505050919050565b6000806bffffffffffffffffffffffff90506000607860ff1690508184821c1692505050919050565b6060600061058186610611565b915050600061058f86610611565b915050600061059d86610611565b91505060006105ab86610611565b915050838383836040516020016105c59493929190610d14565b604051602081830303815290604052945050505050949350505050565b60007f8000000000000000000000000000000000000000000000000000000000000000600183031d9050919050565b6000806000601f90505b600f8160ff16111561066e57600060088261063691906109c4565b60ff1685901c9050610647816106cf565b61ffff168417935060108260ff161461066257601084901b93505b6001820391505061061b565b506000600f90505b60ff8160ff1610156106c957600060088261069191906109c4565b60ff1685901c90506106a2816106cf565b61ffff168317925060008260ff16146106bd57601083901b92505b60018203915050610676565b50915091565b60006106e160048360ff16901c610708565b60ff168117905060088161ffff16901b90506106fc82610708565b60ff1681179050919050565b600080600f831690506040518060400160405280601081526020017f30313233343536373839616263646566000000000000000000000000000000008152508160ff168151811061075c5761075b610d99565b5b602001015160f81c60f81b60f81c915050919050565b604051806040016040528060008019168152602001600081525090565b6000819050919050565b6107a28161078f565b82525050565b60006020820190506107bd6000830184610799565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006107ee826107c3565b9050919050565b6107fe816107e3565b82525050565b600060208201905061081960008301846107f5565b92915050565b6000819050919050565b6108328161081f565b82525050565b600060208201905061084d6000830184610829565b92915050565b600080fd5b610861816107e3565b811461086c57600080fd5b50565b60008151905061087e81610858565b92915050565b60006020828403121561089a57610899610853565b5b60006108a88482850161086f565b91505092915050565b6000819050919050565b6108cc6108c78261081f565b6108b1565b82525050565b6000819050919050565b6108ed6108e88261078f565b6108d2565b82525050565b60006108ff82856108bb565b60208201915061090f82846108dc565b6020820191508190509392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006109598261078f565b91506109648361078f565b925082820190508082111561097c5761097b61091f565b5b92915050565b600060ff82169050919050565b600061099a82610982565b91506109a583610982565b9250828203905060ff8111156109be576109bd61091f565b5b92915050565b60006109cf82610982565b91506109da83610982565b92508282026109e881610982565b91508082146109fa576109f961091f565b5b5092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610a3b578082015181840152602081019050610a20565b60008484015250505050565b6000601f19601f8301169050919050565b6000610a6382610a01565b610a6d8185610a0c565b9350610a7d818560208601610a1d565b610a8681610a47565b840191505092915050565b60006020820190508181036000830152610aab8184610a58565b905092915050565b7f54797065644d656d566965772f696e646578202d20417474656d70746564207460008201527f6f20696e646578206d6f7265207468616e203332206279746573000000000000602082015250565b6000610b0f603a83610a0c565b9150610b1a82610ab3565b604082019050919050565b60006020820190508181036000830152610b3e81610b02565b9050919050565b600081905092915050565b7f54797065644d656d566965772f696e646578202d204f76657272616e2074686560008201527f20766965772e20536c6963652069732061742030780000000000000000000000602082015250565b6000610bac603583610b45565b9150610bb782610b50565b603582019050919050565b600065ffffffffffff82169050919050565b60008160d01b9050919050565b6000610bec82610bd4565b9050919050565b610c04610bff82610bc2565b610be1565b82525050565b7f2077697468206c656e6774682030780000000000000000000000000000000000600082015250565b6000610c40600f83610b45565b9150610c4b82610c0a565b600f82019050919050565b7f2e20417474656d7074656420746f20696e646578206174206f6666736574203060008201527f7800000000000000000000000000000000000000000000000000000000000000602082015250565b6000610cb2602183610b45565b9150610cbd82610c56565b602182019050919050565b7f2e00000000000000000000000000000000000000000000000000000000000000600082015250565b6000610cfe600183610b45565b9150610d0982610cc8565b600182019050919050565b6000610d1f82610b9f565b9150610d2b8287610bf3565b600682019150610d3a82610c33565b9150610d468286610bf3565b600682019150610d5582610ca5565b9150610d618285610bf3565b600682019150610d7082610c33565b9150610d7c8284610bf3565b600682019150610d8b82610cf1565b915081905095945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea264697066735822122033b776ba5df2e8d65da2d6c5bf4529a86acf2e5d85ebed8af5c5df7a015a0c7464736f6c63430008110033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xDFE DUP1 PUSH2 0x20 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 0x41 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x68788868 EQ PUSH2 0x46 JUMPI DUP1 PUSH4 0x86B234F5 EQ PUSH2 0x64 JUMPI DUP1 PUSH4 0xB29F0835 EQ PUSH2 0x82 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4E PUSH2 0x8C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x5B SWAP2 SWAP1 PUSH2 0x7A8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x6C PUSH2 0xDE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x79 SWAP2 SWAP1 PUSH2 0x804 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x8A PUSH2 0x1AD JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x97 PUSH2 0x20B JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xAD DUP3 PUSH1 0x0 ADD MLOAD DUP4 PUSH1 0x20 ADD MLOAD PUSH2 0x253 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xC5 PUSH1 0x0 DUP4 PUSH2 0x27F SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xD2 DUP3 PUSH2 0x2AA JUMP JUMPDEST SWAP1 POP DUP1 SWAP5 POP POP POP POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xE9 PUSH2 0x20B JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xFF DUP3 PUSH1 0x0 ADD MLOAD DUP4 PUSH1 0x20 ADD MLOAD PUSH2 0x253 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x117 PUSH1 0x0 DUP4 PUSH2 0x27F SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x124 DUP3 PUSH2 0x2CF JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH20 0x0 PUSH4 0x5CED058E DUP4 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x15F SWAP2 SWAP1 PUSH2 0x838 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x17C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1A0 SWAP2 SWAP1 PUSH2 0x884 JUMP JUMPDEST SWAP1 POP DUP1 SWAP6 POP POP POP POP POP POP SWAP1 JUMP JUMPDEST PUSH20 0x0 PUSH4 0xFDC85308 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x205 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x213 PUSH2 0x772 JUMP JUMPDEST PUSH2 0x21B PUSH2 0x772 JUMP JUMPDEST PUSH2 0x238 PUSH20 0xE0F5206BBD039E7B0592D8918820024E2A7437B9 PUSH2 0x2F5 JUMP JUMPDEST DUP2 PUSH1 0x0 ADD DUP2 DUP2 MSTORE POP POP PUSH1 0x7B DUP2 PUSH1 0x20 ADD DUP2 DUP2 MSTORE POP POP DUP1 SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x268 SWAP3 SWAP2 SWAP1 PUSH2 0x8F3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 MLOAD SWAP1 POP PUSH1 0x0 PUSH1 0x20 DUP6 ADD SWAP1 POP PUSH2 0x2A0 DUP5 PUSH5 0xFFFFFFFFFF AND DUP3 DUP5 PUSH2 0x318 JUMP JUMPDEST SWAP3 POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2C8 PUSH1 0x20 DUP1 DUP5 PUSH3 0xFFFFFF NOT AND PUSH2 0x37F SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2EE PUSH1 0x0 PUSH1 0x20 DUP5 PUSH3 0xFFFFFF NOT AND PUSH2 0x3B6 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SHL SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 PUSH2 0x327 SWAP2 SWAP1 PUSH2 0x94E JUMP JUMPDEST SWAP1 POP PUSH1 0x40 MLOAD DUP2 GT ISZERO PUSH2 0x338 JUMPI PUSH1 0x0 SWAP1 POP JUMPDEST PUSH1 0x0 DUP2 SUB PUSH2 0x369 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000 SWAP2 POP POP PUSH2 0x378 JUMP JUMPDEST PUSH2 0x374 DUP6 DUP6 DUP6 PUSH2 0x4FA JUMP JUMPDEST SWAP2 POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x8 DUP3 PUSH1 0x20 PUSH2 0x390 SWAP2 SWAP1 PUSH2 0x98F JUMP JUMPDEST PUSH2 0x39A SWAP2 SWAP1 PUSH2 0x9C4 JUMP JUMPDEST PUSH1 0xFF AND PUSH2 0x3A8 DUP6 DUP6 DUP6 PUSH2 0x3B6 JUMP JUMPDEST PUSH1 0x0 SHR SWAP1 SHR SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0xFF AND SUB PUSH2 0x3CD JUMPI PUSH1 0x0 DUP1 SHL SWAP1 POP PUSH2 0x4F3 JUMP JUMPDEST PUSH2 0x3D6 DUP5 PUSH2 0x525 JUMP JUMPDEST PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH1 0xFF AND DUP5 PUSH2 0x3F3 SWAP2 SWAP1 PUSH2 0x94E JUMP JUMPDEST GT ISZERO PUSH2 0x470 JUMPI PUSH2 0x434 PUSH2 0x405 DUP6 PUSH2 0x54B JUMP JUMPDEST PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x41C DUP7 PUSH2 0x525 JUMP JUMPDEST PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 DUP6 PUSH1 0xFF AND PUSH2 0x574 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x467 SWAP2 SWAP1 PUSH2 0xA91 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x20 DUP3 PUSH1 0xFF AND GT ISZERO PUSH2 0x4B7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4AE SWAP1 PUSH2 0xB25 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x8 DUP4 MUL SWAP1 POP PUSH1 0x0 PUSH2 0x4CA DUP7 PUSH2 0x54B JUMP JUMPDEST PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 PUSH2 0x4E5 DUP4 PUSH2 0x5E2 JUMP JUMPDEST SWAP1 POP DUP1 DUP7 DUP4 ADD MLOAD AND SWAP4 POP POP POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x60 SWAP1 POP PUSH1 0x0 PUSH1 0x18 SWAP1 POP DUP6 DUP4 OR DUP3 SHL SWAP3 POP DUP5 DUP4 OR DUP3 SHL SWAP3 POP DUP4 DUP4 OR DUP2 SHL SWAP3 POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 POP PUSH1 0x0 PUSH1 0x18 SWAP1 POP DUP2 DUP5 DUP3 SHR AND SWAP3 POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 POP PUSH1 0x0 PUSH1 0x78 PUSH1 0xFF AND SWAP1 POP DUP2 DUP5 DUP3 SHR AND SWAP3 POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x581 DUP7 PUSH2 0x611 JUMP JUMPDEST SWAP2 POP POP PUSH1 0x0 PUSH2 0x58F DUP7 PUSH2 0x611 JUMP JUMPDEST SWAP2 POP POP PUSH1 0x0 PUSH2 0x59D DUP7 PUSH2 0x611 JUMP JUMPDEST SWAP2 POP POP PUSH1 0x0 PUSH2 0x5AB DUP7 PUSH2 0x611 JUMP JUMPDEST SWAP2 POP POP DUP4 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x5C5 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xD14 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP5 POP POP POP POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x8000000000000000000000000000000000000000000000000000000000000000 PUSH1 0x1 DUP4 SUB SAR SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x1F SWAP1 POP JUMPDEST PUSH1 0xF DUP2 PUSH1 0xFF AND GT ISZERO PUSH2 0x66E JUMPI PUSH1 0x0 PUSH1 0x8 DUP3 PUSH2 0x636 SWAP2 SWAP1 PUSH2 0x9C4 JUMP JUMPDEST PUSH1 0xFF AND DUP6 SWAP1 SHR SWAP1 POP PUSH2 0x647 DUP2 PUSH2 0x6CF JUMP JUMPDEST PUSH2 0xFFFF AND DUP5 OR SWAP4 POP PUSH1 0x10 DUP3 PUSH1 0xFF AND EQ PUSH2 0x662 JUMPI PUSH1 0x10 DUP5 SWAP1 SHL SWAP4 POP JUMPDEST PUSH1 0x1 DUP3 SUB SWAP2 POP POP PUSH2 0x61B JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0xF SWAP1 POP JUMPDEST PUSH1 0xFF DUP2 PUSH1 0xFF AND LT ISZERO PUSH2 0x6C9 JUMPI PUSH1 0x0 PUSH1 0x8 DUP3 PUSH2 0x691 SWAP2 SWAP1 PUSH2 0x9C4 JUMP JUMPDEST PUSH1 0xFF AND DUP6 SWAP1 SHR SWAP1 POP PUSH2 0x6A2 DUP2 PUSH2 0x6CF JUMP JUMPDEST PUSH2 0xFFFF AND DUP4 OR SWAP3 POP PUSH1 0x0 DUP3 PUSH1 0xFF AND EQ PUSH2 0x6BD JUMPI PUSH1 0x10 DUP4 SWAP1 SHL SWAP3 POP JUMPDEST PUSH1 0x1 DUP3 SUB SWAP2 POP POP PUSH2 0x676 JUMP JUMPDEST POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6E1 PUSH1 0x4 DUP4 PUSH1 0xFF AND SWAP1 SHR PUSH2 0x708 JUMP JUMPDEST PUSH1 0xFF AND DUP2 OR SWAP1 POP PUSH1 0x8 DUP2 PUSH2 0xFFFF AND SWAP1 SHL SWAP1 POP PUSH2 0x6FC DUP3 PUSH2 0x708 JUMP JUMPDEST PUSH1 0xFF AND DUP2 OR SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0xF DUP4 AND SWAP1 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x10 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x3031323334353637383961626364656600000000000000000000000000000000 DUP2 MSTORE POP DUP2 PUSH1 0xFF AND DUP2 MLOAD DUP2 LT PUSH2 0x75C JUMPI PUSH2 0x75B PUSH2 0xD99 JUMP JUMPDEST JUMPDEST PUSH1 0x20 ADD ADD MLOAD PUSH1 0xF8 SHR PUSH1 0xF8 SHL PUSH1 0xF8 SHR SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP1 NOT AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x7A2 DUP2 PUSH2 0x78F JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x7BD PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x799 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7EE DUP3 PUSH2 0x7C3 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x7FE DUP2 PUSH2 0x7E3 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x819 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x7F5 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x832 DUP2 PUSH2 0x81F JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x84D PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x829 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x861 DUP2 PUSH2 0x7E3 JUMP JUMPDEST DUP2 EQ PUSH2 0x86C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x87E DUP2 PUSH2 0x858 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x89A JUMPI PUSH2 0x899 PUSH2 0x853 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x8A8 DUP5 DUP3 DUP6 ADD PUSH2 0x86F JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x8CC PUSH2 0x8C7 DUP3 PUSH2 0x81F JUMP JUMPDEST PUSH2 0x8B1 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x8ED PUSH2 0x8E8 DUP3 PUSH2 0x78F JUMP JUMPDEST PUSH2 0x8D2 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8FF DUP3 DUP6 PUSH2 0x8BB JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH2 0x90F DUP3 DUP5 PUSH2 0x8DC JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP2 POP DUP2 SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x959 DUP3 PUSH2 0x78F JUMP JUMPDEST SWAP2 POP PUSH2 0x964 DUP4 PUSH2 0x78F JUMP JUMPDEST SWAP3 POP DUP3 DUP3 ADD SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x97C JUMPI PUSH2 0x97B PUSH2 0x91F JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x99A DUP3 PUSH2 0x982 JUMP JUMPDEST SWAP2 POP PUSH2 0x9A5 DUP4 PUSH2 0x982 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 SUB SWAP1 POP PUSH1 0xFF DUP2 GT ISZERO PUSH2 0x9BE JUMPI PUSH2 0x9BD PUSH2 0x91F JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9CF DUP3 PUSH2 0x982 JUMP JUMPDEST SWAP2 POP PUSH2 0x9DA DUP4 PUSH2 0x982 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 MUL PUSH2 0x9E8 DUP2 PUSH2 0x982 JUMP JUMPDEST SWAP2 POP DUP1 DUP3 EQ PUSH2 0x9FA JUMPI PUSH2 0x9F9 PUSH2 0x91F JUMP JUMPDEST JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xA3B JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0xA20 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP5 ADD MSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA63 DUP3 PUSH2 0xA01 JUMP JUMPDEST PUSH2 0xA6D DUP2 DUP6 PUSH2 0xA0C JUMP JUMPDEST SWAP4 POP PUSH2 0xA7D DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0xA1D JUMP JUMPDEST PUSH2 0xA86 DUP2 PUSH2 0xA47 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xAAB DUP2 DUP5 PUSH2 0xA58 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x54797065644D656D566965772F696E646578202D20417474656D707465642074 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6F20696E646578206D6F7265207468616E203332206279746573000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB0F PUSH1 0x3A DUP4 PUSH2 0xA0C JUMP JUMPDEST SWAP2 POP PUSH2 0xB1A DUP3 PUSH2 0xAB3 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xB3E DUP2 PUSH2 0xB02 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x54797065644D656D566965772F696E646578202D204F76657272616E20746865 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x20766965772E20536C6963652069732061742030780000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xBAC PUSH1 0x35 DUP4 PUSH2 0xB45 JUMP JUMPDEST SWAP2 POP PUSH2 0xBB7 DUP3 PUSH2 0xB50 JUMP JUMPDEST PUSH1 0x35 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH6 0xFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0xD0 SHL SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xBEC DUP3 PUSH2 0xBD4 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xC04 PUSH2 0xBFF DUP3 PUSH2 0xBC2 JUMP JUMPDEST PUSH2 0xBE1 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH32 0x2077697468206C656E6774682030780000000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC40 PUSH1 0xF DUP4 PUSH2 0xB45 JUMP JUMPDEST SWAP2 POP PUSH2 0xC4B DUP3 PUSH2 0xC0A JUMP JUMPDEST PUSH1 0xF DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x2E20417474656D7074656420746F20696E646578206174206F66667365742030 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x7800000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCB2 PUSH1 0x21 DUP4 PUSH2 0xB45 JUMP JUMPDEST SWAP2 POP PUSH2 0xCBD DUP3 PUSH2 0xC56 JUMP JUMPDEST PUSH1 0x21 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x2E00000000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCFE PUSH1 0x1 DUP4 PUSH2 0xB45 JUMP JUMPDEST SWAP2 POP PUSH2 0xD09 DUP3 PUSH2 0xCC8 JUMP JUMPDEST PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD1F DUP3 PUSH2 0xB9F JUMP JUMPDEST SWAP2 POP PUSH2 0xD2B DUP3 DUP8 PUSH2 0xBF3 JUMP JUMPDEST PUSH1 0x6 DUP3 ADD SWAP2 POP PUSH2 0xD3A DUP3 PUSH2 0xC33 JUMP JUMPDEST SWAP2 POP PUSH2 0xD46 DUP3 DUP7 PUSH2 0xBF3 JUMP JUMPDEST PUSH1 0x6 DUP3 ADD SWAP2 POP PUSH2 0xD55 DUP3 PUSH2 0xCA5 JUMP JUMPDEST SWAP2 POP PUSH2 0xD61 DUP3 DUP6 PUSH2 0xBF3 JUMP JUMPDEST PUSH1 0x6 DUP3 ADD SWAP2 POP PUSH2 0xD70 DUP3 PUSH2 0xC33 JUMP JUMPDEST SWAP2 POP PUSH2 0xD7C DUP3 DUP5 PUSH2 0xBF3 JUMP JUMPDEST PUSH1 0x6 DUP3 ADD SWAP2 POP PUSH2 0xD8B DUP3 PUSH2 0xCF1 JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CALLER 0xB7 PUSH23 0xBA5DF2E8D65DA2D6C5BF4529A86ACF2E5D85EBED8AF5C5 0xDF PUSH27 0x15A0C7464736F6C63430008110033000000000000000000000000 ",
"sourceMap": "113:1199:1:-:0;;;;;;;;;;;;;;;;;;;"
},
"deployedBytecode": {
"functionDebugData": {
"@_amount_67": {
"entryPoint": 682,
"id": 67,
"parameterSlots": 1,
"returnSlots": 1
},
"@_recipient_50": {
"entryPoint": 719,
"id": 50,
"parameterSlots": 1,
"returnSlots": 1
},
"@addressToBytes32_86": {
"entryPoint": 757,
"id": 86,
"parameterSlots": 1,
"returnSlots": 1
},
"@build_796": {
"entryPoint": 792,
"id": 796,
"parameterSlots": 3,
"returnSlots": 1
},
"@byteHex_361": {
"entryPoint": 1743,
"id": 361,
"parameterSlots": 1,
"returnSlots": 1
},
"@decodeAddress_283": {
"entryPoint": 222,
"id": 283,
"parameterSlots": 0,
"returnSlots": 1
},
"@decodedAmount_238": {
"entryPoint": 140,
"id": 238,
"parameterSlots": 0,
"returnSlots": 1
},
"@doIt_167": {
"entryPoint": 429,
"id": 167,
"parameterSlots": 0,
"returnSlots": 0
},
"@encodeHex_454": {
"entryPoint": 1553,
"id": 454,
"parameterSlots": 1,
"returnSlots": 2
},
"@formatSample_33": {
"entryPoint": 595,
"id": 33,
"parameterSlots": 2,
"returnSlots": 1
},
"@indexErrOverrun_1108": {
"entryPoint": 1396,
"id": 1108,
"parameterSlots": 4,
"returnSlots": 1
},
"@indexUint_1215": {
"entryPoint": 895,
"id": 1215,
"parameterSlots": 3,
"returnSlots": 1
},
"@index_1185": {
"entryPoint": 950,
"id": 1185,
"parameterSlots": 3,
"returnSlots": 1
},
"@leftMask_561": {
"entryPoint": 1506,
"id": 561,
"parameterSlots": 1,
"returnSlots": 1
},
"@len_928": {
"entryPoint": 1317,
"id": 928,
"parameterSlots": 1,
"returnSlots": 1
},
"@loc_874": {
"entryPoint": 1355,
"id": 874,
"parameterSlots": 1,
"returnSlots": 1
},
"@makeMessage_200": {
"entryPoint": 523,
"id": 200,
"parameterSlots": 0,
"returnSlots": 1
},
"@nibbleHex_334": {
"entryPoint": 1800,
"id": 334,
"parameterSlots": 1,
"returnSlots": 1
},
"@ref_822": {
"entryPoint": 639,
"id": 822,
"parameterSlots": 2,
"returnSlots": 1
},
"@unsafeBuildUnchecked_761": {
"entryPoint": 1274,
"id": 761,
"parameterSlots": 3,
"returnSlots": 1
},
"abi_decode_t_address_fromMemory": {
"entryPoint": 2159,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_address_fromMemory": {
"entryPoint": 2180,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_t_address_to_t_address_fromStack": {
"entryPoint": 2037,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_bytes32_to_t_bytes32_fromStack_library": {
"entryPoint": 2089,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_bytes32_to_t_bytes32_nonPadded_inplace_fromStack": {
"entryPoint": 2235,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack": {
"entryPoint": 2648,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_t_stringliteral_3e6849d566dba71a1ac686a5bd3af1bed003e25465c91471808028cdad9d144b_to_t_string_memory_ptr_nonPadded_inplace_fromStack": {
"entryPoint": 3123,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_6f010af653ebe3cb07d297a4ef13366103d392ceffa68dd48232e6e9ff2187bf_to_t_string_memory_ptr_nonPadded_inplace_fromStack": {
"entryPoint": 3313,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_76d133faf43042eef7167f01d32e0891632a5651573db9fc8b6aa42fdbcaf509_to_t_string_memory_ptr_nonPadded_inplace_fromStack": {
"entryPoint": 3237,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_b2c061d25dd4dec479f0720f15754fff58a1a4debc7353bd1d3f4b7b23876297_to_t_string_memory_ptr_fromStack": {
"entryPoint": 2818,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_fb6c6ce939dcb005b895abe7a9570250d9c1c31a5440a6a6e28e0acc2d1c6af1_to_t_string_memory_ptr_nonPadded_inplace_fromStack": {
"entryPoint": 2975,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_uint256_to_t_uint256_fromStack": {
"entryPoint": 1945,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_uint256_to_t_uint256_nonPadded_inplace_fromStack": {
"entryPoint": 2268,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_uint48_to_t_uint48_nonPadded_inplace_fromStack": {
"entryPoint": 3059,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_tuple_packed_t_bytes32_t_uint256__to_t_bytes32_t_uint256__nonPadded_inplace_fromStack_reversed": {
"entryPoint": 2291,
"id": null,
"parameterSlots": 3,
"returnSlots": 1
},
"abi_encode_tuple_packed_t_stringliteral_fb6c6ce939dcb005b895abe7a9570250d9c1c31a5440a6a6e28e0acc2d1c6af1_t_uint48_t_stringliteral_3e6849d566dba71a1ac686a5bd3af1bed003e25465c91471808028cdad9d144b_t_uint48_t_stringliteral_76d133faf43042eef7167f01d32e0891632a5651573db9fc8b6aa42fdbcaf509_t_uint48_t_stringliteral_3e6849d566dba71a1ac686a5bd3af1bed003e25465c91471808028cdad9d144b_t_uint48_t_stringliteral_6f010af653ebe3cb07d297a4ef13366103d392ceffa68dd48232e6e9ff2187bf__to_t_string_memory_ptr_t_uint48_t_string_memory_ptr_t_uint48_t_string_memory_ptr_t_uint48_t_string_memory_ptr_t_uint48_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed": {
"entryPoint": 3348,
"id": null,
"parameterSlots": 5,
"returnSlots": 1
},
"abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
"entryPoint": 2052,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_library_reversed": {
"entryPoint": 2104,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 2705,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_b2c061d25dd4dec479f0720f15754fff58a1a4debc7353bd1d3f4b7b23876297__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 2853,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
"entryPoint": 1960,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"allocate_unbounded": {
"entryPoint": null,
"id": null,
"parameterSlots": 0,
"returnSlots": 1
},
"array_length_t_string_memory_ptr": {
"entryPoint": 2561,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"array_storeLengthForEncoding_t_string_memory_ptr_fromStack": {
"entryPoint": 2572,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack": {
"entryPoint": 2885,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"checked_add_t_uint256": {
"entryPoint": 2382,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"checked_mul_t_uint8": {
"entryPoint": 2500,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"checked_sub_t_uint8": {
"entryPoint": 2447,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"cleanup_t_address": {
"entryPoint": 2019,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_bytes32": {
"entryPoint": 2079,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_uint160": {
"entryPoint": 1987,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_uint256": {
"entryPoint": 1935,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_uint48": {
"entryPoint": 3010,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_uint8": {
"entryPoint": 2434,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"copy_memory_to_memory_with_cleanup": {
"entryPoint": 2589,
"id": null,
"parameterSlots": 3,
"returnSlots": 0
},
"leftAlign_t_bytes32": {
"entryPoint": 2225,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"leftAlign_t_uint256": {
"entryPoint": 2258,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"leftAlign_t_uint48": {
"entryPoint": 3041,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"panic_error_0x11": {
"entryPoint": 2335,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"panic_error_0x32": {
"entryPoint": 3481,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db": {
"entryPoint": null,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b": {
"entryPoint": 2131,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"round_up_to_mul_of_32": {
"entryPoint": 2631,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"shift_left_208": {
"entryPoint": 3028,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"store_literal_in_memory_3e6849d566dba71a1ac686a5bd3af1bed003e25465c91471808028cdad9d144b": {
"entryPoint": 3082,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_6f010af653ebe3cb07d297a4ef13366103d392ceffa68dd48232e6e9ff2187bf": {
"entryPoint": 3272,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_76d133faf43042eef7167f01d32e0891632a5651573db9fc8b6aa42fdbcaf509": {
"entryPoint": 3158,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_b2c061d25dd4dec479f0720f15754fff58a1a4debc7353bd1d3f4b7b23876297": {
"entryPoint": 2739,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_fb6c6ce939dcb005b895abe7a9570250d9c1c31a5440a6a6e28e0acc2d1c6af1": {
"entryPoint": 2896,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"validator_revert_t_address": {
"entryPoint": 2136,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
}
},
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:11912:3",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "52:32:3",
"statements": [
{
"nodeType": "YulAssignment",
"src": "62:16:3",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "73:5:3"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "62:7:3"
}
]
}
]
},
"name": "cleanup_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "34:5:3",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "44:7:3",
"type": ""
}
],
"src": "7:77:3"
},
{
"body": {
"nodeType": "YulBlock",
"src": "155:53:3",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "172:3:3"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "195:5:3"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "177:17:3"
},
"nodeType": "YulFunctionCall",
"src": "177:24:3"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "165:6:3"
},
"nodeType": "YulFunctionCall",
"src": "165:37:3"
},
"nodeType": "YulExpressionStatement",
"src": "165:37:3"
}
]
},
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "143:5:3",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "150:3:3",
"type": ""
}
],
"src": "90:118:3"
},
{
"body": {
"nodeType": "YulBlock",
"src": "312:124:3",
"statements": [
{
"nodeType": "YulAssignment",
"src": "322:26:3",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "334:9:3"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "345:2:3",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "330:3:3"
},
"nodeType": "YulFunctionCall",
"src": "330:18:3"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "322:4:3"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "402:6:3"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "415:9:3"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "426:1:3",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "411:3:3"
},
"nodeType": "YulFunctionCall",
"src": "411:17:3"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulIdentifier",
"src": "358:43:3"
},
"nodeType": "YulFunctionCall",
"src": "358:71:3"
},
"nodeType": "YulExpressionStatement",
"src": "358:71:3"
}
]
},
"name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "284:9:3",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "296:6:3",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "307:4:3",
"type": ""
}
],
"src": "214:222:3"
},
{
"body": {
"nodeType": "YulBlock",
"src": "487:81:3",
"statements": [
{
"nodeType": "YulAssignment",
"src": "497:65:3",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "512:5:3"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "519:42:3",
"type": "",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "508:3:3"
},
"nodeType": "YulFunctionCall",
"src": "508:54:3"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "497:7:3"
}
]
}
]
},
"name": "cleanup_t_uint160",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "469:5:3",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "479:7:3",
"type": ""
}
],
"src": "442:126:3"
},
{
"body": {
"nodeType": "YulBlock",
"src": "619:51:3",
"statements": [
{
"nodeType": "YulAssignment",
"src": "629:35:3",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "658:5:3"
}
],
"functionName": {
"name": "cleanup_t_uint160",
"nodeType": "YulIdentifier",
"src": "640:17:3"
},
"nodeType": "YulFunctionCall",
"src": "640:24:3"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "629:7:3"
}
]
}
]
},
"name": "cleanup_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "601:5:3",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "611:7:3",
"type": ""
}
],
"src": "574:96:3"
},
{
"body": {
"nodeType": "YulBlock",
"src": "741:53:3",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "758:3:3"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "781:5:3"
}
],
"functionName": {
"name": "cleanup_t_address",
"nodeType": "YulIdentifier",
"src": "763:17:3"
},
"nodeType": "YulFunctionCall",
"src": "763:24:3"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "751:6:3"
},
"nodeType": "YulFunctionCall",
"src": "751:37:3"
},
"nodeType": "YulExpressionStatement",
"src": "751:37:3"
}
]
},
"name": "abi_encode_t_address_to_t_address_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "729:5:3",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "736:3:3",
"type": ""
}
],
"src": "676:118:3"
},
{
"body": {
"nodeType": "YulBlock",
"src": "898:124:3",
"statements": [
{
"nodeType": "YulAssignment",
"src": "908:26:3",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "920:9:3"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "931:2:3",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "916:3:3"
},
"nodeType": "YulFunctionCall",
"src": "916:18:3"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "908:4:3"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "988:6:3"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1001:9:3"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1012:1:3",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "997:3:3"
},
"nodeType": "YulFunctionCall",
"src": "997:17:3"
}
],
"functionName": {
"name": "abi_encode_t_address_to_t_address_fromStack",
"nodeType": "YulIdentifier",
"src": "944:43:3"
},
"nodeType": "YulFunctionCall",
"src": "944:71:3"
},
"nodeType": "YulExpressionStatement",
"src": "944:71:3"
}
]
},
"name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "870:9:3",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "882:6:3",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "893:4:3",
"type": ""
}
],
"src": "800:222:3"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1073:32:3",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1083:16:3",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "1094:5:3"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "1083:7:3"
}
]
}
]
},
"name": "cleanup_t_bytes32",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1055:5:3",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "1065:7:3",
"type": ""
}
],
"src": "1028:77:3"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1184:53:3",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "1201:3:3"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1224:5:3"
}
],
"functionName": {
"name": "cleanup_t_bytes32",
"nodeType": "YulIdentifier",
"src": "1206:17:3"
},
"nodeType": "YulFunctionCall",
"src": "1206:24:3"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1194:6:3"
},
"nodeType": "YulFunctionCall",
"src": "1194:37:3"
},
"nodeType": "YulExpressionStatement",
"src": "1194:37:3"
}
]
},
"name": "abi_encode_t_bytes32_to_t_bytes32_fromStack_library",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1172:5:3",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "1179:3:3",
"type": ""
}
],
"src": "1111:126:3"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1349:132:3",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1359:26:3",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1371:9:3"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1382:2:3",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1367:3:3"
},
"nodeType": "YulFunctionCall",
"src": "1367:18:3"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "1359:4:3"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "1447:6:3"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1460:9:3"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1471:1:3",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1456:3:3"
},
"nodeType": "YulFunctionCall",
"src": "1456:17:3"
}
],
"functionName": {
"name": "abi_encode_t_bytes32_to_t_bytes32_fromStack_library",
"nodeType": "YulIdentifier",
"src": "1395:51:3"
},
"nodeType": "YulFunctionCall",
"src": "1395:79:3"
},
"nodeType": "YulExpressionStatement",
"src": "1395:79:3"
}
]
},
"name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_library_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "1321:9:3",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "1333:6:3",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "1344:4:3",
"type": ""
}
],
"src": "1243:238:3"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1527:35:3",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1537:19:3",
"value": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1553:2:3",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "1547:5:3"
},
"nodeType": "YulFunctionCall",
"src": "1547:9:3"
},
"variableNames": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "1537:6:3"
}
]
}
]
},
"name": "allocate_unbounded",
"nodeType": "YulFunctionDefinition",
"returnVariables": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "1520:6:3",
"type": ""
}
],
"src": "1487:75:3"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1657:28:3",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1674:1:3",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1677:1:3",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "1667:6:3"
},
"nodeType": "YulFunctionCall",
"src": "1667:12:3"
},
"nodeType": "YulExpressionStatement",
"src": "1667:12:3"
}
]
},
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulFunctionDefinition",
"src": "1568:117:3"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1780:28:3",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1797:1:3",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1800:1:3",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "1790:6:3"
},
"nodeType": "YulFunctionCall",
"src": "1790:12:3"
},
"nodeType": "YulExpressionStatement",
"src": "1790:12:3"
}
]
},
"name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db",
"nodeType": "YulFunctionDefinition",
"src": "1691:117:3"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1857:79:3",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "1914:16:3",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1923:1:3",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1926:1:3",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "1916:6:3"
},
"nodeType": "YulFunctionCall",
"src": "1916:12:3"
},
"nodeType": "YulExpressionStatement",
"src": "1916:12:3"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1880:5:3"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1905:5:3"
}
],
"functionName": {
"name": "cleanup_t_address",
"nodeType": "YulIdentifier",
"src": "1887:17:3"
},
"nodeType": "YulFunctionCall",
"src": "1887:24:3"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "1877:2:3"
},
"nodeType": "YulFunctionCall",
"src": "1877:35:3"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "1870:6:3"
},
"nodeType": "YulFunctionCall",
"src": "1870:43:3"
},
"nodeType": "YulIf",
"src": "1867:63:3"
}
]
},
"name": "validator_revert_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1850:5:3",
"type": ""
}
],
"src": "1814:122:3"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2005:80:3",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2015:22:3",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "2030:6:3"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "2024:5:3"
},
"nodeType": "YulFunctionCall",
"src": "2024:13:3"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2015:5:3"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2073:5:3"
}
],
"functionName": {
"name": "validator_revert_t_address",
"nodeType": "YulIdentifier",
"src": "2046:26:3"
},
"nodeType": "YulFunctionCall",
"src": "2046:33:3"
},
"nodeType": "YulExpressionStatement",
"src": "2046:33:3"
}
]
},
"name": "abi_decode_t_address_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "1983:6:3",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "1991:3:3",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1999:5:3",
"type": ""
}
],
"src": "1942:143:3"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2168:274:3",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "2214:83:3",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulIdentifier",
"src": "2216:77:3"
},
"nodeType": "YulFunctionCall",
"src": "2216:79:3"
},
"nodeType": "YulExpressionStatement",
"src": "2216:79:3"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "2189:7:3"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2198:9:3"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "2185:3:3"
},
"nodeType": "YulFunctionCall",
"src": "2185:23:3"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2210:2:3",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "2181:3:3"
},
"nodeType": "YulFunctionCall",
"src": "2181:32:3"
},
"nodeType": "YulIf",
"src": "2178:119:3"
},
{
"nodeType": "YulBlock",
"src": "2307:128:3",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "2322:15:3",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "2336:1:3",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "2326:6:3",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "2351:74:3",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2397:9:3"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "2408:6:3"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2393:3:3"
},
"nodeType": "YulFunctionCall",
"src": "2393:22:3"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "2417:7:3"
}
],
"functionName": {
"name": "abi_decode_t_address_fromMemory",
"nodeType": "YulIdentifier",
"src": "2361:31:3"
},
"nodeType": "YulFunctionCall",
"src": "2361:64:3"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "2351:6:3"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_address_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "2138:9:3",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "2149:7:3",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "2161:6:3",
"type": ""
}
],
"src": "2091:351:3"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2495:32:3",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2505:16:3",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "2516:5:3"
},
"variableNames": [
{
"name": "aligned",
"nodeType": "YulIdentifier",
"src": "2505:7:3"
}
]
}
]
},
"name": "leftAlign_t_bytes32",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "2477:5:3",
"type": ""
}
],
"returnVariables": [
{
"name": "aligned",
"nodeType": "YulTypedName",
"src": "2487:7:3",
"type": ""
}
],
"src": "2448:79:3"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2616:74:3",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "2633:3:3"
},
{
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2676:5:3"
}
],
"functionName": {
"name": "cleanup_t_bytes32",
"nodeType": "YulIdentifier",
"src": "2658:17:3"
},
"nodeType": "YulFunctionCall",
"src": "2658:24:3"
}
],
"functionName": {
"name": "leftAlign_t_bytes32",
"nodeType": "YulIdentifier",
"src": "2638:19:3"
},
"nodeType": "YulFunctionCall",
"src": "2638:45:3"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "2626:6:3"
},
"nodeType": "YulFunctionCall",
"src": "2626:58:3"
},
"nodeType": "YulExpressionStatement",
"src": "2626:58:3"
}
]
},
"name": "abi_encode_t_bytes32_to_t_bytes32_nonPadded_inplace_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "2604:5:3",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "2611:3:3",
"type": ""
}
],
"src": "2533:157:3"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2743:32:3",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2753:16:3",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "2764:5:3"
},
"variableNames": [
{
"name": "aligned",
"nodeType": "YulIdentifier",
"src": "2753:7:3"
}
]
}
]
},
"name": "leftAlign_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "2725:5:3",
"type": ""
}
],
"returnVariables": [
{
"name": "aligned",
"nodeType": "YulTypedName",
"src": "2735:7:3",
"type": ""
}
],
"src": "2696:79:3"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2864:74:3",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "2881:3:3"
},
{
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2924:5:3"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "2906:17:3"
},
"nodeType": "YulFunctionCall",
"src": "2906:24:3"
}
],
"functionName": {
"name": "leftAlign_t_uint256",
"nodeType": "YulIdentifier",
"src": "2886:19:3"
},
"nodeType": "YulFunctionCall",
"src": "2886:45:3"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "2874:6:3"
},
"nodeType": "YulFunctionCall",
"src": "2874:58:3"
},
"nodeType": "YulExpressionStatement",
"src": "2874:58:3"
}
]
},
"name": "abi_encode_t_uint256_to_t_uint256_nonPadded_inplace_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "2852:5:3",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "2859:3:3",
"type": ""
}
],
"src": "2781:157:3"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3088:253:3",
"statements": [
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "3161:6:3"
},
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "3170:3:3"
}
],
"functionName": {
"name": "abi_encode_t_bytes32_to_t_bytes32_nonPadded_inplace_fromStack",
"nodeType": "YulIdentifier",
"src": "3099:61:3"
},
"nodeType": "YulFunctionCall",
"src": "3099:75:3"
},
"nodeType": "YulExpressionStatement",
"src": "3099:75:3"
},
{
"nodeType": "YulAssignment",
"src": "3183:19:3",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "3194:3:3"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3199:2:3",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3190:3:3"
},
"nodeType": "YulFunctionCall",
"src": "3190:12:3"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "3183:3:3"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "3274:6:3"
},
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "3283:3:3"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_nonPadded_inplace_fromStack",
"nodeType": "YulIdentifier",
"src": "3212:61:3"
},
"nodeType": "YulFunctionCall",
"src": "3212:75:3"
},
"nodeType": "YulExpressionStatement",
"src": "3212:75:3"
},
{
"nodeType": "YulAssignment",
"src": "3296:19:3",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "3307:3:3"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3312:2:3",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3303:3:3"
},
"nodeType": "YulFunctionCall",
"src": "3303:12:3"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "3296:3:3"
}
]
},
{
"nodeType": "YulAssignment",
"src": "3325:10:3",
"value": {
"name": "pos",
"nodeType": "YulIdentifier",
"src": "3332:3:3"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "3325:3:3"
}
]
}
]
},
"name": "abi_encode_tuple_packed_t_bytes32_t_uint256__to_t_bytes32_t_uint256__nonPadded_inplace_fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "3059:3:3",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "3065:6:3",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "3073:6:3",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "3084:3:3",
"type": ""
}
],
"src": "2944:397:3"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3375:152:3",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3392:1:3",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3395:77:3",
"type": "",
"value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3385:6:3"
},
"nodeType": "YulFunctionCall",
"src": "3385:88:3"
},
"nodeType": "YulExpressionStatement",
"src": "3385:88:3"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3489:1:3",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3492:4:3",
"type": "",
"value": "0x11"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3482:6:3"
},
"nodeType": "YulFunctionCall",
"src": "3482:15:3"
},
"nodeType": "YulExpressionStatement",
"src": "3482:15:3"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3513:1:3",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3516:4:3",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "3506:6:3"
},
"nodeType": "YulFunctionCall",
"src": "3506:15:3"
},
"nodeType": "YulExpressionStatement",
"src": "3506:15:3"
}
]
},
"name": "panic_error_0x11",
"nodeType": "YulFunctionDefinition",
"src": "3347:180:3"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3577:147:3",
"statements": [
{
"nodeType": "YulAssignment",
"src": "3587:25:3",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "3610:1:3"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "3592:17:3"
},
"nodeType": "YulFunctionCall",
"src": "3592:20:3"
},
"variableNames": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "3587:1:3"
}
]
},
{
"nodeType": "YulAssignment",
"src": "3621:25:3",
"value": {
"arguments": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "3644:1:3"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "3626:17:3"
},
"nodeType": "YulFunctionCall",
"src": "3626:20:3"
},
"variableNames": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "3621:1:3"
}
]
},
{
"nodeType": "YulAssignment",
"src": "3655:16:3",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "3666:1:3"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "3669:1:3"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3662:3:3"
},
"nodeType": "YulFunctionCall",
"src": "3662:9:3"
},
"variableNames": [
{
"name": "sum",
"nodeType": "YulIdentifier",
"src": "3655:3:3"
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "3695:22:3",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nodeType": "YulIdentifier",
"src": "3697:16:3"
},
"nodeType": "YulFunctionCall",
"src": "3697:18:3"
},
"nodeType": "YulExpressionStatement",
"src": "3697:18:3"
}
]
},
"condition": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "3687:1:3"
},
{
"name": "sum",
"nodeType": "YulIdentifier",
"src": "3690:3:3"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "3684:2:3"
},
"nodeType": "YulFunctionCall",
"src": "3684:10:3"
},
"nodeType": "YulIf",
"src": "3681:36:3"
}
]
},
"name": "checked_add_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "x",
"nodeType": "YulTypedName",
"src": "3564:1:3",
"type": ""
},
{
"name": "y",
"nodeType": "YulTypedName",
"src": "3567:1:3",
"type": ""
}
],
"returnVariables": [
{
"name": "sum",
"nodeType": "YulTypedName",
"src": "3573:3:3",
"type": ""
}
],
"src": "3533:191:3"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3773:43:3",
"statements": [
{
"nodeType": "YulAssignment",
"src": "3783:27:3",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "3798:5:3"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3805:4:3",
"type": "",
"value": "0xff"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "3794:3:3"
},
"nodeType": "YulFunctionCall",
"src": "3794:16:3"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "3783:7:3"
}
]
}
]
},
"name": "cleanup_t_uint8",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "3755:5:3",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "3765:7:3",
"type": ""
}
],
"src": "3730:86:3"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3865:148:3",
"statements": [
{
"nodeType": "YulAssignment",
"src": "3875:23:3",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "3896:1:3"
}
],
"functionName": {
"name": "cleanup_t_uint8",
"nodeType": "YulIdentifier",
"src": "3880:15:3"
},
"nodeType": "YulFunctionCall",
"src": "3880:18:3"
},
"variableNames": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "3875:1:3"
}
]
},
{
"nodeType": "YulAssignment",
"src": "3907:23:3",
"value": {
"arguments": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "3928:1:3"
}
],
"functionName": {
"name": "cleanup_t_uint8",
"nodeType": "YulIdentifier",
"src": "3912:15:3"
},
"nodeType": "YulFunctionCall",
"src": "3912:18:3"
},
"variableNames": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "3907:1:3"
}
]
},
{
"nodeType": "YulAssignment",
"src": "3939:17:3",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "3951:1:3"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "3954:1:3"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "3947:3:3"
},
"nodeType": "YulFunctionCall",
"src": "3947:9:3"
},
"variableNames": [
{
"name": "diff",
"nodeType": "YulIdentifier",
"src": "3939:4:3"
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "3984:22:3",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nodeType": "YulIdentifier",
"src": "3986:16:3"
},
"nodeType": "YulFunctionCall",
"src": "3986:18:3"
},
"nodeType": "YulExpressionStatement",
"src": "3986:18:3"
}
]
},
"condition": {
"arguments": [
{
"name": "diff",
"nodeType": "YulIdentifier",
"src": "3972:4:3"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3978:4:3",
"type": "",
"value": "0xff"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "3969:2:3"
},
"nodeType": "YulFunctionCall",
"src": "3969:14:3"
},
"nodeType": "YulIf",
"src": "3966:40:3"
}
]
},
"name": "checked_sub_t_uint8",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "x",
"nodeType": "YulTypedName",
"src": "3851:1:3",
"type": ""
},
{
"name": "y",
"nodeType": "YulTypedName",
"src": "3854:1:3",
"type": ""
}
],
"returnVariables": [
{
"name": "diff",
"nodeType": "YulTypedName",
"src": "3860:4:3",
"type": ""
}
],
"src": "3822:191:3"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4065:225:3",
"statements": [
{
"nodeType": "YulAssignment",
"src": "4075:23:3",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "4096:1:3"
}
],
"functionName": {
"name": "cleanup_t_uint8",
"nodeType": "YulIdentifier",
"src": "4080:15:3"
},
"nodeType": "YulFunctionCall",
"src": "4080:18:3"
},
"variableNames": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "4075:1:3"
}
]
},
{
"nodeType": "YulAssignment",
"src": "4107:23:3",
"value": {
"arguments": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "4128:1:3"
}
],
"functionName": {
"name": "cleanup_t_uint8",
"nodeType": "YulIdentifier",
"src": "4112:15:3"
},
"nodeType": "YulFunctionCall",
"src": "4112:18:3"
},
"variableNames": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "4107:1:3"
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "4139:28:3",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "4162:1:3"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "4165:1:3"
}
],
"functionName": {
"name": "mul",
"nodeType": "YulIdentifier",
"src": "4158:3:3"
},
"nodeType": "YulFunctionCall",
"src": "4158:9:3"
},
"variables": [
{
"name": "product_raw",
"nodeType": "YulTypedName",
"src": "4143:11:3",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "4176:39:3",
"value": {
"arguments": [
{
"name": "product_raw",
"nodeType": "YulIdentifier",
"src": "4203:11:3"
}
],
"functionName": {
"name": "cleanup_t_uint8",
"nodeType": "YulIdentifier",
"src": "4187:15:3"
},
"nodeType": "YulFunctionCall",
"src": "4187:28:3"
},
"variableNames": [
{
"name": "product",
"nodeType": "YulIdentifier",
"src": "4176:7:3"
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "4261:22:3",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nodeType": "YulIdentifier",
"src": "4263:16:3"
},
"nodeType": "YulFunctionCall",
"src": "4263:18:3"
},
"nodeType": "YulExpressionStatement",
"src": "4263:18:3"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "product",
"nodeType": "YulIdentifier",
"src": "4238:7:3"
},
{
"name": "product_raw",
"nodeType": "YulIdentifier",
"src": "4247:11:3"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "4235:2:3"
},
"nodeType": "YulFunctionCall",
"src": "4235:24:3"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "4228:6:3"
},
"nodeType": "YulFunctionCall",
"src": "4228:32:3"
},
"nodeType": "YulIf",
"src": "4225:58:3"
}
]
},
"name": "checked_mul_t_uint8",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "x",
"nodeType": "YulTypedName",
"src": "4048:1:3",
"type": ""
},
{
"name": "y",
"nodeType": "YulTypedName",
"src": "4051:1:3",
"type": ""
}
],
"returnVariables": [
{
"name": "product",
"nodeType": "YulTypedName",
"src": "4057:7:3",
"type": ""
}
],
"src": "4019:271:3"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4355:40:3",
"statements": [
{
"nodeType": "YulAssignment",
"src": "4366:22:3",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "4382:5:3"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "4376:5:3"
},
"nodeType": "YulFunctionCall",
"src": "4376:12:3"
},
"variableNames": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "4366:6:3"
}
]
}
]
},
"name": "array_length_t_string_memory_ptr",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "4338:5:3",
"type": ""
}
],
"returnVariables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "4348:6:3",
"type": ""
}
],
"src": "4296:99:3"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4497:73:3",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "4514:3:3"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "4519:6:3"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "4507:6:3"
},
"nodeType": "YulFunctionCall",
"src": "4507:19:3"
},
"nodeType": "YulExpressionStatement",
"src": "4507:19:3"
},
{
"nodeType": "YulAssignment",
"src": "4535:29:3",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "4554:3:3"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4559:4:3",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4550:3:3"
},
"nodeType": "YulFunctionCall",
"src": "4550:14:3"
},
"variableNames": [
{
"name": "updated_pos",
"nodeType": "YulIdentifier",
"src": "4535:11:3"
}
]
}
]
},
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "4469:3:3",
"type": ""
},
{
"name": "length",
"nodeType": "YulTypedName",
"src": "4474:6:3",
"type": ""
}
],
"returnVariables": [
{
"name": "updated_pos",
"nodeType": "YulTypedName",
"src": "4485:11:3",
"type": ""
}
],
"src": "4401:169:3"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4638:184:3",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "4648:10:3",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "4657:1:3",
"type": "",
"value": "0"
},
"variables": [
{
"name": "i",
"nodeType": "YulTypedName",
"src": "4652:1:3",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "4717:63:3",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "4742:3:3"
},
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "4747:1:3"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4738:3:3"
},
"nodeType": "YulFunctionCall",
"src": "4738:11:3"
},
{
"arguments": [
{
"arguments": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "4761:3:3"
},
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "4766:1:3"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4757:3:3"
},
"nodeType": "YulFunctionCall",
"src": "4757:11:3"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "4751:5:3"
},
"nodeType": "YulFunctionCall",
"src": "4751:18:3"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "4731:6:3"
},
"nodeType": "YulFunctionCall",
"src": "4731:39:3"
},
"nodeType": "YulExpressionStatement",
"src": "4731:39:3"
}
]
},
"condition": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "4678:1:3"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "4681:6:3"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "4675:2:3"
},
"nodeType": "YulFunctionCall",
"src": "4675:13:3"
},
"nodeType": "YulForLoop",
"post": {
"nodeType": "YulBlock",
"src": "4689:19:3",
"statements": [
{
"nodeType": "YulAssignment",
"src": "4691:15:3",
"value": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "4700:1:3"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4703:2:3",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4696:3:3"
},
"nodeType": "YulFunctionCall",
"src": "4696:10:3"
},
"variableNames": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "4691:1:3"
}
]
}
]
},
"pre": {
"nodeType": "YulBlock",
"src": "4671:3:3",
"statements": []
},
"src": "4667:113:3"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "4800:3:3"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "4805:6:3"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4796:3:3"
},
"nodeType": "YulFunctionCall",
"src": "4796:16:3"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4814:1:3",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "4789:6:3"
},
"nodeType": "YulFunctionCall",
"src": "4789:27:3"
},
"nodeType": "YulExpressionStatement",
"src": "4789:27:3"
}
]
},
"name": "copy_memory_to_memory_with_cleanup",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "src",
"nodeType": "YulTypedName",
"src": "4620:3:3",
"type": ""
},
{
"name": "dst",
"nodeType": "YulTypedName",
"src": "4625:3:3",
"type": ""
},
{
"name": "length",
"nodeType": "YulTypedName",
"src": "4630:6:3",
"type": ""
}
],
"src": "4576:246:3"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4876:54:3",
"statements": [
{
"nodeType": "YulAssignment",
"src": "4886:38:3",
"value": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "4904:5:3"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4911:2:3",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4900:3:3"
},
"nodeType": "YulFunctionCall",
"src": "4900:14:3"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4920:2:3",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "4916:3:3"
},
"nodeType": "YulFunctionCall",
"src": "4916:7:3"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "4896:3:3"
},
"nodeType": "YulFunctionCall",
"src": "4896:28:3"
},
"variableNames": [
{
"name": "result",
"nodeType": "YulIdentifier",
"src": "4886:6:3"
}
]
}
]
},
"name": "round_up_to_mul_of_32",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "4859:5:3",
"type": ""
}
],
"returnVariables": [
{
"name": "result",
"nodeType": "YulTypedName",
"src": "4869:6:3",
"type": ""
}
],
"src": "4828:102:3"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5028:285:3",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "5038:53:3",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "5085:5:3"
}
],
"functionName": {
"name": "array_length_t_string_memory_ptr",
"nodeType": "YulIdentifier",
"src": "5052:32:3"
},
"nodeType": "YulFunctionCall",
"src": "5052:39:3"
},
"variables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "5042:6:3",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "5100:78:3",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "5166:3:3"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "5171:6:3"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "5107:58:3"
},
"nodeType": "YulFunctionCall",
"src": "5107:71:3"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "5100:3:3"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "5226:5:3"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5233:4:3",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5222:3:3"
},
"nodeType": "YulFunctionCall",
"src": "5222:16:3"
},
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "5240:3:3"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "5245:6:3"
}
],
"functionName": {
"name": "copy_memory_to_memory_with_cleanup",
"nodeType": "YulIdentifier",
"src": "5187:34:3"
},
"nodeType": "YulFunctionCall",
"src": "5187:65:3"
},
"nodeType": "YulExpressionStatement",
"src": "5187:65:3"
},
{
"nodeType": "YulAssignment",
"src": "5261:46:3",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "5272:3:3"
},
{
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "5299:6:3"
}
],
"functionName": {
"name": "round_up_to_mul_of_32",
"nodeType": "YulIdentifier",
"src": "5277:21:3"
},
"nodeType": "YulFunctionCall",
"src": "5277:29:3"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5268:3:3"
},
"nodeType": "YulFunctionCall",
"src": "5268:39:3"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "5261:3:3"
}
]
}
]
},
"name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "5009:5:3",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "5016:3:3",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "5024:3:3",
"type": ""
}
],
"src": "4936:377:3"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5437:195:3",
"statements": [
{
"nodeType": "YulAssignment",
"src": "5447:26:3",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5459:9:3"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5470:2:3",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5455:3:3"
},
"nodeType": "YulFunctionCall",
"src": "5455:18:3"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "5447:4:3"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5494:9:3"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5505:1:3",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5490:3:3"
},
"nodeType": "YulFunctionCall",
"src": "5490:17:3"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "5513:4:3"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5519:9:3"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "5509:3:3"
},
"nodeType": "YulFunctionCall",
"src": "5509:20:3"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "5483:6:3"
},
"nodeType": "YulFunctionCall",
"src": "5483:47:3"
},
"nodeType": "YulExpressionStatement",
"src": "5483:47:3"
},
{
"nodeType": "YulAssignment",
"src": "5539:86:3",
"value": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "5611:6:3"
},
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "5620:4:3"
}
],
"functionName": {
"name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "5547:63:3"
},
"nodeType": "YulFunctionCall",
"src": "5547:78:3"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "5539:4:3"
}
]
}
]
},
"name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "5409:9:3",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "5421:6:3",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "5432:4:3",
"type": ""
}
],
"src": "5319:313:3"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5744:139:3",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "5766:6:3"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5774:1:3",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5762:3:3"
},
"nodeType": "YulFunctionCall",
"src": "5762:14:3"
},
{
"hexValue": "54797065644d656d566965772f696e646578202d20417474656d707465642074",
"kind": "string",
"nodeType": "YulLiteral",
"src": "5778:34:3",
"type": "",
"value": "TypedMemView/index - Attempted t"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "5755:6:3"
},
"nodeType": "YulFunctionCall",
"src": "5755:58:3"
},
"nodeType": "YulExpressionStatement",
"src": "5755:58:3"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "5834:6:3"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5842:2:3",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5830:3:3"
},
"nodeType": "YulFunctionCall",
"src": "5830:15:3"
},
{
"hexValue": "6f20696e646578206d6f7265207468616e203332206279746573",
"kind": "string",
"nodeType": "YulLiteral",
"src": "5847:28:3",
"type": "",
"value": "o index more than 32 bytes"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "5823:6:3"
},
"nodeType": "YulFunctionCall",
"src": "5823:53:3"
},
"nodeType": "YulExpressionStatement",
"src": "5823:53:3"
}
]
},
"name": "store_literal_in_memory_b2c061d25dd4dec479f0720f15754fff58a1a4debc7353bd1d3f4b7b23876297",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "5736:6:3",
"type": ""
}
],
"src": "5638:245:3"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6035:220:3",
"statements": [
{
"nodeType": "YulAssignment",
"src": "6045:74:3",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "6111:3:3"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6116:2:3",
"type": "",
"value": "58"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "6052:58:3"
},
"nodeType": "YulFunctionCall",
"src": "6052:67:3"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "6045:3:3"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "6217:3:3"
}
],
"functionName": {
"name": "store_literal_in_memory_b2c061d25dd4dec479f0720f15754fff58a1a4debc7353bd1d3f4b7b23876297",
"nodeType": "YulIdentifier",
"src": "6128:88:3"
},
"nodeType": "YulFunctionCall",
"src": "6128:93:3"
},
"nodeType": "YulExpressionStatement",
"src": "6128:93:3"
},
{
"nodeType": "YulAssignment",
"src": "6230:19:3",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "6241:3:3"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6246:2:3",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6237:3:3"
},
"nodeType": "YulFunctionCall",
"src": "6237:12:3"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "6230:3:3"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_b2c061d25dd4dec479f0720f15754fff58a1a4debc7353bd1d3f4b7b23876297_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "6023:3:3",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "6031:3:3",
"type": ""
}
],
"src": "5889:366:3"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6432:248:3",
"statements": [
{
"nodeType": "YulAssignment",
"src": "6442:26:3",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "6454:9:3"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6465:2:3",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6450:3:3"
},
"nodeType": "YulFunctionCall",
"src": "6450:18:3"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "6442:4:3"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "6489:9:3"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6500:1:3",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6485:3:3"
},
"nodeType": "YulFunctionCall",
"src": "6485:17:3"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "6508:4:3"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "6514:9:3"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "6504:3:3"
},
"nodeType": "YulFunctionCall",
"src": "6504:20:3"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "6478:6:3"
},
"nodeType": "YulFunctionCall",
"src": "6478:47:3"
},
"nodeType": "YulExpressionStatement",
"src": "6478:47:3"
},
{
"nodeType": "YulAssignment",
"src": "6534:139:3",
"value": {
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "6668:4:3"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_b2c061d25dd4dec479f0720f15754fff58a1a4debc7353bd1d3f4b7b23876297_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "6542:124:3"
},
"nodeType": "YulFunctionCall",
"src": "6542:131:3"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "6534:4:3"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_b2c061d25dd4dec479f0720f15754fff58a1a4debc7353bd1d3f4b7b23876297__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "6412:9:3",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "6427:4:3",
"type": ""
}
],
"src": "6261:419:3"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6800:34:3",
"statements": [
{
"nodeType": "YulAssignment",
"src": "6810:18:3",
"value": {
"name": "pos",
"nodeType": "YulIdentifier",
"src": "6825:3:3"
},
"variableNames": [
{
"name": "updated_pos",
"nodeType": "YulIdentifier",
"src": "6810:11:3"
}
]
}
]
},
"name": "array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "6772:3:3",
"type": ""
},
{
"name": "length",
"nodeType": "YulTypedName",
"src": "6777:6:3",
"type": ""
}
],
"returnVariables": [
{
"name": "updated_pos",
"nodeType": "YulTypedName",
"src": "6788:11:3",
"type": ""
}
],
"src": "6686:148:3"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6946:134:3",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "6968:6:3"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6976:1:3",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6964:3:3"
},
"nodeType": "YulFunctionCall",
"src": "6964:14:3"
},
{
"hexValue": "54797065644d656d566965772f696e646578202d204f76657272616e20746865",
"kind": "string",
"nodeType": "YulLiteral",
"src": "6980:34:3",
"type": "",
"value": "TypedMemView/index - Overran the"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "6957:6:3"
},
"nodeType": "YulFunctionCall",
"src": "6957:58:3"
},
"nodeType": "YulExpressionStatement",
"src": "6957:58:3"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "7036:6:3"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7044:2:3",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7032:3:3"
},
"nodeType": "YulFunctionCall",
"src": "7032:15:3"
},
{
"hexValue": "20766965772e20536c696365206973206174203078",
"kind": "string",
"nodeType": "YulLiteral",
"src": "7049:23:3",
"type": "",
"value": " view. Slice is at 0x"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "7025:6:3"
},
"nodeType": "YulFunctionCall",
"src": "7025:48:3"
},
"nodeType": "YulExpressionStatement",
"src": "7025:48:3"
}
]
},
"name": "store_literal_in_memory_fb6c6ce939dcb005b895abe7a9570250d9c1c31a5440a6a6e28e0acc2d1c6af1",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "6938:6:3",
"type": ""
}
],
"src": "6840:240:3"
},
{
"body": {
"nodeType": "YulBlock",
"src": "7250:238:3",
"statements": [
{
"nodeType": "YulAssignment",
"src": "7260:92:3",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "7344:3:3"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7349:2:3",
"type": "",
"value": "53"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulIdentifier",
"src": "7267:76:3"
},
"nodeType": "YulFunctionCall",
"src": "7267:85:3"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "7260:3:3"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "7450:3:3"
}
],
"functionName": {
"name": "store_literal_in_memory_fb6c6ce939dcb005b895abe7a9570250d9c1c31a5440a6a6e28e0acc2d1c6af1",
"nodeType": "YulIdentifier",
"src": "7361:88:3"
},
"nodeType": "YulFunctionCall",
"src": "7361:93:3"
},
"nodeType": "YulExpressionStatement",
"src": "7361:93:3"
},
{
"nodeType": "YulAssignment",
"src": "7463:19:3",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "7474:3:3"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7479:2:3",
"type": "",
"value": "53"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7470:3:3"
},
"nodeType": "YulFunctionCall",
"src": "7470:12:3"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "7463:3:3"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_fb6c6ce939dcb005b895abe7a9570250d9c1c31a5440a6a6e28e0acc2d1c6af1_to_t_string_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "7238:3:3",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "7246:3:3",
"type": ""
}
],
"src": "7086:402:3"
},
{
"body": {
"nodeType": "YulBlock",
"src": "7538:53:3",
"statements": [
{
"nodeType": "YulAssignment",
"src": "7548:37:3",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "7563:5:3"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7570:14:3",
"type": "",
"value": "0xffffffffffff"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "7559:3:3"
},
"nodeType": "YulFunctionCall",
"src": "7559:26:3"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "7548:7:3"
}
]
}
]
},
"name": "cleanup_t_uint48",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "7520:5:3",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "7530:7:3",
"type": ""
}
],
"src": "7494:97:3"
},
{
"body": {
"nodeType": "YulBlock",
"src": "7640:53:3",
"statements": [
{
"nodeType": "YulAssignment",
"src": "7650:36:3",
"value": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7675:3:3",
"type": "",
"value": "208"
},
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "7680:5:3"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "7671:3:3"
},
"nodeType": "YulFunctionCall",
"src": "7671:15:3"
},
"variableNames": [
{
"name": "newValue",
"nodeType": "YulIdentifier",
"src": "7650:8:3"
}
]
}
]
},
"name": "shift_left_208",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "7621:5:3",
"type": ""
}
],
"returnVariables": [
{
"name": "newValue",
"nodeType": "YulTypedName",
"src": "7631:8:3",
"type": ""
}
],
"src": "7597:96:3"
},
{
"body": {
"nodeType": "YulBlock",
"src": "7745:48:3",
"statements": [
{
"nodeType": "YulAssignment",
"src": "7755:32:3",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "7781:5:3"
}
],
"functionName": {
"name": "shift_left_208",
"nodeType": "YulIdentifier",
"src": "7766:14:3"
},
"nodeType": "YulFunctionCall",
"src": "7766:21:3"
},
"variableNames": [
{
"name": "aligned",
"nodeType": "YulIdentifier",
"src": "7755:7:3"
}
]
}
]
},
"name": "leftAlign_t_uint48",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "7727:5:3",
"type": ""
}
],
"returnVariables": [
{
"name": "aligned",
"nodeType": "YulTypedName",
"src": "7737:7:3",
"type": ""
}
],
"src": "7699:94:3"
},
{
"body": {
"nodeType": "YulBlock",
"src": "7880:72:3",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "7897:3:3"
},
{
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "7938:5:3"
}
],
"functionName": {
"name": "cleanup_t_uint48",
"nodeType": "YulIdentifier",
"src": "7921:16:3"
},
"nodeType": "YulFunctionCall",
"src": "7921:23:3"
}
],
"functionName": {
"name": "leftAlign_t_uint48",
"nodeType": "YulIdentifier",
"src": "7902:18:3"
},
"nodeType": "YulFunctionCall",
"src": "7902:43:3"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "7890:6:3"
},
"nodeType": "YulFunctionCall",
"src": "7890:56:3"
},
"nodeType": "YulExpressionStatement",
"src": "7890:56:3"
}
]
},
"name": "abi_encode_t_uint48_to_t_uint48_nonPadded_inplace_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "7868:5:3",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "7875:3:3",
"type": ""
}
],
"src": "7799:153:3"
},
{
"body": {
"nodeType": "YulBlock",
"src": "8064:59:3",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "8086:6:3"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8094:1:3",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8082:3:3"
},
"nodeType": "YulFunctionCall",
"src": "8082:14:3"
},
{
"hexValue": "2077697468206c656e677468203078",
"kind": "string",
"nodeType": "YulLiteral",
"src": "8098:17:3",
"type": "",
"value": " with length 0x"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "8075:6:3"
},
"nodeType": "YulFunctionCall",
"src": "8075:41:3"
},
"nodeType": "YulExpressionStatement",
"src": "8075:41:3"
}
]
},
"name": "store_literal_in_memory_3e6849d566dba71a1ac686a5bd3af1bed003e25465c91471808028cdad9d144b",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "8056:6:3",
"type": ""
}
],
"src": "7958:165:3"
},
{
"body": {
"nodeType": "YulBlock",
"src": "8293:238:3",
"statements": [
{
"nodeType": "YulAssignment",
"src": "8303:92:3",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "8387:3:3"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8392:2:3",
"type": "",
"value": "15"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulIdentifier",
"src": "8310:76:3"
},
"nodeType": "YulFunctionCall",
"src": "8310:85:3"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "8303:3:3"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "8493:3:3"
}
],
"functionName": {
"name": "store_literal_in_memory_3e6849d566dba71a1ac686a5bd3af1bed003e25465c91471808028cdad9d144b",
"nodeType": "YulIdentifier",
"src": "8404:88:3"
},
"nodeType": "YulFunctionCall",
"src": "8404:93:3"
},
"nodeType": "YulExpressionStatement",
"src": "8404:93:3"
},
{
"nodeType": "YulAssignment",
"src": "8506:19:3",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "8517:3:3"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8522:2:3",
"type": "",
"value": "15"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8513:3:3"
},
"nodeType": "YulFunctionCall",
"src": "8513:12:3"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "8506:3:3"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_3e6849d566dba71a1ac686a5bd3af1bed003e25465c91471808028cdad9d144b_to_t_string_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "8281:3:3",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "8289:3:3",
"type": ""
}
],
"src": "8129:402:3"
},
{
"body": {
"nodeType": "YulBlock",
"src": "8643:114:3",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "8665:6:3"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8673:1:3",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8661:3:3"
},
"nodeType": "YulFunctionCall",
"src": "8661:14:3"
},
{
"hexValue": "2e20417474656d7074656420746f20696e646578206174206f66667365742030",
"kind": "string",
"nodeType": "YulLiteral",
"src": "8677:34:3",
"type": "",
"value": ". Attempted to index at offset 0"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "8654:6:3"
},
"nodeType": "YulFunctionCall",
"src": "8654:58:3"
},
"nodeType": "YulExpressionStatement",
"src": "8654:58:3"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "8733:6:3"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8741:2:3",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8729:3:3"
},
"nodeType": "YulFunctionCall",
"src": "8729:15:3"
},
{
"hexValue": "78",
"kind": "string",
"nodeType": "YulLiteral",
"src": "8746:3:3",
"type": "",
"value": "x"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "8722:6:3"
},
"nodeType": "YulFunctionCall",
"src": "8722:28:3"
},
"nodeType": "YulExpressionStatement",
"src": "8722:28:3"
}
]
},
"name": "store_literal_in_memory_76d133faf43042eef7167f01d32e0891632a5651573db9fc8b6aa42fdbcaf509",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "8635:6:3",
"type": ""
}
],
"src": "8537:220:3"
},
{
"body": {
"nodeType": "YulBlock",
"src": "8927:238:3",
"statements": [
{
"nodeType": "YulAssignment",
"src": "8937:92:3",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "9021:3:3"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9026:2:3",
"type": "",
"value": "33"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulIdentifier",
"src": "8944:76:3"
},
"nodeType": "YulFunctionCall",
"src": "8944:85:3"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "8937:3:3"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "9127:3:3"
}
],
"functionName": {
"name": "store_literal_in_memory_76d133faf43042eef7167f01d32e0891632a5651573db9fc8b6aa42fdbcaf509",
"nodeType": "YulIdentifier",
"src": "9038:88:3"
},
"nodeType": "YulFunctionCall",
"src": "9038:93:3"
},
"nodeType": "YulExpressionStatement",
"src": "9038:93:3"
},
{
"nodeType": "YulAssignment",
"src": "9140:19:3",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "9151:3:3"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9156:2:3",
"type": "",
"value": "33"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "9147:3:3"
},
"nodeType": "YulFunctionCall",
"src": "9147:12:3"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "9140:3:3"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_76d133faf43042eef7167f01d32e0891632a5651573db9fc8b6aa42fdbcaf509_to_t_string_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "8915:3:3",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "8923:3:3",
"type": ""
}
],
"src": "8763:402:3"
},
{
"body": {
"nodeType": "YulBlock",
"src": "9277:45:3",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "9299:6:3"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9307:1:3",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "9295:3:3"
},
"nodeType": "YulFunctionCall",
"src": "9295:14:3"
},
{
"hexValue": "2e",
"kind": "string",
"nodeType": "YulLiteral",
"src": "9311:3:3",
"type": "",
"value": "."
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "9288:6:3"
},
"nodeType": "YulFunctionCall",
"src": "9288:27:3"
},
"nodeType": "YulExpressionStatement",
"src": "9288:27:3"
}
]
},
"name": "store_literal_in_memory_6f010af653ebe3cb07d297a4ef13366103d392ceffa68dd48232e6e9ff2187bf",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "9269:6:3",
"type": ""
}
],
"src": "9171:151:3"
},
{
"body": {
"nodeType": "YulBlock",
"src": "9492:236:3",
"statements": [
{
"nodeType": "YulAssignment",
"src": "9502:91:3",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "9586:3:3"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9591:1:3",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulIdentifier",
"src": "9509:76:3"
},
"nodeType": "YulFunctionCall",
"src": "9509:84:3"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "9502:3:3"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "9691:3:3"
}
],
"functionName": {
"name": "store_literal_in_memory_6f010af653ebe3cb07d297a4ef13366103d392ceffa68dd48232e6e9ff2187bf",
"nodeType": "YulIdentifier",
"src": "9602:88:3"
},
"nodeType": "YulFunctionCall",
"src": "9602:93:3"
},
"nodeType": "YulExpressionStatement",
"src": "9602:93:3"
},
{
"nodeType": "YulAssignment",
"src": "9704:18:3",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "9715:3:3"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9720:1:3",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "9711:3:3"
},
"nodeType": "YulFunctionCall",
"src": "9711:11:3"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "9704:3:3"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_6f010af653ebe3cb07d297a4ef13366103d392ceffa68dd48232e6e9ff2187bf_to_t_string_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "9480:3:3",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "9488:3:3",
"type": ""
}
],
"src": "9328:400:3"
},
{
"body": {
"nodeType": "YulBlock",
"src": "10431:1292:3",
"statements": [
{
"nodeType": "YulAssignment",
"src": "10442:155:3",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "10593:3:3"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_fb6c6ce939dcb005b895abe7a9570250d9c1c31a5440a6a6e28e0acc2d1c6af1_to_t_string_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulIdentifier",
"src": "10449:142:3"
},
"nodeType": "YulFunctionCall",
"src": "10449:148:3"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "10442:3:3"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "10667:6:3"
},
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "10676:3:3"
}
],
"functionName": {
"name": "abi_encode_t_uint48_to_t_uint48_nonPadded_inplace_fromStack",
"nodeType": "YulIdentifier",
"src": "10607:59:3"
},
"nodeType": "YulFunctionCall",
"src": "10607:73:3"
},
"nodeType": "YulExpressionStatement",
"src": "10607:73:3"
},
{
"nodeType": "YulAssignment",
"src": "10689:18:3",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "10700:3:3"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10705:1:3",
"type": "",
"value": "6"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "10696:3:3"
},
"nodeType": "YulFunctionCall",
"src": "10696:11:3"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "10689:3:3"
}
]
},
{
"nodeType": "YulAssignment",
"src": "10717:155:3",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "10868:3:3"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_3e6849d566dba71a1ac686a5bd3af1bed003e25465c91471808028cdad9d144b_to_t_string_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulIdentifier",
"src": "10724:142:3"
},
"nodeType": "YulFunctionCall",
"src": "10724:148:3"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "10717:3:3"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "10942:6:3"
},
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "10951:3:3"
}
],
"functionName": {
"name": "abi_encode_t_uint48_to_t_uint48_nonPadded_inplace_fromStack",
"nodeType": "YulIdentifier",
"src": "10882:59:3"
},
"nodeType": "YulFunctionCall",
"src": "10882:73:3"
},
"nodeType": "YulExpressionStatement",
"src": "10882:73:3"
},
{
"nodeType": "YulAssignment",
"src": "10964:18:3",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "10975:3:3"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10980:1:3",
"type": "",
"value": "6"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "10971:3:3"
},
"nodeType": "YulFunctionCall",
"src": "10971:11:3"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "10964:3:3"
}
]
},
{
"nodeType": "YulAssignment",
"src": "10992:155:3",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "11143:3:3"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_76d133faf43042eef7167f01d32e0891632a5651573db9fc8b6aa42fdbcaf509_to_t_string_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulIdentifier",
"src": "10999:142:3"
},
"nodeType": "YulFunctionCall",
"src": "10999:148:3"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "10992:3:3"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value2",
"nodeType": "YulIdentifier",
"src": "11217:6:3"
},
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "11226:3:3"
}
],
"functionName": {
"name": "abi_encode_t_uint48_to_t_uint48_nonPadded_inplace_fromStack",
"nodeType": "YulIdentifier",
"src": "11157:59:3"
},
"nodeType": "YulFunctionCall",
"src": "11157:73:3"
},
"nodeType": "YulExpressionStatement",
"src": "11157:73:3"
},
{
"nodeType": "YulAssignment",
"src": "11239:18:3",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "11250:3:3"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11255:1:3",
"type": "",
"value": "6"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "11246:3:3"
},
"nodeType": "YulFunctionCall",
"src": "11246:11:3"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "11239:3:3"
}
]
},
{
"nodeType": "YulAssignment",
"src": "11267:155:3",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "11418:3:3"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_3e6849d566dba71a1ac686a5bd3af1bed003e25465c91471808028cdad9d144b_to_t_string_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulIdentifier",
"src": "11274:142:3"
},
"nodeType": "YulFunctionCall",
"src": "11274:148:3"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "11267:3:3"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value3",
"nodeType": "YulIdentifier",
"src": "11492:6:3"
},
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "11501:3:3"
}
],
"functionName": {
"name": "abi_encode_t_uint48_to_t_uint48_nonPadded_inplace_fromStack",
"nodeType": "YulIdentifier",
"src": "11432:59:3"
},
"nodeType": "YulFunctionCall",
"src": "11432:73:3"
},
"nodeType": "YulExpressionStatement",
"src": "11432:73:3"
},
{
"nodeType": "YulAssignment",
"src": "11514:18:3",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "11525:3:3"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11530:1:3",
"type": "",
"value": "6"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "11521:3:3"
},
"nodeType": "YulFunctionCall",
"src": "11521:11:3"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "11514:3:3"
}
]
},
{
"nodeType": "YulAssignment",
"src": "11542:155:3",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "11693:3:3"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_6f010af653ebe3cb07d297a4ef13366103d392ceffa68dd48232e6e9ff2187bf_to_t_string_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulIdentifier",
"src": "11549:142:3"
},
"nodeType": "YulFunctionCall",
"src": "11549:148:3"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "11542:3:3"
}
]
},
{
"nodeType": "YulAssignment",
"src": "11707:10:3",
"value": {
"name": "pos",
"nodeType": "YulIdentifier",
"src": "11714:3:3"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "11707:3:3"
}
]
}
]
},
"name": "abi_encode_tuple_packed_t_stringliteral_fb6c6ce939dcb005b895abe7a9570250d9c1c31a5440a6a6e28e0acc2d1c6af1_t_uint48_t_stringliteral_3e6849d566dba71a1ac686a5bd3af1bed003e25465c91471808028cdad9d144b_t_uint48_t_stringliteral_76d133faf43042eef7167f01d32e0891632a5651573db9fc8b6aa42fdbcaf509_t_uint48_t_stringliteral_3e6849d566dba71a1ac686a5bd3af1bed003e25465c91471808028cdad9d144b_t_uint48_t_stringliteral_6f010af653ebe3cb07d297a4ef13366103d392ceffa68dd48232e6e9ff2187bf__to_t_string_memory_ptr_t_uint48_t_string_memory_ptr_t_uint48_t_string_memory_ptr_t_uint48_t_string_memory_ptr_t_uint48_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "10386:3:3",
"type": ""
},
{
"name": "value3",
"nodeType": "YulTypedName",
"src": "10392:6:3",
"type": ""
},
{
"name": "value2",
"nodeType": "YulTypedName",
"src": "10400:6:3",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "10408:6:3",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "10416:6:3",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "10427:3:3",
"type": ""
}
],
"src": "9734:1989:3"
},
{
"body": {
"nodeType": "YulBlock",
"src": "11757:152:3",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11774:1:3",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11777:77:3",
"type": "",
"value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "11767:6:3"
},
"nodeType": "YulFunctionCall",
"src": "11767:88:3"
},
"nodeType": "YulExpressionStatement",
"src": "11767:88:3"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11871:1:3",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11874:4:3",
"type": "",
"value": "0x32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "11864:6:3"
},
"nodeType": "YulFunctionCall",
"src": "11864:15:3"
},
"nodeType": "YulExpressionStatement",
"src": "11864:15:3"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11895:1:3",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11898:4:3",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "11888:6:3"
},
"nodeType": "YulFunctionCall",
"src": "11888:15:3"
},
"nodeType": "YulExpressionStatement",
"src": "11888:15:3"
}
]
},
"name": "panic_error_0x32",
"nodeType": "YulFunctionDefinition",
"src": "11729:180:3"
}
]
},
"contents": "{\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\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 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 abi_encode_t_address_to_t_address_fromStack(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n }\n\n function cleanup_t_bytes32(value) -> cleaned {\n cleaned := value\n }\n\n function abi_encode_t_bytes32_to_t_bytes32_fromStack_library(value, pos) {\n mstore(pos, cleanup_t_bytes32(value))\n }\n\n function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_library_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_bytes32_to_t_bytes32_fromStack_library(value0, add(headStart, 0))\n\n }\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 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 function leftAlign_t_bytes32(value) -> aligned {\n aligned := value\n }\n\n function abi_encode_t_bytes32_to_t_bytes32_nonPadded_inplace_fromStack(value, pos) {\n mstore(pos, leftAlign_t_bytes32(cleanup_t_bytes32(value)))\n }\n\n function leftAlign_t_uint256(value) -> aligned {\n aligned := value\n }\n\n function abi_encode_t_uint256_to_t_uint256_nonPadded_inplace_fromStack(value, pos) {\n mstore(pos, leftAlign_t_uint256(cleanup_t_uint256(value)))\n }\n\n function abi_encode_tuple_packed_t_bytes32_t_uint256__to_t_bytes32_t_uint256__nonPadded_inplace_fromStack_reversed(pos , value1, value0) -> end {\n\n abi_encode_t_bytes32_to_t_bytes32_nonPadded_inplace_fromStack(value0, pos)\n pos := add(pos, 32)\n\n abi_encode_t_uint256_to_t_uint256_nonPadded_inplace_fromStack(value1, pos)\n pos := add(pos, 32)\n\n end := pos\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 cleanup_t_uint8(value) -> cleaned {\n cleaned := and(value, 0xff)\n }\n\n function checked_sub_t_uint8(x, y) -> diff {\n x := cleanup_t_uint8(x)\n y := cleanup_t_uint8(y)\n diff := sub(x, y)\n\n if gt(diff, 0xff) { panic_error_0x11() }\n\n }\n\n function checked_mul_t_uint8(x, y) -> product {\n x := cleanup_t_uint8(x)\n y := cleanup_t_uint8(y)\n let product_raw := mul(x, y)\n product := cleanup_t_uint8(product_raw)\n\n if iszero(eq(product, product_raw)) { panic_error_0x11() }\n\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_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_string_memory_ptr_to_t_string_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_string_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_string_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_string_memory_ptr__to_t_string_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_string_memory_ptr_to_t_string_memory_ptr_fromStack(value0, tail)\n\n }\n\n function store_literal_in_memory_b2c061d25dd4dec479f0720f15754fff58a1a4debc7353bd1d3f4b7b23876297(memPtr) {\n\n mstore(add(memPtr, 0), \"TypedMemView/index - Attempted t\")\n\n mstore(add(memPtr, 32), \"o index more than 32 bytes\")\n\n }\n\n function abi_encode_t_stringliteral_b2c061d25dd4dec479f0720f15754fff58a1a4debc7353bd1d3f4b7b23876297_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 58)\n store_literal_in_memory_b2c061d25dd4dec479f0720f15754fff58a1a4debc7353bd1d3f4b7b23876297(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_b2c061d25dd4dec479f0720f15754fff58a1a4debc7353bd1d3f4b7b23876297__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_b2c061d25dd4dec479f0720f15754fff58a1a4debc7353bd1d3f4b7b23876297_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack(pos, length) -> updated_pos {\n updated_pos := pos\n }\n\n function store_literal_in_memory_fb6c6ce939dcb005b895abe7a9570250d9c1c31a5440a6a6e28e0acc2d1c6af1(memPtr) {\n\n mstore(add(memPtr, 0), \"TypedMemView/index - Overran the\")\n\n mstore(add(memPtr, 32), \" view. Slice is at 0x\")\n\n }\n\n function abi_encode_t_stringliteral_fb6c6ce939dcb005b895abe7a9570250d9c1c31a5440a6a6e28e0acc2d1c6af1_to_t_string_memory_ptr_nonPadded_inplace_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack(pos, 53)\n store_literal_in_memory_fb6c6ce939dcb005b895abe7a9570250d9c1c31a5440a6a6e28e0acc2d1c6af1(pos)\n end := add(pos, 53)\n }\n\n function cleanup_t_uint48(value) -> cleaned {\n cleaned := and(value, 0xffffffffffff)\n }\n\n function shift_left_208(value) -> newValue {\n newValue :=\n\n shl(208, value)\n\n }\n\n function leftAlign_t_uint48(value) -> aligned {\n aligned := shift_left_208(value)\n }\n\n function abi_encode_t_uint48_to_t_uint48_nonPadded_inplace_fromStack(value, pos) {\n mstore(pos, leftAlign_t_uint48(cleanup_t_uint48(value)))\n }\n\n function store_literal_in_memory_3e6849d566dba71a1ac686a5bd3af1bed003e25465c91471808028cdad9d144b(memPtr) {\n\n mstore(add(memPtr, 0), \" with length 0x\")\n\n }\n\n function abi_encode_t_stringliteral_3e6849d566dba71a1ac686a5bd3af1bed003e25465c91471808028cdad9d144b_to_t_string_memory_ptr_nonPadded_inplace_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack(pos, 15)\n store_literal_in_memory_3e6849d566dba71a1ac686a5bd3af1bed003e25465c91471808028cdad9d144b(pos)\n end := add(pos, 15)\n }\n\n function store_literal_in_memory_76d133faf43042eef7167f01d32e0891632a5651573db9fc8b6aa42fdbcaf509(memPtr) {\n\n mstore(add(memPtr, 0), \". Attempted to index at offset 0\")\n\n mstore(add(memPtr, 32), \"x\")\n\n }\n\n function abi_encode_t_stringliteral_76d133faf43042eef7167f01d32e0891632a5651573db9fc8b6aa42fdbcaf509_to_t_string_memory_ptr_nonPadded_inplace_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack(pos, 33)\n store_literal_in_memory_76d133faf43042eef7167f01d32e0891632a5651573db9fc8b6aa42fdbcaf509(pos)\n end := add(pos, 33)\n }\n\n function store_literal_in_memory_6f010af653ebe3cb07d297a4ef13366103d392ceffa68dd48232e6e9ff2187bf(memPtr) {\n\n mstore(add(memPtr, 0), \".\")\n\n }\n\n function abi_encode_t_stringliteral_6f010af653ebe3cb07d297a4ef13366103d392ceffa68dd48232e6e9ff2187bf_to_t_string_memory_ptr_nonPadded_inplace_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack(pos, 1)\n store_literal_in_memory_6f010af653ebe3cb07d297a4ef13366103d392ceffa68dd48232e6e9ff2187bf(pos)\n end := add(pos, 1)\n }\n\n function abi_encode_tuple_packed_t_stringliteral_fb6c6ce939dcb005b895abe7a9570250d9c1c31a5440a6a6e28e0acc2d1c6af1_t_uint48_t_stringliteral_3e6849d566dba71a1ac686a5bd3af1bed003e25465c91471808028cdad9d144b_t_uint48_t_stringliteral_76d133faf43042eef7167f01d32e0891632a5651573db9fc8b6aa42fdbcaf509_t_uint48_t_stringliteral_3e6849d566dba71a1ac686a5bd3af1bed003e25465c91471808028cdad9d144b_t_uint48_t_stringliteral_6f010af653ebe3cb07d297a4ef13366103d392ceffa68dd48232e6e9ff2187bf__to_t_string_memory_ptr_t_uint48_t_string_memory_ptr_t_uint48_t_string_memory_ptr_t_uint48_t_string_memory_ptr_t_uint48_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos , value3, value2, value1, value0) -> end {\n\n pos := abi_encode_t_stringliteral_fb6c6ce939dcb005b895abe7a9570250d9c1c31a5440a6a6e28e0acc2d1c6af1_to_t_string_memory_ptr_nonPadded_inplace_fromStack( pos)\n\n abi_encode_t_uint48_to_t_uint48_nonPadded_inplace_fromStack(value0, pos)\n pos := add(pos, 6)\n\n pos := abi_encode_t_stringliteral_3e6849d566dba71a1ac686a5bd3af1bed003e25465c91471808028cdad9d144b_to_t_string_memory_ptr_nonPadded_inplace_fromStack( pos)\n\n abi_encode_t_uint48_to_t_uint48_nonPadded_inplace_fromStack(value1, pos)\n pos := add(pos, 6)\n\n pos := abi_encode_t_stringliteral_76d133faf43042eef7167f01d32e0891632a5651573db9fc8b6aa42fdbcaf509_to_t_string_memory_ptr_nonPadded_inplace_fromStack( pos)\n\n abi_encode_t_uint48_to_t_uint48_nonPadded_inplace_fromStack(value2, pos)\n pos := add(pos, 6)\n\n pos := abi_encode_t_stringliteral_3e6849d566dba71a1ac686a5bd3af1bed003e25465c91471808028cdad9d144b_to_t_string_memory_ptr_nonPadded_inplace_fromStack( pos)\n\n abi_encode_t_uint48_to_t_uint48_nonPadded_inplace_fromStack(value3, pos)\n pos := add(pos, 6)\n\n pos := abi_encode_t_stringliteral_6f010af653ebe3cb07d297a4ef13366103d392ceffa68dd48232e6e9ff2187bf_to_t_string_memory_ptr_nonPadded_inplace_fromStack( pos)\n\n end := pos\n }\n\n function panic_error_0x32() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n\n}\n",
"id": 3,
"language": "Yul",
"name": "#utility.yul"
}
],
"immutableReferences": {},
"linkReferences": {
"Sample.sol": {
"Sample": [
{
"length": 20,
"start": 298
},
{
"length": 20,
"start": 431
}
]
}
},
"object": "608060405234801561001057600080fd5b50600436106100415760003560e01c8063687888681461004657806386b234f514610064578063b29f083514610082575b600080fd5b61004e61008c565b60405161005b91906107a8565b60405180910390f35b61006c6100de565b6040516100799190610804565b60405180910390f35b61008a6101ad565b005b60008061009761020b565b905060006100ad82600001518360200151610253565b905060006100c560008361027f90919063ffffffff16565b905060006100d2826102aa565b90508094505050505090565b6000806100e961020b565b905060006100ff82600001518360200151610253565b9050600061011760008361027f90919063ffffffff16565b90506000610124826102cf565b9050600073__$444bebbe5b1c08ea17d8fdfa4d915df024$__635ced058e836040518263ffffffff1660e01b815260040161015f9190610838565b602060405180830381865af415801561017c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101a09190610884565b9050809550505050505090565b73__$444bebbe5b1c08ea17d8fdfa4d915df024$__63fdc853086040518163ffffffff1660e01b815260040160006040518083038186803b1580156101f157600080fd5b505af4158015610205573d6000803e3d6000fd5b50505050565b610213610772565b61021b610772565b61023873e0f5206bbd039e7b0592d8918820024e2a7437b96102f5565b816000018181525050607b8160200181815250508091505090565b606082826040516020016102689291906108f3565b604051602081830303815290604052905092915050565b6000808351905060006020850190506102a08464ffffffffff168284610318565b9250505092915050565b60006102c86020808462ffffff191661037f9092919063ffffffff16565b9050919050565b60006102ee600060208462ffffff19166103b69092919063ffffffff16565b9050919050565b60008173ffffffffffffffffffffffffffffffffffffffff1660001b9050919050565b6000808284610327919061094e565b905060405181111561033857600090505b60008103610369577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000915050610378565b6103748585856104fa565b9150505b9392505050565b60006008826020610390919061098f565b61039a91906109c4565b60ff166103a88585856103b6565b60001c901c90509392505050565b6000808260ff16036103cd576000801b90506104f3565b6103d684610525565b6bffffffffffffffffffffffff168260ff16846103f3919061094e565b1115610470576104346104058561054b565b6bffffffffffffffffffffffff1661041c86610525565b6bffffffffffffffffffffffff16858560ff16610574565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104679190610a91565b60405180910390fd5b60208260ff1611156104b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104ae90610b25565b60405180910390fd5b600060088302905060006104ca8661054b565b6bffffffffffffffffffffffff16905060006104e5836105e2565b905080868301511693505050505b9392505050565b60008060609050600060189050858317821b9250848317821b9250838317811b925050509392505050565b6000806bffffffffffffffffffffffff90506000601890508184821c1692505050919050565b6000806bffffffffffffffffffffffff90506000607860ff1690508184821c1692505050919050565b6060600061058186610611565b915050600061058f86610611565b915050600061059d86610611565b91505060006105ab86610611565b915050838383836040516020016105c59493929190610d14565b604051602081830303815290604052945050505050949350505050565b60007f8000000000000000000000000000000000000000000000000000000000000000600183031d9050919050565b6000806000601f90505b600f8160ff16111561066e57600060088261063691906109c4565b60ff1685901c9050610647816106cf565b61ffff168417935060108260ff161461066257601084901b93505b6001820391505061061b565b506000600f90505b60ff8160ff1610156106c957600060088261069191906109c4565b60ff1685901c90506106a2816106cf565b61ffff168317925060008260ff16146106bd57601083901b92505b60018203915050610676565b50915091565b60006106e160048360ff16901c610708565b60ff168117905060088161ffff16901b90506106fc82610708565b60ff1681179050919050565b600080600f831690506040518060400160405280601081526020017f30313233343536373839616263646566000000000000000000000000000000008152508160ff168151811061075c5761075b610d99565b5b602001015160f81c60f81b60f81c915050919050565b604051806040016040528060008019168152602001600081525090565b6000819050919050565b6107a28161078f565b82525050565b60006020820190506107bd6000830184610799565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006107ee826107c3565b9050919050565b6107fe816107e3565b82525050565b600060208201905061081960008301846107f5565b92915050565b6000819050919050565b6108328161081f565b82525050565b600060208201905061084d6000830184610829565b92915050565b600080fd5b610861816107e3565b811461086c57600080fd5b50565b60008151905061087e81610858565b92915050565b60006020828403121561089a57610899610853565b5b60006108a88482850161086f565b91505092915050565b6000819050919050565b6108cc6108c78261081f565b6108b1565b82525050565b6000819050919050565b6108ed6108e88261078f565b6108d2565b82525050565b60006108ff82856108bb565b60208201915061090f82846108dc565b6020820191508190509392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006109598261078f565b91506109648361078f565b925082820190508082111561097c5761097b61091f565b5b92915050565b600060ff82169050919050565b600061099a82610982565b91506109a583610982565b9250828203905060ff8111156109be576109bd61091f565b5b92915050565b60006109cf82610982565b91506109da83610982565b92508282026109e881610982565b91508082146109fa576109f961091f565b5b5092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610a3b578082015181840152602081019050610a20565b60008484015250505050565b6000601f19601f8301169050919050565b6000610a6382610a01565b610a6d8185610a0c565b9350610a7d818560208601610a1d565b610a8681610a47565b840191505092915050565b60006020820190508181036000830152610aab8184610a58565b905092915050565b7f54797065644d656d566965772f696e646578202d20417474656d70746564207460008201527f6f20696e646578206d6f7265207468616e203332206279746573000000000000602082015250565b6000610b0f603a83610a0c565b9150610b1a82610ab3565b604082019050919050565b60006020820190508181036000830152610b3e81610b02565b9050919050565b600081905092915050565b7f54797065644d656d566965772f696e646578202d204f76657272616e2074686560008201527f20766965772e20536c6963652069732061742030780000000000000000000000602082015250565b6000610bac603583610b45565b9150610bb782610b50565b603582019050919050565b600065ffffffffffff82169050919050565b60008160d01b9050919050565b6000610bec82610bd4565b9050919050565b610c04610bff82610bc2565b610be1565b82525050565b7f2077697468206c656e6774682030780000000000000000000000000000000000600082015250565b6000610c40600f83610b45565b9150610c4b82610c0a565b600f82019050919050565b7f2e20417474656d7074656420746f20696e646578206174206f6666736574203060008201527f7800000000000000000000000000000000000000000000000000000000000000602082015250565b6000610cb2602183610b45565b9150610cbd82610c56565b602182019050919050565b7f2e00000000000000000000000000000000000000000000000000000000000000600082015250565b6000610cfe600183610b45565b9150610d0982610cc8565b600182019050919050565b6000610d1f82610b9f565b9150610d2b8287610bf3565b600682019150610d3a82610c33565b9150610d468286610bf3565b600682019150610d5582610ca5565b9150610d618285610bf3565b600682019150610d7082610c33565b9150610d7c8284610bf3565b600682019150610d8b82610cf1565b915081905095945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea264697066735822122033b776ba5df2e8d65da2d6c5bf4529a86acf2e5d85ebed8af5c5df7a015a0c7464736f6c63430008110033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x41 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x68788868 EQ PUSH2 0x46 JUMPI DUP1 PUSH4 0x86B234F5 EQ PUSH2 0x64 JUMPI DUP1 PUSH4 0xB29F0835 EQ PUSH2 0x82 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4E PUSH2 0x8C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x5B SWAP2 SWAP1 PUSH2 0x7A8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x6C PUSH2 0xDE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x79 SWAP2 SWAP1 PUSH2 0x804 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x8A PUSH2 0x1AD JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x97 PUSH2 0x20B JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xAD DUP3 PUSH1 0x0 ADD MLOAD DUP4 PUSH1 0x20 ADD MLOAD PUSH2 0x253 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xC5 PUSH1 0x0 DUP4 PUSH2 0x27F SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xD2 DUP3 PUSH2 0x2AA JUMP JUMPDEST SWAP1 POP DUP1 SWAP5 POP POP POP POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xE9 PUSH2 0x20B JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xFF DUP3 PUSH1 0x0 ADD MLOAD DUP4 PUSH1 0x20 ADD MLOAD PUSH2 0x253 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x117 PUSH1 0x0 DUP4 PUSH2 0x27F SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x124 DUP3 PUSH2 0x2CF JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH20 0x0 PUSH4 0x5CED058E DUP4 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x15F SWAP2 SWAP1 PUSH2 0x838 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x17C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1A0 SWAP2 SWAP1 PUSH2 0x884 JUMP JUMPDEST SWAP1 POP DUP1 SWAP6 POP POP POP POP POP POP SWAP1 JUMP JUMPDEST PUSH20 0x0 PUSH4 0xFDC85308 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x205 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x213 PUSH2 0x772 JUMP JUMPDEST PUSH2 0x21B PUSH2 0x772 JUMP JUMPDEST PUSH2 0x238 PUSH20 0xE0F5206BBD039E7B0592D8918820024E2A7437B9 PUSH2 0x2F5 JUMP JUMPDEST DUP2 PUSH1 0x0 ADD DUP2 DUP2 MSTORE POP POP PUSH1 0x7B DUP2 PUSH1 0x20 ADD DUP2 DUP2 MSTORE POP POP DUP1 SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x268 SWAP3 SWAP2 SWAP1 PUSH2 0x8F3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 MLOAD SWAP1 POP PUSH1 0x0 PUSH1 0x20 DUP6 ADD SWAP1 POP PUSH2 0x2A0 DUP5 PUSH5 0xFFFFFFFFFF AND DUP3 DUP5 PUSH2 0x318 JUMP JUMPDEST SWAP3 POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2C8 PUSH1 0x20 DUP1 DUP5 PUSH3 0xFFFFFF NOT AND PUSH2 0x37F SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2EE PUSH1 0x0 PUSH1 0x20 DUP5 PUSH3 0xFFFFFF NOT AND PUSH2 0x3B6 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SHL SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 PUSH2 0x327 SWAP2 SWAP1 PUSH2 0x94E JUMP JUMPDEST SWAP1 POP PUSH1 0x40 MLOAD DUP2 GT ISZERO PUSH2 0x338 JUMPI PUSH1 0x0 SWAP1 POP JUMPDEST PUSH1 0x0 DUP2 SUB PUSH2 0x369 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000 SWAP2 POP POP PUSH2 0x378 JUMP JUMPDEST PUSH2 0x374 DUP6 DUP6 DUP6 PUSH2 0x4FA JUMP JUMPDEST SWAP2 POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x8 DUP3 PUSH1 0x20 PUSH2 0x390 SWAP2 SWAP1 PUSH2 0x98F JUMP JUMPDEST PUSH2 0x39A SWAP2 SWAP1 PUSH2 0x9C4 JUMP JUMPDEST PUSH1 0xFF AND PUSH2 0x3A8 DUP6 DUP6 DUP6 PUSH2 0x3B6 JUMP JUMPDEST PUSH1 0x0 SHR SWAP1 SHR SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0xFF AND SUB PUSH2 0x3CD JUMPI PUSH1 0x0 DUP1 SHL SWAP1 POP PUSH2 0x4F3 JUMP JUMPDEST PUSH2 0x3D6 DUP5 PUSH2 0x525 JUMP JUMPDEST PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH1 0xFF AND DUP5 PUSH2 0x3F3 SWAP2 SWAP1 PUSH2 0x94E JUMP JUMPDEST GT ISZERO PUSH2 0x470 JUMPI PUSH2 0x434 PUSH2 0x405 DUP6 PUSH2 0x54B JUMP JUMPDEST PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x41C DUP7 PUSH2 0x525 JUMP JUMPDEST PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 DUP6 PUSH1 0xFF AND PUSH2 0x574 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x467 SWAP2 SWAP1 PUSH2 0xA91 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x20 DUP3 PUSH1 0xFF AND GT ISZERO PUSH2 0x4B7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4AE SWAP1 PUSH2 0xB25 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x8 DUP4 MUL SWAP1 POP PUSH1 0x0 PUSH2 0x4CA DUP7 PUSH2 0x54B JUMP JUMPDEST PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 PUSH2 0x4E5 DUP4 PUSH2 0x5E2 JUMP JUMPDEST SWAP1 POP DUP1 DUP7 DUP4 ADD MLOAD AND SWAP4 POP POP POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x60 SWAP1 POP PUSH1 0x0 PUSH1 0x18 SWAP1 POP DUP6 DUP4 OR DUP3 SHL SWAP3 POP DUP5 DUP4 OR DUP3 SHL SWAP3 POP DUP4 DUP4 OR DUP2 SHL SWAP3 POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 POP PUSH1 0x0 PUSH1 0x18 SWAP1 POP DUP2 DUP5 DUP3 SHR AND SWAP3 POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 POP PUSH1 0x0 PUSH1 0x78 PUSH1 0xFF AND SWAP1 POP DUP2 DUP5 DUP3 SHR AND SWAP3 POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x581 DUP7 PUSH2 0x611 JUMP JUMPDEST SWAP2 POP POP PUSH1 0x0 PUSH2 0x58F DUP7 PUSH2 0x611 JUMP JUMPDEST SWAP2 POP POP PUSH1 0x0 PUSH2 0x59D DUP7 PUSH2 0x611 JUMP JUMPDEST SWAP2 POP POP PUSH1 0x0 PUSH2 0x5AB DUP7 PUSH2 0x611 JUMP JUMPDEST SWAP2 POP POP DUP4 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x5C5 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xD14 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP5 POP POP POP POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x8000000000000000000000000000000000000000000000000000000000000000 PUSH1 0x1 DUP4 SUB SAR SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x1F SWAP1 POP JUMPDEST PUSH1 0xF DUP2 PUSH1 0xFF AND GT ISZERO PUSH2 0x66E JUMPI PUSH1 0x0 PUSH1 0x8 DUP3 PUSH2 0x636 SWAP2 SWAP1 PUSH2 0x9C4 JUMP JUMPDEST PUSH1 0xFF AND DUP6 SWAP1 SHR SWAP1 POP PUSH2 0x647 DUP2 PUSH2 0x6CF JUMP JUMPDEST PUSH2 0xFFFF AND DUP5 OR SWAP4 POP PUSH1 0x10 DUP3 PUSH1 0xFF AND EQ PUSH2 0x662 JUMPI PUSH1 0x10 DUP5 SWAP1 SHL SWAP4 POP JUMPDEST PUSH1 0x1 DUP3 SUB SWAP2 POP POP PUSH2 0x61B JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0xF SWAP1 POP JUMPDEST PUSH1 0xFF DUP2 PUSH1 0xFF AND LT ISZERO PUSH2 0x6C9 JUMPI PUSH1 0x0 PUSH1 0x8 DUP3 PUSH2 0x691 SWAP2 SWAP1 PUSH2 0x9C4 JUMP JUMPDEST PUSH1 0xFF AND DUP6 SWAP1 SHR SWAP1 POP PUSH2 0x6A2 DUP2 PUSH2 0x6CF JUMP JUMPDEST PUSH2 0xFFFF AND DUP4 OR SWAP3 POP PUSH1 0x0 DUP3 PUSH1 0xFF AND EQ PUSH2 0x6BD JUMPI PUSH1 0x10 DUP4 SWAP1 SHL SWAP3 POP JUMPDEST PUSH1 0x1 DUP3 SUB SWAP2 POP POP PUSH2 0x676 JUMP JUMPDEST POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6E1 PUSH1 0x4 DUP4 PUSH1 0xFF AND SWAP1 SHR PUSH2 0x708 JUMP JUMPDEST PUSH1 0xFF AND DUP2 OR SWAP1 POP PUSH1 0x8 DUP2 PUSH2 0xFFFF AND SWAP1 SHL SWAP1 POP PUSH2 0x6FC DUP3 PUSH2 0x708 JUMP JUMPDEST PUSH1 0xFF AND DUP2 OR SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0xF DUP4 AND SWAP1 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x10 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x3031323334353637383961626364656600000000000000000000000000000000 DUP2 MSTORE POP DUP2 PUSH1 0xFF AND DUP2 MLOAD DUP2 LT PUSH2 0x75C JUMPI PUSH2 0x75B PUSH2 0xD99 JUMP JUMPDEST JUMPDEST PUSH1 0x20 ADD ADD MLOAD PUSH1 0xF8 SHR PUSH1 0xF8 SHL PUSH1 0xF8 SHR SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP1 NOT AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x7A2 DUP2 PUSH2 0x78F JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x7BD PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x799 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7EE DUP3 PUSH2 0x7C3 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x7FE DUP2 PUSH2 0x7E3 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x819 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x7F5 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x832 DUP2 PUSH2 0x81F JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x84D PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x829 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x861 DUP2 PUSH2 0x7E3 JUMP JUMPDEST DUP2 EQ PUSH2 0x86C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x87E DUP2 PUSH2 0x858 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x89A JUMPI PUSH2 0x899 PUSH2 0x853 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x8A8 DUP5 DUP3 DUP6 ADD PUSH2 0x86F JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x8CC PUSH2 0x8C7 DUP3 PUSH2 0x81F JUMP JUMPDEST PUSH2 0x8B1 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x8ED PUSH2 0x8E8 DUP3 PUSH2 0x78F JUMP JUMPDEST PUSH2 0x8D2 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8FF DUP3 DUP6 PUSH2 0x8BB JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH2 0x90F DUP3 DUP5 PUSH2 0x8DC JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP2 POP DUP2 SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x959 DUP3 PUSH2 0x78F JUMP JUMPDEST SWAP2 POP PUSH2 0x964 DUP4 PUSH2 0x78F JUMP JUMPDEST SWAP3 POP DUP3 DUP3 ADD SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x97C JUMPI PUSH2 0x97B PUSH2 0x91F JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x99A DUP3 PUSH2 0x982 JUMP JUMPDEST SWAP2 POP PUSH2 0x9A5 DUP4 PUSH2 0x982 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 SUB SWAP1 POP PUSH1 0xFF DUP2 GT ISZERO PUSH2 0x9BE JUMPI PUSH2 0x9BD PUSH2 0x91F JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9CF DUP3 PUSH2 0x982 JUMP JUMPDEST SWAP2 POP PUSH2 0x9DA DUP4 PUSH2 0x982 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 MUL PUSH2 0x9E8 DUP2 PUSH2 0x982 JUMP JUMPDEST SWAP2 POP DUP1 DUP3 EQ PUSH2 0x9FA JUMPI PUSH2 0x9F9 PUSH2 0x91F JUMP JUMPDEST JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xA3B JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0xA20 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP5 ADD MSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA63 DUP3 PUSH2 0xA01 JUMP JUMPDEST PUSH2 0xA6D DUP2 DUP6 PUSH2 0xA0C JUMP JUMPDEST SWAP4 POP PUSH2 0xA7D DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0xA1D JUMP JUMPDEST PUSH2 0xA86 DUP2 PUSH2 0xA47 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xAAB DUP2 DUP5 PUSH2 0xA58 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x54797065644D656D566965772F696E646578202D20417474656D707465642074 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6F20696E646578206D6F7265207468616E203332206279746573000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB0F PUSH1 0x3A DUP4 PUSH2 0xA0C JUMP JUMPDEST SWAP2 POP PUSH2 0xB1A DUP3 PUSH2 0xAB3 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xB3E DUP2 PUSH2 0xB02 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x54797065644D656D566965772F696E646578202D204F76657272616E20746865 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x20766965772E20536C6963652069732061742030780000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xBAC PUSH1 0x35 DUP4 PUSH2 0xB45 JUMP JUMPDEST SWAP2 POP PUSH2 0xBB7 DUP3 PUSH2 0xB50 JUMP JUMPDEST PUSH1 0x35 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH6 0xFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0xD0 SHL SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xBEC DUP3 PUSH2 0xBD4 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xC04 PUSH2 0xBFF DUP3 PUSH2 0xBC2 JUMP JUMPDEST PUSH2 0xBE1 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH32 0x2077697468206C656E6774682030780000000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC40 PUSH1 0xF DUP4 PUSH2 0xB45 JUMP JUMPDEST SWAP2 POP PUSH2 0xC4B DUP3 PUSH2 0xC0A JUMP JUMPDEST PUSH1 0xF DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x2E20417474656D7074656420746F20696E646578206174206F66667365742030 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x7800000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCB2 PUSH1 0x21 DUP4 PUSH2 0xB45 JUMP JUMPDEST SWAP2 POP PUSH2 0xCBD DUP3 PUSH2 0xC56 JUMP JUMPDEST PUSH1 0x21 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x2E00000000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCFE PUSH1 0x1 DUP4 PUSH2 0xB45 JUMP JUMPDEST SWAP2 POP PUSH2 0xD09 DUP3 PUSH2 0xCC8 JUMP JUMPDEST PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD1F DUP3 PUSH2 0xB9F JUMP JUMPDEST SWAP2 POP PUSH2 0xD2B DUP3 DUP8 PUSH2 0xBF3 JUMP JUMPDEST PUSH1 0x6 DUP3 ADD SWAP2 POP PUSH2 0xD3A DUP3 PUSH2 0xC33 JUMP JUMPDEST SWAP2 POP PUSH2 0xD46 DUP3 DUP7 PUSH2 0xBF3 JUMP JUMPDEST PUSH1 0x6 DUP3 ADD SWAP2 POP PUSH2 0xD55 DUP3 PUSH2 0xCA5 JUMP JUMPDEST SWAP2 POP PUSH2 0xD61 DUP3 DUP6 PUSH2 0xBF3 JUMP JUMPDEST PUSH1 0x6 DUP3 ADD SWAP2 POP PUSH2 0xD70 DUP3 PUSH2 0xC33 JUMP JUMPDEST SWAP2 POP PUSH2 0xD7C DUP3 DUP5 PUSH2 0xBF3 JUMP JUMPDEST PUSH1 0x6 DUP3 ADD SWAP2 POP PUSH2 0xD8B DUP3 PUSH2 0xCF1 JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CALLER 0xB7 PUSH23 0xBA5DF2E8D65DA2D6C5BF4529A86ACF2E5D85EBED8AF5C5 0xDF PUSH27 0x15A0C7464736F6C63430008110033000000000000000000000000 ",
"sourceMap": "113:1199:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;591:321;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;920:389;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;180:56;;;:::i;:::-;;591:321;637:7;657:19;679:13;:11;:13::i;:::-;657:35;;703:20;726:44;746:2;:12;;;760:2;:9;;;726:19;:44::i;:::-;703:67;;781:20;804:14;816:1;804:7;:11;;:14;;;;:::i;:::-;781:37;;831:16;850:28;865:12;850:14;:28::i;:::-;831:47;;896:8;889:15;;;;;;591:321;:::o;920:389::-;966:7;986:19;1008:13;:11;:13::i;:::-;986:35;;1032:20;1055:44;1075:2;:12;;;1089:2;:9;;;1055:19;:44::i;:::-;1032:67;;1110:20;1133:14;1145:1;1133:7;:11;;:14;;;;:::i;:::-;1110:37;;1160:17;1180:31;1198:12;1180:17;:31::i;:::-;1160:51;;1222:15;1240:6;:23;1264:9;1240:34;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1222:52;;1294:7;1287:14;;;;;;;920:389;:::o;180:56::-;214:6;:12;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;180:56::o;330:253::-;378:16;;:::i;:::-;407:21;;:::i;:::-;456:67;480:42;456:23;:67::i;:::-;439:4;:14;;:84;;;;;548:3;534:4;:11;;:17;;;;;571:4;564:11;;;330:253;:::o;295:201:0:-;384:12;447:9;471:6;416:72;;;;;;;;;:::i;:::-;;;;;;;;;;;;;409:79;;295:201;;;;:::o;12905:369:2:-;12975:7;12995:12;13010:3;:10;12995:25;;13033:12;13162:4;13157:3;13153:14;13145:22;;13240:26;13246:7;13240:26;;13255:4;13261;13240:5;:26::i;:::-;13233:33;;;;12905:369;;;;:::o;637:127:0:-;695:7;730:25;749:2;752;730:8;:18;;;;;:25;;;;;:::i;:::-;715:41;;637:127;;;:::o;504:125::-;565:7;600:20;615:1;617:2;600:8;:14;;;;;:20;;;;;:::i;:::-;585:36;;504:125;;;:::o;773:129::-;836:7;887:4;871:22;;863:31;;856:38;;773:129;;;:::o;12084:414:2:-;12165:15;12193:12;12215:4;12208;:11;;;;:::i;:::-;12193:26;;12337:4;12331:11;12325:4;12322:21;12319:38;;;12354:1;12346:9;;12319:38;12390:1;12382:4;:9;12378:53;;12415:4;12408:11;;;;;12378:53;12451:39;12472:5;12479:4;12485;12451:20;:39::i;:::-;12441:49;;12182:316;12084:414;;;;;;:::o;20447:193::-;20536:14;20630:1;20620:6;20615:2;:11;;;;:::i;:::-;20614:17;;;;:::i;:::-;20570:62;;20578:30;20584:7;20593:6;20601;20578:5;:30::i;:::-;20570:39;;:62;;20563:69;;20447:193;;;;;:::o;19357:734::-;19442:14;19483:1;19473:6;:11;;;19469:34;;19501:1;19493:10;;19486:17;;;;19469:34;19536:12;19540:7;19536:3;:12::i;:::-;19518:30;;19527:6;19518:15;;:6;:15;;;;:::i;:::-;:30;19514:139;;;19572:68;19588:12;19592:7;19588:3;:12::i;:::-;19572:68;;19602:12;19606:7;19602:3;:12::i;:::-;19572:68;;19616:6;19632;19624:15;;19572;:68::i;:::-;19565:76;;;;;;;;;;;:::i;:::-;;;;;;;;19514:139;19681:2;19671:6;:12;;;;19663:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;19759:15;19831:1;19822:6;:10;19810:22;;19854:12;19869;19873:7;19869:3;:12::i;:::-;19854:27;;;;19892:13;19908:19;19917:9;19908:8;:19::i;:::-;19892:35;;20067:5;20057:6;20051:4;20047:17;20041:24;20037:36;20027:46;;19947:137;;;19357:734;;;;;;:::o;11005:528::-;11100:15;11128:19;11150:2;11128:24;;11163:18;11184:2;11163:23;;11334:5;11325:7;11322:18;11309:11;11305:36;11294:47;;11410:4;11401:7;11398:17;11385:11;11381:35;11370:46;;11484:4;11475:7;11472:17;11460:10;11456:34;11445:45;;11206:320;;11005:528;;;;;:::o;15553:339::-;15606:11;15630:13;2806:26;15630:27;;15699:18;15720:2;15699:23;;15868:5;15858:7;15846:10;15842:24;15838:36;15830:44;;15742:143;;15553:339;;;:::o;14364:341::-;14417:11;14441:13;2806:26;14441:27;;14510:14;2932:7;14510:29;;;;14681:5;14671:7;14663:6;14659:20;14655:32;14647:40;;14559:139;;14364:341;;;:::o;18090:753::-;18225:17;18263:9;18276:15;18286:4;18276:9;:15::i;:::-;18260:31;;;18305:9;18318:15;18328:4;18318:9;:15::i;:::-;18302:31;;;18347:9;18360:17;18370:6;18360:9;:17::i;:::-;18344:33;;;18391:9;18404:17;18414:6;18404:9;:17::i;:::-;18388:33;;;18575:1;18639;18721;18785;18459:365;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;18432:403;;18249:594;;;;18090:753;;;;;;:::o;6389:318::-;6441:12;6622:66;6618:1;6612:4;6608:12;6604:85;6596:93;;6389:318;;;:::o;4189:688::-;4243:13;4258:14;4290:7;4300:2;4290:12;;4285:266;4308:2;4304:1;:6;;;4285:266;;;4328:11;4359:1;4355;:5;;;;:::i;:::-;4348:13;;:2;:13;;4328:34;;4386:14;4394:5;4386:7;:14::i;:::-;4377:23;;;;;;4424:2;4419:1;:7;;;4415:60;;4457:2;4447:12;;;;;4415:60;4523:1;4518:6;;;;4313:238;4285:266;;;;4607:7;4617:2;4607:12;;4602:268;4625:3;4621:1;:7;;;4602:268;;;4646:11;4677:1;4673;:5;;;;:::i;:::-;4666:13;;:2;:13;;4646:34;;4705:14;4713:5;4705:7;:14::i;:::-;4695:24;;;;;;4743:1;4738;:6;;;4734:60;;4776:2;4765:13;;;;;4734:60;4842:1;4837:6;;;;4631:239;4602:268;;;;4189:688;;;:::o;3652:203::-;3702:14;3740:18;3756:1;3750:2;:7;;;;3740:9;:18::i;:::-;3729:29;;;;;;3795:1;3783:13;;;;;;;3818;3828:2;3818:9;:13::i;:::-;3807:24;;;;;;3652:203;;;:::o;3286:189::-;3341:11;3365:13;3389:4;3381:5;:12;3365:28;;3444:13;;;;;;;;;;;;;;;;;3458:7;3444:22;;;;;;;;;;:::i;:::-;;;;;;;;;;3438:29;;3430:37;;3354:121;3286:189;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;:::o;7:77:3:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:126::-;479:7;519:42;512:5;508:54;497:65;;442:126;;;:::o;574:96::-;611:7;640:24;658:5;640:24;:::i;:::-;629:35;;574:96;;;:::o;676:118::-;763:24;781:5;763:24;:::i;:::-;758:3;751:37;676:118;;:::o;800:222::-;893:4;931:2;920:9;916:18;908:26;;944:71;1012:1;1001:9;997:17;988:6;944:71;:::i;:::-;800:222;;;;:::o;1028:77::-;1065:7;1094:5;1083:16;;1028:77;;;:::o;1111:126::-;1206:24;1224:5;1206:24;:::i;:::-;1201:3;1194:37;1111:126;;:::o;1243:238::-;1344:4;1382:2;1371:9;1367:18;1359:26;;1395:79;1471:1;1460:9;1456:17;1447:6;1395:79;:::i;:::-;1243:238;;;;:::o;1568:117::-;1677:1;1674;1667:12;1814:122;1887:24;1905:5;1887:24;:::i;:::-;1880:5;1877:35;1867:63;;1926:1;1923;1916:12;1867:63;1814:122;:::o;1942:143::-;1999:5;2030:6;2024:13;2015:22;;2046:33;2073:5;2046:33;:::i;:::-;1942:143;;;;:::o;2091:351::-;2161:6;2210:2;2198:9;2189:7;2185:23;2181:32;2178:119;;;2216:79;;:::i;:::-;2178:119;2336:1;2361:64;2417:7;2408:6;2397:9;2393:22;2361:64;:::i;:::-;2351:74;;2307:128;2091:351;;;;:::o;2448:79::-;2487:7;2516:5;2505:16;;2448:79;;;:::o;2533:157::-;2638:45;2658:24;2676:5;2658:24;:::i;:::-;2638:45;:::i;:::-;2633:3;2626:58;2533:157;;:::o;2696:79::-;2735:7;2764:5;2753:16;;2696:79;;;:::o;2781:157::-;2886:45;2906:24;2924:5;2906:24;:::i;:::-;2886:45;:::i;:::-;2881:3;2874:58;2781:157;;:::o;2944:397::-;3084:3;3099:75;3170:3;3161:6;3099:75;:::i;:::-;3199:2;3194:3;3190:12;3183:19;;3212:75;3283:3;3274:6;3212:75;:::i;:::-;3312:2;3307:3;3303:12;3296:19;;3332:3;3325:10;;2944:397;;;;;:::o;3347:180::-;3395:77;3392:1;3385:88;3492:4;3489:1;3482:15;3516:4;3513:1;3506:15;3533:191;3573:3;3592:20;3610:1;3592:20;:::i;:::-;3587:25;;3626:20;3644:1;3626:20;:::i;:::-;3621:25;;3669:1;3666;3662:9;3655:16;;3690:3;3687:1;3684:10;3681:36;;;3697:18;;:::i;:::-;3681:36;3533:191;;;;:::o;3730:86::-;3765:7;3805:4;3798:5;3794:16;3783:27;;3730:86;;;:::o;3822:191::-;3860:4;3880:18;3896:1;3880:18;:::i;:::-;3875:23;;3912:18;3928:1;3912:18;:::i;:::-;3907:23;;3954:1;3951;3947:9;3939:17;;3978:4;3972;3969:14;3966:40;;;3986:18;;:::i;:::-;3966:40;3822:191;;;;:::o;4019:271::-;4057:7;4080:18;4096:1;4080:18;:::i;:::-;4075:23;;4112:18;4128:1;4112:18;:::i;:::-;4107:23;;4165:1;4162;4158:9;4187:28;4203:11;4187:28;:::i;:::-;4176:39;;4247:11;4238:7;4235:24;4225:58;;4263:18;;:::i;:::-;4225:58;4065:225;4019:271;;;;:::o;4296:99::-;4348:6;4382:5;4376:12;4366:22;;4296:99;;;:::o;4401:169::-;4485:11;4519:6;4514:3;4507:19;4559:4;4554:3;4550:14;4535:29;;4401:169;;;;:::o;4576:246::-;4657:1;4667:113;4681:6;4678:1;4675:13;4667:113;;;4766:1;4761:3;4757:11;4751:18;4747:1;4742:3;4738:11;4731:39;4703:2;4700:1;4696:10;4691:15;;4667:113;;;4814:1;4805:6;4800:3;4796:16;4789:27;4638:184;4576:246;;;:::o;4828:102::-;4869:6;4920:2;4916:7;4911:2;4904:5;4900:14;4896:28;4886:38;;4828:102;;;:::o;4936:377::-;5024:3;5052:39;5085:5;5052:39;:::i;:::-;5107:71;5171:6;5166:3;5107:71;:::i;:::-;5100:78;;5187:65;5245:6;5240:3;5233:4;5226:5;5222:16;5187:65;:::i;:::-;5277:29;5299:6;5277:29;:::i;:::-;5272:3;5268:39;5261:46;;5028:285;4936:377;;;;:::o;5319:313::-;5432:4;5470:2;5459:9;5455:18;5447:26;;5519:9;5513:4;5509:20;5505:1;5494:9;5490:17;5483:47;5547:78;5620:4;5611:6;5547:78;:::i;:::-;5539:86;;5319:313;;;;:::o;5638:245::-;5778:34;5774:1;5766:6;5762:14;5755:58;5847:28;5842:2;5834:6;5830:15;5823:53;5638:245;:::o;5889:366::-;6031:3;6052:67;6116:2;6111:3;6052:67;:::i;:::-;6045:74;;6128:93;6217:3;6128:93;:::i;:::-;6246:2;6241:3;6237:12;6230:19;;5889:366;;;:::o;6261:419::-;6427:4;6465:2;6454:9;6450:18;6442:26;;6514:9;6508:4;6504:20;6500:1;6489:9;6485:17;6478:47;6542:131;6668:4;6542:131;:::i;:::-;6534:139;;6261:419;;;:::o;6686:148::-;6788:11;6825:3;6810:18;;6686:148;;;;:::o;6840:240::-;6980:34;6976:1;6968:6;6964:14;6957:58;7049:23;7044:2;7036:6;7032:15;7025:48;6840:240;:::o;7086:402::-;7246:3;7267:85;7349:2;7344:3;7267:85;:::i;:::-;7260:92;;7361:93;7450:3;7361:93;:::i;:::-;7479:2;7474:3;7470:12;7463:19;;7086:402;;;:::o;7494:97::-;7530:7;7570:14;7563:5;7559:26;7548:37;;7494:97;;;:::o;7597:96::-;7631:8;7680:5;7675:3;7671:15;7650:36;;7597:96;;;:::o;7699:94::-;7737:7;7766:21;7781:5;7766:21;:::i;:::-;7755:32;;7699:94;;;:::o;7799:153::-;7902:43;7921:23;7938:5;7921:23;:::i;:::-;7902:43;:::i;:::-;7897:3;7890:56;7799:153;;:::o;7958:165::-;8098:17;8094:1;8086:6;8082:14;8075:41;7958:165;:::o;8129:402::-;8289:3;8310:85;8392:2;8387:3;8310:85;:::i;:::-;8303:92;;8404:93;8493:3;8404:93;:::i;:::-;8522:2;8517:3;8513:12;8506:19;;8129:402;;;:::o;8537:220::-;8677:34;8673:1;8665:6;8661:14;8654:58;8746:3;8741:2;8733:6;8729:15;8722:28;8537:220;:::o;8763:402::-;8923:3;8944:85;9026:2;9021:3;8944:85;:::i;:::-;8937:92;;9038:93;9127:3;9038:93;:::i;:::-;9156:2;9151:3;9147:12;9140:19;;8763:402;;;:::o;9171:151::-;9311:3;9307:1;9299:6;9295:14;9288:27;9171:151;:::o;9328:400::-;9488:3;9509:84;9591:1;9586:3;9509:84;:::i;:::-;9502:91;;9602:93;9691:3;9602:93;:::i;:::-;9720:1;9715:3;9711:11;9704:18;;9328:400;;;:::o;9734:1989::-;10427:3;10449:148;10593:3;10449:148;:::i;:::-;10442:155;;10607:73;10676:3;10667:6;10607:73;:::i;:::-;10705:1;10700:3;10696:11;10689:18;;10724:148;10868:3;10724:148;:::i;:::-;10717:155;;10882:73;10951:3;10942:6;10882:73;:::i;:::-;10980:1;10975:3;10971:11;10964:18;;10999:148;11143:3;10999:148;:::i;:::-;10992:155;;11157:73;11226:3;11217:6;11157:73;:::i;:::-;11255:1;11250:3;11246:11;11239:18;;11274:148;11418:3;11274:148;:::i;:::-;11267:155;;11432:73;11501:3;11492:6;11432:73;:::i;:::-;11530:1;11525:3;11521:11;11514:18;;11549:148;11693:3;11549:148;:::i;:::-;11542:155;;11714:3;11707:10;;9734:1989;;;;;;;:::o;11729:180::-;11777:77;11774:1;11767:88;11874:4;11871:1;11864:15;11898:4;11895:1;11888:15"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "716400",
"executionCost": "747",
"totalCost": "717147"
},
"external": {
"decodeAddress()": "infinite",
"decodedAmount()": "infinite",
"doIt()": "infinite"
},
"internal": {
"makeMessage()": "infinite"
}
},
"methodIdentifiers": {
"decodeAddress()": "86b234f5",
"decodedAmount()": "68788868",
"doIt()": "b29f0835"
}
},
"abi": [
{
"inputs": [],
"name": "decodeAddress",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [],
"name": "decodedAmount",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [],
"name": "doIt",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
]
}
{
"compiler": {
"version": "0.8.17+commit.8df45f5f"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [],
"name": "decodeAddress",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [],
"name": "decodedAmount",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [],
"name": "doIt",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
],
"devdoc": {
"kind": "dev",
"methods": {},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
},
"settings": {
"compilationTarget": {
"SampleWrapper.sol": "SampleWrapper"
},
"evmVersion": "london",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": false,
"runs": 200
},
"remappings": []
},
"sources": {
"Sample.sol": {
"keccak256": "0x5e3cc029b3e17b3deb01ecad7741e31db882f16341226776d3bc6afac9212736",
"license": "MIT",
"urls": [
"bzz-raw://c80f3dd992b39a5c745eb09f80a950fb4784d5f62a6785ec46d265b0a868848e",
"dweb:/ipfs/QmYUaKZuZYAth9Rpb5PgPoV27C8Ugj7tarKWNGbQnq5CfX"
]
},
"SampleWrapper.sol": {
"keccak256": "0xb1e64198d89d96023c9bfeb04fa7521d53ff56771f281648bea309c434101deb",
"license": "MIT",
"urls": [
"bzz-raw://2a8a73a60322938fbeeef58f850eb0466b77e2a055f36380f2fb377b11374739",
"dweb:/ipfs/QmcJew2z8syQchM2H1LBccFTvFH9k2pcQgsfSrL4bM3axv"
]
},
"TypedMemView.sol": {
"keccak256": "0x72e0dbe7657416e4d2702a03f0152d3f5d29f58ba3d86f5d1daf7aeac4961717",
"license": "MIT OR Apache-2.0",
"urls": [
"bzz-raw://467b75a093cf94aa99f4fb8af1b1f602a65649ecdb821def1974c556c7016bd5",
"dweb:/ipfs/QmdKwpuFxKmB9GGrC2KHhyjwXGwGZouGbaTEXpUtG9J5tr"
]
}
},
"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": "60fe610052600b82828239805160001a607314610045577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe730000000000000000000000000000000000000000301460806040526004361060335760003560e01c8063f26be3fc146038575b600080fd5b603e6052565b6040516049919060af565b60405180910390f35b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000081565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000082169050919050565b60a9816076565b82525050565b600060208201905060c2600083018460a2565b9291505056fea26469706673582212205aefef8ecf8fbcf3bf00a1641145febb2479c87472b93d2d59219b7e8a5ddfb064736f6c63430008110033",
"opcodes": "PUSH1 0xFE PUSH2 0x52 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH2 0x45 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH1 0x33 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xF26BE3FC EQ PUSH1 0x38 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3E PUSH1 0x52 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x49 SWAP2 SWAP1 PUSH1 0xAF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000 DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0xA9 DUP2 PUSH1 0x76 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0xC2 PUSH1 0x0 DUP4 ADD DUP5 PUSH1 0xA2 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 GAS 0xEF 0xEF DUP15 0xCF DUP16 0xBC RETURN 0xBF STOP LOG1 PUSH5 0x1145FEBB24 PUSH26 0xC87472B93D2D59219B7E8A5DDFB064736F6C6343000811003300 ",
"sourceMap": "76:31915:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
},
"deployedBytecode": {
"functionDebugData": {
"@NULL_4": {
"entryPoint": 82,
"id": 4,
"parameterSlots": 0,
"returnSlots": 0
},
"abi_encode_t_bytes29_to_t_bytes29_fromStack_library": {
"entryPoint": 162,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_tuple_t_bytes29__to_t_bytes29__fromStack_library_reversed": {
"entryPoint": 175,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"cleanup_t_bytes29": {
"entryPoint": 118,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
}
},
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:536:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "52:105:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "62:89:1",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "77:5:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "84:66:1",
"type": "",
"value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "73:3:1"
},
"nodeType": "YulFunctionCall",
"src": "73:78:1"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "62:7:1"
}
]
}
]
},
"name": "cleanup_t_bytes29",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "34:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "44:7:1",
"type": ""
}
],
"src": "7:150:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "236:53:1",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "253:3:1"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "276:5:1"
}
],
"functionName": {
"name": "cleanup_t_bytes29",
"nodeType": "YulIdentifier",
"src": "258:17:1"
},
"nodeType": "YulFunctionCall",
"src": "258:24:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "246:6:1"
},
"nodeType": "YulFunctionCall",
"src": "246:37:1"
},
"nodeType": "YulExpressionStatement",
"src": "246:37:1"
}
]
},
"name": "abi_encode_t_bytes29_to_t_bytes29_fromStack_library",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "224:5:1",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "231:3:1",
"type": ""
}
],
"src": "163:126:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "401:132:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "411:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "423:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "434:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "419:3:1"
},
"nodeType": "YulFunctionCall",
"src": "419:18:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "411:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "499:6:1"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "512:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "523:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "508:3:1"
},
"nodeType": "YulFunctionCall",
"src": "508:17:1"
}
],
"functionName": {
"name": "abi_encode_t_bytes29_to_t_bytes29_fromStack_library",
"nodeType": "YulIdentifier",
"src": "447:51:1"
},
"nodeType": "YulFunctionCall",
"src": "447:79:1"
},
"nodeType": "YulExpressionStatement",
"src": "447:79:1"
}
]
},
"name": "abi_encode_tuple_t_bytes29__to_t_bytes29__fromStack_library_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "373:9:1",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "385:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "396:4:1",
"type": ""
}
],
"src": "295:238:1"
}
]
},
"contents": "{\n\n function cleanup_t_bytes29(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000)\n }\n\n function abi_encode_t_bytes29_to_t_bytes29_fromStack_library(value, pos) {\n mstore(pos, cleanup_t_bytes29(value))\n }\n\n function abi_encode_tuple_t_bytes29__to_t_bytes29__fromStack_library_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_bytes29_to_t_bytes29_fromStack_library(value0, add(headStart, 0))\n\n }\n\n}\n",
"id": 1,
"language": "Yul",
"name": "#utility.yul"
}
],
"immutableReferences": {},
"linkReferences": {},
"object": "730000000000000000000000000000000000000000301460806040526004361060335760003560e01c8063f26be3fc146038575b600080fd5b603e6052565b6040516049919060af565b60405180910390f35b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000081565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000082169050919050565b60a9816076565b82525050565b600060208201905060c2600083018460a2565b9291505056fea26469706673582212205aefef8ecf8fbcf3bf00a1641145febb2479c87472b93d2d59219b7e8a5ddfb064736f6c63430008110033",
"opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH1 0x33 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xF26BE3FC EQ PUSH1 0x38 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3E PUSH1 0x52 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x49 SWAP2 SWAP1 PUSH1 0xAF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000 DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0xA9 DUP2 PUSH1 0x76 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0xC2 PUSH1 0x0 DUP4 ADD DUP5 PUSH1 0xA2 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 GAS 0xEF 0xEF DUP15 0xCF DUP16 0xBC RETURN 0xBF STOP LOG1 PUSH5 0x1145FEBB24 PUSH26 0xC87472B93D2D59219B7E8A5DDFB064736F6C6343000811003300 ",
"sourceMap": "76:31915:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;2648:94;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;:::o;7:150:1:-;44:7;84:66;77:5;73:78;62:89;;7:150;;;:::o;163:126::-;258:24;276:5;258:24;:::i;:::-;253:3;246:37;163:126;;:::o;295:238::-;396:4;434:2;423:9;419:18;411:26;;447:79;523:1;512:9;508:17;499:6;447:79;:::i;:::-;295:238;;;;:::o"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "50800",
"executionCost": "127",
"totalCost": "50927"
},
"external": {
"NULL()": "297"
},
"internal": {
"assertType(bytes29,uint40)": "infinite",
"assertValid(bytes29)": "infinite",
"build(uint256,uint256,uint256)": "infinite",
"byteHex(uint8)": "infinite",
"castTo(bytes29,uint40)": "infinite",
"clone(bytes29)": "infinite",
"encodeHex(uint256)": "infinite",
"end(bytes29)": "infinite",
"equal(bytes29,bytes29)": "infinite",
"footprint(bytes29)": "infinite",
"hash160(bytes29)": "infinite",
"hash256(bytes29)": "infinite",
"index(bytes29,uint256,uint8)": "infinite",
"indexAddress(bytes29,uint256)": "infinite",
"indexErrOverrun(uint256,uint256,uint256,uint256)": "infinite",
"indexLEUint(bytes29,uint256,uint8)": "infinite",
"indexUint(bytes29,uint256,uint8)": "infinite",
"isNull(bytes29)": "infinite",
"isType(bytes29,uint40)": "infinite",
"isValid(bytes29)": "infinite",
"join(bytes29[] memory)": "infinite",
"joinKeccak(bytes29[] memory)": "infinite",
"joinSha2(bytes29[] memory)": "infinite",
"keccak(bytes29)": "infinite",
"leftMask(uint8)": "infinite",
"len(bytes29)": "infinite",
"loc(bytes29)": "infinite",
"nibbleHex(uint8)": "infinite",
"notEqual(bytes29,bytes29)": "infinite",
"notNull(bytes29)": "infinite",
"nullView()": "infinite",
"postfix(bytes29,uint256,uint40)": "infinite",
"prefix(bytes29,uint256,uint40)": "infinite",
"ref(bytes memory,uint40)": "infinite",
"reverseUint256(uint256)": "infinite",
"sameType(bytes29,bytes29)": "infinite",
"sha2(bytes29)": "infinite",
"slice(bytes29,uint256,uint256,uint40)": "infinite",
"typeOf(bytes29)": "infinite",
"unsafeBuildUnchecked(uint256,uint256,uint256)": "infinite",
"unsafeCopyTo(bytes29,uint256)": "infinite",
"unsafeJoin(bytes29[] memory,uint256)": "infinite",
"untypedEqual(bytes29,bytes29)": "infinite",
"untypedNotEqual(bytes29,bytes29)": "infinite",
"words(bytes29)": "infinite"
}
},
"methodIdentifiers": {
"NULL()": "f26be3fc"
}
},
"abi": [
{
"inputs": [],
"name": "NULL",
"outputs": [
{
"internalType": "bytes29",
"name": "",
"type": "bytes29"
}
],
"stateMutability": "view",
"type": "function"
}
]
}
{
"compiler": {
"version": "0.8.17+commit.8df45f5f"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [],
"name": "NULL",
"outputs": [
{
"internalType": "bytes29",
"name": "",
"type": "bytes29"
}
],
"stateMutability": "view",
"type": "function"
}
],
"devdoc": {
"kind": "dev",
"methods": {},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
},
"settings": {
"compilationTarget": {
"TypedMemView.sol": "TypedMemView"
},
"evmVersion": "london",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": false,
"runs": 200
},
"remappings": []
},
"sources": {
"TypedMemView.sol": {
"keccak256": "0x72e0dbe7657416e4d2702a03f0152d3f5d29f58ba3d86f5d1daf7aeac4961717",
"license": "MIT OR Apache-2.0",
"urls": [
"bzz-raw://467b75a093cf94aa99f4fb8af1b1f602a65649ecdb821def1974c556c7016bd5",
"dweb:/ipfs/QmdKwpuFxKmB9GGrC2KHhyjwXGwGZouGbaTEXpUtG9J5tr"
]
}
},
"version": 1
}
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.12;
import "TypedMemView.sol";
library Sample {
using TypedMemView for bytes;
using TypedMemView for bytes29;
struct A {
bytes32 recipient;
uint256 amount;
}
event Amount(uint256);
function formatSample(bytes32 recipient,
uint256 amount) internal pure returns (bytes memory) {
return abi.encodePacked(
recipient,
amount
);
}
function _recipient(bytes29 _message) internal pure returns (bytes32) {
return bytes32(_message.index(0,32));
}
function _amount(bytes29 _message) internal pure returns (uint256) {
return uint256(_message.indexUint(32,32));
}
function addressToBytes32(address addr) internal pure returns (bytes32) {
return bytes32(uint256(uint160(addr)));
}
function bytes32ToAddress(bytes32 _buf) public pure returns (address) {
return address(uint160(uint256(_buf)));
}
function tryIt() public {
bytes32 addr = addressToBytes32(0xE0f5206BBD039e7b0592d8918820024e2a7437b9);
A memory a = A(addr, 10);
bytes memory daBytes = Sample.formatSample(a.recipient, a.amount);
bytes29 _originalMsg = daBytes.ref(0);
uint256 daAmount = _amount(_originalMsg);
emit Amount(daAmount);
}
}
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.12;
import "Sample.sol";
import "TypedMemView.sol";
contract SampleWrapper {
using TypedMemView for bytes;
function doIt() public {
Sample.tryIt();
}
struct MyMessage {
bytes32 recipient;
uint256 amount;
}
function makeMessage() internal pure returns (MyMessage memory) {
MyMessage memory _msg;
_msg.recipient = Sample.addressToBytes32(0xE0f5206BBD039e7b0592d8918820024e2a7437b9);
_msg.amount = 123;
return _msg;
}
function decodedAmount() public pure returns (uint256) {
MyMessage memory mm = makeMessage();
bytes memory daBytes = Sample.formatSample(mm.recipient, mm.amount);
bytes29 _originalMsg = daBytes.ref(0);
uint256 daAmount = Sample._amount(_originalMsg);
return daAmount;
}
function decodeAddress() public pure returns (address) {
MyMessage memory mm = makeMessage();
bytes memory daBytes = Sample.formatSample(mm.recipient, mm.amount);
bytes29 _originalMsg = daBytes.ref(0);
bytes32 daAddress = Sample._recipient(_originalMsg);
address decoded = Sample.bytes32ToAddress(daAddress);
return decoded;
}
}
// SPDX-License-Identifier: MIT OR Apache-2.0
pragma solidity >=0.8.12;
library TypedMemView {
// Why does this exist?
// the solidity `bytes memory` type has a few weaknesses.
// 1. You can't index ranges effectively
// 2. You can't slice without copying
// 3. The underlying data may represent any type
// 4. Solidity never deallocates memory, and memory costs grow
// superlinearly
// By using a memory view instead of a `bytes memory` we get the following
// advantages:
// 1. Slices are done on the stack, by manipulating the pointer
// 2. We can index arbitrary ranges and quickly convert them to stack types
// 3. We can insert type info into the pointer, and typecheck at runtime
// This makes `TypedMemView` a useful tool for efficient zero-copy
// algorithms.
// Why bytes29?
// We want to avoid confusion between views, digests, and other common
// types so we chose a large and uncommonly used odd number of bytes
//
// Note that while bytes are left-aligned in a word, integers and addresses
// are right-aligned. This means when working in assembly we have to
// account for the 3 unused bytes on the righthand side
//
// First 5 bytes are a type flag.
// - ff_ffff_fffe is reserved for unknown type.
// - ff_ffff_ffff is reserved for invalid types/errors.
// next 12 are memory address
// next 12 are len
// bottom 3 bytes are empty
// Assumptions:
// - non-modification of memory.
// - No Solidity updates
// - - wrt free mem point
// - - wrt bytes representation in memory
// - - wrt memory addressing in general
// Usage:
// - create type constants
// - use `assertType` for runtime type assertions
// - - unfortunately we can't do this at compile time yet :(
// - recommended: implement modifiers that perform type checking
// - - e.g.
// - - `uint40 constant MY_TYPE = 3;`
// - - ` modifer onlyMyType(bytes29 myView) { myView.assertType(MY_TYPE); }`
// - instantiate a typed view from a bytearray using `ref`
// - use `index` to inspect the contents of the view
// - use `slice` to create smaller views into the same memory
// - - `slice` can increase the offset
// - - `slice can decrease the length`
// - - must specify the output type of `slice`
// - - `slice` will return a null view if you try to overrun
// - - make sure to explicitly check for this with `notNull` or `assertType`
// - use `equal` for typed comparisons.
// The null view
bytes29 public constant NULL = hex"ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff";
// Mask a low uint96
uint256 constant LOW_12_MASK = 0xffffffffffffffffffffffff;
// Shift constants
uint8 constant SHIFT_TO_LEN = 24;
uint8 constant SHIFT_TO_LOC = 96 + 24;
uint8 constant SHIFT_TO_TYPE = 96 + 96 + 24;
// For nibble encoding
bytes private constant NIBBLE_LOOKUP = "0123456789abcdef";
/**
* @notice Returns the encoded hex character that represents the lower 4 bits of the argument.
* @param _byte The byte
* @return _char The encoded hex character
*/
function nibbleHex(uint8 _byte) internal pure returns (uint8 _char) {
uint8 _nibble = _byte & 0x0f; // keep bottom 4, 0 top 4
_char = uint8(NIBBLE_LOOKUP[_nibble]);
}
/**
* @notice Returns a uint16 containing the hex-encoded byte.
* @param _b The byte
* @return encoded - The hex-encoded byte
*/
function byteHex(uint8 _b) internal pure returns (uint16 encoded) {
encoded |= nibbleHex(_b >> 4); // top 4 bits
encoded <<= 8;
encoded |= nibbleHex(_b); // lower 4 bits
}
/**
* @notice Encodes the uint256 to hex. `first` contains the encoded top 16 bytes.
* `second` contains the encoded lower 16 bytes.
*
* @param _b The 32 bytes as uint256
* @return first - The top 16 bytes
* @return second - The bottom 16 bytes
*/
function encodeHex(uint256 _b) internal pure returns (uint256 first, uint256 second) {
for (uint8 i = 31; i > 15;) {
uint8 _byte = uint8(_b >> (i * 8));
first |= byteHex(_byte);
if (i != 16) {
first <<= 16;
}
unchecked {
i -= 1;
}
}
// abusing underflow here =_=
for (uint8 i = 15; i < 255;) {
uint8 _byte = uint8(_b >> (i * 8));
second |= byteHex(_byte);
if (i != 0) {
second <<= 16;
}
unchecked {
i -= 1;
}
}
}
/**
* @notice Changes the endianness of a uint256.
* @dev https://graphics.stanford.edu/~seander/bithacks.html#ReverseParallel
* @param _b The unsigned integer to reverse
* @return v - The reversed value
*/
function reverseUint256(uint256 _b) internal pure returns (uint256 v) {
v = _b;
// swap bytes
v = ((v >> 8) & 0x00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF)
| ((v & 0x00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF) << 8);
// swap 2-byte long pairs
v = ((v >> 16) & 0x0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF)
| ((v & 0x0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF) << 16);
// swap 4-byte long pairs
v = ((v >> 32) & 0x00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF)
| ((v & 0x00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF) << 32);
// swap 8-byte long pairs
v = ((v >> 64) & 0x0000000000000000FFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFF)
| ((v & 0x0000000000000000FFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFF) << 64);
// swap 16-byte long pairs
v = (v >> 128) | (v << 128);
}
/**
* @notice Create a mask with the highest `_len` bits set.
* @param _len The length
* @return mask - The mask
*/
function leftMask(uint8 _len) private pure returns (uint256 mask) {
// ugly. redo without assembly?
assembly {
// solhint-disable-previous-line no-inline-assembly
mask := sar(sub(_len, 1), 0x8000000000000000000000000000000000000000000000000000000000000000)
}
}
/**
* @notice Return the null view.
* @return bytes29 - The null view
*/
function nullView() internal pure returns (bytes29) {
return NULL;
}
/**
* @notice Check if the view is null.
* @return bool - True if the view is null
*/
function isNull(bytes29 memView) internal pure returns (bool) {
return memView == NULL;
}
/**
* @notice Check if the view is not null.
* @return bool - True if the view is not null
*/
function notNull(bytes29 memView) internal pure returns (bool) {
return !isNull(memView);
}
/**
* @notice Check if the view is of a valid type and points to a valid location
* in memory.
* @dev We perform this check by examining solidity's unallocated memory
* pointer and ensuring that the view's upper bound is less than that.
* @param memView The view
* @return ret - True if the view is valid
*/
function isValid(bytes29 memView) internal pure returns (bool ret) {
if (typeOf(memView) == 0xffffffffff) return false;
uint256 _end = end(memView);
assembly {
// solhint-disable-previous-line no-inline-assembly
ret := not(gt(_end, mload(0x40)))
}
}
/**
* @notice Require that a typed memory view be valid.
* @dev Returns the view for easy chaining.
* @param memView The view
* @return bytes29 - The validated view
*/
function assertValid(bytes29 memView) internal pure returns (bytes29) {
require(isValid(memView), "Validity assertion failed");
return memView;
}
/**
* @notice Return true if the memview is of the expected type. Otherwise false.
* @param memView The view
* @param _expected The expected type
* @return bool - True if the memview is of the expected type
*/
function isType(bytes29 memView, uint40 _expected) internal pure returns (bool) {
return typeOf(memView) == _expected;
}
/**
* @notice Require that a typed memory view has a specific type.
* @dev Returns the view for easy chaining.
* @param memView The view
* @param _expected The expected type
* @return bytes29 - The view with validated type
*/
function assertType(bytes29 memView, uint40 _expected) internal pure returns (bytes29) {
if (!isType(memView, _expected)) {
(, uint256 g) = encodeHex(uint256(typeOf(memView)));
(, uint256 e) = encodeHex(uint256(_expected));
string memory err =
string(abi.encodePacked("Type assertion failed. Got 0x", uint80(g), ". Expected 0x", uint80(e)));
revert(err);
}
return memView;
}
/**
* @notice Return an identical view with a different type.
* @param memView The view
* @param _newType The new type
* @return newView - The new view with the specified type
*/
function castTo(bytes29 memView, uint40 _newType) internal pure returns (bytes29 newView) {
// then | in the new type
uint256 _typeShift = SHIFT_TO_TYPE;
uint256 _typeBits = 40;
assembly {
// solhint-disable-previous-line no-inline-assembly
// shift off the top 5 bytes
newView := or(newView, shr(_typeBits, shl(_typeBits, memView)))
newView := or(newView, shl(_typeShift, _newType))
}
}
/**
* @notice Unsafe raw pointer construction. This should generally not be called
* directly. Prefer `ref` wherever possible.
* @dev Unsafe raw pointer construction. This should generally not be called
* directly. Prefer `ref` wherever possible.
* @param _type The type
* @param _loc The memory address
* @param _len The length
* @return newView - The new view with the specified type, location and length
*/
function unsafeBuildUnchecked(uint256 _type, uint256 _loc, uint256 _len) private pure returns (bytes29 newView) {
uint256 _uint96Bits = 96;
uint256 _emptyBits = 24;
assembly {
// solium-disable-previous-line security/no-inline-assembly
newView := shl(_uint96Bits, or(newView, _type)) // insert type
newView := shl(_uint96Bits, or(newView, _loc)) // insert loc
newView := shl(_emptyBits, or(newView, _len)) // empty bottom 3 bytes
}
}
/**
* @notice Instantiate a new memory view. This should generally not be called
* directly. Prefer `ref` wherever possible.
* @dev Instantiate a new memory view. This should generally not be called
* directly. Prefer `ref` wherever possible.
* @param _type The type
* @param _loc The memory address
* @param _len The length
* @return newView - The new view with the specified type, location and length
*/
function build(uint256 _type, uint256 _loc, uint256 _len) internal pure returns (bytes29 newView) {
uint256 _end = _loc + _len;
assembly {
// solhint-disable-previous-line no-inline-assembly
if gt(_end, mload(0x40)) { _end := 0 }
}
if (_end == 0) {
return NULL;
}
newView = unsafeBuildUnchecked(_type, _loc, _len);
}
/**
* @notice Instantiate a memory view from a byte array.
* @dev Note that due to Solidity memory representation, it is not possible to
* implement a deref, as the `bytes` type stores its len in memory.
* @param arr The byte array
* @param newType The type
* @return bytes29 - The memory view
*/
function ref(bytes memory arr, uint40 newType) internal pure returns (bytes29) {
uint256 _len = arr.length;
uint256 _loc;
assembly {
// solhint-disable-previous-line no-inline-assembly
_loc := add(arr, 0x20) // our view is of the data, not the struct
}
return build(newType, _loc, _len);
}
/**
* @notice Return the associated type information.
* @param memView The memory view
* @return _type - The type associated with the view
*/
function typeOf(bytes29 memView) internal pure returns (uint40 _type) {
uint256 _shift = SHIFT_TO_TYPE;
assembly {
// solium-disable-previous-line security/no-inline-assembly
_type := shr(_shift, memView) // shift out lower 27 bytes
}
}
/**
* @notice Optimized type comparison. Checks that the 5-byte type flag is equal.
* @param left The first view
* @param right The second view
* @return bool - True if the 5-byte type flag is equal
*/
function sameType(bytes29 left, bytes29 right) internal pure returns (bool) {
return (left ^ right) >> SHIFT_TO_TYPE == 0;
}
/**
* @notice Return the memory address of the underlying bytes.
* @param memView The view
* @return _loc - The memory address
*/
function loc(bytes29 memView) internal pure returns (uint96 _loc) {
uint256 _mask = LOW_12_MASK; // assembly can't use globals
uint256 _shift = SHIFT_TO_LOC;
assembly {
// solium-disable-previous-line security/no-inline-assembly
_loc := and(shr(_shift, memView), _mask)
}
}
/**
* @notice The number of memory words this memory view occupies, rounded up.
* @param memView The view
* @return uint256 - The number of memory words
*/
function words(bytes29 memView) internal pure returns (uint256) {
return (uint256(len(memView)) + 31) / 32;
}
/**
* @notice The in-memory footprint of a fresh copy of the view.
* @param memView The view
* @return uint256 - The in-memory footprint of a fresh copy of the view.
*/
function footprint(bytes29 memView) internal pure returns (uint256) {
return words(memView) * 32;
}
/**
* @notice The number of bytes of the view.
* @param memView The view
* @return _len - The length of the view
*/
function len(bytes29 memView) internal pure returns (uint96 _len) {
uint256 _mask = LOW_12_MASK; // assembly can't use globals
uint256 _emptyBits = 24;
assembly {
// solium-disable-previous-line security/no-inline-assembly
_len := and(shr(_emptyBits, memView), _mask)
}
}
/**
* @notice Returns the endpoint of `memView`.
* @param memView The view
* @return uint256 - The endpoint of `memView`
*/
function end(bytes29 memView) internal pure returns (uint256) {
unchecked {
return loc(memView) + len(memView);
}
}
/**
* @notice Safe slicing without memory modification.
* @param memView The view
* @param _index The start index
* @param _len The length
* @param newType The new type
* @return bytes29 - The new view
*/
function slice(bytes29 memView, uint256 _index, uint256 _len, uint40 newType) internal pure returns (bytes29) {
uint256 _loc = loc(memView);
// Ensure it doesn't overrun the view
if (_loc + _index + _len > end(memView)) {
return NULL;
}
_loc = _loc + _index;
return build(newType, _loc, _len);
}
/**
* @notice Shortcut to `slice`. Gets a view representing the first `_len` bytes.
* @param memView The view
* @param _len The length
* @param newType The new type
* @return bytes29 - The new view
*/
function prefix(bytes29 memView, uint256 _len, uint40 newType) internal pure returns (bytes29) {
return slice(memView, 0, _len, newType);
}
/**
* @notice Shortcut to `slice`. Gets a view representing the last `_len` byte.
* @param memView The view
* @param _len The length
* @param newType The new type
* @return bytes29 - The new view
*/
function postfix(bytes29 memView, uint256 _len, uint40 newType) internal pure returns (bytes29) {
return slice(memView, uint256(len(memView)) - _len, _len, newType);
}
/**
* @notice Construct an error message for an indexing overrun.
* @param _loc The memory address
* @param _len The length
* @param _index The index
* @param _slice The slice where the overrun occurred
* @return err - The err
*/
function indexErrOverrun(uint256 _loc, uint256 _len, uint256 _index, uint256 _slice)
internal
pure
returns (string memory err)
{
(, uint256 a) = encodeHex(_loc);
(, uint256 b) = encodeHex(_len);
(, uint256 c) = encodeHex(_index);
(, uint256 d) = encodeHex(_slice);
err = string(
abi.encodePacked(
"TypedMemView/index - Overran the view. Slice is at 0x",
uint48(a),
" with length 0x",
uint48(b),
". Attempted to index at offset 0x",
uint48(c),
" with length 0x",
uint48(d),
"."
)
);
}
/**
* @notice Load up to 32 bytes from the view onto the stack.
* @dev Returns a bytes32 with only the `_bytes` highest bytes set.
* This can be immediately cast to a smaller fixed-length byte array.
* To automatically cast to an integer, use `indexUint`.
* @param memView The view
* @param _index The index
* @param _bytes The bytes
* @return result - The 32 byte result
*/
function index(bytes29 memView, uint256 _index, uint8 _bytes) internal pure returns (bytes32 result) {
if (_bytes == 0) return bytes32(0);
if (_index + _bytes > len(memView)) {
revert(indexErrOverrun(loc(memView), len(memView), _index, uint256(_bytes)));
}
require(_bytes <= 32, "TypedMemView/index - Attempted to index more than 32 bytes");
uint8 bitLength;
unchecked {
bitLength = _bytes * 8;
}
uint256 _loc = loc(memView);
uint256 _mask = leftMask(bitLength);
assembly {
// solhint-disable-previous-line no-inline-assembly
result := and(mload(add(_loc, _index)), _mask)
}
}
/**
* @notice Parse an unsigned integer from the view at `_index`.
* @dev Requires that the view have >= `_bytes` bytes following that index.
* @param memView The view
* @param _index The index
* @param _bytes The bytes
* @return result - The unsigned integer
*/
function indexUint(bytes29 memView, uint256 _index, uint8 _bytes) internal pure returns (uint256 result) {
return uint256(index(memView, _index, _bytes)) >> ((32 - _bytes) * 8);
}
/**
* @notice Parse an unsigned integer from LE bytes.
* @param memView The view
* @param _index The index
* @param _bytes The bytes
* @return result - The unsigned integer
*/
function indexLEUint(bytes29 memView, uint256 _index, uint8 _bytes) internal pure returns (uint256 result) {
return reverseUint256(uint256(index(memView, _index, _bytes)));
}
/**
* @notice Parse an address from the view at `_index`. Requires that the view have >= 20 bytes
* following that index.
* @param memView The view
* @param _index The index
* @return address - The address
*/
function indexAddress(bytes29 memView, uint256 _index) internal pure returns (address) {
return address(uint160(indexUint(memView, _index, 20)));
}
/**
* @notice Return the keccak256 hash of the underlying memory
* @param memView The view
* @return digest - The keccak256 hash of the underlying memory
*/
function keccak(bytes29 memView) internal pure returns (bytes32 digest) {
uint256 _loc = loc(memView);
uint256 _len = len(memView);
assembly {
// solhint-disable-previous-line no-inline-assembly
digest := keccak256(_loc, _len)
}
}
/**
* @notice Return the sha2 digest of the underlying memory.
* @dev We explicitly deallocate memory afterwards.
* @param memView The view
* @return digest - The sha2 hash of the underlying memory
*/
function sha2(bytes29 memView) internal view returns (bytes32 digest) {
uint256 _loc = loc(memView);
uint256 _len = len(memView);
bool res;
assembly {
// solhint-disable-previous-line no-inline-assembly
let ptr := mload(0x40)
res := staticcall(gas(), 2, _loc, _len, ptr, 0x20) // sha2 #1
digest := mload(ptr)
}
require(res, "sha2 OOG");
}
/**
* @notice Implements bitcoin's hash160 (rmd160(sha2()))
* @param memView The pre-image
* @return digest - the Digest
*/
function hash160(bytes29 memView) internal view returns (bytes20 digest) {
uint256 _loc = loc(memView);
uint256 _len = len(memView);
bool res;
assembly {
// solhint-disable-previous-line no-inline-assembly
let ptr := mload(0x40)
res := staticcall(gas(), 2, _loc, _len, ptr, 0x20) // sha2
res := and(res, staticcall(gas(), 3, ptr, 0x20, ptr, 0x20)) // rmd160
digest := mload(add(ptr, 0xc)) // return value is 0-prefixed.
}
require(res, "hash160 OOG");
}
/**
* @notice Implements bitcoin's hash256 (double sha2)
* @param memView A view of the preimage
* @return digest - the Digest
*/
function hash256(bytes29 memView) internal view returns (bytes32 digest) {
uint256 _loc = loc(memView);
uint256 _len = len(memView);
bool res;
assembly {
// solhint-disable-previous-line no-inline-assembly
let ptr := mload(0x40)
res := staticcall(gas(), 2, _loc, _len, ptr, 0x20) // sha2 #1
res := and(res, staticcall(gas(), 2, ptr, 0x20, ptr, 0x20)) // sha2 #2
digest := mload(ptr)
}
require(res, "hash256 OOG");
}
/**
* @notice Return true if the underlying memory is equal. Else false.
* @param left The first view
* @param right The second view
* @return bool - True if the underlying memory is equal
*/
function untypedEqual(bytes29 left, bytes29 right) internal pure returns (bool) {
return (loc(left) == loc(right) && len(left) == len(right)) || keccak(left) == keccak(right);
}
/**
* @notice Return false if the underlying memory is equal. Else true.
* @param left The first view
* @param right The second view
* @return bool - False if the underlying memory is equal
*/
function untypedNotEqual(bytes29 left, bytes29 right) internal pure returns (bool) {
return !untypedEqual(left, right);
}
/**
* @notice Compares type equality.
* @dev Shortcuts if the pointers are identical, otherwise compares type and digest.
* @param left The first view
* @param right The second view
* @return bool - True if the types are the same
*/
function equal(bytes29 left, bytes29 right) internal pure returns (bool) {
return left == right || (typeOf(left) == typeOf(right) && keccak(left) == keccak(right));
}
/**
* @notice Compares type inequality.
* @dev Shortcuts if the pointers are identical, otherwise compares type and digest.
* @param left The first view
* @param right The second view
* @return bool - True if the types are not the same
*/
function notEqual(bytes29 left, bytes29 right) internal pure returns (bool) {
return !equal(left, right);
}
/**
* @notice Copy the view to a location, return an unsafe memory reference
* @dev Super Dangerous direct memory access.
*
* This reference can be overwritten if anything else modifies memory (!!!).
* As such it MUST be consumed IMMEDIATELY.
* This function is private to prevent unsafe usage by callers.
* @param memView The view
* @param _newLoc The new location
* @return written - the unsafe memory reference
*/
function unsafeCopyTo(bytes29 memView, uint256 _newLoc) private view returns (bytes29 written) {
require(notNull(memView), "TypedMemView/copyTo - Null pointer deref");
require(isValid(memView), "TypedMemView/copyTo - Invalid pointer deref");
uint256 _len = len(memView);
uint256 _oldLoc = loc(memView);
uint256 ptr;
bool res;
assembly {
// solhint-disable-previous-line no-inline-assembly
ptr := mload(0x40)
// revert if we're writing in occupied memory
if gt(ptr, _newLoc) { revert(0x60, 0x20) } // empty revert message
// use the identity precompile to copy
res := staticcall(gas(), 4, _oldLoc, _len, _newLoc, _len)
}
require(res, "identity OOG");
written = unsafeBuildUnchecked(typeOf(memView), _newLoc, _len);
}
/**
* @notice Copies the referenced memory to a new loc in memory, returning a `bytes` pointing to
* the new memory
* @dev Shortcuts if the pointers are identical, otherwise compares type and digest.
* @param memView The view
* @return ret - The view pointing to the new memory
*/
function clone(bytes29 memView) internal view returns (bytes memory ret) {
uint256 ptr;
uint256 _len = len(memView);
assembly {
// solhint-disable-previous-line no-inline-assembly
ptr := mload(0x40) // load unused memory pointer
ret := ptr
}
unchecked {
unsafeCopyTo(memView, ptr + 0x20);
}
assembly {
// solhint-disable-previous-line no-inline-assembly
mstore(0x40, add(add(ptr, _len), 0x20)) // write new unused pointer
mstore(ptr, _len) // write len of new array (in bytes)
}
}
/**
* @notice Join the views in memory, return an unsafe reference to the memory.
* @dev Super Dangerous direct memory access.
*
* This reference can be overwritten if anything else modifies memory (!!!).
* As such it MUST be consumed IMMEDIATELY.
* This function is private to prevent unsafe usage by callers.
* @param memViews The views
* @param _location The location in memory to which to copy & concatenate
* @return unsafeView - The conjoined view pointing to the new memory
*/
function unsafeJoin(bytes29[] memory memViews, uint256 _location) private view returns (bytes29 unsafeView) {
assembly {
// solhint-disable-previous-line no-inline-assembly
let ptr := mload(0x40)
// revert if we're writing in occupied memory
if gt(ptr, _location) { revert(0x60, 0x20) } // empty revert message
}
uint256 _offset = 0;
for (uint256 i = 0; i < memViews.length; i++) {
bytes29 memView = memViews[i];
unchecked {
unsafeCopyTo(memView, _location + _offset);
_offset += len(memView);
}
}
unsafeView = unsafeBuildUnchecked(0, _location, _offset);
}
/**
* @notice Produce the keccak256 digest of the concatenated contents of multiple views.
* @param memViews The views
* @return bytes32 - The keccak256 digest
*/
function joinKeccak(bytes29[] memory memViews) internal view returns (bytes32) {
uint256 ptr;
assembly {
// solhint-disable-previous-line no-inline-assembly
ptr := mload(0x40) // load unused memory pointer
}
return keccak(unsafeJoin(memViews, ptr));
}
/**
* @notice Produce the sha256 digest of the concatenated contents of multiple views.
* @param memViews The views
* @return bytes32 - The sha256 digest
*/
function joinSha2(bytes29[] memory memViews) internal view returns (bytes32) {
uint256 ptr;
assembly {
// solhint-disable-previous-line no-inline-assembly
ptr := mload(0x40) // load unused memory pointer
}
return sha2(unsafeJoin(memViews, ptr));
}
/**
* @notice copies all views, joins them into a new bytearray.
* @param memViews The views
* @return ret - The new byte array
*/
function join(bytes29[] memory memViews) internal view returns (bytes memory ret) {
uint256 ptr;
assembly {
// solhint-disable-previous-line no-inline-assembly
ptr := mload(0x40) // load unused memory pointer
}
bytes29 _newView;
unchecked {
_newView = unsafeJoin(memViews, ptr + 0x20);
}
uint256 _written = len(_newView);
uint256 _footprint = footprint(_newView);
assembly {
// solhint-disable-previous-line no-inline-assembly
// store the legnth
mstore(ptr, _written)
// new pointer is old + 0x20 + the footprint of the body
mstore(0x40, add(add(ptr, _footprint), 0x20))
ret := ptr
}
}
}
This file has been truncated, but you can view the full file.
{
"id": "212975b6de08de128f2215b51c90dd84",
"_format": "hh-sol-build-info-1",
"solcVersion": "0.8.17",
"solcLongVersion": "0.8.17+commit.8df45f5f",
"input": {
"language": "Solidity",
"sources": {
"TypedMemView.sol": {
"content": "// SPDX-License-Identifier: MIT OR Apache-2.0\r\npragma solidity >=0.8.12;\r\n\r\nlibrary TypedMemView {\r\n // Why does this exist?\r\n // the solidity `bytes memory` type has a few weaknesses.\r\n // 1. You can't index ranges effectively\r\n // 2. You can't slice without copying\r\n // 3. The underlying data may represent any type\r\n // 4. Solidity never deallocates memory, and memory costs grow\r\n // superlinearly\r\n\r\n // By using a memory view instead of a `bytes memory` we get the following\r\n // advantages:\r\n // 1. Slices are done on the stack, by manipulating the pointer\r\n // 2. We can index arbitrary ranges and quickly convert them to stack types\r\n // 3. We can insert type info into the pointer, and typecheck at runtime\r\n\r\n // This makes `TypedMemView` a useful tool for efficient zero-copy\r\n // algorithms.\r\n\r\n // Why bytes29?\r\n // We want to avoid confusion between views, digests, and other common\r\n // types so we chose a large and uncommonly used odd number of bytes\r\n //\r\n // Note that while bytes are left-aligned in a word, integers and addresses\r\n // are right-aligned. This means when working in assembly we have to\r\n // account for the 3 unused bytes on the righthand side\r\n //\r\n // First 5 bytes are a type flag.\r\n // - ff_ffff_fffe is reserved for unknown type.\r\n // - ff_ffff_ffff is reserved for invalid types/errors.\r\n // next 12 are memory address\r\n // next 12 are len\r\n // bottom 3 bytes are empty\r\n\r\n // Assumptions:\r\n // - non-modification of memory.\r\n // - No Solidity updates\r\n // - - wrt free mem point\r\n // - - wrt bytes representation in memory\r\n // - - wrt memory addressing in general\r\n\r\n // Usage:\r\n // - create type constants\r\n // - use `assertType` for runtime type assertions\r\n // - - unfortunately we can't do this at compile time yet :(\r\n // - recommended: implement modifiers that perform type checking\r\n // - - e.g.\r\n // - - `uint40 constant MY_TYPE = 3;`\r\n // - - ` modifer onlyMyType(bytes29 myView) { myView.assertType(MY_TYPE); }`\r\n // - instantiate a typed view from a bytearray using `ref`\r\n // - use `index` to inspect the contents of the view\r\n // - use `slice` to create smaller views into the same memory\r\n // - - `slice` can increase the offset\r\n // - - `slice can decrease the length`\r\n // - - must specify the output type of `slice`\r\n // - - `slice` will return a null view if you try to overrun\r\n // - - make sure to explicitly check for this with `notNull` or `assertType`\r\n // - use `equal` for typed comparisons.\r\n\r\n // The null view\r\n bytes29 public constant NULL = hex\"ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\";\r\n // Mask a low uint96\r\n uint256 constant LOW_12_MASK = 0xffffffffffffffffffffffff;\r\n // Shift constants\r\n uint8 constant SHIFT_TO_LEN = 24;\r\n uint8 constant SHIFT_TO_LOC = 96 + 24;\r\n uint8 constant SHIFT_TO_TYPE = 96 + 96 + 24;\r\n // For nibble encoding\r\n bytes private constant NIBBLE_LOOKUP = \"0123456789abcdef\";\r\n\r\n /**\r\n * @notice Returns the encoded hex character that represents the lower 4 bits of the argument.\r\n * @param _byte The byte\r\n * @return _char The encoded hex character\r\n */\r\n function nibbleHex(uint8 _byte) internal pure returns (uint8 _char) {\r\n uint8 _nibble = _byte & 0x0f; // keep bottom 4, 0 top 4\r\n _char = uint8(NIBBLE_LOOKUP[_nibble]);\r\n }\r\n /**\r\n * @notice Returns a uint16 containing the hex-encoded byte.\r\n * @param _b The byte\r\n * @return encoded - The hex-encoded byte\r\n */\r\n function byteHex(uint8 _b) internal pure returns (uint16 encoded) {\r\n encoded |= nibbleHex(_b >> 4); // top 4 bits\r\n encoded <<= 8;\r\n encoded |= nibbleHex(_b); // lower 4 bits\r\n }\r\n\r\n /**\r\n * @notice Encodes the uint256 to hex. `first` contains the encoded top 16 bytes.\r\n * `second` contains the encoded lower 16 bytes.\r\n *\r\n * @param _b The 32 bytes as uint256\r\n * @return first - The top 16 bytes\r\n * @return second - The bottom 16 bytes\r\n */\r\n function encodeHex(uint256 _b) internal pure returns (uint256 first, uint256 second) {\r\n for (uint8 i = 31; i > 15;) {\r\n uint8 _byte = uint8(_b >> (i * 8));\r\n first |= byteHex(_byte);\r\n if (i != 16) {\r\n first <<= 16;\r\n }\r\n unchecked {\r\n i -= 1;\r\n }\r\n }\r\n\r\n // abusing underflow here =_=\r\n for (uint8 i = 15; i < 255;) {\r\n uint8 _byte = uint8(_b >> (i * 8));\r\n second |= byteHex(_byte);\r\n if (i != 0) {\r\n second <<= 16;\r\n }\r\n unchecked {\r\n i -= 1;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @notice Changes the endianness of a uint256.\r\n * @dev https://graphics.stanford.edu/~seander/bithacks.html#ReverseParallel\r\n * @param _b The unsigned integer to reverse\r\n * @return v - The reversed value\r\n */\r\n function reverseUint256(uint256 _b) internal pure returns (uint256 v) {\r\n v = _b;\r\n\r\n // swap bytes\r\n v = ((v >> 8) & 0x00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF)\r\n | ((v & 0x00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF) << 8);\r\n // swap 2-byte long pairs\r\n v = ((v >> 16) & 0x0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF)\r\n | ((v & 0x0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF) << 16);\r\n // swap 4-byte long pairs\r\n v = ((v >> 32) & 0x00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF)\r\n | ((v & 0x00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF) << 32);\r\n // swap 8-byte long pairs\r\n v = ((v >> 64) & 0x0000000000000000FFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFF)\r\n | ((v & 0x0000000000000000FFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFF) << 64);\r\n // swap 16-byte long pairs\r\n v = (v >> 128) | (v << 128);\r\n }\r\n\r\n /**\r\n * @notice Create a mask with the highest `_len` bits set.\r\n * @param _len The length\r\n * @return mask - The mask\r\n */\r\n function leftMask(uint8 _len) private pure returns (uint256 mask) {\r\n // ugly. redo without assembly?\r\n assembly {\r\n // solhint-disable-previous-line no-inline-assembly\r\n mask := sar(sub(_len, 1), 0x8000000000000000000000000000000000000000000000000000000000000000)\r\n }\r\n }\r\n\r\n /**\r\n * @notice Return the null view.\r\n * @return bytes29 - The null view\r\n */\r\n function nullView() internal pure returns (bytes29) {\r\n return NULL;\r\n }\r\n\r\n /**\r\n * @notice Check if the view is null.\r\n * @return bool - True if the view is null\r\n */\r\n function isNull(bytes29 memView) internal pure returns (bool) {\r\n return memView == NULL;\r\n }\r\n\r\n /**\r\n * @notice Check if the view is not null.\r\n * @return bool - True if the view is not null\r\n */\r\n function notNull(bytes29 memView) internal pure returns (bool) {\r\n return !isNull(memView);\r\n }\r\n\r\n /**\r\n * @notice Check if the view is of a valid type and points to a valid location\r\n * in memory.\r\n * @dev We perform this check by examining solidity's unallocated memory\r\n * pointer and ensuring that the view's upper bound is less than that.\r\n * @param memView The view\r\n * @return ret - True if the view is valid\r\n */\r\n function isValid(bytes29 memView) internal pure returns (bool ret) {\r\n if (typeOf(memView) == 0xffffffffff) return false;\r\n uint256 _end = end(memView);\r\n assembly {\r\n // solhint-disable-previous-line no-inline-assembly\r\n ret := not(gt(_end, mload(0x40)))\r\n }\r\n }\r\n\r\n /**\r\n * @notice Require that a typed memory view be valid.\r\n * @dev Returns the view for easy chaining.\r\n * @param memView The view\r\n * @return bytes29 - The validated view\r\n */\r\n function assertValid(bytes29 memView) internal pure returns (bytes29) {\r\n require(isValid(memView), \"Validity assertion failed\");\r\n return memView;\r\n }\r\n\r\n /**\r\n * @notice Return true if the memview is of the expected type. Otherwise false.\r\n * @param memView The view\r\n * @param _expected The expected type\r\n * @return bool - True if the memview is of the expected type\r\n */\r\n function isType(bytes29 memView, uint40 _expected) internal pure returns (bool) {\r\n return typeOf(memView) == _expected;\r\n }\r\n\r\n /**\r\n * @notice Require that a typed memory view has a specific type.\r\n * @dev Returns the view for easy chaining.\r\n * @param memView The view\r\n * @param _expected The expected type\r\n * @return bytes29 - The view with validated type\r\n */\r\n function assertType(bytes29 memView, uint40 _expected) internal pure returns (bytes29) {\r\n if (!isType(memView, _expected)) {\r\n (, uint256 g) = encodeHex(uint256(typeOf(memView)));\r\n (, uint256 e) = encodeHex(uint256(_expected));\r\n string memory err =\r\n string(abi.encodePacked(\"Type assertion failed. Got 0x\", uint80(g), \". Expected 0x\", uint80(e)));\r\n revert(err);\r\n }\r\n return memView;\r\n }\r\n\r\n /**\r\n * @notice Return an identical view with a different type.\r\n * @param memView The view\r\n * @param _newType The new type\r\n * @return newView - The new view with the specified type\r\n */\r\n function castTo(bytes29 memView, uint40 _newType) internal pure returns (bytes29 newView) {\r\n // then | in the new type\r\n uint256 _typeShift = SHIFT_TO_TYPE;\r\n uint256 _typeBits = 40;\r\n assembly {\r\n // solhint-disable-previous-line no-inline-assembly\r\n // shift off the top 5 bytes\r\n newView := or(newView, shr(_typeBits, shl(_typeBits, memView)))\r\n newView := or(newView, shl(_typeShift, _newType))\r\n }\r\n }\r\n\r\n /**\r\n * @notice Unsafe raw pointer construction. This should generally not be called\r\n * directly. Prefer `ref` wherever possible.\r\n * @dev Unsafe raw pointer construction. This should generally not be called\r\n * directly. Prefer `ref` wherever possible.\r\n * @param _type The type\r\n * @param _loc The memory address\r\n * @param _len The length\r\n * @return newView - The new view with the specified type, location and length\r\n */\r\n function unsafeBuildUnchecked(uint256 _type, uint256 _loc, uint256 _len) private pure returns (bytes29 newView) {\r\n uint256 _uint96Bits = 96;\r\n uint256 _emptyBits = 24;\r\n assembly {\r\n // solium-disable-previous-line security/no-inline-assembly\r\n newView := shl(_uint96Bits, or(newView, _type)) // insert type\r\n newView := shl(_uint96Bits, or(newView, _loc)) // insert loc\r\n newView := shl(_emptyBits, or(newView, _len)) // empty bottom 3 bytes\r\n }\r\n }\r\n\r\n /**\r\n * @notice Instantiate a new memory view. This should generally not be called\r\n * directly. Prefer `ref` wherever possible.\r\n * @dev Instantiate a new memory view. This should generally not be called\r\n * directly. Prefer `ref` wherever possible.\r\n * @param _type The type\r\n * @param _loc The memory address\r\n * @param _len The length\r\n * @return newView - The new view with the specified type, location and length\r\n */\r\n function build(uint256 _type, uint256 _loc, uint256 _len) internal pure returns (bytes29 newView) {\r\n uint256 _end = _loc + _len;\r\n assembly {\r\n // solhint-disable-previous-line no-inline-assembly\r\n if gt(_end, mload(0x40)) { _end := 0 }\r\n }\r\n if (_end == 0) {\r\n return NULL;\r\n }\r\n newView = unsafeBuildUnchecked(_type, _loc, _len);\r\n }\r\n\r\n /**\r\n * @notice Instantiate a memory view from a byte array.\r\n * @dev Note that due to Solidity memory representation, it is not possible to\r\n * implement a deref, as the `bytes` type stores its len in memory.\r\n * @param arr The byte array\r\n * @param newType The type\r\n * @return bytes29 - The memory view\r\n */\r\n function ref(bytes memory arr, uint40 newType) internal pure returns (bytes29) {\r\n uint256 _len = arr.length;\r\n\r\n uint256 _loc;\r\n assembly {\r\n // solhint-disable-previous-line no-inline-assembly\r\n _loc := add(arr, 0x20) // our view is of the data, not the struct\r\n }\r\n\r\n return build(newType, _loc, _len);\r\n }\r\n\r\n /**\r\n * @notice Return the associated type information.\r\n * @param memView The memory view\r\n * @return _type - The type associated with the view\r\n */\r\n function typeOf(bytes29 memView) internal pure returns (uint40 _type) {\r\n uint256 _shift = SHIFT_TO_TYPE;\r\n assembly {\r\n // solium-disable-previous-line security/no-inline-assembly\r\n _type := shr(_shift, memView) // shift out lower 27 bytes\r\n }\r\n }\r\n\r\n /**\r\n * @notice Optimized type comparison. Checks that the 5-byte type flag is equal.\r\n * @param left The first view\r\n * @param right The second view\r\n * @return bool - True if the 5-byte type flag is equal\r\n */\r\n function sameType(bytes29 left, bytes29 right) internal pure returns (bool) {\r\n return (left ^ right) >> SHIFT_TO_TYPE == 0;\r\n }\r\n\r\n /**\r\n * @notice Return the memory address of the underlying bytes.\r\n * @param memView The view\r\n * @return _loc - The memory address\r\n */\r\n function loc(bytes29 memView) internal pure returns (uint96 _loc) {\r\n uint256 _mask = LOW_12_MASK; // assembly can't use globals\r\n uint256 _shift = SHIFT_TO_LOC;\r\n assembly {\r\n // solium-disable-previous-line security/no-inline-assembly\r\n _loc := and(shr(_shift, memView), _mask)\r\n }\r\n }\r\n\r\n /**\r\n * @notice The number of memory words this memory view occupies, rounded up.\r\n * @param memView The view\r\n * @return uint256 - The number of memory words\r\n */\r\n function words(bytes29 memView) internal pure returns (uint256) {\r\n return (uint256(len(memView)) + 31) / 32;\r\n }\r\n\r\n /**\r\n * @notice The in-memory footprint of a fresh copy of the view.\r\n * @param memView The view\r\n * @return uint256 - The in-memory footprint of a fresh copy of the view.\r\n */\r\n function footprint(bytes29 memView) internal pure returns (uint256) {\r\n return words(memView) * 32;\r\n }\r\n\r\n /**\r\n * @notice The number of bytes of the view.\r\n * @param memView The view\r\n * @return _len - The length of the view\r\n */\r\n function len(bytes29 memView) internal pure returns (uint96 _len) {\r\n uint256 _mask = LOW_12_MASK; // assembly can't use globals\r\n uint256 _emptyBits = 24;\r\n assembly {\r\n // solium-disable-previous-line security/no-inline-assembly\r\n _len := and(shr(_emptyBits, memView), _mask)\r\n }\r\n }\r\n\r\n /**\r\n * @notice Returns the endpoint of `memView`.\r\n * @param memView The view\r\n * @return uint256 - The endpoint of `memView`\r\n */\r\n function end(bytes29 memView) internal pure returns (uint256) {\r\n unchecked {\r\n return loc(memView) + len(memView);\r\n }\r\n }\r\n\r\n /**\r\n * @notice Safe slicing without memory modification.\r\n * @param memView The view\r\n * @param _index The start index\r\n * @param _len The length\r\n * @param newType The new type\r\n * @return bytes29 - The new view\r\n */\r\n function slice(bytes29 memView, uint256 _index, uint256 _len, uint40 newType) internal pure returns (bytes29) {\r\n uint256 _loc = loc(memView);\r\n\r\n // Ensure it doesn't overrun the view\r\n if (_loc + _index + _len > end(memView)) {\r\n return NULL;\r\n }\r\n\r\n _loc = _loc + _index;\r\n return build(newType, _loc, _len);\r\n }\r\n\r\n /**\r\n * @notice Shortcut to `slice`. Gets a view representing the first `_len` bytes.\r\n * @param memView The view\r\n * @param _len The length\r\n * @param newType The new type\r\n * @return bytes29 - The new view\r\n */\r\n function prefix(bytes29 memView, uint256 _len, uint40 newType) internal pure returns (bytes29) {\r\n return slice(memView, 0, _len, newType);\r\n }\r\n\r\n /**\r\n * @notice Shortcut to `slice`. Gets a view representing the last `_len` byte.\r\n * @param memView The view\r\n * @param _len The length\r\n * @param newType The new type\r\n * @return bytes29 - The new view\r\n */\r\n function postfix(bytes29 memView, uint256 _len, uint40 newType) internal pure returns (bytes29) {\r\n return slice(memView, uint256(len(memView)) - _len, _len, newType);\r\n }\r\n\r\n /**\r\n * @notice Construct an error message for an indexing overrun.\r\n * @param _loc The memory address\r\n * @param _len The length\r\n * @param _index The index\r\n * @param _slice The slice where the overrun occurred\r\n * @return err - The err\r\n */\r\n function indexErrOverrun(uint256 _loc, uint256 _len, uint256 _index, uint256 _slice)\r\n internal\r\n pure\r\n returns (string memory err)\r\n {\r\n (, uint256 a) = encodeHex(_loc);\r\n (, uint256 b) = encodeHex(_len);\r\n (, uint256 c) = encodeHex(_index);\r\n (, uint256 d) = encodeHex(_slice);\r\n err = string(\r\n abi.encodePacked(\r\n \"TypedMemView/index - Overran the view. Slice is at 0x\",\r\n uint48(a),\r\n \" with length 0x\",\r\n uint48(b),\r\n \". Attempted to index at offset 0x\",\r\n uint48(c),\r\n \" with length 0x\",\r\n uint48(d),\r\n \".\"\r\n )\r\n );\r\n }\r\n\r\n /**\r\n * @notice Load up to 32 bytes from the view onto the stack.\r\n * @dev Returns a bytes32 with only the `_bytes` highest bytes set.\r\n * This can be immediately cast to a smaller fixed-length byte array.\r\n * To automatically cast to an integer, use `indexUint`.\r\n * @param memView The view\r\n * @param _index The index\r\n * @param _bytes The bytes\r\n * @return result - The 32 byte result\r\n */\r\n function index(bytes29 memView, uint256 _index, uint8 _bytes) internal pure returns (bytes32 result) {\r\n if (_bytes == 0) return bytes32(0);\r\n if (_index + _bytes > len(memView)) {\r\n revert(indexErrOverrun(loc(memView), len(memView), _index, uint256(_bytes)));\r\n }\r\n require(_bytes <= 32, \"TypedMemView/index - Attempted to index more than 32 bytes\");\r\n\r\n uint8 bitLength;\r\n unchecked {\r\n bitLength = _bytes * 8;\r\n }\r\n uint256 _loc = loc(memView);\r\n uint256 _mask = leftMask(bitLength);\r\n assembly {\r\n // solhint-disable-previous-line no-inline-assembly\r\n result := and(mload(add(_loc, _index)), _mask)\r\n }\r\n }\r\n\r\n /**\r\n * @notice Parse an unsigned integer from the view at `_index`.\r\n * @dev Requires that the view have >= `_bytes` bytes following that index.\r\n * @param memView The view\r\n * @param _index The index\r\n * @param _bytes The bytes\r\n * @return result - The unsigned integer\r\n */\r\n function indexUint(bytes29 memView, uint256 _index, uint8 _bytes) internal pure returns (uint256 result) {\r\n return uint256(index(memView, _index, _bytes)) >> ((32 - _bytes) * 8);\r\n }\r\n\r\n /**\r\n * @notice Parse an unsigned integer from LE bytes.\r\n * @param memView The view\r\n * @param _index The index\r\n * @param _bytes The bytes\r\n * @return result - The unsigned integer\r\n */\r\n function indexLEUint(bytes29 memView, uint256 _index, uint8 _bytes) internal pure returns (uint256 result) {\r\n return reverseUint256(uint256(index(memView, _index, _bytes)));\r\n }\r\n\r\n /**\r\n * @notice Parse an address from the view at `_index`. Requires that the view have >= 20 bytes\r\n * following that index.\r\n * @param memView The view\r\n * @param _index The index\r\n * @return address - The address\r\n */\r\n function indexAddress(bytes29 memView, uint256 _index) internal pure returns (address) {\r\n return address(uint160(indexUint(memView, _index, 20)));\r\n }\r\n\r\n /**\r\n * @notice Return the keccak256 hash of the underlying memory\r\n * @param memView The view\r\n * @return digest - The keccak256 hash of the underlying memory\r\n */\r\n function keccak(bytes29 memView) internal pure returns (bytes32 digest) {\r\n uint256 _loc = loc(memView);\r\n uint256 _len = len(memView);\r\n assembly {\r\n // solhint-disable-previous-line no-inline-assembly\r\n digest := keccak256(_loc, _len)\r\n }\r\n }\r\n\r\n /**\r\n * @notice Return the sha2 digest of the underlying memory.\r\n * @dev We explicitly deallocate memory afterwards.\r\n * @param memView The view\r\n * @return digest - The sha2 hash of the underlying memory\r\n */\r\n function sha2(bytes29 memView) internal view returns (bytes32 digest) {\r\n uint256 _loc = loc(memView);\r\n uint256 _len = len(memView);\r\n\r\n bool res;\r\n assembly {\r\n // solhint-disable-previous-line no-inline-assembly\r\n let ptr := mload(0x40)\r\n res := staticcall(gas(), 2, _loc, _len, ptr, 0x20) // sha2 #1\r\n digest := mload(ptr)\r\n }\r\n require(res, \"sha2 OOG\");\r\n }\r\n\r\n /**\r\n * @notice Implements bitcoin's hash160 (rmd160(sha2()))\r\n * @param memView The pre-image\r\n * @return digest - the Digest\r\n */\r\n function hash160(bytes29 memView) internal view returns (bytes20 digest) {\r\n uint256 _loc = loc(memView);\r\n uint256 _len = len(memView);\r\n bool res;\r\n assembly {\r\n // solhint-disable-previous-line no-inline-assembly\r\n let ptr := mload(0x40)\r\n res := staticcall(gas(), 2, _loc, _len, ptr, 0x20) // sha2\r\n res := and(res, staticcall(gas(), 3, ptr, 0x20, ptr, 0x20)) // rmd160\r\n digest := mload(add(ptr, 0xc)) // return value is 0-prefixed.\r\n }\r\n require(res, \"hash160 OOG\");\r\n }\r\n\r\n /**\r\n * @notice Implements bitcoin's hash256 (double sha2)\r\n * @param memView A view of the preimage\r\n * @return digest - the Digest\r\n */\r\n function hash256(bytes29 memView) internal view returns (bytes32 digest) {\r\n uint256 _loc = loc(memView);\r\n uint256 _len = len(memView);\r\n bool res;\r\n assembly {\r\n // solhint-disable-previous-line no-inline-assembly\r\n let ptr := mload(0x40)\r\n res := staticcall(gas(), 2, _loc, _len, ptr, 0x20) // sha2 #1\r\n res := and(res, staticcall(gas(), 2, ptr, 0x20, ptr, 0x20)) // sha2 #2\r\n digest := mload(ptr)\r\n }\r\n require(res, \"hash256 OOG\");\r\n }\r\n\r\n /**\r\n * @notice Return true if the underlying memory is equal. Else false.\r\n * @param left The first view\r\n * @param right The second view\r\n * @return bool - True if the underlying memory is equal\r\n */\r\n function untypedEqual(bytes29 left, bytes29 right) internal pure returns (bool) {\r\n return (loc(left) == loc(right) && len(left) == len(right)) || keccak(left) == keccak(right);\r\n }\r\n\r\n /**\r\n * @notice Return false if the underlying memory is equal. Else true.\r\n * @param left The first view\r\n * @param right The second view\r\n * @return bool - False if the underlying memory is equal\r\n */\r\n function untypedNotEqual(bytes29 left, bytes29 right) internal pure returns (bool) {\r\n return !untypedEqual(left, right);\r\n }\r\n\r\n /**\r\n * @notice Compares type equality.\r\n * @dev Shortcuts if the pointers are identical, otherwise compares type and digest.\r\n * @param left The first view\r\n * @param right The second view\r\n * @return bool - True if the types are the same\r\n */\r\n function equal(bytes29 left, bytes29 right) internal pure returns (bool) {\r\n return left == right || (typeOf(left) == typeOf(right) && keccak(left) == keccak(right));\r\n }\r\n\r\n /**\r\n * @notice Compares type inequality.\r\n * @dev Shortcuts if the pointers are identical, otherwise compares type and digest.\r\n * @param left The first view\r\n * @param right The second view\r\n * @return bool - True if the types are not the same\r\n */\r\n function notEqual(bytes29 left, bytes29 right) internal pure returns (bool) {\r\n return !equal(left, right);\r\n }\r\n\r\n /**\r\n * @notice Copy the view to a location, return an unsafe memory reference\r\n * @dev Super Dangerous direct memory access.\r\n *\r\n * This reference can be overwritten if anything else modifies memory (!!!).\r\n * As such it MUST be consumed IMMEDIATELY.\r\n * This function is private to prevent unsafe usage by callers.\r\n * @param memView The view\r\n * @param _newLoc The new location\r\n * @return written - the unsafe memory reference\r\n */\r\n function unsafeCopyTo(bytes29 memView, uint256 _newLoc) private view returns (bytes29 written) {\r\n require(notNull(memView), \"TypedMemView/copyTo - Null pointer deref\");\r\n require(isValid(memView), \"TypedMemView/copyTo - Invalid pointer deref\");\r\n uint256 _len = len(memView);\r\n uint256 _oldLoc = loc(memView);\r\n\r\n uint256 ptr;\r\n bool res;\r\n assembly {\r\n // solhint-disable-previous-line no-inline-assembly\r\n ptr := mload(0x40)\r\n // revert if we're writing in occupied memory\r\n if gt(ptr, _newLoc) { revert(0x60, 0x20) } // empty revert message\r\n\r\n // use the identity precompile to copy\r\n res := staticcall(gas(), 4, _oldLoc, _len, _newLoc, _len)\r\n }\r\n require(res, \"identity OOG\");\r\n written = unsafeBuildUnchecked(typeOf(memView), _newLoc, _len);\r\n }\r\n\r\n /**\r\n * @notice Copies the referenced memory to a new loc in memory, returning a `bytes` pointing to\r\n * the new memory\r\n * @dev Shortcuts if the pointers are identical, otherwise compares type and digest.\r\n * @param memView The view\r\n * @return ret - The view pointing to the new memory\r\n */\r\n function clone(bytes29 memView) internal view returns (bytes memory ret) {\r\n uint256 ptr;\r\n uint256 _len = len(memView);\r\n assembly {\r\n // solhint-disable-previous-line no-inline-assembly\r\n ptr := mload(0x40) // load unused memory pointer\r\n ret := ptr\r\n }\r\n unchecked {\r\n unsafeCopyTo(memView, ptr + 0x20);\r\n }\r\n assembly {\r\n // solhint-disable-previous-line no-inline-assembly\r\n mstore(0x40, add(add(ptr, _len), 0x20)) // write new unused pointer\r\n mstore(ptr, _len) // write len of new array (in bytes)\r\n }\r\n }\r\n\r\n /**\r\n * @notice Join the views in memory, return an unsafe reference to the memory.\r\n * @dev Super Dangerous direct memory access.\r\n *\r\n * This reference can be overwritten if anything else modifies memory (!!!).\r\n * As such it MUST be consumed IMMEDIATELY.\r\n * This function is private to prevent unsafe usage by callers.\r\n * @param memViews The views\r\n * @param _location The location in memory to which to copy & concatenate\r\n * @return unsafeView - The conjoined view pointing to the new memory\r\n */\r\n function unsafeJoin(bytes29[] memory memViews, uint256 _location) private view returns (bytes29 unsafeView) {\r\n assembly {\r\n // solhint-disable-previous-line no-inline-assembly\r\n let ptr := mload(0x40)\r\n // revert if we're writing in occupied memory\r\n if gt(ptr, _location) { revert(0x60, 0x20) } // empty revert message\r\n }\r\n\r\n uint256 _offset = 0;\r\n for (uint256 i = 0; i < memViews.length; i++) {\r\n bytes29 memView = memViews[i];\r\n unchecked {\r\n unsafeCopyTo(memView, _location + _offset);\r\n _offset += len(memView);\r\n }\r\n }\r\n unsafeView = unsafeBuildUnchecked(0, _location, _offset);\r\n }\r\n\r\n /**\r\n * @notice Produce the keccak256 digest of the concatenated contents of multiple views.\r\n * @param memViews The views\r\n * @return bytes32 - The keccak256 digest\r\n */\r\n function joinKeccak(bytes29[] memory memViews) internal view returns (bytes32) {\r\n uint256 ptr;\r\n assembly {\r\n // solhint-disable-previous-line no-inline-assembly\r\n ptr := mload(0x40) // load unused memory pointer\r\n }\r\n return keccak(unsafeJoin(memViews, ptr));\r\n }\r\n\r\n /**\r\n * @notice Produce the sha256 digest of the concatenated contents of multiple views.\r\n * @param memViews The views\r\n * @return bytes32 - The sha256 digest\r\n */\r\n function joinSha2(bytes29[] memory memViews) internal view returns (bytes32) {\r\n uint256 ptr;\r\n assembly {\r\n // solhint-disable-previous-line no-inline-assembly\r\n ptr := mload(0x40) // load unused memory pointer\r\n }\r\n return sha2(unsafeJoin(memViews, ptr));\r\n }\r\n\r\n /**\r\n * @notice copies all views, joins them into a new bytearray.\r\n * @param memViews The views\r\n * @return ret - The new byte array\r\n */\r\n function join(bytes29[] memory memViews) internal view returns (bytes memory ret) {\r\n uint256 ptr;\r\n assembly {\r\n // solhint-disable-previous-line no-inline-assembly\r\n ptr := mload(0x40) // load unused memory pointer\r\n }\r\n\r\n bytes29 _newView;\r\n unchecked {\r\n _newView = unsafeJoin(memViews, ptr + 0x20);\r\n }\r\n uint256 _written = len(_newView);\r\n uint256 _footprint = footprint(_newView);\r\n\r\n assembly {\r\n // solhint-disable-previous-line no-inline-assembly\r\n // store the legnth\r\n mstore(ptr, _written)\r\n // new pointer is old + 0x20 + the footprint of the body\r\n mstore(0x40, add(add(ptr, _footprint), 0x20))\r\n ret := ptr\r\n }\r\n }\r\n}"
}
},
"settings": {
"optimizer": {
"enabled": false,
"runs": 200
},
"outputSelection": {
"*": {
"": [
"ast"
],
"*": [
"abi",
"metadata",
"devdoc",
"userdoc",
"storageLayout",
"evm.legacyAssembly",
"evm.bytecode",
"evm.deployedBytecode",
"evm.methodIdentifiers",
"evm.gasEstimates",
"evm.assembly"
]
}
}
}
},
"output": {
"contracts": {
"TypedMemView.sol": {
"TypedMemView": {
"abi": [
{
"inputs": [],
"name": "NULL",
"outputs": [
{
"internalType": "bytes29",
"name": "",
"type": "bytes29"
}
],
"stateMutability": "view",
"type": "function"
}
],
"devdoc": {
"kind": "dev",
"methods": {},
"version": 1
},
"evm": {
"assembly": " /* \"TypedMemView.sol\":76:31991 library TypedMemView {... */\n dataSize(sub_0)\n dataOffset(sub_0)\n 0x0b\n dup3\n dup3\n dup3\n codecopy\n dup1\n mload\n 0x00\n byte\n 0x73\n eq\n tag_1\n jumpi\n mstore(0x00, 0x4e487b7100000000000000000000000000000000000000000000000000000000)\n mstore(0x04, 0x00)\n revert(0x00, 0x24)\ntag_1:\n mstore(0x00, address)\n 0x73\n dup2\n mstore8\n dup3\n dup2\n return\nstop\n\nsub_0: assembly {\n /* \"TypedMemView.sol\":76:31991 library TypedMemView {... */\n eq(address, deployTimeAddress())\n mstore(0x40, 0x80)\n jumpi(tag_1, lt(calldatasize, 0x04))\n shr(0xe0, calldataload(0x00))\n dup1\n 0xf26be3fc\n eq\n tag_2\n jumpi\n tag_1:\n 0x00\n dup1\n revert\n /* \"TypedMemView.sol\":2648:2742 bytes29 public constant NULL = hex\"ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\" */\n tag_2:\n tag_3\n tag_4\n jump\t// in\n tag_3:\n mload(0x40)\n tag_5\n swap2\n swap1\n tag_6\n jump\t// in\n tag_5:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n tag_4:\n 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000\n dup2\n jump\t// out\n /* \"#utility.yul\":7:157 */\n tag_7:\n /* \"#utility.yul\":44:51 */\n 0x00\n /* \"#utility.yul\":84:150 */\n 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000\n /* \"#utility.yul\":77:82 */\n dup3\n /* \"#utility.yul\":73:151 */\n and\n /* \"#utility.yul\":62:151 */\n swap1\n pop\n /* \"#utility.yul\":7:157 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":163:289 */\n tag_8:\n /* \"#utility.yul\":258:282 */\n tag_12\n /* \"#utility.yul\":276:281 */\n dup2\n /* \"#utility.yul\":258:282 */\n tag_7\n jump\t// in\n tag_12:\n /* \"#utility.yul\":253:256 */\n dup3\n /* \"#utility.yul\":246:283 */\n mstore\n /* \"#utility.yul\":163:289 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":295:533 */\n tag_6:\n /* \"#utility.yul\":396:400 */\n 0x00\n /* \"#utility.yul\":434:436 */\n 0x20\n /* \"#utility.yul\":423:432 */\n dup3\n /* \"#utility.yul\":419:437 */\n add\n /* \"#utility.yul\":411:437 */\n swap1\n pop\n /* \"#utility.yul\":447:526 */\n tag_14\n /* \"#utility.yul\":523:524 */\n 0x00\n /* \"#utility.yul\":512:521 */\n dup4\n /* \"#utility.yul\":508:525 */\n add\n /* \"#utility.yul\":499:505 */\n dup5\n /* \"#utility.yul\":447:526 */\n tag_8\n jump\t// in\n tag_14:\n /* \"#utility.yul\":295:533 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n\n auxdata: 0xa26469706673582212205aefef8ecf8fbcf3bf00a1641145febb2479c87472b93d2d59219b7e8a5ddfb064736f6c63430008110033\n}\n",
"bytecode": {
"functionDebugData": {},
"generatedSources": [],
"linkReferences": {},
"object": "60fe610052600b82828239805160001a607314610045577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe730000000000000000000000000000000000000000301460806040526004361060335760003560e01c8063f26be3fc146038575b600080fd5b603e6052565b6040516049919060af565b60405180910390f35b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000081565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000082169050919050565b60a9816076565b82525050565b600060208201905060c2600083018460a2565b9291505056fea26469706673582212205aefef8ecf8fbcf3bf00a1641145febb2479c87472b93d2d59219b7e8a5ddfb064736f6c63430008110033",
"opcodes": "PUSH1 0xFE PUSH2 0x52 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH2 0x45 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH1 0x33 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xF26BE3FC EQ PUSH1 0x38 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3E PUSH1 0x52 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x49 SWAP2 SWAP1 PUSH1 0xAF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000 DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0xA9 DUP2 PUSH1 0x76 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0xC2 PUSH1 0x0 DUP4 ADD DUP5 PUSH1 0xA2 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 GAS 0xEF 0xEF DUP15 0xCF DUP16 0xBC RETURN 0xBF STOP LOG1 PUSH5 0x1145FEBB24 PUSH26 0xC87472B93D2D59219B7E8A5DDFB064736F6C6343000811003300 ",
"sourceMap": "76:31915:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
},
"deployedBytecode": {
"functionDebugData": {
"@NULL_4": {
"entryPoint": 82,
"id": 4,
"parameterSlots": 0,
"returnSlots": 0
},
"abi_encode_t_bytes29_to_t_bytes29_fromStack_library": {
"entryPoint": 162,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_tuple_t_bytes29__to_t_bytes29__fromStack_library_reversed": {
"entryPoint": 175,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"cleanup_t_bytes29": {
"entryPoint": 118,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
}
},
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:536:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "52:105:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "62:89:1",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "77:5:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "84:66:1",
"type": "",
"value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "73:3:1"
},
"nodeType": "YulFunctionCall",
"src": "73:78:1"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "62:7:1"
}
]
}
]
},
"name": "cleanup_t_bytes29",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "34:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "44:7:1",
"type": ""
}
],
"src": "7:150:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "236:53:1",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "253:3:1"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "276:5:1"
}
],
"functionName": {
"name": "cleanup_t_bytes29",
"nodeType": "YulIdentifier",
"src": "258:17:1"
},
"nodeType": "YulFunctionCall",
"src": "258:24:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "246:6:1"
},
"nodeType": "YulFunctionCall",
"src": "246:37:1"
},
"nodeType": "YulExpressionStatement",
"src": "246:37:1"
}
]
},
"name": "abi_encode_t_bytes29_to_t_bytes29_fromStack_library",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "224:5:1",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "231:3:1",
"type": ""
}
],
"src": "163:126:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "401:132:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "411:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "423:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "434:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "419:3:1"
},
"nodeType": "YulFunctionCall",
"src": "419:18:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "411:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "499:6:1"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "512:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "523:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "508:3:1"
},
"nodeType": "YulFunctionCall",
"src": "508:17:1"
}
],
"functionName": {
"name": "abi_encode_t_bytes29_to_t_bytes29_fromStack_library",
"nodeType": "YulIdentifier",
"src": "447:51:1"
},
"nodeType": "YulFunctionCall",
"src": "447:79:1"
},
"nodeType": "YulExpressionStatement",
"src": "447:79:1"
}
]
},
"name": "abi_encode_tuple_t_bytes29__to_t_bytes29__fromStack_library_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "373:9:1",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "385:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "396:4:1",
"type": ""
}
],
"src": "295:238:1"
}
]
},
"contents": "{\n\n function cleanup_t_bytes29(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000)\n }\n\n function abi_encode_t_bytes29_to_t_bytes29_fromStack_library(value, pos) {\n mstore(pos, cleanup_t_bytes29(value))\n }\n\n function abi_encode_tuple_t_bytes29__to_t_bytes29__fromStack_library_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_bytes29_to_t_bytes29_fromStack_library(value0, add(headStart, 0))\n\n }\n\n}\n",
"id": 1,
"language": "Yul",
"name": "#utility.yul"
}
],
"immutableReferences": {},
"linkReferences": {},
"object": "730000000000000000000000000000000000000000301460806040526004361060335760003560e01c8063f26be3fc146038575b600080fd5b603e6052565b6040516049919060af565b60405180910390f35b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000081565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000082169050919050565b60a9816076565b82525050565b600060208201905060c2600083018460a2565b9291505056fea26469706673582212205aefef8ecf8fbcf3bf00a1641145febb2479c87472b93d2d59219b7e8a5ddfb064736f6c63430008110033",
"opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH1 0x33 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xF26BE3FC EQ PUSH1 0x38 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3E PUSH1 0x52 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x49 SWAP2 SWAP1 PUSH1 0xAF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000 DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0xA9 DUP2 PUSH1 0x76 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0xC2 PUSH1 0x0 DUP4 ADD DUP5 PUSH1 0xA2 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 GAS 0xEF 0xEF DUP15 0xCF DUP16 0xBC RETURN 0xBF STOP LOG1 PUSH5 0x1145FEBB24 PUSH26 0xC87472B93D2D59219B7E8A5DDFB064736F6C6343000811003300 ",
"sourceMap": "76:31915:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;2648:94;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;:::o;7:150:1:-;44:7;84:66;77:5;73:78;62:89;;7:150;;;:::o;163:126::-;258:24;276:5;258:24;:::i;:::-;253:3;246:37;163:126;;:::o;295:238::-;396:4;434:2;423:9;419:18;411:26;;447:79;523:1;512:9;508:17;499:6;447:79;:::i;:::-;295:238;;;;:::o"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "50800",
"executionCost": "127",
"totalCost": "50927"
},
"external": {
"NULL()": "297"
},
"internal": {
"assertType(bytes29,uint40)": "infinite",
"assertValid(bytes29)": "infinite",
"build(uint256,uint256,uint256)": "infinite",
"byteHex(uint8)": "infinite",
"castTo(bytes29,uint40)": "infinite",
"clone(bytes29)": "infinite",
"encodeHex(uint256)": "infinite",
"end(bytes29)": "infinite",
"equal(bytes29,bytes29)": "infinite",
"footprint(bytes29)": "infinite",
"hash160(bytes29)": "infinite",
"hash256(bytes29)": "infinite",
"index(bytes29,uint256,uint8)": "infinite",
"indexAddress(bytes29,uint256)": "infinite",
"indexErrOverrun(uint256,uint256,uint256,uint256)": "infinite",
"indexLEUint(bytes29,uint256,uint8)": "infinite",
"indexUint(bytes29,uint256,uint8)": "infinite",
"isNull(bytes29)": "infinite",
"isType(bytes29,uint40)": "infinite",
"isValid(bytes29)": "infinite",
"join(bytes29[] memory)": "infinite",
"joinKeccak(bytes29[] memory)": "infinite",
"joinSha2(bytes29[] memory)": "infinite",
"keccak(bytes29)": "infinite",
"leftMask(uint8)": "infinite",
"len(bytes29)": "infinite",
"loc(bytes29)": "infinite",
"nibbleHex(uint8)": "infinite",
"notEqual(bytes29,bytes29)": "infinite",
"notNull(bytes29)": "infinite",
"nullView()": "infinite",
"postfix(bytes29,uint256,uint40)": "infinite",
"prefix(bytes29,uint256,uint40)": "infinite",
"ref(bytes memory,uint40)": "infinite",
"reverseUint256(uint256)": "infinite",
"sameType(bytes29,bytes29)": "infinite",
"sha2(bytes29)": "infinite",
"slice(bytes29,uint256,uint256,uint40)": "infinite",
"typeOf(bytes29)": "infinite",
"unsafeBuildUnchecked(uint256,uint256,uint256)": "infinite",
"unsafeCopyTo(bytes29,uint256)": "infinite",
"unsafeJoin(bytes29[] memory,uint256)": "infinite",
"untypedEqual(bytes29,bytes29)": "infinite",
"untypedNotEqual(bytes29,bytes29)": "infinite",
"words(bytes29)": "infinite"
}
},
"legacyAssembly": {
".code": [
{
"begin": 76,
"end": 31991,
"name": "PUSH #[$]",
"source": 0,
"value": "0000000000000000000000000000000000000000000000000000000000000000"
},
{
"begin": 76,
"end": 31991,
"name": "PUSH [$]",
"source": 0,
"value": "0000000000000000000000000000000000000000000000000000000000000000"
},
{
"begin": 76,
"end": 31991,
"name": "PUSH",
"source": 0,
"value": "B"
},
{
"begin": 76,
"end": 31991,
"name": "DUP3",
"source": 0
},
{
"begin": 76,
"end": 31991,
"name": "DUP3",
"source": 0
},
{
"begin": 76,
"end": 31991,
"name": "DUP3",
"source": 0
},
{
"begin": 76,
"end": 31991,
"name": "CODECOPY",
"source": 0
},
{
"begin": 76,
"end": 31991,
"name": "DUP1",
"source": 0
},
{
"begin": 76,
"end": 31991,
"name": "MLOAD",
"source": 0
},
{
"begin": 76,
"end": 31991,
"name": "PUSH",
"source": 0,
"value": "0"
},
{
"begin": 76,
"end": 31991,
"name": "BYTE",
"source": 0
},
{
"begin": 76,
"end": 31991,
"name": "PUSH",
"source": 0,
"value": "73"
},
{
"begin": 76,
"end": 31991,
"name": "EQ",
"source": 0
},
{
"begin": 76,
"end": 31991,
"name": "PUSH [tag]",
"source": 0,
"value": "1"
},
{
"begin": 76,
"end": 31991,
"name": "JUMPI",
"source": 0
},
{
"begin": 76,
"end": 31991,
"name": "PUSH",
"source": 0,
"value": "4E487B7100000000000000000000000000000000000000000000000000000000"
},
{
"begin": 76,
"end": 31991,
"name": "PUSH",
"source": 0,
"value": "0"
},
{
"begin": 76,
"end": 31991,
"name": "MSTORE",
"source": 0
},
{
"begin": 76,
"end": 31991,
"name": "PUSH",
"source": 0,
"value": "0"
},
{
"begin": 76,
"end": 31991,
"name": "PUSH",
"source": 0,
"value": "4"
},
{
"begin": 76,
"end": 31991,
"name": "MSTORE",
"source": 0
},
{
"begin": 76,
"end": 31991,
"name": "PUSH",
"source": 0,
"value": "24"
},
{
"begin": 76,
"end": 31991,
"name": "PUSH",
"source": 0,
"value": "0"
},
{
"begin": 76,
"end": 31991,
"name": "REVERT",
"source": 0
},
{
"begin": 76,
"end": 31991,
"name": "tag",
"source": 0,
"value": "1"
},
{
"begin": 76,
"end": 31991,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 76,
"end": 31991,
"name": "ADDRESS",
"source": 0
},
{
"begin": 76,
"end": 31991,
"name": "PUSH",
"source": 0,
"value": "0"
},
{
"begin": 76,
"end": 31991,
"name": "MSTORE",
"source": 0
},
{
"begin": 76,
"end": 31991,
"name": "PUSH",
"source": 0,
"value": "73"
},
{
"begin": 76,
"end": 31991,
"name": "DUP2",
"source": 0
},
{
"begin": 76,
"end": 31991,
"name": "MSTORE8",
"source": 0
},
{
"begin": 76,
"end": 31991,
"name": "DUP3",
"source": 0
},
{
"begin": 76,
"end": 31991,
"name": "DUP2",
"source": 0
},
{
"begin": 76,
"end": 31991,
"name": "RETURN",
"source": 0
}
],
".data": {
"0": {
".auxdata": "a26469706673582212205aefef8ecf8fbcf3bf00a1641145febb2479c87472b93d2d59219b7e8a5ddfb064736f6c63430008110033",
".code": [
{
"begin": 76,
"end": 31991,
"name": "PUSHDEPLOYADDRESS",
"source": 0
},
{
"begin": 76,
"end": 31991,
"name": "ADDRESS",
"source": 0
},
{
"begin": 76,
"end": 31991,
"name": "EQ",
"source": 0
},
{
"begin": 76,
"end": 31991,
"name": "PUSH",
"source": 0,
"value": "80"
},
{
"begin": 76,
"end": 31991,
"name": "PUSH",
"source": 0,
"value": "40"
},
{
"begin": 76,
"end": 31991,
"name": "MSTORE",
"source": 0
},
{
"begin": 76,
"end": 31991,
"name": "PUSH",
"source": 0,
"value": "4"
},
{
"begin": 76,
"end": 31991,
"name": "CALLDATASIZE",
"source": 0
},
{
"begin": 76,
"end": 31991,
"name": "LT",
"source": 0
},
{
"begin": 76,
"end": 31991,
"name": "PUSH [tag]",
"source": 0,
"value": "1"
},
{
"begin": 76,
"end": 31991,
"name": "JUMPI",
"source": 0
},
{
"begin": 76,
"end": 31991,
"name": "PUSH",
"source": 0,
"value": "0"
},
{
"begin": 76,
"end": 31991,
"name": "CALLDATALOAD",
"source": 0
},
{
"begin": 76,
"end": 31991,
"name": "PUSH",
"source": 0,
"value": "E0"
},
{
"begin": 76,
"end": 31991,
"name": "SHR",
"source": 0
},
{
"begin": 76,
"end": 31991,
"name": "DUP1",
"source": 0
},
{
"begin": 76,
"end": 31991,
"name": "PUSH",
"source": 0,
"value": "F26BE3FC"
},
{
"begin": 76,
"end": 31991,
"name": "EQ",
"source": 0
},
{
"begin": 76,
"end": 31991,
"name": "PUSH [tag]",
"source": 0,
"value": "2"
},
{
"begin": 76,
"end": 31991,
"name": "JUMPI",
"source": 0
},
{
"begin": 76,
"end": 31991,
"name": "tag",
"source": 0,
"value": "1"
},
{
"begin": 76,
"end": 31991,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 76,
"end": 31991,
"name": "PUSH",
"source": 0,
"value": "0"
},
{
"begin": 76,
"end": 31991,
"name": "DUP1",
"source": 0
},
{
"begin": 76,
"end": 31991,
"name": "REVERT",
"source": 0
},
{
"begin": 2648,
"end": 2742,
"name": "tag",
"source": 0,
"value": "2"
},
{
"begin": 2648,
"end": 2742,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 2648,
"end": 2742,
"name": "PUSH [tag]",
"source": 0,
"value": "3"
},
{
"begin": 2648,
"end": 2742,
"name": "PUSH [tag]",
"source": 0,
"value": "4"
},
{
"begin": 2648,
"end": 2742,
"jumpType": "[in]",
"name": "JUMP",
"source": 0
},
{
"begin": 2648,
"end": 2742,
"name": "tag",
"source": 0,
"value": "3"
},
{
"begin": 2648,
"end": 2742,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 2648,
"end": 2742,
"name": "PUSH",
"source": 0,
"value": "40"
},
{
"begin": 2648,
"end": 2742,
"name": "MLOAD",
"source": 0
},
{
"begin": 2648,
"end": 2742,
"name": "PUSH [tag]",
"source": 0,
"value": "5"
},
{
"begin": 2648,
"end": 2742,
"name": "SWAP2",
"source": 0
},
{
"begin": 2648,
"end": 2742,
"name": "SWAP1",
"source": 0
},
{
"begin": 2648,
"end": 2742,
"name": "PUSH [tag]",
"source": 0,
"value": "6"
},
{
"begin": 2648,
"end": 2742,
"jumpType": "[in]",
"name": "JUMP",
"source": 0
},
{
"begin": 2648,
"end": 2742,
"name": "tag",
"source": 0,
"value": "5"
},
{
"begin": 2648,
"end": 2742,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 2648,
"end": 2742,
"name": "PUSH",
"source": 0,
"value": "40"
},
{
"begin": 2648,
"end": 2742,
"name": "MLOAD",
"source": 0
},
{
"begin": 2648,
"end": 2742,
"name": "DUP1",
"source": 0
},
{
"begin": 2648,
"end": 2742,
"name": "SWAP2",
"source": 0
},
{
"begin": 2648,
"end": 2742,
"name": "SUB",
"source": 0
},
{
"begin": 2648,
"end": 2742,
"name": "SWAP1",
"source": 0
},
{
"begin": 2648,
"end": 2742,
"name": "RETURN",
"source": 0
},
{
"begin": 2648,
"end": 2742,
"name": "tag",
"source": 0,
"value": "4"
},
{
"begin": 2648,
"end": 2742,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 2648,
"end": 2742,
"name": "PUSH",
"source": 0,
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000"
},
{
"begin": 2648,
"end": 2742,
"name": "DUP2",
"source": 0
},
{
"begin": 2648,
"end": 2742,
"jumpType": "[out]",
"name": "JUMP",
"source": 0
},
{
"begin": 7,
"end": 157,
"name": "tag",
"source": 1,
"value": "7"
},
{
"begin": 7,
"end": 157,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 44,
"end": 51,
"name": "PUSH",
"source": 1,
"value": "0"
},
{
"begin": 84,
"end": 150,
"name": "PUSH",
"source": 1,
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000"
},
{
"begin": 77,
"end": 82,
"name": "DUP3",
"source": 1
},
{
"begin": 73,
"end": 151,
"name": "AND",
"source": 1
},
{
"begin": 62,
"end": 151,
"name": "SWAP1",
"source": 1
},
{
"begin": 62,
"end": 151,
"name": "POP",
"source": 1
},
{
"begin": 7,
"end": 157,
"name": "SWAP2",
"source": 1
},
{
"begin": 7,
"end": 157,
"name": "SWAP1",
"source": 1
},
{
"begin": 7,
"end": 157,
"name": "POP",
"source": 1
},
{
"begin": 7,
"end": 157,
"jumpType": "[out]",
"name": "JUMP",
"source": 1
},
{
"begin": 163,
"end": 289,
"name": "tag",
"source": 1,
"value": "8"
},
{
"begin": 163,
"end": 289,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 258,
"end": 282,
"name": "PUSH [tag]",
"source": 1,
"value": "12"
},
{
"begin": 276,
"end": 281,
"name": "DUP2",
"source": 1
},
{
"begin": 258,
"end": 282,
"name": "PUSH [tag]",
"source": 1,
"value": "7"
},
{
"begin": 258,
"end": 282,
"jumpType": "[in]",
"name": "JUMP",
"source": 1
},
{
"begin": 258,
"end": 282,
"name": "tag",
"source": 1,
"value": "12"
},
{
"begin": 258,
"end": 282,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 253,
"end": 256,
"name": "DUP3",
"source": 1
},
{
"begin": 246,
"end": 283,
"name": "MSTORE",
"source": 1
},
{
"begin": 163,
"end": 289,
"name": "POP",
"source": 1
},
{
"begin": 163,
"end": 289,
"name": "POP",
"source": 1
},
{
"begin": 163,
"end": 289,
"jumpType": "[out]",
"name": "JUMP",
"source": 1
},
{
"begin": 295,
"end": 533,
"name": "tag",
"source": 1,
"value": "6"
},
{
"begin": 295,
"end": 533,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 396,
"end": 400,
"name": "PUSH",
"source": 1,
"value": "0"
},
{
"begin": 434,
"end": 436,
"name": "PUSH",
"source": 1,
"value": "20"
},
{
"begin": 423,
"end": 432,
"name": "DUP3",
"source": 1
},
{
"begin": 419,
"end": 437,
"name": "ADD",
"source": 1
},
{
"begin": 411,
"end": 437,
"name": "SWAP1",
"source": 1
},
{
"begin": 411,
"end": 437,
"name": "POP",
"source": 1
},
{
"begin": 447,
"end": 526,
"name": "PUSH [tag]",
"source": 1,
"value": "14"
},
{
"begin": 523,
"end": 524,
"name": "PUSH",
"source": 1,
"value": "0"
},
{
"begin": 512,
"end": 521,
"name": "DUP4",
"source": 1
},
{
"begin": 508,
"end": 525,
"name": "ADD",
"source": 1
},
{
"begin": 499,
"end": 505,
"name": "DUP5",
"source": 1
},
{
"begin": 447,
"end": 526,
"name": "PUSH [tag]",
"source": 1,
"value": "8"
},
{
"begin": 447,
"end": 526,
"jumpType": "[in]",
"name": "JUMP",
"source": 1
},
{
"begin": 447,
"end": 526,
"name": "tag",
"source": 1,
"value": "14"
},
{
"begin": 447,
"end": 526,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 295,
"end": 533,
"name": "SWAP3",
"source": 1
},
{
"begin": 295,
"end": 533,
"name": "SWAP2",
"source": 1
},
{
"begin": 295,
"end": 533,
"name": "POP",
"source": 1
},
{
"begin": 295,
"end": 533,
"name": "POP",
"source": 1
},
{
"begin": 295,
"end": 533,
"jumpType": "[out]",
"name": "JUMP",
"source": 1
}
]
}
},
"sourceList": [
"TypedMemView.sol",
"#utility.yul"
]
},
"methodIdentifiers": {
"NULL()": "f26be3fc"
}
},
"metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"NULL\",\"outputs\":[{\"internalType\":\"bytes29\",\"name\":\"\",\"type\":\"bytes29\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"TypedMemView.sol\":\"TypedMemView\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"TypedMemView.sol\":{\"keccak256\":\"0x72e0dbe7657416e4d2702a03f0152d3f5d29f58ba3d86f5d1daf7aeac4961717\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://467b75a093cf94aa99f4fb8af1b1f602a65649ecdb821def1974c556c7016bd5\",\"dweb:/ipfs/QmdKwpuFxKmB9GGrC2KHhyjwXGwGZouGbaTEXpUtG9J5tr\"]}},\"version\":1}",
"storageLayout": {
"storage": [],
"types": null
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
}
}
},
"sources": {
"TypedMemView.sol": {
"ast": {
"absolutePath": "TypedMemView.sol",
"exportedSymbols": {
"TypedMemView": [
1419
]
},
"id": 1420,
"license": "MIT OR Apache-2.0",
"nodeType": "SourceUnit",
"nodes": [
{
"id": 1,
"literals": [
"solidity",
">=",
"0.8",
".12"
],
"nodeType": "PragmaDirective",
"src": "47:25:0"
},
{
"abstract": false,
"baseContracts": [],
"canonicalName": "TypedMemView",
"contractDependencies": [],
"contractKind": "library",
"fullyImplemented": true,
"id": 1419,
"linearizedBaseContracts": [
1419
],
"name": "TypedMemView",
"nameLocation": "84:12:0",
"nodeType": "ContractDefinition",
"nodes": [
{
"constant": true,
"functionSelector": "f26be3fc",
"id": 4,
"mutability": "constant",
"name": "NULL",
"nameLocation": "2672:4:0",
"nodeType": "VariableDeclaration",
"scope": 1419,
"src": "2648:94:0",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
},
"typeName": {
"id": 2,
"name": "bytes29",
"nodeType": "ElementaryTypeName",
"src": "2648:7:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
}
},
"value": {
"hexValue": "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
"id": 3,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "hexString",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2679:63:0",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_7894ac7152936831bdd146bb58cc79cdde7fa746d05d79c2b1dea4074b875c40",
"typeString": "literal_string hex\"ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\""
}
},
"visibility": "public"
},
{
"constant": true,
"id": 7,
"mutability": "constant",
"name": "LOW_12_MASK",
"nameLocation": "2792:11:0",
"nodeType": "VariableDeclaration",
"scope": 1419,
"src": "2775:57:0",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 5,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "2775:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": {
"hexValue": "3078666666666666666666666666666666666666666666666666",
"id": 6,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2806:26:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_79228162514264337593543950335_by_1",
"typeString": "int_const 79228162514264337593543950335"
},
"value": "0xffffffffffffffffffffffff"
},
"visibility": "internal"
},
{
"constant": true,
"id": 10,
"mutability": "constant",
"name": "SHIFT_TO_LEN",
"nameLocation": "2878:12:0",
"nodeType": "VariableDeclaration",
"scope": 1419,
"src": "2863:32:0",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 8,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "2863:5:0",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": {
"hexValue": "3234",
"id": 9,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2893:2:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_24_by_1",
"typeString": "int_const 24"
},
"value": "24"
},
"visibility": "internal"
},
{
"constant": true,
"id": 15,
"mutability": "constant",
"name": "SHIFT_TO_LOC",
"nameLocation": "2917:12:0",
"nodeType": "VariableDeclaration",
"scope": 1419,
"src": "2902:37:0",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 11,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "2902:5:0",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": {
"commonType": {
"typeIdentifier": "t_rational_120_by_1",
"typeString": "int_const 120"
},
"id": 14,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"leftExpression": {
"hexValue": "3936",
"id": 12,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2932:2:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_96_by_1",
"typeString": "int_const 96"
},
"value": "96"
},
"nodeType": "BinaryOperation",
"operator": "+",
"rightExpression": {
"hexValue": "3234",
"id": 13,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2937:2:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_24_by_1",
"typeString": "int_const 24"
},
"value": "24"
},
"src": "2932:7:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_120_by_1",
"typeString": "int_const 120"
}
},
"visibility": "internal"
},
{
"constant": true,
"id": 22,
"mutability": "constant",
"name": "SHIFT_TO_TYPE",
"nameLocation": "2961:13:0",
"nodeType": "VariableDeclaration",
"scope": 1419,
"src": "2946:43:0",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 16,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "2946:5:0",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": {
"commonType": {
"typeIdentifier": "t_rational_216_by_1",
"typeString": "int_const 216"
},
"id": 21,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"leftExpression": {
"commonType": {
"typeIdentifier": "t_rational_192_by_1",
"typeString": "int_const 192"
},
"id": 19,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"leftExpression": {
"hexValue": "3936",
"id": 17,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2977:2:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_96_by_1",
"typeString": "int_const 96"
},
"value": "96"
},
"nodeType": "BinaryOperation",
"operator": "+",
"rightExpression": {
"hexValue": "3936",
"id": 18,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2982:2:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_96_by_1",
"typeString": "int_const 96"
},
"value": "96"
},
"src": "2977:7:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_192_by_1",
"typeString": "int_const 192"
}
},
"nodeType": "BinaryOperation",
"operator": "+",
"rightExpression": {
"hexValue": "3234",
"id": 20,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2987:2:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_24_by_1",
"typeString": "int_const 24"
},
"value": "24"
},
"src": "2977:12:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_216_by_1",
"typeString": "int_const 216"
}
},
"visibility": "internal"
},
{
"constant": true,
"id": 25,
"mutability": "constant",
"name": "NIBBLE_LOOKUP",
"nameLocation": "3047:13:0",
"nodeType": "VariableDeclaration",
"scope": 1419,
"src": "3024:57:0",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 23,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "3024:5:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"value": {
"hexValue": "30313233343536373839616263646566",
"id": 24,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3063:18:0",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_cb29997ed99ead0db59ce4d12b7d3723198c827273e5796737c926d78019c39f",
"typeString": "literal_string \"0123456789abcdef\""
},
"value": "0123456789abcdef"
},
"visibility": "private"
},
{
"body": {
"id": 48,
"nodeType": "Block",
"src": "3354:121:0",
"statements": [
{
"assignments": [
34
],
"declarations": [
{
"constant": false,
"id": 34,
"mutability": "mutable",
"name": "_nibble",
"nameLocation": "3371:7:0",
"nodeType": "VariableDeclaration",
"scope": 48,
"src": "3365:13:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 33,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "3365:5:0",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"visibility": "internal"
}
],
"id": 38,
"initialValue": {
"commonType": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"id": 37,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 35,
"name": "_byte",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 28,
"src": "3381:5:0",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "BinaryOperation",
"operator": "&",
"rightExpression": {
"hexValue": "30783066",
"id": 36,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3389:4:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_15_by_1",
"typeString": "int_const 15"
},
"value": "0x0f"
},
"src": "3381:12:0",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "3365:28:0"
},
{
"expression": {
"id": 46,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 39,
"name": "_char",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 31,
"src": "3430:5:0",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"arguments": [
{
"baseExpression": {
"id": 42,
"name": "NIBBLE_LOOKUP",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 25,
"src": "3444:13:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"id": 44,
"indexExpression": {
"id": 43,
"name": "_nibble",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 34,
"src": "3458:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "3444:22:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes1",
"typeString": "bytes1"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes1",
"typeString": "bytes1"
}
],
"id": 41,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "3438:5:0",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_uint8_$",
"typeString": "type(uint8)"
},
"typeName": {
"id": 40,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "3438:5:0",
"typeDescriptions": {}
}
},
"id": 45,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "3438:29:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"src": "3430:37:0",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"id": 47,
"nodeType": "ExpressionStatement",
"src": "3430:37:0"
}
]
},
"documentation": {
"id": 26,
"nodeType": "StructuredDocumentation",
"src": "3090:190:0",
"text": " @notice Returns the encoded hex character that represents the lower 4 bits of the argument.\n @param _byte The byte\n @return _char The encoded hex character"
},
"id": 49,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "nibbleHex",
"nameLocation": "3295:9:0",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 29,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 28,
"mutability": "mutable",
"name": "_byte",
"nameLocation": "3311:5:0",
"nodeType": "VariableDeclaration",
"scope": 49,
"src": "3305:11:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 27,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "3305:5:0",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"visibility": "internal"
}
],
"src": "3304:13:0"
},
"returnParameters": {
"id": 32,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 31,
"mutability": "mutable",
"name": "_char",
"nameLocation": "3347:5:0",
"nodeType": "VariableDeclaration",
"scope": 49,
"src": "3341:11:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 30,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "3341:5:0",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"visibility": "internal"
}
],
"src": "3340:13:0"
},
"scope": 1419,
"src": "3286:189:0",
"stateMutability": "pure",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 75,
"nodeType": "Block",
"src": "3718:137:0",
"statements": [
{
"expression": {
"id": 63,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 57,
"name": "encoded",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 55,
"src": "3729:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint16",
"typeString": "uint16"
}
},
"nodeType": "Assignment",
"operator": "|=",
"rightHandSide": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"id": 61,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 59,
"name": "_b",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 52,
"src": "3750:2:0",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "BinaryOperation",
"operator": ">>",
"rightExpression": {
"hexValue": "34",
"id": 60,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3756:1:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_4_by_1",
"typeString": "int_const 4"
},
"value": "4"
},
"src": "3750:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
],
"id": 58,
"name": "nibbleHex",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 49,
"src": "3740:9:0",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint8_$returns$_t_uint8_$",
"typeString": "function (uint8) pure returns (uint8)"
}
},
"id": 62,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "3740:18:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"src": "3729:29:0",
"typeDescriptions": {
"typeIdentifier": "t_uint16",
"typeString": "uint16"
}
},
"id": 64,
"nodeType": "ExpressionStatement",
"src": "3729:29:0"
},
{
"expression": {
"id": 67,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 65,
"name": "encoded",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 55,
"src": "3783:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint16",
"typeString": "uint16"
}
},
"nodeType": "Assignment",
"operator": "<<=",
"rightHandSide": {
"hexValue": "38",
"id": 66,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3795:1:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_8_by_1",
"typeString": "int_const 8"
},
"value": "8"
},
"src": "3783:13:0",
"typeDescriptions": {
"typeIdentifier": "t_uint16",
"typeString": "uint16"
}
},
"id": 68,
"nodeType": "ExpressionStatement",
"src": "3783:13:0"
},
{
"expression": {
"id": 73,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 69,
"name": "encoded",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 55,
"src": "3807:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint16",
"typeString": "uint16"
}
},
"nodeType": "Assignment",
"operator": "|=",
"rightHandSide": {
"arguments": [
{
"id": 71,
"name": "_b",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 52,
"src": "3828:2:0",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
],
"id": 70,
"name": "nibbleHex",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 49,
"src": "3818:9:0",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint8_$returns$_t_uint8_$",
"typeString": "function (uint8) pure returns (uint8)"
}
},
"id": 72,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "3818:13:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"src": "3807:24:0",
"typeDescriptions": {
"typeIdentifier": "t_uint16",
"typeString": "uint16"
}
},
"id": 74,
"nodeType": "ExpressionStatement",
"src": "3807:24:0"
}
]
},
"documentation": {
"id": 50,
"nodeType": "StructuredDocumentation",
"src": "3481:165:0",
"text": " @notice Returns a uint16 containing the hex-encoded byte.\n @param _b The byte\n @return encoded - The hex-encoded byte"
},
"id": 76,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "byteHex",
"nameLocation": "3661:7:0",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 53,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 52,
"mutability": "mutable",
"name": "_b",
"nameLocation": "3675:2:0",
"nodeType": "VariableDeclaration",
"scope": 76,
"src": "3669:8:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 51,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "3669:5:0",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"visibility": "internal"
}
],
"src": "3668:10:0"
},
"returnParameters": {
"id": 56,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 55,
"mutability": "mutable",
"name": "encoded",
"nameLocation": "3709:7:0",
"nodeType": "VariableDeclaration",
"scope": 76,
"src": "3702:14:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint16",
"typeString": "uint16"
},
"typeName": {
"id": 54,
"name": "uint16",
"nodeType": "ElementaryTypeName",
"src": "3702:6:0",
"typeDescriptions": {
"typeIdentifier": "t_uint16",
"typeString": "uint16"
}
},
"visibility": "internal"
}
],
"src": "3701:16:0"
},
"scope": 1419,
"src": "3652:203:0",
"stateMutability": "pure",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 168,
"nodeType": "Block",
"src": "4274:603:0",
"statements": [
{
"body": {
"id": 125,
"nodeType": "Block",
"src": "4313:238:0",
"statements": [
{
"assignments": [
94
],
"declarations": [
{
"constant": false,
"id": 94,
"mutability": "mutable",
"name": "_byte",
"nameLocation": "4334:5:0",
"nodeType": "VariableDeclaration",
"scope": 125,
"src": "4328:11:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 93,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "4328:5:0",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"visibility": "internal"
}
],
"id": 104,
"initialValue": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 102,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 97,
"name": "_b",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 79,
"src": "4348:2:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">>",
"rightExpression": {
"components": [
{
"commonType": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"id": 100,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 98,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 87,
"src": "4355:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "BinaryOperation",
"operator": "*",
"rightExpression": {
"hexValue": "38",
"id": 99,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4359:1:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_8_by_1",
"typeString": "int_const 8"
},
"value": "8"
},
"src": "4355:5:0",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
}
],
"id": 101,
"isConstant": false,
"isInlineArray": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "TupleExpression",
"src": "4354:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"src": "4348:13:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 96,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "4342:5:0",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_uint8_$",
"typeString": "type(uint8)"
},
"typeName": {
"id": 95,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "4342:5:0",
"typeDescriptions": {}
}
},
"id": 103,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "4342:20:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "4328:34:0"
},
{
"expression": {
"id": 109,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 105,
"name": "first",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 82,
"src": "4377:5:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "|=",
"rightHandSide": {
"arguments": [
{
"id": 107,
"name": "_byte",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 94,
"src": "4394:5:0",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
],
"id": 106,
"name": "byteHex",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 76,
"src": "4386:7:0",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint8_$returns$_t_uint16_$",
"typeString": "function (uint8) pure returns (uint16)"
}
},
"id": 108,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "4386:14:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint16",
"typeString": "uint16"
}
},
"src": "4377:23:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 110,
"nodeType": "ExpressionStatement",
"src": "4377:23:0"
},
{
"condition": {
"commonType": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"id": 113,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 111,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 87,
"src": "4419:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"hexValue": "3136",
"id": 112,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4424:2:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_16_by_1",
"typeString": "int_const 16"
},
"value": "16"
},
"src": "4419:7:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 119,
"nodeType": "IfStatement",
"src": "4415:60:0",
"trueBody": {
"id": 118,
"nodeType": "Block",
"src": "4428:47:0",
"statements": [
{
"expression": {
"id": 116,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 114,
"name": "first",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 82,
"src": "4447:5:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "<<=",
"rightHandSide": {
"hexValue": "3136",
"id": 115,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4457:2:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_16_by_1",
"typeString": "int_const 16"
},
"value": "16"
},
"src": "4447:12:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 117,
"nodeType": "ExpressionStatement",
"src": "4447:12:0"
}
]
}
},
{
"id": 124,
"nodeType": "UncheckedBlock",
"src": "4489:51:0",
"statements": [
{
"expression": {
"id": 122,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 120,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 87,
"src": "4518:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "Assignment",
"operator": "-=",
"rightHandSide": {
"hexValue": "31",
"id": 121,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4523:1:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"src": "4518:6:0",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"id": 123,
"nodeType": "ExpressionStatement",
"src": "4518:6:0"
}
]
}
]
},
"condition": {
"commonType": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"id": 92,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 90,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 87,
"src": "4304:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"hexValue": "3135",
"id": 91,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4308:2:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_15_by_1",
"typeString": "int_const 15"
},
"value": "15"
},
"src": "4304:6:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 126,
"initializationExpression": {
"assignments": [
87
],
"declarations": [
{
"constant": false,
"id": 87,
"mutability": "mutable",
"name": "i",
"nameLocation": "4296:1:0",
"nodeType": "VariableDeclaration",
"scope": 126,
"src": "4290:7:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 86,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "4290:5:0",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"visibility": "internal"
}
],
"id": 89,
"initialValue": {
"hexValue": "3331",
"id": 88,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4300:2:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_31_by_1",
"typeString": "int_const 31"
},
"value": "31"
},
"nodeType": "VariableDeclarationStatement",
"src": "4290:12:0"
},
"nodeType": "ForStatement",
"src": "4285:266:0"
},
{
"body": {
"id": 166,
"nodeType": "Block",
"src": "4631:239:0",
"statements": [
{
"assignments": [
135
],
"declarations": [
{
"constant": false,
"id": 135,
"mutability": "mutable",
"name": "_byte",
"nameLocation": "4652:5:0",
"nodeType": "VariableDeclaration",
"scope": 166,
"src": "4646:11:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 134,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "4646:5:0",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"visibility": "internal"
}
],
"id": 145,
"initialValue": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 143,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 138,
"name": "_b",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 79,
"src": "4666:2:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">>",
"rightExpression": {
"components": [
{
"commonType": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"id": 141,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 139,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 128,
"src": "4673:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "BinaryOperation",
"operator": "*",
"rightExpression": {
"hexValue": "38",
"id": 140,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4677:1:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_8_by_1",
"typeString": "int_const 8"
},
"value": "8"
},
"src": "4673:5:0",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
}
],
"id": 142,
"isConstant": false,
"isInlineArray": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "TupleExpression",
"src": "4672:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"src": "4666:13:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 137,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "4660:5:0",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_uint8_$",
"typeString": "type(uint8)"
},
"typeName": {
"id": 136,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "4660:5:0",
"typeDescriptions": {}
}
},
"id": 144,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "4660:20:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "4646:34:0"
},
{
"expression": {
"id": 150,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 146,
"name": "second",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 84,
"src": "4695:6:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "|=",
"rightHandSide": {
"arguments": [
{
"id": 148,
"name": "_byte",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 135,
"src": "4713:5:0",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
],
"id": 147,
"name": "byteHex",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 76,
"src": "4705:7:0",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint8_$returns$_t_uint16_$",
"typeString": "function (uint8) pure returns (uint16)"
}
},
"id": 149,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "4705:14:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint16",
"typeString": "uint16"
}
},
"src": "4695:24:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 151,
"nodeType": "ExpressionStatement",
"src": "4695:24:0"
},
{
"condition": {
"commonType": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"id": 154,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 152,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 128,
"src": "4738:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"hexValue": "30",
"id": 153,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4743:1:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "4738:6:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 160,
"nodeType": "IfStatement",
"src": "4734:60:0",
"trueBody": {
"id": 159,
"nodeType": "Block",
"src": "4746:48:0",
"statements": [
{
"expression": {
"id": 157,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 155,
"name": "second",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 84,
"src": "4765:6:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "<<=",
"rightHandSide": {
"hexValue": "3136",
"id": 156,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4776:2:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_16_by_1",
"typeString": "int_const 16"
},
"value": "16"
},
"src": "4765:13:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 158,
"nodeType": "ExpressionStatement",
"src": "4765:13:0"
}
]
}
},
{
"id": 165,
"nodeType": "UncheckedBlock",
"src": "4808:51:0",
"statements": [
{
"expression": {
"id": 163,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 161,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 128,
"src": "4837:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "Assignment",
"operator": "-=",
"rightHandSide": {
"hexValue": "31",
"id": 162,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4842:1:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"src": "4837:6:0",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"id": 164,
"nodeType": "ExpressionStatement",
"src": "4837:6:0"
}
]
}
]
},
"condition": {
"commonType": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"id": 133,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 131,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 128,
"src": "4621:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "BinaryOperation",
"operator": "<",
"rightExpression": {
"hexValue": "323535",
"id": 132,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4625:3:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_255_by_1",
"typeString": "int_const 255"
},
"value": "255"
},
"src": "4621:7:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 167,
"initializationExpression": {
"assignments": [
128
],
"declarations": [
{
"constant": false,
"id": 128,
"mutability": "mutable",
"name": "i",
"nameLocation": "4613:1:0",
"nodeType": "VariableDeclaration",
"scope": 167,
"src": "4607:7:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 127,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "4607:5:0",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"visibility": "internal"
}
],
"id": 130,
"initialValue": {
"hexValue": "3135",
"id": 129,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4617:2:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_15_by_1",
"typeString": "int_const 15"
},
"value": "15"
},
"nodeType": "VariableDeclarationStatement",
"src": "4607:12:0"
},
"nodeType": "ForStatement",
"src": "4602:268:0"
}
]
},
"documentation": {
"id": 77,
"nodeType": "StructuredDocumentation",
"src": "3863:320:0",
"text": " @notice Encodes the uint256 to hex. `first` contains the encoded top 16 bytes.\n `second` contains the encoded lower 16 bytes.\n @param _b The 32 bytes as uint256\n @return first - The top 16 bytes\n @return second - The bottom 16 bytes"
},
"id": 169,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "encodeHex",
"nameLocation": "4198:9:0",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 80,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 79,
"mutability": "mutable",
"name": "_b",
"nameLocation": "4216:2:0",
"nodeType": "VariableDeclaration",
"scope": 169,
"src": "4208:10:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 78,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "4208:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "4207:12:0"
},
"returnParameters": {
"id": 85,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 82,
"mutability": "mutable",
"name": "first",
"nameLocation": "4251:5:0",
"nodeType": "VariableDeclaration",
"scope": 169,
"src": "4243:13:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 81,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "4243:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 84,
"mutability": "mutable",
"name": "second",
"nameLocation": "4266:6:0",
"nodeType": "VariableDeclaration",
"scope": 169,
"src": "4258:14:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 83,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "4258:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "4242:31:0"
},
"scope": 1419,
"src": "4189:688:0",
"stateMutability": "pure",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 265,
"nodeType": "Block",
"src": "5234:991:0",
"statements": [
{
"expression": {
"id": 179,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 177,
"name": "v",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 175,
"src": "5245:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"id": 178,
"name": "_b",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 172,
"src": "5249:2:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "5245:6:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 180,
"nodeType": "ExpressionStatement",
"src": "5245:6:0"
},
{
"expression": {
"id": 197,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 181,
"name": "v",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 175,
"src": "5287:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 196,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"components": [
{
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 187,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"components": [
{
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 184,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 182,
"name": "v",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 175,
"src": "5293:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">>",
"rightExpression": {
"hexValue": "38",
"id": 183,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5298:1:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_8_by_1",
"typeString": "int_const 8"
},
"value": "8"
},
"src": "5293:6:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"id": 185,
"isConstant": false,
"isInlineArray": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "TupleExpression",
"src": "5292:8:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "&",
"rightExpression": {
"hexValue": "307830304646303046463030464630304646303046463030464630304646303046463030464630304646303046463030464630304646303046463030464630304646",
"id": 186,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5303:66:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_450552876409790643671482431940419874915447411150352389258589821042463539455_by_1",
"typeString": "int_const 4505...(67 digits omitted)...9455"
},
"value": "0x00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF"
},
"src": "5292:77:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"id": 188,
"isConstant": false,
"isInlineArray": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "TupleExpression",
"src": "5291:79:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "|",
"rightExpression": {
"components": [
{
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 194,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"components": [
{
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 191,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 189,
"name": "v",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 175,
"src": "5388:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "&",
"rightExpression": {
"hexValue": "307830304646303046463030464630304646303046463030464630304646303046463030464630304646303046463030464630304646303046463030464630304646",
"id": 190,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5392:66:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_450552876409790643671482431940419874915447411150352389258589821042463539455_by_1",
"typeString": "int_const 4505...(67 digits omitted)...9455"
},
"value": "0x00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF"
},
"src": "5388:70:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"id": 192,
"isConstant": false,
"isInlineArray": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "TupleExpression",
"src": "5387:72:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "<<",
"rightExpression": {
"hexValue": "38",
"id": 193,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5463:1:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_8_by_1",
"typeString": "int_const 8"
},
"value": "8"
},
"src": "5387:77:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"id": 195,
"isConstant": false,
"isInlineArray": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "TupleExpression",
"src": "5386:79:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "5291:174:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "5287:178:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 198,
"nodeType": "ExpressionStatement",
"src": "5287:178:0"
},
{
"expression": {
"id": 215,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 199,
"name": "v",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 175,
"src": "5511:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 214,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"components": [
{
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 205,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"components": [
{
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 202,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 200,
"name": "v",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 175,
"src": "5517:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">>",
"rightExpression": {
"hexValue": "3136",
"id": 201,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5522:2:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_16_by_1",
"typeString": "int_const 16"
},
"value": "16"
},
"src": "5517:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"id": 203,
"isConstant": false,
"isInlineArray": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "TupleExpression",
"src": "5516:9:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "&",
"rightExpression": {
"hexValue": "307830303030464646463030303046464646303030304646464630303030464646463030303046464646303030304646464630303030464646463030303046464646",
"id": 204,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5528:66:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_1766820105243087041267848467410591083712559083657179364930612997358944255_by_1",
"typeString": "int_const 1766...(65 digits omitted)...4255"
},
"value": "0x0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF"
},
"src": "5516:78:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"id": 206,
"isConstant": false,
"isInlineArray": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "TupleExpression",
"src": "5515:80:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "|",
"rightExpression": {
"components": [
{
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 212,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"components": [
{
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 209,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 207,
"name": "v",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 175,
"src": "5613:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "&",
"rightExpression": {
"hexValue": "307830303030464646463030303046464646303030304646464630303030464646463030303046464646303030304646464630303030464646463030303046464646",
"id": 208,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5617:66:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_1766820105243087041267848467410591083712559083657179364930612997358944255_by_1",
"typeString": "int_const 1766...(65 digits omitted)...4255"
},
"value": "0x0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF"
},
"src": "5613:70:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"id": 210,
"isConstant": false,
"isInlineArray": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "TupleExpression",
"src": "5612:72:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "<<",
"rightExpression": {
"hexValue": "3136",
"id": 211,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5688:2:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_16_by_1",
"typeString": "int_const 16"
},
"value": "16"
},
"src": "5612:78:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"id": 213,
"isConstant": false,
"isInlineArray": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "TupleExpression",
"src": "5611:80:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "5515:176:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "5511:180:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 216,
"nodeType": "ExpressionStatement",
"src": "5511:180:0"
},
{
"expression": {
"id": 233,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 217,
"name": "v",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 175,
"src": "5737:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 232,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"components": [
{
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 223,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"components": [
{
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 220,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 218,
"name": "v",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 175,
"src": "5743:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">>",
"rightExpression": {
"hexValue": "3332",
"id": 219,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5748:2:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_32_by_1",
"typeString": "int_const 32"
},
"value": "32"
},
"src": "5743:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"id": 221,
"isConstant": false,
"isInlineArray": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "TupleExpression",
"src": "5742:9:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "&",
"rightExpression": {
"hexValue": "307830303030303030304646464646464646303030303030303046464646464646463030303030303030464646464646464630303030303030304646464646464646",
"id": 222,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5754:66:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_26959946660873538060741835960174461801791452538186943042387869433855_by_1",
"typeString": "int_const 2695...(60 digits omitted)...3855"
},
"value": "0x00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF"
},
"src": "5742:78:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"id": 224,
"isConstant": false,
"isInlineArray": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "TupleExpression",
"src": "5741:80:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "|",
"rightExpression": {
"components": [
{
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 230,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"components": [
{
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 227,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 225,
"name": "v",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 175,
"src": "5839:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "&",
"rightExpression": {
"hexValue": "307830303030303030304646464646464646303030303030303046464646464646463030303030303030464646464646464630303030303030304646464646464646",
"id": 226,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5843:66:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_26959946660873538060741835960174461801791452538186943042387869433855_by_1",
"typeString": "int_const 2695...(60 digits omitted)...3855"
},
"value": "0x00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF"
},
"src": "5839:70:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"id": 228,
"isConstant": false,
"isInlineArray": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "TupleExpression",
"src": "5838:72:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "<<",
"rightExpression": {
"hexValue": "3332",
"id": 229,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5914:2:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_32_by_1",
"typeString": "int_const 32"
},
"value": "32"
},
"src": "5838:78:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"id": 231,
"isConstant": false,
"isInlineArray": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "TupleExpression",
"src": "5837:80:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "5741:176:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "5737:180:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 234,
"nodeType": "ExpressionStatement",
"src": "5737:180:0"
},
{
"expression": {
"id": 251,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 235,
"name": "v",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 175,
"src": "5963:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 250,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"components": [
{
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 241,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"components": [
{
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 238,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 236,
"name": "v",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 175,
"src": "5969:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">>",
"rightExpression": {
"hexValue": "3634",
"id": 237,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5974:2:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_64_by_1",
"typeString": "int_const 64"
},
"value": "64"
},
"src": "5969:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"id": 239,
"isConstant": false,
"isInlineArray": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "TupleExpression",
"src": "5968:9:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "&",
"rightExpression": {
"hexValue": "307830303030303030303030303030303030464646464646464646464646464646463030303030303030303030303030303046464646464646464646464646464646",
"id": 240,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5980:66:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_6277101735386680763495507056286727952657427581105975853055_by_1",
"typeString": "int_const 6277...(50 digits omitted)...3055"
},
"value": "0x0000000000000000FFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFF"
},
"src": "5968:78:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"id": 242,
"isConstant": false,
"isInlineArray": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "TupleExpression",
"src": "5967:80:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "|",
"rightExpression": {
"components": [
{
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 248,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"components": [
{
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 245,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 243,
"name": "v",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 175,
"src": "6065:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "&",
"rightExpression": {
"hexValue": "307830303030303030303030303030303030464646464646464646464646464646463030303030303030303030303030303046464646464646464646464646464646",
"id": 244,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "6069:66:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_6277101735386680763495507056286727952657427581105975853055_by_1",
"typeString": "int_const 6277...(50 digits omitted)...3055"
},
"value": "0x0000000000000000FFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFF"
},
"src": "6065:70:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"id": 246,
"isConstant": false,
"isInlineArray": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "TupleExpression",
"src": "6064:72:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "<<",
"rightExpression": {
"hexValue": "3634",
"id": 247,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "6140:2:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_64_by_1",
"typeString": "int_const 64"
},
"value": "64"
},
"src": "6064:78:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"id": 249,
"isConstant": false,
"isInlineArray": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "TupleExpression",
"src": "6063:80:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "5967:176:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "5963:180:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 252,
"nodeType": "ExpressionStatement",
"src": "5963:180:0"
},
{
"expression": {
"id": 263,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 253,
"name": "v",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 175,
"src": "6190:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 262,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"components": [
{
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 256,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 254,
"name": "v",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 175,
"src": "6195:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">>",
"rightExpression": {
"hexValue": "313238",
"id": 255,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "6200:3:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_128_by_1",
"typeString": "int_const 128"
},
"value": "128"
},
"src": "6195:8:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"id": 257,
"isConstant": false,
"isInlineArray": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "TupleExpression",
"src": "6194:10:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "|",
"rightExpression": {
"components": [
{
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 260,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 258,
"name": "v",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 175,
"src": "6208:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "<<",
"rightExpression": {
"hexValue": "313238",
"id": 259,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "6213:3:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_128_by_1",
"typeString": "int_const 128"
},
"value": "128"
},
"src": "6208:8:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"id": 261,
"isConstant": false,
"isInlineArray": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "TupleExpression",
"src": "6207:10:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "6194:23:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "6190:27:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 264,
"nodeType": "ExpressionStatement",
"src": "6190:27:0"
}
]
},
"documentation": {
"id": 170,
"nodeType": "StructuredDocumentation",
"src": "4885:273:0",
"text": " @notice Changes the endianness of a uint256.\n @dev https://graphics.stanford.edu/~seander/bithacks.html#ReverseParallel\n @param _b The unsigned integer to reverse\n @return v - The reversed value"
},
"id": 266,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "reverseUint256",
"nameLocation": "5173:14:0",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 173,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 172,
"mutability": "mutable",
"name": "_b",
"nameLocation": "5196:2:0",
"nodeType": "VariableDeclaration",
"scope": 266,
"src": "5188:10:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 171,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "5188:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "5187:12:0"
},
"returnParameters": {
"id": 176,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 175,
"mutability": "mutable",
"name": "v",
"nameLocation": "5231:1:0",
"nodeType": "VariableDeclaration",
"scope": 266,
"src": "5223:9:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 174,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "5223:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "5222:11:0"
},
"scope": 1419,
"src": "5164:1061:0",
"stateMutability": "pure",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 275,
"nodeType": "Block",
"src": "6455:252:0",
"statements": [
{
"AST": {
"nodeType": "YulBlock",
"src": "6516:184:0",
"statements": [
{
"nodeType": "YulAssignment",
"src": "6596:93:0",
"value": {
"arguments": [
{
"arguments": [
{
"name": "_len",
"nodeType": "YulIdentifier",
"src": "6612:4:0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6618:1:0",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "6608:3:0"
},
"nodeType": "YulFunctionCall",
"src": "6608:12:0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6622:66:0",
"type": "",
"value": "0x8000000000000000000000000000000000000000000000000000000000000000"
}
],
"functionName": {
"name": "sar",
"nodeType": "YulIdentifier",
"src": "6604:3:0"
},
"nodeType": "YulFunctionCall",
"src": "6604:85:0"
},
"variableNames": [
{
"name": "mask",
"nodeType": "YulIdentifier",
"src": "6596:4:0"
}
]
}
]
},
"evmVersion": "london",
"externalReferences": [
{
"declaration": 269,
"isOffset": false,
"isSlot": false,
"src": "6612:4:0",
"valueSize": 1
},
{
"declaration": 272,
"isOffset": false,
"isSlot": false,
"src": "6596:4:0",
"valueSize": 1
}
],
"id": 274,
"nodeType": "InlineAssembly",
"src": "6507:193:0"
}
]
},
"documentation": {
"id": 267,
"nodeType": "StructuredDocumentation",
"src": "6233:150:0",
"text": " @notice Create a mask with the highest `_len` bits set.\n @param _len The length\n @return mask - The mask"
},
"id": 276,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "leftMask",
"nameLocation": "6398:8:0",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 270,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 269,
"mutability": "mutable",
"name": "_len",
"nameLocation": "6413:4:0",
"nodeType": "VariableDeclaration",
"scope": 276,
"src": "6407:10:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 268,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "6407:5:0",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"visibility": "internal"
}
],
"src": "6406:12:0"
},
"returnParameters": {
"id": 273,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 272,
"mutability": "mutable",
"name": "mask",
"nameLocation": "6449:4:0",
"nodeType": "VariableDeclaration",
"scope": 276,
"src": "6441:12:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 271,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "6441:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "6440:14:0"
},
"scope": 1419,
"src": "6389:318:0",
"stateMutability": "pure",
"virtual": false,
"visibility": "private"
},
{
"body": {
"id": 284,
"nodeType": "Block",
"src": "6873:30:0",
"statements": [
{
"expression": {
"id": 282,
"name": "NULL",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4,
"src": "6891:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
}
},
"functionReturnParameters": 281,
"id": 283,
"nodeType": "Return",
"src": "6884:11:0"
}
]
},
"documentation": {
"id": 277,
"nodeType": "StructuredDocumentation",
"src": "6715:100:0",
"text": " @notice Return the null view.\n @return bytes29 - The null view"
},
"id": 285,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "nullView",
"nameLocation": "6830:8:0",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 278,
"nodeType": "ParameterList",
"parameters": [],
"src": "6838:2:0"
},
"returnParameters": {
"id": 281,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 280,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 285,
"src": "6864:7:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
},
"typeName": {
"id": 279,
"name": "bytes29",
"nodeType": "ElementaryTypeName",
"src": "6864:7:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
}
},
"visibility": "internal"
}
],
"src": "6863:9:0"
},
"scope": 1419,
"src": "6821:82:0",
"stateMutability": "pure",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 297,
"nodeType": "Block",
"src": "7092:41:0",
"statements": [
{
"expression": {
"commonType": {
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
},
"id": 295,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 293,
"name": "memView",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 288,
"src": "7110:7:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"id": 294,
"name": "NULL",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4,
"src": "7121:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
}
},
"src": "7110:15:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"functionReturnParameters": 292,
"id": 296,
"nodeType": "Return",
"src": "7103:22:0"
}
]
},
"documentation": {
"id": 286,
"nodeType": "StructuredDocumentation",
"src": "6911:113:0",
"text": " @notice Check if the view is null.\n @return bool - True if the view is null"
},
"id": 298,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "isNull",
"nameLocation": "7039:6:0",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 289,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 288,
"mutability": "mutable",
"name": "memView",
"nameLocation": "7054:7:0",
"nodeType": "VariableDeclaration",
"scope": 298,
"src": "7046:15:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
},
"typeName": {
"id": 287,
"name": "bytes29",
"nodeType": "ElementaryTypeName",
"src": "7046:7:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
}
},
"visibility": "internal"
}
],
"src": "7045:17:0"
},
"returnParameters": {
"id": 292,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 291,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 298,
"src": "7086:4:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 290,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "7086:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"visibility": "internal"
}
],
"src": "7085:6:0"
},
"scope": 1419,
"src": "7030:103:0",
"stateMutability": "pure",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 311,
"nodeType": "Block",
"src": "7331:42:0",
"statements": [
{
"expression": {
"id": 309,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "!",
"prefix": true,
"src": "7349:16:0",
"subExpression": {
"arguments": [
{
"id": 307,
"name": "memView",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 301,
"src": "7357:7:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
}
],
"id": 306,
"name": "isNull",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 298,
"src": "7350:6:0",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_bytes29_$returns$_t_bool_$",
"typeString": "function (bytes29) pure returns (bool)"
}
},
"id": 308,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "7350:15:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"functionReturnParameters": 305,
"id": 310,
"nodeType": "Return",
"src": "7342:23:0"
}
]
},
"documentation": {
"id": 299,
"nodeType": "StructuredDocumentation",
"src": "7141:121:0",
"text": " @notice Check if the view is not null.\n @return bool - True if the view is not null"
},
"id": 312,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "notNull",
"nameLocation": "7277:7:0",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 302,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 301,
"mutability": "mutable",
"name": "memView",
"nameLocation": "7293:7:0",
"nodeType": "VariableDeclaration",
"scope": 312,
"src": "7285:15:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
},
"typeName": {
"id": 300,
"name": "bytes29",
"nodeType": "ElementaryTypeName",
"src": "7285:7:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
}
},
"visibility": "internal"
}
],
"src": "7284:17:0"
},
"returnParameters": {
"id": 305,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 304,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 312,
"src": "7325:4:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 303,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "7325:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"visibility": "internal"
}
],
"src": "7324:6:0"
},
"scope": 1419,
"src": "7268:105:0",
"stateMutability": "pure",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 335,
"nodeType": "Block",
"src": "7869:249:0",
"statements": [
{
"condition": {
"commonType": {
"typeIdentifier": "t_uint40",
"typeString": "uint40"
},
"id": 324,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"arguments": [
{
"id": 321,
"name": "memView",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 315,
"src": "7891:7:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
}
],
"id": 320,
"name": "typeOf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 551,
"src": "7884:6:0",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_bytes29_$returns$_t_uint40_$",
"typeString": "function (bytes29) pure returns (uint40)"
}
},
"id": 322,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "7884:15:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint40",
"typeString": "uint40"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"hexValue": "307866666666666666666666",
"id": 323,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "7903:12:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_1099511627775_by_1",
"typeString": "int_const 1099511627775"
},
"value": "0xffffffffff"
},
"src": "7884:31:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 327,
"nodeType": "IfStatement",
"src": "7880:49:0",
"trueBody": {
"expression": {
"hexValue": "66616c7365",
"id": 325,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "7924:5:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "false"
},
"functionReturnParameters": 319,
"id": 326,
"nodeType": "Return",
"src": "7917:12:0"
}
},
{
"assignments": [
329
],
"declarations": [
{
"constant": false,
"id": 329,
"mutability": "mutable",
"name": "_end",
"nameLocation": "7948:4:0",
"nodeType": "VariableDeclaration",
"scope": 335,
"src": "7940:12:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 328,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "7940:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 333,
"initialValue": {
"arguments": [
{
"id": 331,
"name": "memView",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 315,
"src": "7959:7:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
}
],
"id": 330,
"name": "end",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 661,
"src": "7955:3:0",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_bytes29_$returns$_t_uint256_$",
"typeString": "function (bytes29) pure returns (uint256)"
}
},
"id": 332,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "7955:12:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "7940:27:0"
},
{
"AST": {
"nodeType": "YulBlock",
"src": "7987:124:0",
"statements": [
{
"nodeType": "YulAssignment",
"src": "8067:33:0",
"value": {
"arguments": [
{
"arguments": [
{
"name": "_end",
"nodeType": "YulIdentifier",
"src": "8081:4:0"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8093:4:0",
"type": "",
"value": "0x40"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "8087:5:0"
},
"nodeType": "YulFunctionCall",
"src": "8087:11:0"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "8078:2:0"
},
"nodeType": "YulFunctionCall",
"src": "8078:21:0"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "8074:3:0"
},
"nodeType": "YulFunctionCall",
"src": "8074:26:0"
},
"variableNames": [
{
"name": "ret",
"nodeType": "YulIdentifier",
"src": "8067:3:0"
}
]
}
]
},
"evmVersion": "london",
"externalReferences": [
{
"declaration": 329,
"isOffset": false,
"isSlot": false,
"src": "8081:4:0",
"valueSize": 1
},
{
"declaration": 318,
"isOffset": false,
"isSlot": false,
"src": "8067:3:0",
"valueSize": 1
}
],
"id": 334,
"nodeType": "InlineAssembly",
"src": "7978:133:0"
}
]
},
"documentation": {
"id": 313,
"nodeType": "StructuredDocumentation",
"src": "7381:415:0",
"text": " @notice Check if the view is of a valid type and points to a valid location\n in memory.\n @dev We perform this check by examining solidity's unallocated memory\n pointer and ensuring that the view's upper bound is less than that.\n @param memView The view\n @return ret - True if the view is valid"
},
"id": 336,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "isValid",
"nameLocation": "7811:7:0",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 316,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 315,
"mutability": "mutable",
"name": "memView",
"nameLocation": "7827:7:0",
"nodeType": "VariableDeclaration",
"scope": 336,
"src": "7819:15:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
},
"typeName": {
"id": 314,
"name": "bytes29",
"nodeType": "ElementaryTypeName",
"src": "7819:7:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
}
},
"visibility": "internal"
}
],
"src": "7818:17:0"
},
"returnParameters": {
"id": 319,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 318,
"mutability": "mutable",
"name": "ret",
"nameLocation": "7864:3:0",
"nodeType": "VariableDeclaration",
"scope": 336,
"src": "7859:8:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 317,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "7859:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"visibility": "internal"
}
],
"src": "7858:10:0"
},
"scope": 1419,
"src": "7802:316:0",
"stateMutability": "pure",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 353,
"nodeType": "Block",
"src": "8431:98:0",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"id": 346,
"name": "memView",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 339,
"src": "8458:7:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
}
],
"id": 345,
"name": "isValid",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 336,
"src": "8450:7:0",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_bytes29_$returns$_t_bool_$",
"typeString": "function (bytes29) pure returns (bool)"
}
},
"id": 347,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "8450:16:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "56616c696469747920617373657274696f6e206661696c6564",
"id": 348,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "8468:27:0",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_3b8ee0f3dda60458ebd28fab07294d43d44795f5dd2ba5ae15b160377e860128",
"typeString": "literal_string \"Validity assertion failed\""
},
"value": "Validity assertion failed"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_3b8ee0f3dda60458ebd28fab07294d43d44795f5dd2ba5ae15b160377e860128",
"typeString": "literal_string \"Validity assertion failed\""
}
],
"id": 344,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
4294967278,
4294967278
],
"referencedDeclaration": 4294967278,
"src": "8442:7:0",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 349,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "8442:54:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 350,
"nodeType": "ExpressionStatement",
"src": "8442:54:0"
},
{
"expression": {
"id": 351,
"name": "memView",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 339,
"src": "8514:7:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
}
},
"functionReturnParameters": 343,
"id": 352,
"nodeType": "Return",
"src": "8507:14:0"
}
]
},
"documentation": {
"id": 337,
"nodeType": "StructuredDocumentation",
"src": "8126:229:0",
"text": " @notice Require that a typed memory view be valid.\n @dev Returns the view for easy chaining.\n @param memView The view\n @return bytes29 - The validated view"
},
"id": 354,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "assertValid",
"nameLocation": "8370:11:0",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 340,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 339,
"mutability": "mutable",
"name": "memView",
"nameLocation": "8390:7:0",
"nodeType": "VariableDeclaration",
"scope": 354,
"src": "8382:15:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
},
"typeName": {
"id": 338,
"name": "bytes29",
"nodeType": "ElementaryTypeName",
"src": "8382:7:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
}
},
"visibility": "internal"
}
],
"src": "8381:17:0"
},
"returnParameters": {
"id": 343,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 342,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 354,
"src": "8422:7:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
},
"typeName": {
"id": 341,
"name": "bytes29",
"nodeType": "ElementaryTypeName",
"src": "8422:7:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
}
},
"visibility": "internal"
}
],
"src": "8421:9:0"
},
"scope": 1419,
"src": "8361:168:0",
"stateMutability": "pure",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 370,
"nodeType": "Block",
"src": "8882:54:0",
"statements": [
{
"expression": {
"commonType": {
"typeIdentifier": "t_uint40",
"typeString": "uint40"
},
"id": 368,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"arguments": [
{
"id": 365,
"name": "memView",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 357,
"src": "8907:7:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
}
],
"id": 364,
"name": "typeOf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 551,
"src": "8900:6:0",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_bytes29_$returns$_t_uint40_$",
"typeString": "function (bytes29) pure returns (uint40)"
}
},
"id": 366,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "8900:15:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint40",
"typeString": "uint40"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"id": 367,
"name": "_expected",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 359,
"src": "8919:9:0",
"typeDescriptions": {
"typeIdentifier": "t_uint40",
"typeString": "uint40"
}
},
"src": "8900:28:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"functionReturnParameters": 363,
"id": 369,
"nodeType": "Return",
"src": "8893:35:0"
}
]
},
"documentation": {
"id": 355,
"nodeType": "StructuredDocumentation",
"src": "8537:259:0",
"text": " @notice Return true if the memview is of the expected type. Otherwise false.\n @param memView The view\n @param _expected The expected type\n @return bool - True if the memview is of the expected type"
},
"id": 371,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "isType",
"nameLocation": "8811:6:0",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 360,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 357,
"mutability": "mutable",
"name": "memView",
"nameLocation": "8826:7:0",
"nodeType": "VariableDeclaration",
"scope": 371,
"src": "8818:15:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
},
"typeName": {
"id": 356,
"name": "bytes29",
"nodeType": "ElementaryTypeName",
"src": "8818:7:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 359,
"mutability": "mutable",
"name": "_expected",
"nameLocation": "8842:9:0",
"nodeType": "VariableDeclaration",
"scope": 371,
"src": "8835:16:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint40",
"typeString": "uint40"
},
"typeName": {
"id": 358,
"name": "uint40",
"nodeType": "ElementaryTypeName",
"src": "8835:6:0",
"typeDescriptions": {
"typeIdentifier": "t_uint40",
"typeString": "uint40"
}
},
"visibility": "internal"
}
],
"src": "8817:35:0"
},
"returnParameters": {
"id": 363,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 362,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 371,
"src": "8876:4:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 361,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "8876:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"visibility": "internal"
}
],
"src": "8875:6:0"
},
"scope": 1419,
"src": "8802:134:0",
"stateMutability": "pure",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 433,
"nodeType": "Block",
"src": "9330:388:0",
"statements": [
{
"condition": {
"id": 385,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "!",
"prefix": true,
"src": "9345:27:0",
"subExpression": {
"arguments": [
{
"id": 382,
"name": "memView",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 374,
"src": "9353:7:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
}
},
{
"id": 383,
"name": "_expected",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 376,
"src": "9362:9:0",
"typeDescriptions": {
"typeIdentifier": "t_uint40",
"typeString": "uint40"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
},
{
"typeIdentifier": "t_uint40",
"typeString": "uint40"
}
],
"id": 381,
"name": "isType",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 371,
"src": "9346:6:0",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_bytes29_$_t_uint40_$returns$_t_bool_$",
"typeString": "function (bytes29,uint40) pure returns (bool)"
}
},
"id": 384,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "9346:26:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 430,
"nodeType": "IfStatement",
"src": "9341:345:0",
"trueBody": {
"id": 429,
"nodeType": "Block",
"src": "9374:312:0",
"statements": [
{
"assignments": [
null,
387
],
"declarations": [
null,
{
"constant": false,
"id": 387,
"mutability": "mutable",
"name": "g",
"nameLocation": "9400:1:0",
"nodeType": "VariableDeclaration",
"scope": 429,
"src": "9392:9:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 386,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "9392:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 396,
"initialValue": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"id": 392,
"name": "memView",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 374,
"src": "9430:7:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
}
],
"id": 391,
"name": "typeOf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 551,
"src": "9423:6:0",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_bytes29_$returns$_t_uint40_$",
"typeString": "function (bytes29) pure returns (uint40)"
}
},
"id": 393,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "9423:15:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint40",
"typeString": "uint40"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint40",
"typeString": "uint40"
}
],
"id": 390,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "9415:7:0",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_uint256_$",
"typeString": "type(uint256)"
},
"typeName": {
"id": 389,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "9415:7:0",
"typeDescriptions": {}
}
},
"id": 394,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "9415:24:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 388,
"name": "encodeHex",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 169,
"src": "9405:9:0",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
"typeString": "function (uint256) pure returns (uint256,uint256)"
}
},
"id": 395,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "9405:35:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
"typeString": "tuple(uint256,uint256)"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "9389:51:0"
},
{
"assignments": [
null,
398
],
"declarations": [
null,
{
"constant": false,
"id": 398,
"mutability": "mutable",
"name": "e",
"nameLocation": "9466:1:0",
"nodeType": "VariableDeclaration",
"scope": 429,
"src": "9458:9:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 397,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "9458:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 405,
"initialValue": {
"arguments": [
{
"arguments": [
{
"id": 402,
"name": "_expected",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 376,
"src": "9489:9:0",
"typeDescriptions": {
"typeIdentifier": "t_uint40",
"typeString": "uint40"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint40",
"typeString": "uint40"
}
],
"id": 401,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "9481:7:0",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_uint256_$",
"typeString": "type(uint256)"
},
"typeName": {
"id": 400,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "9481:7:0",
"typeDescriptions": {}
}
},
"id": 403,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "9481:18:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 399,
"name": "encodeHex",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 169,
"src": "9471:9:0",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
"typeString": "function (uint256) pure returns (uint256,uint256)"
}
},
"id": 404,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "9471:29:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
"typeString": "tuple(uint256,uint256)"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "9455:45:0"
},
{
"assignments": [
407
],
"declarations": [
{
"constant": false,
"id": 407,
"mutability": "mutable",
"name": "err",
"nameLocation": "9529:3:0",
"nodeType": "VariableDeclaration",
"scope": 429,
"src": "9515:17:0",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 406,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "9515:6:0",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"visibility": "internal"
}
],
"id": 424,
"initialValue": {
"arguments": [
{
"arguments": [
{
"hexValue": "5479706520617373657274696f6e206661696c65642e20476f74203078",
"id": 412,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "9576:31:0",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_2f02b416aa4f77f4220c3b6bf415b34f2494631d10ac20cd509c0fe0e4f80593",
"typeString": "literal_string \"Type assertion failed. Got 0x\""
},
"value": "Type assertion failed. Got 0x"
},
{
"arguments": [
{
"id": 415,
"name": "g",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 387,
"src": "9616:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 414,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "9609:6:0",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_uint80_$",
"typeString": "type(uint80)"
},
"typeName": {
"id": 413,
"name": "uint80",
"nodeType": "ElementaryTypeName",
"src": "9609:6:0",
"typeDescriptions": {}
}
},
"id": 416,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "9609:9:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint80",
"typeString": "uint80"
}
},
{
"hexValue": "2e204578706563746564203078",
"id": 417,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "9620:15:0",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_c0efbfebb65cadd8bb13aebc0ea085f1329fae1d7376b5e0aa452fe70b6d6b80",
"typeString": "literal_string \". Expected 0x\""
},
"value": ". Expected 0x"
},
{
"arguments": [
{
"id": 420,
"name": "e",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 398,
"src": "9644:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 419,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "9637:6:0",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_uint80_$",
"typeString": "type(uint80)"
},
"typeName": {
"id": 418,
"name": "uint80",
"nodeType": "ElementaryTypeName",
"src": "9637:6:0",
"typeDescriptions": {}
}
},
"id": 421,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "9637:9:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint80",
"typeString": "uint80"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_stringliteral_2f02b416aa4f77f4220c3b6bf415b34f2494631d10ac20cd509c0fe0e4f80593",
"typeString": "literal_string \"Type assertion failed. Got 0x\""
},
{
"typeIdentifier": "t_uint80",
"typeString": "uint80"
},
{
"typeIdentifier": "t_stringliteral_c0efbfebb65cadd8bb13aebc0ea085f1329fae1d7376b5e0aa452fe70b6d6b80",
"typeString": "literal_string \". Expected 0x\""
},
{
"typeIdentifier": "t_uint80",
"typeString": "uint80"
}
],
"expression": {
"id": 410,
"name": "abi",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4294967295,
"src": "9559:3:0",
"typeDescriptions": {
"typeIdentifier": "t_magic_abi",
"typeString": "abi"
}
},
"id": 411,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberLocation": "9563:12:0",
"memberName": "encodePacked",
"nodeType": "MemberAccess",
"src": "9559:16:0",
"typeDescriptions": {
"typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
"typeString": "function () pure returns (bytes memory)"
}
},
"id": 422,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "9559:88:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"id": 409,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "9552:6:0",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_string_storage_ptr_$",
"typeString": "type(string storage pointer)"
},
"typeName": {
"id": 408,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "9552:6:0",
"typeDescriptions": {}
}
},
"id": 423,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "9552:96:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "9515:133:0"
},
{
"expression": {
"arguments": [
{
"id": 426,
"name": "err",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 407,
"src": "9670:3:0",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
],
"id": 425,
"name": "revert",
"nodeType": "Identifier",
"overloadedDeclarations": [
4294967277,
4294967277
],
"referencedDeclaration": 4294967277,
"src": "9663:6:0",
"typeDescriptions": {
"typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
"typeString": "function (string memory) pure"
}
},
"id": 427,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "9663:11:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 428,
"nodeType": "ExpressionStatement",
"src": "9663:11:0"
}
]
}
},
{
"expression": {
"id": 431,
"name": "memView",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 374,
"src": "9703:7:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
}
},
"functionReturnParameters": 380,
"id": 432,
"nodeType": "Return",
"src": "9696:14:0"
}
]
},
"documentation": {
"id": 372,
"nodeType": "StructuredDocumentation",
"src": "8944:293:0",
"text": " @notice Require that a typed memory view has a specific type.\n @dev Returns the view for easy chaining.\n @param memView The view\n @param _expected The expected type\n @return bytes29 - The view with validated type"
},
"id": 434,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "assertType",
"nameLocation": "9252:10:0",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 377,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 374,
"mutability": "mutable",
"name": "memView",
"nameLocation": "9271:7:0",
"nodeType": "VariableDeclaration",
"scope": 434,
"src": "9263:15:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
},
"typeName": {
"id": 373,
"name": "bytes29",
"nodeType": "ElementaryTypeName",
"src": "9263:7:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 376,
"mutability": "mutable",
"name": "_expected",
"nameLocation": "9287:9:0",
"nodeType": "VariableDeclaration",
"scope": 434,
"src": "9280:16:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint40",
"typeString": "uint40"
},
"typeName": {
"id": 375,
"name": "uint40",
"nodeType": "ElementaryTypeName",
"src": "9280:6:0",
"typeDescriptions": {
"typeIdentifier": "t_uint40",
"typeString": "uint40"
}
},
"visibility": "internal"
}
],
"src": "9262:35:0"
},
"returnParameters": {
"id": 380,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 379,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 434,
"src": "9321:7:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
},
"typeName": {
"id": 378,
"name": "bytes29",
"nodeType": "ElementaryTypeName",
"src": "9321:7:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
}
},
"visibility": "internal"
}
],
"src": "9320:9:0"
},
"scope": 1419,
"src": "9243:475:0",
"stateMutability": "pure",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 453,
"nodeType": "Block",
"src": "10051:399:0",
"statements": [
{
"assignments": [
445
],
"declarations": [
{
"constant": false,
"id": 445,
"mutability": "mutable",
"name": "_typeShift",
"nameLocation": "10105:10:0",
"nodeType": "VariableDeclaration",
"scope": 453,
"src": "10097:18:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 444,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "10097:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 447,
"initialValue": {
"id": 446,
"name": "SHIFT_TO_TYPE",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 22,
"src": "10118:13:0",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "10097:34:0"
},
{
"assignments": [
449
],
"declarations": [
{
"constant": false,
"id": 449,
"mutability": "mutable",
"name": "_typeBits",
"nameLocation": "10150:9:0",
"nodeType": "VariableDeclaration",
"scope": 453,
"src": "10142:17:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 448,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "10142:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 451,
"initialValue": {
"hexValue": "3430",
"id": 450,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "10162:2:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_40_by_1",
"typeString": "int_const 40"
},
"value": "40"
},
"nodeType": "VariableDeclarationStatement",
"src": "10142:22:0"
},
{
"AST": {
"nodeType": "YulBlock",
"src": "10184:259:0",
"statements": [
{
"nodeType": "YulAssignment",
"src": "10306:63:0",
"value": {
"arguments": [
{
"name": "newView",
"nodeType": "YulIdentifier",
"src": "10320:7:0"
},
{
"arguments": [
{
"name": "_typeBits",
"nodeType": "YulIdentifier",
"src": "10333:9:0"
},
{
"arguments": [
{
"name": "_typeBits",
"nodeType": "YulIdentifier",
"src": "10348:9:0"
},
{
"name": "memView",
"nodeType": "YulIdentifier",
"src": "10359:7:0"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "10344:3:0"
},
"nodeType": "YulFunctionCall",
"src": "10344:23:0"
}
],
"functionName": {
"name": "shr",
"nodeType": "YulIdentifier",
"src": "10329:3:0"
},
"nodeType": "YulFunctionCall",
"src": "10329:39:0"
}
],
"functionName": {
"name": "or",
"nodeType": "YulIdentifier",
"src": "10317:2:0"
},
"nodeType": "YulFunctionCall",
"src": "10317:52:0"
},
"variableNames": [
{
"name": "newView",
"nodeType": "YulIdentifier",
"src": "10306:7:0"
}
]
},
{
"nodeType": "YulAssignment",
"src": "10383:49:0",
"value": {
"arguments": [
{
"name": "newView",
"nodeType": "YulIdentifier",
"src": "10397:7:0"
},
{
"arguments": [
{
"name": "_typeShift",
"nodeType": "YulIdentifier",
"src": "10410:10:0"
},
{
"name": "_newType",
"nodeType": "YulIdentifier",
"src": "10422:8:0"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "10406:3:0"
},
"nodeType": "YulFunctionCall",
"src": "10406:25:0"
}
],
"functionName": {
"name": "or",
"nodeType": "YulIdentifier",
"src": "10394:2:0"
},
"nodeType": "YulFunctionCall",
"src": "10394:38:0"
},
"variableNames": [
{
"name": "newView",
"nodeType": "YulIdentifier",
"src": "10383:7:0"
}
]
}
]
},
"evmVersion": "london",
"externalReferences": [
{
"declaration": 439,
"isOffset": false,
"isSlot": false,
"src": "10422:8:0",
"valueSize": 1
},
{
"declaration": 449,
"isOffset": false,
"isSlot": false,
"src": "10333:9:0",
"valueSize": 1
},
{
"declaration": 449,
"isOffset": false,
"isSlot": false,
"src": "10348:9:0",
"valueSize": 1
},
{
"declaration": 445,
"isOffset": false,
"isSlot": false,
"src": "10410:10:0",
"valueSize": 1
},
{
"declaration": 437,
"isOffset": false,
"isSlot": false,
"src": "10359:7:0",
"valueSize": 1
},
{
"declaration": 442,
"isOffset": false,
"isSlot": false,
"src": "10306:7:0",
"valueSize": 1
},
{
"declaration": 442,
"isOffset": false,
"isSlot": false,
"src": "10320:7:0",
"valueSize": 1
},
{
"declaration": 442,
"isOffset": false,
"isSlot": false,
"src": "10383:7:0",
"valueSize": 1
},
{
"declaration": 442,
"isOffset": false,
"isSlot": false,
"src": "10397:7:0",
"valueSize": 1
}
],
"id": 452,
"nodeType": "InlineAssembly",
"src": "10175:268:0"
}
]
},
"documentation": {
"id": 435,
"nodeType": "StructuredDocumentation",
"src": "9726:229:0",
"text": " @notice Return an identical view with a different type.\n @param memView The view\n @param _newType The new type\n @return newView - The new view with the specified type"
},
"id": 454,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "castTo",
"nameLocation": "9970:6:0",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 440,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 437,
"mutability": "mutable",
"name": "memView",
"nameLocation": "9985:7:0",
"nodeType": "VariableDeclaration",
"scope": 454,
"src": "9977:15:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
},
"typeName": {
"id": 436,
"name": "bytes29",
"nodeType": "ElementaryTypeName",
"src": "9977:7:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 439,
"mutability": "mutable",
"name": "_newType",
"nameLocation": "10001:8:0",
"nodeType": "VariableDeclaration",
"scope": 454,
"src": "9994:15:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint40",
"typeString": "uint40"
},
"typeName": {
"id": 438,
"name": "uint40",
"nodeType": "ElementaryTypeName",
"src": "9994:6:0",
"typeDescriptions": {
"typeIdentifier": "t_uint40",
"typeString": "uint40"
}
},
"visibility": "internal"
}
],
"src": "9976:34:0"
},
"returnParameters": {
"id": 443,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 442,
"mutability": "mutable",
"name": "newView",
"nameLocation": "10042:7:0",
"nodeType": "VariableDeclaration",
"scope": 454,
"src": "10034:15:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
},
"typeName": {
"id": 441,
"name": "bytes29",
"nodeType": "ElementaryTypeName",
"src": "10034:7:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
}
},
"visibility": "internal"
}
],
"src": "10033:17:0"
},
"scope": 1419,
"src": "9961:489:0",
"stateMutability": "pure",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 475,
"nodeType": "Block",
"src": "11117:416:0",
"statements": [
{
"assignments": [
467
],
"declarations": [
{
"constant": false,
"id": 467,
"mutability": "mutable",
"name": "_uint96Bits",
"nameLocation": "11136:11:0",
"nodeType": "VariableDeclaration",
"scope": 475,
"src": "11128:19:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 466,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "11128:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 469,
"initialValue": {
"hexValue": "3936",
"id": 468,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "11150:2:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_96_by_1",
"typeString": "int_const 96"
},
"value": "96"
},
"nodeType": "VariableDeclarationStatement",
"src": "11128:24:0"
},
{
"assignments": [
471
],
"declarations": [
{
"constant": false,
"id": 471,
"mutability": "mutable",
"name": "_emptyBits",
"nameLocation": "11171:10:0",
"nodeType": "VariableDeclaration",
"scope": 475,
"src": "11163:18:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 470,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "11163:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 473,
"initialValue": {
"hexValue": "3234",
"id": 472,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "11184:2:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_24_by_1",
"typeString": "int_const 24"
},
"value": "24"
},
"nodeType": "VariableDeclarationStatement",
"src": "11163:23:0"
},
{
"AST": {
"nodeType": "YulBlock",
"src": "11206:320:0",
"statements": [
{
"nodeType": "YulAssignment",
"src": "11294:47:0",
"value": {
"arguments": [
{
"name": "_uint96Bits",
"nodeType": "YulIdentifier",
"src": "11309:11:0"
},
{
"arguments": [
{
"name": "newView",
"nodeType": "YulIdentifier",
"src": "11325:7:0"
},
{
"name": "_type",
"nodeType": "YulIdentifier",
"src": "11334:5:0"
}
],
"functionName": {
"name": "or",
"nodeType": "YulIdentifier",
"src": "11322:2:0"
},
"nodeType": "YulFunctionCall",
"src": "11322:18:0"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "11305:3:0"
},
"nodeType": "YulFunctionCall",
"src": "11305:36:0"
},
"variableNames": [
{
"name": "newView",
"nodeType": "YulIdentifier",
"src": "11294:7:0"
}
]
},
{
"nodeType": "YulAssignment",
"src": "11370:46:0",
"value": {
"arguments": [
{
"name": "_uint96Bits",
"nodeType": "YulIdentifier",
"src": "11385:11:0"
},
{
"arguments": [
{
"name": "newView",
"nodeType": "YulIdentifier",
"src": "11401:7:0"
},
{
"name": "_loc",
"nodeType": "YulIdentifier",
"src": "11410:4:0"
}
],
"functionName": {
"name": "or",
"nodeType": "YulIdentifier",
"src": "11398:2:0"
},
"nodeType": "YulFunctionCall",
"src": "11398:17:0"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "11381:3:0"
},
"nodeType": "YulFunctionCall",
"src": "11381:35:0"
},
"variableNames": [
{
"name": "newView",
"nodeType": "YulIdentifier",
"src": "11370:7:0"
}
]
},
{
"nodeType": "YulAssignment",
"src": "11445:45:0",
"value": {
"arguments": [
{
"name": "_emptyBits",
"nodeType": "YulIdentifier",
"src": "11460:10:0"
},
{
"arguments": [
{
"name": "newView",
"nodeType": "YulIdentifier",
"src": "11475:7:0"
},
{
"name": "_len",
"nodeType": "YulIdentifier",
"src": "11484:4:0"
}
],
"functionName": {
"name": "or",
"nodeType": "YulIdentifier",
"src": "11472:2:0"
},
"nodeType": "YulFunctionCall",
"src": "11472:17:0"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "11456:3:0"
},
"nodeType": "YulFunctionCall",
"src": "11456:34:0"
},
"variableNames": [
{
"name": "newView",
"nodeType": "YulIdentifier",
"src": "11445:7:0"
}
]
}
]
},
"evmVersion": "london",
"externalReferences": [
{
"declaration": 471,
"isOffset": false,
"isSlot": false,
"src": "11460:10:0",
"valueSize": 1
},
{
"declaration": 461,
"isOffset": false,
"isSlot": false,
"src": "11484:4:0",
"valueSize": 1
},
{
"declaration": 459,
"isOffset": false,
"isSlot": false,
"src": "11410:4:0",
"valueSize": 1
},
{
"declaration": 457,
"isOffset": false,
"isSlot": false,
"src": "11334:5:0",
"valueSize": 1
},
{
"declaration": 467,
"isOffset": false,
"isSlot": false,
"src": "11309:11:0",
"valueSize": 1
},
{
"declaration": 467,
"isOffset": false,
"isSlot": false,
"src": "11385:11:0",
"valueSize": 1
},
{
"declaration": 464,
"isOffset": false,
"isSlot": false,
"src": "11294:7:0",
"valueSize": 1
},
{
"declaration": 464,
"isOffset": false,
"isSlot": false,
"src": "11325:7:0",
"valueSize": 1
},
{
"declaration": 464,
"isOffset": false,
"isSlot": false,
"src": "11370:7:0",
"valueSize": 1
},
{
"declaration": 464,
"isOffset": false,
"isSlot": false,
"src": "11401:7:0",
"valueSize": 1
},
{
"declaration": 464,
"isOffset": false,
"isSlot": false,
"src": "11445:7:0",
"valueSize": 1
},
{
"declaration": 464,
"isOffset": false,
"isSlot": false,
"src": "11475:7:0",
"valueSize": 1
}
],
"id": 474,
"nodeType": "InlineAssembly",
"src": "11197:329:0"
}
]
},
"documentation": {
"id": 455,
"nodeType": "StructuredDocumentation",
"src": "10458:541:0",
"text": " @notice Unsafe raw pointer construction. This should generally not be called\n directly. Prefer `ref` wherever possible.\n @dev Unsafe raw pointer construction. This should generally not be called\n directly. Prefer `ref` wherever possible.\n @param _type The type\n @param _loc The memory address\n @param _len The length\n @return newView - The new view with the specified type, location and length"
},
"id": 476,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "unsafeBuildUnchecked",
"nameLocation": "11014:20:0",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 462,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 457,
"mutability": "mutable",
"name": "_type",
"nameLocation": "11043:5:0",
"nodeType": "VariableDeclaration",
"scope": 476,
"src": "11035:13:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 456,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "11035:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 459,
"mutability": "mutable",
"name": "_loc",
"nameLocation": "11058:4:0",
"nodeType": "VariableDeclaration",
"scope": 476,
"src": "11050:12:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 458,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "11050:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 461,
"mutability": "mutable",
"name": "_len",
"nameLocation": "11072:4:0",
"nodeType": "VariableDeclaration",
"scope": 476,
"src": "11064:12:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 460,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "11064:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "11034:43:0"
},
"returnParameters": {
"id": 465,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 464,
"mutability": "mutable",
"name": "newView",
"nameLocation": "11108:7:0",
"nodeType": "VariableDeclaration",
"scope": 476,
"src": "11100:15:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
},
"typeName": {
"id": 463,
"name": "bytes29",
"nodeType": "ElementaryTypeName",
"src": "11100:7:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
}
},
"visibility": "internal"
}
],
"src": "11099:17:0"
},
"scope": 1419,
"src": "11005:528:0",
"stateMutability": "pure",
"virtual": false,
"visibility": "private"
},
{
"body": {
"id": 510,
"nodeType": "Block",
"src": "12182:316:0",
"statements": [
{
"assignments": [
489
],
"declarations": [
{
"constant": false,
"id": 489,
"mutability": "mutable",
"name": "_end",
"nameLocation": "12201:4:0",
"nodeType": "VariableDeclaration",
"scope": 510,
"src": "12193:12:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 488,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "12193:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 493,
"initialValue": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 492,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 490,
"name": "_loc",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 481,
"src": "12208:4:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "+",
"rightExpression": {
"id": 491,
"name": "_len",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 483,
"src": "12215:4:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "12208:11:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "12193:26:0"
},
{
"AST": {
"nodeType": "YulBlock",
"src": "12239:129:0",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "12344:13:0",
"statements": [
{
"nodeType": "YulAssignment",
"src": "12346:9:0",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "12354:1:0",
"type": "",
"value": "0"
},
"variableNames": [
{
"name": "_end",
"nodeType": "YulIdentifier",
"src": "12346:4:0"
}
]
}
]
},
"condition": {
"arguments": [
{
"name": "_end",
"nodeType": "YulIdentifier",
"src": "12325:4:0"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "12337:4:0",
"type": "",
"value": "0x40"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "12331:5:0"
},
"nodeType": "YulFunctionCall",
"src": "12331:11:0"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "12322:2:0"
},
"nodeType": "YulFunctionCall",
"src": "12322:21:0"
},
"nodeType": "YulIf",
"src": "12319:38:0"
}
]
},
"evmVersion": "london",
"externalReferences": [
{
"declaration": 489,
"isOffset": false,
"isSlot": false,
"src": "12325:4:0",
"valueSize": 1
},
{
"declaration": 489,
"isOffset": false,
"isSlot": false,
"src": "12346:4:0",
"valueSize": 1
}
],
"id": 494,
"nodeType": "InlineAssembly",
"src": "12230:138:0"
},
{
"condition": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 497,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 495,
"name": "_end",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 489,
"src": "12382:4:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"hexValue": "30",
"id": 496,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "12390:1:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "12382:9:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 501,
"nodeType": "IfStatement",
"src": "12378:53:0",
"trueBody": {
"id": 500,
"nodeType": "Block",
"src": "12393:38:0",
"statements": [
{
"expression": {
"id": 498,
"name": "NULL",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4,
"src": "12415:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
}
},
"functionReturnParameters": 487,
"id": 499,
"nodeType": "Return",
"src": "12408:11:0"
}
]
}
},
{
"expression": {
"id": 508,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 502,
"name": "newView",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 486,
"src": "12441:7:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"arguments": [
{
"id": 504,
"name": "_type",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 479,
"src": "12472:5:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 505,
"name": "_loc",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 481,
"src": "12479:4:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 506,
"name": "_len",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 483,
"src": "12485:4:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 503,
"name": "unsafeBuildUnchecked",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 476,
"src": "12451:20:0",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes29_$",
"typeString": "function (uint256,uint256,uint256) pure returns (bytes29)"
}
},
"id": 507,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "12451:39:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
}
},
"src": "12441:49:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
}
},
"id": 509,
"nodeType": "ExpressionStatement",
"src": "12441:49:0"
}
]
},
"documentation": {
"id": 477,
"nodeType": "StructuredDocumentation",
"src": "11541:537:0",
"text": " @notice Instantiate a new memory view. This should generally not be called\n directly. Prefer `ref` wherever possible.\n @dev Instantiate a new memory view. This should generally not be called\n directly. Prefer `ref` wherever possible.\n @param _type The type\n @param _loc The memory address\n @param _len The length\n @return newView - The new view with the specified type, location and length"
},
"id": 511,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "build",
"nameLocation": "12093:5:0",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 484,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 479,
"mutability": "mutable",
"name": "_type",
"nameLocation": "12107:5:0",
"nodeType": "VariableDeclaration",
"scope": 511,
"src": "12099:13:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 478,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "12099:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 481,
"mutability": "mutable",
"name": "_loc",
"nameLocation": "12122:4:0",
"nodeType": "VariableDeclaration",
"scope": 511,
"src": "12114:12:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 480,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "12114:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 483,
"mutability": "mutable",
"name": "_len",
"nameLocation": "12136:4:0",
"nodeType": "VariableDeclaration",
"scope": 511,
"src": "12128:12:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 482,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "12128:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "12098:43:0"
},
"returnParameters": {
"id": 487,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 486,
"mutability": "mutable",
"name": "newView",
"nameLocation": "12173:7:0",
"nodeType": "VariableDeclaration",
"scope": 511,
"src": "12165:15:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
},
"typeName": {
"id": 485,
"name": "bytes29",
"nodeType": "ElementaryTypeName",
"src": "12165:7:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
}
},
"visibility": "internal"
}
],
"src": "12164:17:0"
},
"scope": 1419,
"src": "12084:414:0",
"stateMutability": "pure",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 536,
"nodeType": "Block",
"src": "12984:290:0",
"statements": [
{
"assignments": [
522
],
"declarations": [
{
"constant": false,
"id": 522,
"mutability": "mutable",
"name": "_len",
"nameLocation": "13003:4:0",
"nodeType": "VariableDeclaration",
"scope": 536,
"src": "12995:12:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 521,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "12995:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 525,
"initialValue": {
"expression": {
"id": 523,
"name": "arr",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 514,
"src": "13010:3:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"id": 524,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "13014:6:0",
"memberName": "length",
"nodeType": "MemberAccess",
"src": "13010:10:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "12995:25:0"
},
{
"assignments": [
527
],
"declarations": [
{
"constant": false,
"id": 527,
"mutability": "mutable",
"name": "_loc",
"nameLocation": "13041:4:0",
"nodeType": "VariableDeclaration",
"scope": 536,
"src": "13033:12:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 526,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "13033:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 528,
"nodeType": "VariableDeclarationStatement",
"src": "13033:12:0"
},
{
"AST": {
"nodeType": "YulBlock",
"src": "13065:156:0",
"statements": [
{
"nodeType": "YulAssignment",
"src": "13145:22:0",
"value": {
"arguments": [
{
"name": "arr",
"nodeType": "YulIdentifier",
"src": "13157:3:0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "13162:4:0",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "13153:3:0"
},
"nodeType": "YulFunctionCall",
"src": "13153:14:0"
},
"variableNames": [
{
"name": "_loc",
"nodeType": "YulIdentifier",
"src": "13145:4:0"
}
]
}
]
},
"evmVersion": "london",
"externalReferences": [
{
"declaration": 527,
"isOffset": false,
"isSlot": false,
"src": "13145:4:0",
"valueSize": 1
},
{
"declaration": 514,
"isOffset": false,
"isSlot": false,
"src": "13157:3:0",
"valueSize": 1
}
],
"id": 529,
"nodeType": "InlineAssembly",
"src": "13056:165:0"
},
{
"expression": {
"arguments": [
{
"id": 531,
"name": "newType",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 516,
"src": "13246:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint40",
"typeString": "uint40"
}
},
{
"id": 532,
"name": "_loc",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 527,
"src": "13255:4:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 533,
"name": "_len",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 522,
"src": "13261:4:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint40",
"typeString": "uint40"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 530,
"name": "build",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 511,
"src": "13240:5:0",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes29_$",
"typeString": "function (uint256,uint256,uint256) pure returns (bytes29)"
}
},
"id": 534,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "13240:26:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
}
},
"functionReturnParameters": 520,
"id": 535,
"nodeType": "Return",
"src": "13233:33:0"
}
]
},
"documentation": {
"id": 512,
"nodeType": "StructuredDocumentation",
"src": "12506:393:0",
"text": " @notice Instantiate a memory view from a byte array.\n @dev Note that due to Solidity memory representation, it is not possible to\n implement a deref, as the `bytes` type stores its len in memory.\n @param arr The byte array\n @param newType The type\n @return bytes29 - The memory view"
},
"id": 537,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "ref",
"nameLocation": "12914:3:0",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 517,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 514,
"mutability": "mutable",
"name": "arr",
"nameLocation": "12931:3:0",
"nodeType": "VariableDeclaration",
"scope": 537,
"src": "12918:16:0",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 513,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "12918:5:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 516,
"mutability": "mutable",
"name": "newType",
"nameLocation": "12943:7:0",
"nodeType": "VariableDeclaration",
"scope": 537,
"src": "12936:14:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint40",
"typeString": "uint40"
},
"typeName": {
"id": 515,
"name": "uint40",
"nodeType": "ElementaryTypeName",
"src": "12936:6:0",
"typeDescriptions": {
"typeIdentifier": "t_uint40",
"typeString": "uint40"
}
},
"visibility": "internal"
}
],
"src": "12917:34:0"
},
"returnParameters": {
"id": 520,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 519,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 537,
"src": "12975:7:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
},
"typeName": {
"id": 518,
"name": "bytes29",
"nodeType": "ElementaryTypeName",
"src": "12975:7:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
}
},
"visibility": "internal"
}
],
"src": "12974:9:0"
},
"scope": 1419,
"src": "12905:369:0",
"stateMutability": "pure",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 550,
"nodeType": "Block",
"src": "13543:224:0",
"statements": [
{
"assignments": [
546
],
"declarations": [
{
"constant": false,
"id": 546,
"mutability": "mutable",
"name": "_shift",
"nameLocation": "13562:6:0",
"nodeType": "VariableDeclaration",
"scope": 550,
"src": "13554:14:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 545,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "13554:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 548,
"initialValue": {
"id": 547,
"name": "SHIFT_TO_TYPE",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 22,
"src": "13571:13:0",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "13554:30:0"
},
{
"AST": {
"nodeType": "YulBlock",
"src": "13604:156:0",
"statements": [
{
"nodeType": "YulAssignment",
"src": "13692:29:0",
"value": {
"arguments": [
{
"name": "_shift",
"nodeType": "YulIdentifier",
"src": "13705:6:0"
},
{
"name": "memView",
"nodeType": "YulIdentifier",
"src": "13713:7:0"
}
],
"functionName": {
"name": "shr",
"nodeType": "YulIdentifier",
"src": "13701:3:0"
},
"nodeType": "YulFunctionCall",
"src": "13701:20:0"
},
"variableNames": [
{
"name": "_type",
"nodeType": "YulIdentifier",
"src": "13692:5:0"
}
]
}
]
},
"evmVersion": "london",
"externalReferences": [
{
"declaration": 546,
"isOffset": false,
"isSlot": false,
"src": "13705:6:0",
"valueSize": 1
},
{
"declaration": 543,
"isOffset": false,
"isSlot": false,
"src": "13692:5:0",
"valueSize": 1
},
{
"declaration": 540,
"isOffset": false,
"isSlot": false,
"src": "13713:7:0",
"valueSize": 1
}
],
"id": 549,
"nodeType": "InlineAssembly",
"src": "13595:165:0"
}
]
},
"documentation": {
"id": 538,
"nodeType": "StructuredDocumentation",
"src": "13282:185:0",
"text": " @notice Return the associated type information.\n @param memView The memory view\n @return _type - The type associated with the view"
},
"id": 551,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "typeOf",
"nameLocation": "13482:6:0",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 541,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 540,
"mutability": "mutable",
"name": "memView",
"nameLocation": "13497:7:0",
"nodeType": "VariableDeclaration",
"scope": 551,
"src": "13489:15:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
},
"typeName": {
"id": 539,
"name": "bytes29",
"nodeType": "ElementaryTypeName",
"src": "13489:7:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
}
},
"visibility": "internal"
}
],
"src": "13488:17:0"
},
"returnParameters": {
"id": 544,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 543,
"mutability": "mutable",
"name": "_type",
"nameLocation": "13536:5:0",
"nodeType": "VariableDeclaration",
"scope": 551,
"src": "13529:12:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint40",
"typeString": "uint40"
},
"typeName": {
"id": 542,
"name": "uint40",
"nodeType": "ElementaryTypeName",
"src": "13529:6:0",
"typeDescriptions": {
"typeIdentifier": "t_uint40",
"typeString": "uint40"
}
},
"visibility": "internal"
}
],
"src": "13528:14:0"
},
"scope": 1419,
"src": "13473:294:0",
"stateMutability": "pure",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 570,
"nodeType": "Block",
"src": "14115:62:0",
"statements": [
{
"expression": {
"commonType": {
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
},
"id": 568,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"commonType": {
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
},
"id": 566,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"components": [
{
"commonType": {
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
},
"id": 563,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 561,
"name": "left",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 554,
"src": "14134:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
}
},
"nodeType": "BinaryOperation",
"operator": "^",
"rightExpression": {
"id": 562,
"name": "right",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 556,
"src": "14141:5:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
}
},
"src": "14134:12:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
}
}
],
"id": 564,
"isConstant": false,
"isInlineArray": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "TupleExpression",
"src": "14133:14:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
}
},
"nodeType": "BinaryOperation",
"operator": ">>",
"rightExpression": {
"id": 565,
"name": "SHIFT_TO_TYPE",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 22,
"src": "14151:13:0",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"src": "14133:31:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"hexValue": "30",
"id": 567,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "14168:1:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "14133:36:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"functionReturnParameters": 560,
"id": 569,
"nodeType": "Return",
"src": "14126:43:0"
}
]
},
"documentation": {
"id": 552,
"nodeType": "StructuredDocumentation",
"src": "13775:258:0",
"text": " @notice Optimized type comparison. Checks that the 5-byte type flag is equal.\n @param left The first view\n @param right The second view\n @return bool - True if the 5-byte type flag is equal"
},
"id": 571,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "sameType",
"nameLocation": "14048:8:0",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 557,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 554,
"mutability": "mutable",
"name": "left",
"nameLocation": "14065:4:0",
"nodeType": "VariableDeclaration",
"scope": 571,
"src": "14057:12:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
},
"typeName": {
"id": 553,
"name": "bytes29",
"nodeType": "ElementaryTypeName",
"src": "14057:7:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 556,
"mutability": "mutable",
"name": "right",
"nameLocation": "14079:5:0",
"nodeType": "VariableDeclaration",
"scope": 571,
"src": "14071:13:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
},
"typeName": {
"id": 555,
"name": "bytes29",
"nodeType": "ElementaryTypeName",
"src": "14071:7:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
}
},
"visibility": "internal"
}
],
"src": "14056:29:0"
},
"returnParameters": {
"id": 560,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 559,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 571,
"src": "14109:4:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 558,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "14109:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"visibility": "internal"
}
],
"src": "14108:6:0"
},
"scope": 1419,
"src": "14039:138:0",
"stateMutability": "pure",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 588,
"nodeType": "Block",
"src": "14430:275:0",
"statements": [
{
"assignments": [
580
],
"declarations": [
{
"constant": false,
"id": 580,
"mutability": "mutable",
"name": "_mask",
"nameLocation": "14449:5:0",
"nodeType": "VariableDeclaration",
"scope": 588,
"src": "14441:13:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 579,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "14441:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 582,
"initialValue": {
"id": 581,
"name": "LOW_12_MASK",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 7,
"src": "14457:11:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "14441:27:0"
},
{
"assignments": [
584
],
"declarations": [
{
"constant": false,
"id": 584,
"mutability": "mutable",
"name": "_shift",
"nameLocation": "14518:6:0",
"nodeType": "VariableDeclaration",
"scope": 588,
"src": "14510:14:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 583,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "14510:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 586,
"initialValue": {
"id": 585,
"name": "SHIFT_TO_LOC",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 15,
"src": "14527:12:0",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "14510:29:0"
},
{
"AST": {
"nodeType": "YulBlock",
"src": "14559:139:0",
"statements": [
{
"nodeType": "YulAssignment",
"src": "14647:40:0",
"value": {
"arguments": [
{
"arguments": [
{
"name": "_shift",
"nodeType": "YulIdentifier",
"src": "14663:6:0"
},
{
"name": "memView",
"nodeType": "YulIdentifier",
"src": "14671:7:0"
}
],
"functionName": {
"name": "shr",
"nodeType": "YulIdentifier",
"src": "14659:3:0"
},
"nodeType": "YulFunctionCall",
"src": "14659:20:0"
},
{
"name": "_mask",
"nodeType": "YulIdentifier",
"src": "14681:5:0"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "14655:3:0"
},
"nodeType": "YulFunctionCall",
"src": "14655:32:0"
},
"variableNames": [
{
"name": "_loc",
"nodeType": "YulIdentifier",
"src": "14647:4:0"
}
]
}
]
},
"evmVersion": "london",
"externalReferences": [
{
"declaration": 577,
"isOffset": false,
"isSlot": false,
"src": "14647:4:0",
"valueSize": 1
},
{
"declaration": 580,
"isOffset": false,
"isSlot": false,
"src": "14681:5:0",
"valueSize": 1
},
{
"declaration": 584,
"isOffset": false,
"isSlot": false,
"src": "14663:6:0",
"valueSize": 1
},
{
"declaration": 574,
"isOffset": false,
"isSlot": false,
"src": "14671:7:0",
"valueSize": 1
}
],
"id": 587,
"nodeType": "InlineAssembly",
"src": "14550:148:0"
}
]
},
"documentation": {
"id": 572,
"nodeType": "StructuredDocumentation",
"src": "14185:173:0",
"text": " @notice Return the memory address of the underlying bytes.\n @param memView The view\n @return _loc - The memory address"
},
"id": 589,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "loc",
"nameLocation": "14373:3:0",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 575,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 574,
"mutability": "mutable",
"name": "memView",
"nameLocation": "14385:7:0",
"nodeType": "VariableDeclaration",
"scope": 589,
"src": "14377:15:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
},
"typeName": {
"id": 573,
"name": "bytes29",
"nodeType": "ElementaryTypeName",
"src": "14377:7:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
}
},
"visibility": "internal"
}
],
"src": "14376:17:0"
},
"returnParameters": {
"id": 578,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 577,
"mutability": "mutable",
"name": "_loc",
"nameLocation": "14424:4:0",
"nodeType": "VariableDeclaration",
"scope": 589,
"src": "14417:11:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint96",
"typeString": "uint96"
},
"typeName": {
"id": 576,
"name": "uint96",
"nodeType": "ElementaryTypeName",
"src": "14417:6:0",
"typeDescriptions": {
"typeIdentifier": "t_uint96",
"typeString": "uint96"
}
},
"visibility": "internal"
}
],
"src": "14416:13:0"
},
"scope": 1419,
"src": "14364:341:0",
"stateMutability": "pure",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 609,
"nodeType": "Block",
"src": "14982:59:0",
"statements": [
{
"expression": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 607,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"components": [
{
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 604,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"arguments": [
{
"arguments": [
{
"id": 600,
"name": "memView",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 592,
"src": "15013:7:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
}
],
"id": 599,
"name": "len",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 643,
"src": "15009:3:0",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_bytes29_$returns$_t_uint96_$",
"typeString": "function (bytes29) pure returns (uint96)"
}
},
"id": 601,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "15009:12:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint96",
"typeString": "uint96"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint96",
"typeString": "uint96"
}
],
"id": 598,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "15001:7:0",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_uint256_$",
"typeString": "type(uint256)"
},
"typeName": {
"id": 597,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "15001:7:0",
"typeDescriptions": {}
}
},
"id": 602,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "15001:21:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "+",
"rightExpression": {
"hexValue": "3331",
"id": 603,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "15025:2:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_31_by_1",
"typeString": "int_const 31"
},
"value": "31"
},
"src": "15001:26:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"id": 605,
"isConstant": false,
"isInlineArray": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "TupleExpression",
"src": "15000:28:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "/",
"rightExpression": {
"hexValue": "3332",
"id": 606,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "15031:2:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_32_by_1",
"typeString": "int_const 32"
},
"value": "32"
},
"src": "15000:33:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"functionReturnParameters": 596,
"id": 608,
"nodeType": "Return",
"src": "14993:40:0"
}
]
},
"documentation": {
"id": 590,
"nodeType": "StructuredDocumentation",
"src": "14713:199:0",
"text": " @notice The number of memory words this memory view occupies, rounded up.\n @param memView The view\n @return uint256 - The number of memory words"
},
"id": 610,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "words",
"nameLocation": "14927:5:0",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 593,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 592,
"mutability": "mutable",
"name": "memView",
"nameLocation": "14941:7:0",
"nodeType": "VariableDeclaration",
"scope": 610,
"src": "14933:15:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
},
"typeName": {
"id": 591,
"name": "bytes29",
"nodeType": "ElementaryTypeName",
"src": "14933:7:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
}
},
"visibility": "internal"
}
],
"src": "14932:17:0"
},
"returnParameters": {
"id": 596,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 595,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 610,
"src": "14973:7:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 594,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "14973:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "14972:9:0"
},
"scope": 1419,
"src": "14918:123:0",
"stateMutability": "pure",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 624,
"nodeType": "Block",
"src": "15335:45:0",
"statements": [
{
"expression": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 622,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"arguments": [
{
"id": 619,
"name": "memView",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 613,
"src": "15359:7:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
}
],
"id": 618,
"name": "words",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 610,
"src": "15353:5:0",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_bytes29_$returns$_t_uint256_$",
"typeString": "function (bytes29) pure returns (uint256)"
}
},
"id": 620,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "15353:14:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "*",
"rightExpression": {
"hexValue": "3332",
"id": 621,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "15370:2:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_32_by_1",
"typeString": "int_const 32"
},
"value": "32"
},
"src": "15353:19:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"functionReturnParameters": 617,
"id": 623,
"nodeType": "Return",
"src": "15346:26:0"
}
]
},
"documentation": {
"id": 611,
"nodeType": "StructuredDocumentation",
"src": "15049:212:0",
"text": " @notice The in-memory footprint of a fresh copy of the view.\n @param memView The view\n @return uint256 - The in-memory footprint of a fresh copy of the view."
},
"id": 625,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "footprint",
"nameLocation": "15276:9:0",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 614,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 613,
"mutability": "mutable",
"name": "memView",
"nameLocation": "15294:7:0",
"nodeType": "VariableDeclaration",
"scope": 625,
"src": "15286:15:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
},
"typeName": {
"id": 612,
"name": "bytes29",
"nodeType": "ElementaryTypeName",
"src": "15286:7:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
}
},
"visibility": "internal"
}
],
"src": "15285:17:0"
},
"returnParameters": {
"id": 617,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 616,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 625,
"src": "15326:7:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 615,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "15326:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "15325:9:0"
},
"scope": 1419,
"src": "15267:113:0",
"stateMutability": "pure",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 642,
"nodeType": "Block",
"src": "15619:273:0",
"statements": [
{
"assignments": [
634
],
"declarations": [
{
"constant": false,
"id": 634,
"mutability": "mutable",
"name": "_mask",
"nameLocation": "15638:5:0",
"nodeType": "VariableDeclaration",
"scope": 642,
"src": "15630:13:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 633,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "15630:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 636,
"initialValue": {
"id": 635,
"name": "LOW_12_MASK",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 7,
"src": "15646:11:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "15630:27:0"
},
{
"assignments": [
638
],
"declarations": [
{
"constant": false,
"id": 638,
"mutability": "mutable",
"name": "_emptyBits",
"nameLocation": "15707:10:0",
"nodeType": "VariableDeclaration",
"scope": 642,
"src": "15699:18:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 637,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "15699:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 640,
"initialValue": {
"hexValue": "3234",
"id": 639,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "15720:2:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_24_by_1",
"typeString": "int_const 24"
},
"value": "24"
},
"nodeType": "VariableDeclarationStatement",
"src": "15699:23:0"
},
{
"AST": {
"nodeType": "YulBlock",
"src": "15742:143:0",
"statements": [
{
"nodeType": "YulAssignment",
"src": "15830:44:0",
"value": {
"arguments": [
{
"arguments": [
{
"name": "_emptyBits",
"nodeType": "YulIdentifier",
"src": "15846:10:0"
},
{
"name": "memView",
"nodeType": "YulIdentifier",
"src": "15858:7:0"
}
],
"functionName": {
"name": "shr",
"nodeType": "YulIdentifier",
"src": "15842:3:0"
},
"nodeType": "YulFunctionCall",
"src": "15842:24:0"
},
{
"name": "_mask",
"nodeType": "YulIdentifier",
"src": "15868:5:0"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "15838:3:0"
},
"nodeType": "YulFunctionCall",
"src": "15838:36:0"
},
"variableNames": [
{
"name": "_len",
"nodeType": "YulIdentifier",
"src": "15830:4:0"
}
]
}
]
},
"evmVersion": "london",
"externalReferences": [
{
"declaration": 638,
"isOffset": false,
"isSlot": false,
"src": "15846:10:0",
"valueSize": 1
},
{
"declaration": 631,
"isOffset": false,
"isSlot": false,
"src": "15830:4:0",
"valueSize": 1
},
{
"declaration": 634,
"isOffset": false,
"isSlot": false,
"src": "15868:5:0",
"valueSize": 1
},
{
"declaration": 628,
"isOffset": false,
"isSlot": false,
"src": "15858:7:0",
"valueSize": 1
}
],
"id": 641,
"nodeType": "InlineAssembly",
"src": "15733:152:0"
}
]
},
"documentation": {
"id": 626,
"nodeType": "StructuredDocumentation",
"src": "15388:159:0",
"text": " @notice The number of bytes of the view.\n @param memView The view\n @return _len - The length of the view"
},
"id": 643,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "len",
"nameLocation": "15562:3:0",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 629,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 628,
"mutability": "mutable",
"name": "memView",
"nameLocation": "15574:7:0",
"nodeType": "VariableDeclaration",
"scope": 643,
"src": "15566:15:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
},
"typeName": {
"id": 627,
"name": "bytes29",
"nodeType": "ElementaryTypeName",
"src": "15566:7:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
}
},
"visibility": "internal"
}
],
"src": "15565:17:0"
},
"returnParameters": {
"id": 632,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 631,
"mutability": "mutable",
"name": "_len",
"nameLocation": "15613:4:0",
"nodeType": "VariableDeclaration",
"scope": 643,
"src": "15606:11:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint96",
"typeString": "uint96"
},
"typeName": {
"id": 630,
"name": "uint96",
"nodeType": "ElementaryTypeName",
"src": "15606:6:0",
"typeDescriptions": {
"typeIdentifier": "t_uint96",
"typeString": "uint96"
}
},
"visibility": "internal"
}
],
"src": "15605:13:0"
},
"scope": 1419,
"src": "15553:339:0",
"stateMutability": "pure",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 660,
"nodeType": "Block",
"src": "16135:89:0",
"statements": [
{
"id": 659,
"nodeType": "UncheckedBlock",
"src": "16146:71:0",
"statements": [
{
"expression": {
"commonType": {
"typeIdentifier": "t_uint96",
"typeString": "uint96"
},
"id": 657,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"arguments": [
{
"id": 652,
"name": "memView",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 646,
"src": "16182:7:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
}
],
"id": 651,
"name": "loc",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 589,
"src": "16178:3:0",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_bytes29_$returns$_t_uint96_$",
"typeString": "function (bytes29) pure returns (uint96)"
}
},
"id": 653,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "16178:12:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint96",
"typeString": "uint96"
}
},
"nodeType": "BinaryOperation",
"operator": "+",
"rightExpression": {
"arguments": [
{
"id": 655,
"name": "memView",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 646,
"src": "16197:7:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
}
],
"id": 654,
"name": "len",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 643,
"src": "16193:3:0",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_bytes29_$returns$_t_uint96_$",
"typeString": "function (bytes29) pure returns (uint96)"
}
},
"id": 656,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "16193:12:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint96",
"typeString": "uint96"
}
},
"src": "16178:27:0",
"typeDescriptions": {
"typeIdentifier": "t_uint96",
"typeString": "uint96"
}
},
"functionReturnParameters": 650,
"id": 658,
"nodeType": "Return",
"src": "16171:34:0"
}
]
}
]
},
"documentation": {
"id": 644,
"nodeType": "StructuredDocumentation",
"src": "15900:167:0",
"text": " @notice Returns the endpoint of `memView`.\n @param memView The view\n @return uint256 - The endpoint of `memView`"
},
"id": 661,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "end",
"nameLocation": "16082:3:0",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 647,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 646,
"mutability": "mutable",
"name": "memView",
"nameLocation": "16094:7:0",
"nodeType": "VariableDeclaration",
"scope": 661,
"src": "16086:15:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
},
"typeName": {
"id": 645,
"name": "bytes29",
"nodeType": "ElementaryTypeName",
"src": "16086:7:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
}
},
"visibility": "internal"
}
],
"src": "16085:17:0"
},
"returnParameters": {
"id": 650,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 649,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 661,
"src": "16126:7:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 648,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "16126:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "16125:9:0"
},
"scope": 1419,
"src": "16073:151:0",
"stateMutability": "pure",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 706,
"nodeType": "Block",
"src": "16624:261:0",
"statements": [
{
"assignments": [
676
],
"declarations": [
{
"constant": false,
"id": 676,
"mutability": "mutable",
"name": "_loc",
"nameLocation": "16643:4:0",
"nodeType": "VariableDeclaration",
"scope": 706,
"src": "16635:12:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 675,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "16635:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 680,
"initialValue": {
"arguments": [
{
"id": 678,
"name": "memView",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 664,
"src": "16654:7:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
}
],
"id": 677,
"name": "loc",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 589,
"src": "16650:3:0",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_bytes29_$returns$_t_uint96_$",
"typeString": "function (bytes29) pure returns (uint96)"
}
},
"id": 679,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "16650:12:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint96",
"typeString": "uint96"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "16635:27:0"
},
{
"condition": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 689,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 685,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 683,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 681,
"name": "_loc",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 676,
"src": "16726:4:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "+",
"rightExpression": {
"id": 682,
"name": "_index",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 666,
"src": "16733:6:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "16726:13:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "+",
"rightExpression": {
"id": 684,
"name": "_len",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 668,
"src": "16742:4:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "16726:20:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"arguments": [
{
"id": 687,
"name": "memView",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 664,
"src": "16753:7:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
}
],
"id": 686,
"name": "end",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 661,
"src": "16749:3:0",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_bytes29_$returns$_t_uint256_$",
"typeString": "function (bytes29) pure returns (uint256)"
}
},
"id": 688,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "16749:12:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "16726:35:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 693,
"nodeType": "IfStatement",
"src": "16722:79:0",
"trueBody": {
"id": 692,
"nodeType": "Block",
"src": "16763:38:0",
"statements": [
{
"expression": {
"id": 690,
"name": "NULL",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4,
"src": "16785:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
}
},
"functionReturnParameters": 674,
"id": 691,
"nodeType": "Return",
"src": "16778:11:0"
}
]
}
},
{
"expression": {
"id": 698,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 694,
"name": "_loc",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 676,
"src": "16813:4:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 697,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 695,
"name": "_loc",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 676,
"src": "16820:4:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "+",
"rightExpression": {
"id": 696,
"name": "_index",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 666,
"src": "16827:6:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "16820:13:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "16813:20:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 699,
"nodeType": "ExpressionStatement",
"src": "16813:20:0"
},
{
"expression": {
"arguments": [
{
"id": 701,
"name": "newType",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 670,
"src": "16857:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint40",
"typeString": "uint40"
}
},
{
"id": 702,
"name": "_loc",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 676,
"src": "16866:4:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 703,
"name": "_len",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 668,
"src": "16872:4:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint40",
"typeString": "uint40"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 700,
"name": "build",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 511,
"src": "16851:5:0",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes29_$",
"typeString": "function (uint256,uint256,uint256) pure returns (bytes29)"
}
},
"id": 704,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "16851:26:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
}
},
"functionReturnParameters": 674,
"id": 705,
"nodeType": "Return",
"src": "16844:33:0"
}
]
},
"documentation": {
"id": 662,
"nodeType": "StructuredDocumentation",
"src": "16232:276:0",
"text": " @notice Safe slicing without memory modification.\n @param memView The view\n @param _index The start index\n @param _len The length\n @param newType The new type\n @return bytes29 - The new view"
},
"id": 707,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "slice",
"nameLocation": "16523:5:0",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 671,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 664,
"mutability": "mutable",
"name": "memView",
"nameLocation": "16537:7:0",
"nodeType": "VariableDeclaration",
"scope": 707,
"src": "16529:15:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
},
"typeName": {
"id": 663,
"name": "bytes29",
"nodeType": "ElementaryTypeName",
"src": "16529:7:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 666,
"mutability": "mutable",
"name": "_index",
"nameLocation": "16554:6:0",
"nodeType": "VariableDeclaration",
"scope": 707,
"src": "16546:14:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 665,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "16546:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 668,
"mutability": "mutable",
"name": "_len",
"nameLocation": "16570:4:0",
"nodeType": "VariableDeclaration",
"scope": 707,
"src": "16562:12:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 667,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "16562:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 670,
"mutability": "mutable",
"name": "newType",
"nameLocation": "16583:7:0",
"nodeType": "VariableDeclaration",
"scope": 707,
"src": "16576:14:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint40",
"typeString": "uint40"
},
"typeName": {
"id": 669,
"name": "uint40",
"nodeType": "ElementaryTypeName",
"src": "16576:6:0",
"typeDescriptions": {
"typeIdentifier": "t_uint40",
"typeString": "uint40"
}
},
"visibility": "internal"
}
],
"src": "16528:63:0"
},
"returnParameters": {
"id": 674,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 673,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 707,
"src": "16615:7:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
},
"typeName": {
"id": 672,
"name": "bytes29",
"nodeType": "ElementaryTypeName",
"src": "16615:7:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
}
},
"visibility": "internal"
}
],
"src": "16614:9:0"
},
"scope": 1419,
"src": "16514:371:0",
"stateMutability": "pure",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 726,
"nodeType": "Block",
"src": "17257:58:0",
"statements": [
{
"expression": {
"arguments": [
{
"id": 720,
"name": "memView",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 710,
"src": "17281:7:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
}
},
{
"hexValue": "30",
"id": 721,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "17290:1:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
{
"id": 722,
"name": "_len",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 712,
"src": "17293:4:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 723,
"name": "newType",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 714,
"src": "17299:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint40",
"typeString": "uint40"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
},
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint40",
"typeString": "uint40"
}
],
"id": 719,
"name": "slice",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 707,
"src": "17275:5:0",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_bytes29_$_t_uint256_$_t_uint256_$_t_uint40_$returns$_t_bytes29_$",
"typeString": "function (bytes29,uint256,uint256,uint40) pure returns (bytes29)"
}
},
"id": 724,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "17275:32:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
}
},
"functionReturnParameters": 718,
"id": 725,
"nodeType": "Return",
"src": "17268:39:0"
}
]
},
"documentation": {
"id": 708,
"nodeType": "StructuredDocumentation",
"src": "16893:263:0",
"text": " @notice Shortcut to `slice`. Gets a view representing the first `_len` bytes.\n @param memView The view\n @param _len The length\n @param newType The new type\n @return bytes29 - The new view"
},
"id": 727,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "prefix",
"nameLocation": "17171:6:0",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 715,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 710,
"mutability": "mutable",
"name": "memView",
"nameLocation": "17186:7:0",
"nodeType": "VariableDeclaration",
"scope": 727,
"src": "17178:15:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
},
"typeName": {
"id": 709,
"name": "bytes29",
"nodeType": "ElementaryTypeName",
"src": "17178:7:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 712,
"mutability": "mutable",
"name": "_len",
"nameLocation": "17203:4:0",
"nodeType": "VariableDeclaration",
"scope": 727,
"src": "17195:12:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 711,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "17195:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 714,
"mutability": "mutable",
"name": "newType",
"nameLocation": "17216:7:0",
"nodeType": "VariableDeclaration",
"scope": 727,
"src": "17209:14:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint40",
"typeString": "uint40"
},
"typeName": {
"id": 713,
"name": "uint40",
"nodeType": "ElementaryTypeName",
"src": "17209:6:0",
"typeDescriptions": {
"typeIdentifier": "t_uint40",
"typeString": "uint40"
}
},
"visibility": "internal"
}
],
"src": "17177:47:0"
},
"returnParameters": {
"id": 718,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 717,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 727,
"src": "17248:7:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
},
"typeName": {
"id": 716,
"name": "bytes29",
"nodeType": "ElementaryTypeName",
"src": "17248:7:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
}
},
"visibility": "internal"
}
],
"src": "17247:9:0"
},
"scope": 1419,
"src": "17162:153:0",
"stateMutability": "pure",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 753,
"nodeType": "Block",
"src": "17686:85:0",
"statements": [
{
"expression": {
"arguments": [
{
"id": 740,
"name": "memView",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 730,
"src": "17710:7:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
}
},
{
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 748,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"arguments": [
{
"arguments": [
{
"id": 744,
"name": "memView",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 730,
"src": "17731:7:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
}
],
"id": 743,
"name": "len",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 643,
"src": "17727:3:0",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_bytes29_$returns$_t_uint96_$",
"typeString": "function (bytes29) pure returns (uint96)"
}
},
"id": 745,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "17727:12:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint96",
"typeString": "uint96"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint96",
"typeString": "uint96"
}
],
"id": 742,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "17719:7:0",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_uint256_$",
"typeString": "type(uint256)"
},
"typeName": {
"id": 741,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "17719:7:0",
"typeDescriptions": {}
}
},
"id": 746,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "17719:21:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "-",
"rightExpression": {
"id": 747,
"name": "_len",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 732,
"src": "17743:4:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "17719:28:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 749,
"name": "_len",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 732,
"src": "17749:4:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 750,
"name": "newType",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 734,
"src": "17755:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint40",
"typeString": "uint40"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint40",
"typeString": "uint40"
}
],
"id": 739,
"name": "slice",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 707,
"src": "17704:5:0",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_bytes29_$_t_uint256_$_t_uint256_$_t_uint40_$returns$_t_bytes29_$",
"typeString": "function (bytes29,uint256,uint256,uint40) pure returns (bytes29)"
}
},
"id": 751,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "17704:59:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
}
},
"functionReturnParameters": 738,
"id": 752,
"nodeType": "Return",
"src": "17697:66:0"
}
]
},
"documentation": {
"id": 728,
"nodeType": "StructuredDocumentation",
"src": "17323:261:0",
"text": " @notice Shortcut to `slice`. Gets a view representing the last `_len` byte.\n @param memView The view\n @param _len The length\n @param newType The new type\n @return bytes29 - The new view"
},
"id": 754,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "postfix",
"nameLocation": "17599:7:0",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 735,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 730,
"mutability": "mutable",
"name": "memView",
"nameLocation": "17615:7:0",
"nodeType": "VariableDeclaration",
"scope": 754,
"src": "17607:15:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
},
"typeName": {
"id": 729,
"name": "bytes29",
"nodeType": "ElementaryTypeName",
"src": "17607:7:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 732,
"mutability": "mutable",
"name": "_len",
"nameLocation": "17632:4:0",
"nodeType": "VariableDeclaration",
"scope": 754,
"src": "17624:12:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 731,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "17624:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 734,
"mutability": "mutable",
"name": "newType",
"nameLocation": "17645:7:0",
"nodeType": "VariableDeclaration",
"scope": 754,
"src": "17638:14:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint40",
"typeString": "uint40"
},
"typeName": {
"id": 733,
"name": "uint40",
"nodeType": "ElementaryTypeName",
"src": "17638:6:0",
"typeDescriptions": {
"typeIdentifier": "t_uint40",
"typeString": "uint40"
}
},
"visibility": "internal"
}
],
"src": "17606:47:0"
},
"returnParameters": {
"id": 738,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 737,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 754,
"src": "17677:7:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
},
"typeName": {
"id": 736,
"name": "bytes29",
"nodeType": "ElementaryTypeName",
"src": "17677:7:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
}
},
"visibility": "internal"
}
],
"src": "17676:9:0"
},
"scope": 1419,
"src": "17590:181:0",
"stateMutability": "pure",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 822,
"nodeType": "Block",
"src": "18249:594:0",
"statements": [
{
"assignments": [
null,
769
],
"declarations": [
null,
{
"constant": false,
"id": 769,
"mutability": "mutable",
"name": "a",
"nameLocation": "18271:1:0",
"nodeType": "VariableDeclaration",
"scope": 822,
"src": "18263:9:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 768,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "18263:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 773,
"initialValue": {
"arguments": [
{
"id": 771,
"name": "_loc",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 757,
"src": "18286:4:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 770,
"name": "encodeHex",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 169,
"src": "18276:9:0",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
"typeString": "function (uint256) pure returns (uint256,uint256)"
}
},
"id": 772,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "18276:15:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
"typeString": "tuple(uint256,uint256)"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "18260:31:0"
},
{
"assignments": [
null,
775
],
"declarations": [
null,
{
"constant": false,
"id": 775,
"mutability": "mutable",
"name": "b",
"nameLocation": "18313:1:0",
"nodeType": "VariableDeclaration",
"scope": 822,
"src": "18305:9:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 774,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "18305:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 779,
"initialValue": {
"arguments": [
{
"id": 777,
"name": "_len",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 75
View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment