Skip to content

Instantly share code, notes, and snippets.

@d-smith
Created February 19, 2023 05:41
Show Gist options
  • Save d-smith/c4fcf5fc452d1e3fd7ca75563aeba0e7 to your computer and use it in GitHub Desktop.
Save d-smith/c4fcf5fc452d1e3fd7ca75563aeba0e7 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": "610b89610053600b82828239805160001a607314610046577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100355760003560e01c8063fdc853081461003a575b600080fd5b81801561004657600080fd5b5061004f610051565b005b600061007073e0f5206bbd039e7b0592d8918820024e2a7437b9610105565b905060006040518060400160405280838152602001600a815250905060006100a082600001518360200151610128565b905060006100b860008361015490919063ffffffff16565b905060006100c58261017f565b90507fee0e21a0909c175792d67fa4e7c4f99d844405993e69b1ac9985af378f4cda4b816040516100f69190610617565b60405180910390a15050505050565b60008173ffffffffffffffffffffffffffffffffffffffff1660001b9050919050565b6060828260405160200161013d92919061067e565b604051602081830303815290604052905092915050565b6000808351905060006020850190506101758464ffffffffff1682846101a4565b9250505092915050565b600061019d6020808462ffffff191661020b9092919063ffffffff16565b9050919050565b60008082846101b391906106d9565b90506040518111156101c457600090505b600081036101f5577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000915050610204565b610200858585610242565b9150505b9392505050565b6000600882602061021c919061071a565b610226919061074f565b60ff1661023485858561026d565b60001c901c90509392505050565b60008060609050600060189050858317821b9250848317821b9250838317811b925050509392505050565b6000808260ff1603610284576000801b90506103aa565b61028d846103b1565b6bffffffffffffffffffffffff168260ff16846102aa91906106d9565b1115610327576102eb6102bc856103d7565b6bffffffffffffffffffffffff166102d3866103b1565b6bffffffffffffffffffffffff16858560ff16610400565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161031e919061081c565b60405180910390fd5b60208260ff16111561036e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610365906108b0565b60405180910390fd5b60006008830290506000610381866103d7565b6bffffffffffffffffffffffff169050600061039c8361046e565b905080868301511693505050505b9392505050565b6000806bffffffffffffffffffffffff90506000601890508184821c1692505050919050565b6000806bffffffffffffffffffffffff90506000607860ff1690508184821c1692505050919050565b6060600061040d8661049d565b915050600061041b8661049d565b91505060006104298661049d565b91505060006104378661049d565b915050838383836040516020016104519493929190610a9f565b604051602081830303815290604052945050505050949350505050565b60007f8000000000000000000000000000000000000000000000000000000000000000600183031d9050919050565b6000806000601f90505b600f8160ff1611156104fa5760006008826104c2919061074f565b60ff1685901c90506104d38161055b565b61ffff168417935060108260ff16146104ee57601084901b93505b600182039150506104a7565b506000600f90505b60ff8160ff16101561055557600060088261051d919061074f565b60ff1685901c905061052e8161055b565b61ffff168317925060008260ff161461054957601083901b92505b60018203915050610502565b50915091565b600061056d60048360ff16901c610594565b60ff168117905060088161ffff16901b905061058882610594565b60ff1681179050919050565b600080600f831690506040518060400160405280601081526020017f30313233343536373839616263646566000000000000000000000000000000008152508160ff16815181106105e8576105e7610b24565b5b602001015160f81c60f81b60f81c915050919050565b6000819050919050565b610611816105fe565b82525050565b600060208201905061062c6000830184610608565b92915050565b6000819050919050565b6000819050919050565b61065761065282610632565b61063c565b82525050565b6000819050919050565b610678610673826105fe565b61065d565b82525050565b600061068a8285610646565b60208201915061069a8284610667565b6020820191508190509392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006106e4826105fe565b91506106ef836105fe565b9250828201905080821115610707576107066106aa565b5b92915050565b600060ff82169050919050565b60006107258261070d565b91506107308361070d565b9250828203905060ff811115610749576107486106aa565b5b92915050565b600061075a8261070d565b91506107658361070d565b92508282026107738161070d565b9150808214610785576107846106aa565b5b5092915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156107c65780820151818401526020810190506107ab565b60008484015250505050565b6000601f19601f8301169050919050565b60006107ee8261078c565b6107f88185610797565b93506108088185602086016107a8565b610811816107d2565b840191505092915050565b6000602082019050818103600083015261083681846107e3565b905092915050565b7f54797065644d656d566965772f696e646578202d20417474656d70746564207460008201527f6f20696e646578206d6f7265207468616e203332206279746573000000000000602082015250565b600061089a603a83610797565b91506108a58261083e565b604082019050919050565b600060208201905081810360008301526108c98161088d565b9050919050565b600081905092915050565b7f54797065644d656d566965772f696e646578202d204f76657272616e2074686560008201527f20766965772e20536c6963652069732061742030780000000000000000000000602082015250565b60006109376035836108d0565b9150610942826108db565b603582019050919050565b600065ffffffffffff82169050919050565b60008160d01b9050919050565b60006109778261095f565b9050919050565b61098f61098a8261094d565b61096c565b82525050565b7f2077697468206c656e6774682030780000000000000000000000000000000000600082015250565b60006109cb600f836108d0565b91506109d682610995565b600f82019050919050565b7f2e20417474656d7074656420746f20696e646578206174206f6666736574203060008201527f7800000000000000000000000000000000000000000000000000000000000000602082015250565b6000610a3d6021836108d0565b9150610a48826109e1565b602182019050919050565b7f2e00000000000000000000000000000000000000000000000000000000000000600082015250565b6000610a896001836108d0565b9150610a9482610a53565b600182019050919050565b6000610aaa8261092a565b9150610ab6828761097e565b600682019150610ac5826109be565b9150610ad1828661097e565b600682019150610ae082610a30565b9150610aec828561097e565b600682019150610afb826109be565b9150610b07828461097e565b600682019150610b1682610a7c565b915081905095945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea264697066735822122095f41e3f6c8bdc9343fb4a3b6d0e516893fd3b2ec884a4e3faeae5c1c1cf919364736f6c63430008110033",
"opcodes": "PUSH2 0xB89 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 0x35 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xFDC85308 EQ PUSH2 0x3A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x46 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4F PUSH2 0x51 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 PUSH2 0x70 PUSH20 0xE0F5206BBD039E7B0592D8918820024E2A7437B9 PUSH2 0x105 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 0xA0 DUP3 PUSH1 0x0 ADD MLOAD DUP4 PUSH1 0x20 ADD MLOAD PUSH2 0x128 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xB8 PUSH1 0x0 DUP4 PUSH2 0x154 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xC5 DUP3 PUSH2 0x17F JUMP JUMPDEST SWAP1 POP PUSH32 0xEE0E21A0909C175792D67FA4E7C4F99D844405993E69B1AC9985AF378F4CDA4B DUP2 PUSH1 0x40 MLOAD PUSH2 0xF6 SWAP2 SWAP1 PUSH2 0x617 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 0x13D SWAP3 SWAP2 SWAP1 PUSH2 0x67E 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 0x175 DUP5 PUSH5 0xFFFFFFFFFF AND DUP3 DUP5 PUSH2 0x1A4 JUMP JUMPDEST SWAP3 POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x19D PUSH1 0x20 DUP1 DUP5 PUSH3 0xFFFFFF NOT AND PUSH2 0x20B SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 PUSH2 0x1B3 SWAP2 SWAP1 PUSH2 0x6D9 JUMP JUMPDEST SWAP1 POP PUSH1 0x40 MLOAD DUP2 GT ISZERO PUSH2 0x1C4 JUMPI PUSH1 0x0 SWAP1 POP JUMPDEST PUSH1 0x0 DUP2 SUB PUSH2 0x1F5 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000 SWAP2 POP POP PUSH2 0x204 JUMP JUMPDEST PUSH2 0x200 DUP6 DUP6 DUP6 PUSH2 0x242 JUMP JUMPDEST SWAP2 POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x8 DUP3 PUSH1 0x20 PUSH2 0x21C SWAP2 SWAP1 PUSH2 0x71A JUMP JUMPDEST PUSH2 0x226 SWAP2 SWAP1 PUSH2 0x74F JUMP JUMPDEST PUSH1 0xFF AND PUSH2 0x234 DUP6 DUP6 DUP6 PUSH2 0x26D 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 0x284 JUMPI PUSH1 0x0 DUP1 SHL SWAP1 POP PUSH2 0x3AA JUMP JUMPDEST PUSH2 0x28D DUP5 PUSH2 0x3B1 JUMP JUMPDEST PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH1 0xFF AND DUP5 PUSH2 0x2AA SWAP2 SWAP1 PUSH2 0x6D9 JUMP JUMPDEST GT ISZERO PUSH2 0x327 JUMPI PUSH2 0x2EB PUSH2 0x2BC DUP6 PUSH2 0x3D7 JUMP JUMPDEST PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2D3 DUP7 PUSH2 0x3B1 JUMP JUMPDEST PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 DUP6 PUSH1 0xFF AND PUSH2 0x400 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x31E SWAP2 SWAP1 PUSH2 0x81C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x20 DUP3 PUSH1 0xFF AND GT ISZERO PUSH2 0x36E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x365 SWAP1 PUSH2 0x8B0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x8 DUP4 MUL SWAP1 POP PUSH1 0x0 PUSH2 0x381 DUP7 PUSH2 0x3D7 JUMP JUMPDEST PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 PUSH2 0x39C DUP4 PUSH2 0x46E 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 0x40D DUP7 PUSH2 0x49D JUMP JUMPDEST SWAP2 POP POP PUSH1 0x0 PUSH2 0x41B DUP7 PUSH2 0x49D JUMP JUMPDEST SWAP2 POP POP PUSH1 0x0 PUSH2 0x429 DUP7 PUSH2 0x49D JUMP JUMPDEST SWAP2 POP POP PUSH1 0x0 PUSH2 0x437 DUP7 PUSH2 0x49D JUMP JUMPDEST SWAP2 POP POP DUP4 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x451 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xA9F 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 0x4FA JUMPI PUSH1 0x0 PUSH1 0x8 DUP3 PUSH2 0x4C2 SWAP2 SWAP1 PUSH2 0x74F JUMP JUMPDEST PUSH1 0xFF AND DUP6 SWAP1 SHR SWAP1 POP PUSH2 0x4D3 DUP2 PUSH2 0x55B JUMP JUMPDEST PUSH2 0xFFFF AND DUP5 OR SWAP4 POP PUSH1 0x10 DUP3 PUSH1 0xFF AND EQ PUSH2 0x4EE JUMPI PUSH1 0x10 DUP5 SWAP1 SHL SWAP4 POP JUMPDEST PUSH1 0x1 DUP3 SUB SWAP2 POP POP PUSH2 0x4A7 JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0xF SWAP1 POP JUMPDEST PUSH1 0xFF DUP2 PUSH1 0xFF AND LT ISZERO PUSH2 0x555 JUMPI PUSH1 0x0 PUSH1 0x8 DUP3 PUSH2 0x51D SWAP2 SWAP1 PUSH2 0x74F JUMP JUMPDEST PUSH1 0xFF AND DUP6 SWAP1 SHR SWAP1 POP PUSH2 0x52E DUP2 PUSH2 0x55B JUMP JUMPDEST PUSH2 0xFFFF AND DUP4 OR SWAP3 POP PUSH1 0x0 DUP3 PUSH1 0xFF AND EQ PUSH2 0x549 JUMPI PUSH1 0x10 DUP4 SWAP1 SHL SWAP3 POP JUMPDEST PUSH1 0x1 DUP3 SUB SWAP2 POP POP PUSH2 0x502 JUMP JUMPDEST POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x56D PUSH1 0x4 DUP4 PUSH1 0xFF AND SWAP1 SHR PUSH2 0x594 JUMP JUMPDEST PUSH1 0xFF AND DUP2 OR SWAP1 POP PUSH1 0x8 DUP2 PUSH2 0xFFFF AND SWAP1 SHL SWAP1 POP PUSH2 0x588 DUP3 PUSH2 0x594 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 0x5E8 JUMPI PUSH2 0x5E7 PUSH2 0xB24 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 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x611 DUP2 PUSH2 0x5FE JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x62C PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x608 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x657 PUSH2 0x652 DUP3 PUSH2 0x632 JUMP JUMPDEST PUSH2 0x63C JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x678 PUSH2 0x673 DUP3 PUSH2 0x5FE JUMP JUMPDEST PUSH2 0x65D JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x68A DUP3 DUP6 PUSH2 0x646 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH2 0x69A DUP3 DUP5 PUSH2 0x667 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 0x6E4 DUP3 PUSH2 0x5FE JUMP JUMPDEST SWAP2 POP PUSH2 0x6EF DUP4 PUSH2 0x5FE JUMP JUMPDEST SWAP3 POP DUP3 DUP3 ADD SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x707 JUMPI PUSH2 0x706 PUSH2 0x6AA 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 0x725 DUP3 PUSH2 0x70D JUMP JUMPDEST SWAP2 POP PUSH2 0x730 DUP4 PUSH2 0x70D JUMP JUMPDEST SWAP3 POP DUP3 DUP3 SUB SWAP1 POP PUSH1 0xFF DUP2 GT ISZERO PUSH2 0x749 JUMPI PUSH2 0x748 PUSH2 0x6AA JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x75A DUP3 PUSH2 0x70D JUMP JUMPDEST SWAP2 POP PUSH2 0x765 DUP4 PUSH2 0x70D JUMP JUMPDEST SWAP3 POP DUP3 DUP3 MUL PUSH2 0x773 DUP2 PUSH2 0x70D JUMP JUMPDEST SWAP2 POP DUP1 DUP3 EQ PUSH2 0x785 JUMPI PUSH2 0x784 PUSH2 0x6AA 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 0x7C6 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x7AB 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 0x7EE DUP3 PUSH2 0x78C JUMP JUMPDEST PUSH2 0x7F8 DUP2 DUP6 PUSH2 0x797 JUMP JUMPDEST SWAP4 POP PUSH2 0x808 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x7A8 JUMP JUMPDEST PUSH2 0x811 DUP2 PUSH2 0x7D2 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 0x836 DUP2 DUP5 PUSH2 0x7E3 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 0x89A PUSH1 0x3A DUP4 PUSH2 0x797 JUMP JUMPDEST SWAP2 POP PUSH2 0x8A5 DUP3 PUSH2 0x83E 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 0x8C9 DUP2 PUSH2 0x88D 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 0x937 PUSH1 0x35 DUP4 PUSH2 0x8D0 JUMP JUMPDEST SWAP2 POP PUSH2 0x942 DUP3 PUSH2 0x8DB 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 0x977 DUP3 PUSH2 0x95F JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x98F PUSH2 0x98A DUP3 PUSH2 0x94D JUMP JUMPDEST PUSH2 0x96C JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH32 0x2077697468206C656E6774682030780000000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9CB PUSH1 0xF DUP4 PUSH2 0x8D0 JUMP JUMPDEST SWAP2 POP PUSH2 0x9D6 DUP3 PUSH2 0x995 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 0xA3D PUSH1 0x21 DUP4 PUSH2 0x8D0 JUMP JUMPDEST SWAP2 POP PUSH2 0xA48 DUP3 PUSH2 0x9E1 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 0xA89 PUSH1 0x1 DUP4 PUSH2 0x8D0 JUMP JUMPDEST SWAP2 POP PUSH2 0xA94 DUP3 PUSH2 0xA53 JUMP JUMPDEST PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAAA DUP3 PUSH2 0x92A JUMP JUMPDEST SWAP2 POP PUSH2 0xAB6 DUP3 DUP8 PUSH2 0x97E JUMP JUMPDEST PUSH1 0x6 DUP3 ADD SWAP2 POP PUSH2 0xAC5 DUP3 PUSH2 0x9BE JUMP JUMPDEST SWAP2 POP PUSH2 0xAD1 DUP3 DUP7 PUSH2 0x97E JUMP JUMPDEST PUSH1 0x6 DUP3 ADD SWAP2 POP PUSH2 0xAE0 DUP3 PUSH2 0xA30 JUMP JUMPDEST SWAP2 POP PUSH2 0xAEC DUP3 DUP6 PUSH2 0x97E JUMP JUMPDEST PUSH1 0x6 DUP3 ADD SWAP2 POP PUSH2 0xAFB DUP3 PUSH2 0x9BE JUMP JUMPDEST SWAP2 POP PUSH2 0xB07 DUP3 DUP5 PUSH2 0x97E JUMP JUMPDEST PUSH1 0x6 DUP3 ADD SWAP2 POP PUSH2 0xB16 DUP3 PUSH2 0xA7C 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 SWAP6 DELEGATECALL 0x1E EXTCODEHASH PUSH13 0x8BDC9343FB4A3B6D0E516893FD EXTCODESIZE 0x2E 0xC8 DUP5 LOG4 0xE3 STATICCALL 0xEA 0xE5 0xC1 0xC1 0xCF SWAP2 SWAP4 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP CALLER ",
"sourceMap": "91:1197:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
},
"deployedBytecode": {
"functionDebugData": {
"@_amount_67": {
"entryPoint": 383,
"id": 67,
"parameterSlots": 1,
"returnSlots": 1
},
"@addressToBytes32_86": {
"entryPoint": 261,
"id": 86,
"parameterSlots": 1,
"returnSlots": 1
},
"@build_644": {
"entryPoint": 420,
"id": 644,
"parameterSlots": 3,
"returnSlots": 1
},
"@byteHex_209": {
"entryPoint": 1371,
"id": 209,
"parameterSlots": 1,
"returnSlots": 1
},
"@encodeHex_302": {
"entryPoint": 1181,
"id": 302,
"parameterSlots": 1,
"returnSlots": 2
},
"@formatSample_33": {
"entryPoint": 296,
"id": 33,
"parameterSlots": 2,
"returnSlots": 1
},
"@indexErrOverrun_956": {
"entryPoint": 1024,
"id": 956,
"parameterSlots": 4,
"returnSlots": 1
},
"@indexUint_1063": {
"entryPoint": 523,
"id": 1063,
"parameterSlots": 3,
"returnSlots": 1
},
"@index_1033": {
"entryPoint": 621,
"id": 1033,
"parameterSlots": 3,
"returnSlots": 1
},
"@leftMask_409": {
"entryPoint": 1134,
"id": 409,
"parameterSlots": 1,
"returnSlots": 1
},
"@len_776": {
"entryPoint": 945,
"id": 776,
"parameterSlots": 1,
"returnSlots": 1
},
"@loc_722": {
"entryPoint": 983,
"id": 722,
"parameterSlots": 1,
"returnSlots": 1
},
"@nibbleHex_182": {
"entryPoint": 1428,
"id": 182,
"parameterSlots": 1,
"returnSlots": 1
},
"@ref_670": {
"entryPoint": 340,
"id": 670,
"parameterSlots": 2,
"returnSlots": 1
},
"@tryIt_131": {
"entryPoint": 81,
"id": 131,
"parameterSlots": 0,
"returnSlots": 0
},
"@unsafeBuildUnchecked_609": {
"entryPoint": 578,
"id": 609,
"parameterSlots": 3,
"returnSlots": 1
},
"abi_encode_t_bytes32_to_t_bytes32_nonPadded_inplace_fromStack": {
"entryPoint": 1606,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack": {
"entryPoint": 2019,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_t_stringliteral_3e6849d566dba71a1ac686a5bd3af1bed003e25465c91471808028cdad9d144b_to_t_string_memory_ptr_nonPadded_inplace_fromStack": {
"entryPoint": 2494,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_6f010af653ebe3cb07d297a4ef13366103d392ceffa68dd48232e6e9ff2187bf_to_t_string_memory_ptr_nonPadded_inplace_fromStack": {
"entryPoint": 2684,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_76d133faf43042eef7167f01d32e0891632a5651573db9fc8b6aa42fdbcaf509_to_t_string_memory_ptr_nonPadded_inplace_fromStack": {
"entryPoint": 2608,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_b2c061d25dd4dec479f0720f15754fff58a1a4debc7353bd1d3f4b7b23876297_to_t_string_memory_ptr_fromStack": {
"entryPoint": 2189,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_fb6c6ce939dcb005b895abe7a9570250d9c1c31a5440a6a6e28e0acc2d1c6af1_to_t_string_memory_ptr_nonPadded_inplace_fromStack": {
"entryPoint": 2346,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_uint256_to_t_uint256_fromStack": {
"entryPoint": 1544,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_uint256_to_t_uint256_nonPadded_inplace_fromStack": {
"entryPoint": 1639,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_uint48_to_t_uint48_nonPadded_inplace_fromStack": {
"entryPoint": 2430,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_tuple_packed_t_bytes32_t_uint256__to_t_bytes32_t_uint256__nonPadded_inplace_fromStack_reversed": {
"entryPoint": 1662,
"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": 2719,
"id": null,
"parameterSlots": 5,
"returnSlots": 1
},
"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 2076,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_b2c061d25dd4dec479f0720f15754fff58a1a4debc7353bd1d3f4b7b23876297__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 2224,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
"entryPoint": 1559,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"array_length_t_string_memory_ptr": {
"entryPoint": 1932,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"array_storeLengthForEncoding_t_string_memory_ptr_fromStack": {
"entryPoint": 1943,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack": {
"entryPoint": 2256,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"checked_add_t_uint256": {
"entryPoint": 1753,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"checked_mul_t_uint8": {
"entryPoint": 1871,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"checked_sub_t_uint8": {
"entryPoint": 1818,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"cleanup_t_bytes32": {
"entryPoint": 1586,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_uint256": {
"entryPoint": 1534,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_uint48": {
"entryPoint": 2381,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_uint8": {
"entryPoint": 1805,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"copy_memory_to_memory_with_cleanup": {
"entryPoint": 1960,
"id": null,
"parameterSlots": 3,
"returnSlots": 0
},
"leftAlign_t_bytes32": {
"entryPoint": 1596,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"leftAlign_t_uint256": {
"entryPoint": 1629,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"leftAlign_t_uint48": {
"entryPoint": 2412,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"panic_error_0x11": {
"entryPoint": 1706,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"panic_error_0x32": {
"entryPoint": 2852,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"round_up_to_mul_of_32": {
"entryPoint": 2002,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"shift_left_208": {
"entryPoint": 2399,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"store_literal_in_memory_3e6849d566dba71a1ac686a5bd3af1bed003e25465c91471808028cdad9d144b": {
"entryPoint": 2453,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_6f010af653ebe3cb07d297a4ef13366103d392ceffa68dd48232e6e9ff2187bf": {
"entryPoint": 2643,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_76d133faf43042eef7167f01d32e0891632a5651573db9fc8b6aa42fdbcaf509": {
"entryPoint": 2529,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_b2c061d25dd4dec479f0720f15754fff58a1a4debc7353bd1d3f4b7b23876297": {
"entryPoint": 2110,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_fb6c6ce939dcb005b895abe7a9570250d9c1c31a5440a6a6e28e0acc2d1c6af1": {
"entryPoint": 2267,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
}
},
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:9989:2",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "52:32:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "62:16:2",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "73:5:2"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "62:7:2"
}
]
}
]
},
"name": "cleanup_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "34:5:2",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "44:7:2",
"type": ""
}
],
"src": "7:77:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "155:53:2",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "172:3:2"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "195:5:2"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "177:17:2"
},
"nodeType": "YulFunctionCall",
"src": "177:24:2"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "165:6:2"
},
"nodeType": "YulFunctionCall",
"src": "165:37:2"
},
"nodeType": "YulExpressionStatement",
"src": "165:37:2"
}
]
},
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "143:5:2",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "150:3:2",
"type": ""
}
],
"src": "90:118:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "312:124:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "322:26:2",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "334:9:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "345:2:2",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "330:3:2"
},
"nodeType": "YulFunctionCall",
"src": "330:18:2"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "322:4:2"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "402:6:2"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "415:9:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "426:1:2",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "411:3:2"
},
"nodeType": "YulFunctionCall",
"src": "411:17:2"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulIdentifier",
"src": "358:43:2"
},
"nodeType": "YulFunctionCall",
"src": "358:71:2"
},
"nodeType": "YulExpressionStatement",
"src": "358:71:2"
}
]
},
"name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "284:9:2",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "296:6:2",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "307:4:2",
"type": ""
}
],
"src": "214:222:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "487:32:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "497:16:2",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "508:5:2"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "497:7:2"
}
]
}
]
},
"name": "cleanup_t_bytes32",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "469:5:2",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "479:7:2",
"type": ""
}
],
"src": "442:77:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "572:32:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "582:16:2",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "593:5:2"
},
"variableNames": [
{
"name": "aligned",
"nodeType": "YulIdentifier",
"src": "582:7:2"
}
]
}
]
},
"name": "leftAlign_t_bytes32",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "554:5:2",
"type": ""
}
],
"returnVariables": [
{
"name": "aligned",
"nodeType": "YulTypedName",
"src": "564:7:2",
"type": ""
}
],
"src": "525:79:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "693:74:2",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "710:3:2"
},
{
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "753:5:2"
}
],
"functionName": {
"name": "cleanup_t_bytes32",
"nodeType": "YulIdentifier",
"src": "735:17:2"
},
"nodeType": "YulFunctionCall",
"src": "735:24:2"
}
],
"functionName": {
"name": "leftAlign_t_bytes32",
"nodeType": "YulIdentifier",
"src": "715:19:2"
},
"nodeType": "YulFunctionCall",
"src": "715:45:2"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "703:6:2"
},
"nodeType": "YulFunctionCall",
"src": "703:58:2"
},
"nodeType": "YulExpressionStatement",
"src": "703:58:2"
}
]
},
"name": "abi_encode_t_bytes32_to_t_bytes32_nonPadded_inplace_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "681:5:2",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "688:3:2",
"type": ""
}
],
"src": "610:157:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "820:32:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "830:16:2",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "841:5:2"
},
"variableNames": [
{
"name": "aligned",
"nodeType": "YulIdentifier",
"src": "830:7:2"
}
]
}
]
},
"name": "leftAlign_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "802:5:2",
"type": ""
}
],
"returnVariables": [
{
"name": "aligned",
"nodeType": "YulTypedName",
"src": "812:7:2",
"type": ""
}
],
"src": "773:79:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "941:74:2",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "958:3:2"
},
{
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1001:5:2"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "983:17:2"
},
"nodeType": "YulFunctionCall",
"src": "983:24:2"
}
],
"functionName": {
"name": "leftAlign_t_uint256",
"nodeType": "YulIdentifier",
"src": "963:19:2"
},
"nodeType": "YulFunctionCall",
"src": "963:45:2"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "951:6:2"
},
"nodeType": "YulFunctionCall",
"src": "951:58:2"
},
"nodeType": "YulExpressionStatement",
"src": "951:58:2"
}
]
},
"name": "abi_encode_t_uint256_to_t_uint256_nonPadded_inplace_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "929:5:2",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "936:3:2",
"type": ""
}
],
"src": "858:157:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1165:253:2",
"statements": [
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "1238:6:2"
},
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "1247:3:2"
}
],
"functionName": {
"name": "abi_encode_t_bytes32_to_t_bytes32_nonPadded_inplace_fromStack",
"nodeType": "YulIdentifier",
"src": "1176:61:2"
},
"nodeType": "YulFunctionCall",
"src": "1176:75:2"
},
"nodeType": "YulExpressionStatement",
"src": "1176:75:2"
},
{
"nodeType": "YulAssignment",
"src": "1260:19:2",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "1271:3:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1276:2:2",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1267:3:2"
},
"nodeType": "YulFunctionCall",
"src": "1267:12:2"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "1260:3:2"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "1351:6:2"
},
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "1360:3:2"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_nonPadded_inplace_fromStack",
"nodeType": "YulIdentifier",
"src": "1289:61:2"
},
"nodeType": "YulFunctionCall",
"src": "1289:75:2"
},
"nodeType": "YulExpressionStatement",
"src": "1289:75:2"
},
{
"nodeType": "YulAssignment",
"src": "1373:19:2",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "1384:3:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1389:2:2",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1380:3:2"
},
"nodeType": "YulFunctionCall",
"src": "1380:12:2"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "1373:3:2"
}
]
},
{
"nodeType": "YulAssignment",
"src": "1402:10:2",
"value": {
"name": "pos",
"nodeType": "YulIdentifier",
"src": "1409:3:2"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "1402: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": "1136:3:2",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "1142:6:2",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "1150:6:2",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "1161:3:2",
"type": ""
}
],
"src": "1021:397:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1452:152:2",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1469:1:2",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1472:77:2",
"type": "",
"value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1462:6:2"
},
"nodeType": "YulFunctionCall",
"src": "1462:88:2"
},
"nodeType": "YulExpressionStatement",
"src": "1462:88:2"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1566:1:2",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1569:4:2",
"type": "",
"value": "0x11"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1559:6:2"
},
"nodeType": "YulFunctionCall",
"src": "1559:15:2"
},
"nodeType": "YulExpressionStatement",
"src": "1559:15:2"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1590:1:2",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1593:4:2",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "1583:6:2"
},
"nodeType": "YulFunctionCall",
"src": "1583:15:2"
},
"nodeType": "YulExpressionStatement",
"src": "1583:15:2"
}
]
},
"name": "panic_error_0x11",
"nodeType": "YulFunctionDefinition",
"src": "1424:180:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1654:147:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1664:25:2",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "1687:1:2"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "1669:17:2"
},
"nodeType": "YulFunctionCall",
"src": "1669:20:2"
},
"variableNames": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "1664:1:2"
}
]
},
{
"nodeType": "YulAssignment",
"src": "1698:25:2",
"value": {
"arguments": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "1721:1:2"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "1703:17:2"
},
"nodeType": "YulFunctionCall",
"src": "1703:20:2"
},
"variableNames": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "1698:1:2"
}
]
},
{
"nodeType": "YulAssignment",
"src": "1732:16:2",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "1743:1:2"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "1746:1:2"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1739:3:2"
},
"nodeType": "YulFunctionCall",
"src": "1739:9:2"
},
"variableNames": [
{
"name": "sum",
"nodeType": "YulIdentifier",
"src": "1732:3:2"
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "1772:22:2",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nodeType": "YulIdentifier",
"src": "1774:16:2"
},
"nodeType": "YulFunctionCall",
"src": "1774:18:2"
},
"nodeType": "YulExpressionStatement",
"src": "1774:18:2"
}
]
},
"condition": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "1764:1:2"
},
{
"name": "sum",
"nodeType": "YulIdentifier",
"src": "1767:3:2"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "1761:2:2"
},
"nodeType": "YulFunctionCall",
"src": "1761:10:2"
},
"nodeType": "YulIf",
"src": "1758:36:2"
}
]
},
"name": "checked_add_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "x",
"nodeType": "YulTypedName",
"src": "1641:1:2",
"type": ""
},
{
"name": "y",
"nodeType": "YulTypedName",
"src": "1644:1:2",
"type": ""
}
],
"returnVariables": [
{
"name": "sum",
"nodeType": "YulTypedName",
"src": "1650:3:2",
"type": ""
}
],
"src": "1610:191:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1850:43:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1860:27:2",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1875:5:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1882:4:2",
"type": "",
"value": "0xff"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "1871:3:2"
},
"nodeType": "YulFunctionCall",
"src": "1871:16:2"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "1860:7:2"
}
]
}
]
},
"name": "cleanup_t_uint8",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1832:5:2",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "1842:7:2",
"type": ""
}
],
"src": "1807:86:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1942:148:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1952:23:2",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "1973:1:2"
}
],
"functionName": {
"name": "cleanup_t_uint8",
"nodeType": "YulIdentifier",
"src": "1957:15:2"
},
"nodeType": "YulFunctionCall",
"src": "1957:18:2"
},
"variableNames": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "1952:1:2"
}
]
},
{
"nodeType": "YulAssignment",
"src": "1984:23:2",
"value": {
"arguments": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "2005:1:2"
}
],
"functionName": {
"name": "cleanup_t_uint8",
"nodeType": "YulIdentifier",
"src": "1989:15:2"
},
"nodeType": "YulFunctionCall",
"src": "1989:18:2"
},
"variableNames": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "1984:1:2"
}
]
},
{
"nodeType": "YulAssignment",
"src": "2016:17:2",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "2028:1:2"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "2031:1:2"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "2024:3:2"
},
"nodeType": "YulFunctionCall",
"src": "2024:9:2"
},
"variableNames": [
{
"name": "diff",
"nodeType": "YulIdentifier",
"src": "2016:4:2"
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "2061:22:2",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nodeType": "YulIdentifier",
"src": "2063:16:2"
},
"nodeType": "YulFunctionCall",
"src": "2063:18:2"
},
"nodeType": "YulExpressionStatement",
"src": "2063:18:2"
}
]
},
"condition": {
"arguments": [
{
"name": "diff",
"nodeType": "YulIdentifier",
"src": "2049:4:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2055:4:2",
"type": "",
"value": "0xff"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "2046:2:2"
},
"nodeType": "YulFunctionCall",
"src": "2046:14:2"
},
"nodeType": "YulIf",
"src": "2043:40:2"
}
]
},
"name": "checked_sub_t_uint8",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "x",
"nodeType": "YulTypedName",
"src": "1928:1:2",
"type": ""
},
{
"name": "y",
"nodeType": "YulTypedName",
"src": "1931:1:2",
"type": ""
}
],
"returnVariables": [
{
"name": "diff",
"nodeType": "YulTypedName",
"src": "1937:4:2",
"type": ""
}
],
"src": "1899:191:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2142:225:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2152:23:2",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "2173:1:2"
}
],
"functionName": {
"name": "cleanup_t_uint8",
"nodeType": "YulIdentifier",
"src": "2157:15:2"
},
"nodeType": "YulFunctionCall",
"src": "2157:18:2"
},
"variableNames": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "2152:1:2"
}
]
},
{
"nodeType": "YulAssignment",
"src": "2184:23:2",
"value": {
"arguments": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "2205:1:2"
}
],
"functionName": {
"name": "cleanup_t_uint8",
"nodeType": "YulIdentifier",
"src": "2189:15:2"
},
"nodeType": "YulFunctionCall",
"src": "2189:18:2"
},
"variableNames": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "2184:1:2"
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "2216:28:2",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "2239:1:2"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "2242:1:2"
}
],
"functionName": {
"name": "mul",
"nodeType": "YulIdentifier",
"src": "2235:3:2"
},
"nodeType": "YulFunctionCall",
"src": "2235:9:2"
},
"variables": [
{
"name": "product_raw",
"nodeType": "YulTypedName",
"src": "2220:11:2",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "2253:39:2",
"value": {
"arguments": [
{
"name": "product_raw",
"nodeType": "YulIdentifier",
"src": "2280:11:2"
}
],
"functionName": {
"name": "cleanup_t_uint8",
"nodeType": "YulIdentifier",
"src": "2264:15:2"
},
"nodeType": "YulFunctionCall",
"src": "2264:28:2"
},
"variableNames": [
{
"name": "product",
"nodeType": "YulIdentifier",
"src": "2253:7:2"
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "2338:22:2",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nodeType": "YulIdentifier",
"src": "2340:16:2"
},
"nodeType": "YulFunctionCall",
"src": "2340:18:2"
},
"nodeType": "YulExpressionStatement",
"src": "2340:18:2"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "product",
"nodeType": "YulIdentifier",
"src": "2315:7:2"
},
{
"name": "product_raw",
"nodeType": "YulIdentifier",
"src": "2324:11:2"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "2312:2:2"
},
"nodeType": "YulFunctionCall",
"src": "2312:24:2"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "2305:6:2"
},
"nodeType": "YulFunctionCall",
"src": "2305:32:2"
},
"nodeType": "YulIf",
"src": "2302:58:2"
}
]
},
"name": "checked_mul_t_uint8",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "x",
"nodeType": "YulTypedName",
"src": "2125:1:2",
"type": ""
},
{
"name": "y",
"nodeType": "YulTypedName",
"src": "2128:1:2",
"type": ""
}
],
"returnVariables": [
{
"name": "product",
"nodeType": "YulTypedName",
"src": "2134:7:2",
"type": ""
}
],
"src": "2096:271:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2432:40:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2443:22:2",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2459:5:2"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "2453:5:2"
},
"nodeType": "YulFunctionCall",
"src": "2453:12:2"
},
"variableNames": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "2443:6:2"
}
]
}
]
},
"name": "array_length_t_string_memory_ptr",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "2415:5:2",
"type": ""
}
],
"returnVariables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "2425:6:2",
"type": ""
}
],
"src": "2373:99:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2574:73:2",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "2591:3:2"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "2596:6:2"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "2584:6:2"
},
"nodeType": "YulFunctionCall",
"src": "2584:19:2"
},
"nodeType": "YulExpressionStatement",
"src": "2584:19:2"
},
{
"nodeType": "YulAssignment",
"src": "2612:29:2",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "2631:3:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2636:4:2",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2627:3:2"
},
"nodeType": "YulFunctionCall",
"src": "2627:14:2"
},
"variableNames": [
{
"name": "updated_pos",
"nodeType": "YulIdentifier",
"src": "2612:11:2"
}
]
}
]
},
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "2546:3:2",
"type": ""
},
{
"name": "length",
"nodeType": "YulTypedName",
"src": "2551:6:2",
"type": ""
}
],
"returnVariables": [
{
"name": "updated_pos",
"nodeType": "YulTypedName",
"src": "2562:11:2",
"type": ""
}
],
"src": "2478:169:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2715:184:2",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "2725:10:2",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "2734:1:2",
"type": "",
"value": "0"
},
"variables": [
{
"name": "i",
"nodeType": "YulTypedName",
"src": "2729:1:2",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "2794:63:2",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "2819:3:2"
},
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "2824:1:2"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2815:3:2"
},
"nodeType": "YulFunctionCall",
"src": "2815:11:2"
},
{
"arguments": [
{
"arguments": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "2838:3:2"
},
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "2843:1:2"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2834:3:2"
},
"nodeType": "YulFunctionCall",
"src": "2834:11:2"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "2828:5:2"
},
"nodeType": "YulFunctionCall",
"src": "2828:18:2"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "2808:6:2"
},
"nodeType": "YulFunctionCall",
"src": "2808:39:2"
},
"nodeType": "YulExpressionStatement",
"src": "2808:39:2"
}
]
},
"condition": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "2755:1:2"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "2758:6:2"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "2752:2:2"
},
"nodeType": "YulFunctionCall",
"src": "2752:13:2"
},
"nodeType": "YulForLoop",
"post": {
"nodeType": "YulBlock",
"src": "2766:19:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2768:15:2",
"value": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "2777:1:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2780:2:2",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2773:3:2"
},
"nodeType": "YulFunctionCall",
"src": "2773:10:2"
},
"variableNames": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "2768:1:2"
}
]
}
]
},
"pre": {
"nodeType": "YulBlock",
"src": "2748:3:2",
"statements": []
},
"src": "2744:113:2"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "2877:3:2"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "2882:6:2"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2873:3:2"
},
"nodeType": "YulFunctionCall",
"src": "2873:16:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2891:1:2",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "2866:6:2"
},
"nodeType": "YulFunctionCall",
"src": "2866:27:2"
},
"nodeType": "YulExpressionStatement",
"src": "2866:27:2"
}
]
},
"name": "copy_memory_to_memory_with_cleanup",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "src",
"nodeType": "YulTypedName",
"src": "2697:3:2",
"type": ""
},
{
"name": "dst",
"nodeType": "YulTypedName",
"src": "2702:3:2",
"type": ""
},
{
"name": "length",
"nodeType": "YulTypedName",
"src": "2707:6:2",
"type": ""
}
],
"src": "2653:246:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2953:54:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2963:38:2",
"value": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2981:5:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2988:2:2",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2977:3:2"
},
"nodeType": "YulFunctionCall",
"src": "2977:14:2"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2997:2:2",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "2993:3:2"
},
"nodeType": "YulFunctionCall",
"src": "2993:7:2"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "2973:3:2"
},
"nodeType": "YulFunctionCall",
"src": "2973:28:2"
},
"variableNames": [
{
"name": "result",
"nodeType": "YulIdentifier",
"src": "2963:6:2"
}
]
}
]
},
"name": "round_up_to_mul_of_32",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "2936:5:2",
"type": ""
}
],
"returnVariables": [
{
"name": "result",
"nodeType": "YulTypedName",
"src": "2946:6:2",
"type": ""
}
],
"src": "2905:102:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3105:285:2",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "3115:53:2",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "3162:5:2"
}
],
"functionName": {
"name": "array_length_t_string_memory_ptr",
"nodeType": "YulIdentifier",
"src": "3129:32:2"
},
"nodeType": "YulFunctionCall",
"src": "3129:39:2"
},
"variables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "3119:6:2",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "3177:78:2",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "3243:3:2"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "3248:6:2"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "3184:58:2"
},
"nodeType": "YulFunctionCall",
"src": "3184:71:2"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "3177:3:2"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "3303:5:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3310:4:2",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3299:3:2"
},
"nodeType": "YulFunctionCall",
"src": "3299:16:2"
},
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "3317:3:2"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "3322:6:2"
}
],
"functionName": {
"name": "copy_memory_to_memory_with_cleanup",
"nodeType": "YulIdentifier",
"src": "3264:34:2"
},
"nodeType": "YulFunctionCall",
"src": "3264:65:2"
},
"nodeType": "YulExpressionStatement",
"src": "3264:65:2"
},
{
"nodeType": "YulAssignment",
"src": "3338:46:2",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "3349:3:2"
},
{
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "3376:6:2"
}
],
"functionName": {
"name": "round_up_to_mul_of_32",
"nodeType": "YulIdentifier",
"src": "3354:21:2"
},
"nodeType": "YulFunctionCall",
"src": "3354:29:2"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3345:3:2"
},
"nodeType": "YulFunctionCall",
"src": "3345:39:2"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "3338:3:2"
}
]
}
]
},
"name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "3086:5:2",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "3093:3:2",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "3101:3:2",
"type": ""
}
],
"src": "3013:377:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3514:195:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "3524:26:2",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3536:9:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3547:2:2",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3532:3:2"
},
"nodeType": "YulFunctionCall",
"src": "3532:18:2"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "3524:4:2"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3571:9:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3582:1:2",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3567:3:2"
},
"nodeType": "YulFunctionCall",
"src": "3567:17:2"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "3590:4:2"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3596:9:2"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "3586:3:2"
},
"nodeType": "YulFunctionCall",
"src": "3586:20:2"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3560:6:2"
},
"nodeType": "YulFunctionCall",
"src": "3560:47:2"
},
"nodeType": "YulExpressionStatement",
"src": "3560:47:2"
},
{
"nodeType": "YulAssignment",
"src": "3616:86:2",
"value": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "3688:6:2"
},
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "3697:4:2"
}
],
"functionName": {
"name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "3624:63:2"
},
"nodeType": "YulFunctionCall",
"src": "3624:78:2"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "3616: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": "3486:9:2",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "3498:6:2",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "3509:4:2",
"type": ""
}
],
"src": "3396:313:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3821:139:2",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "3843:6:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3851:1:2",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3839:3:2"
},
"nodeType": "YulFunctionCall",
"src": "3839:14:2"
},
{
"hexValue": "54797065644d656d566965772f696e646578202d20417474656d707465642074",
"kind": "string",
"nodeType": "YulLiteral",
"src": "3855:34:2",
"type": "",
"value": "TypedMemView/index - Attempted t"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3832:6:2"
},
"nodeType": "YulFunctionCall",
"src": "3832:58:2"
},
"nodeType": "YulExpressionStatement",
"src": "3832:58:2"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "3911:6:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3919:2:2",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3907:3:2"
},
"nodeType": "YulFunctionCall",
"src": "3907:15:2"
},
{
"hexValue": "6f20696e646578206d6f7265207468616e203332206279746573",
"kind": "string",
"nodeType": "YulLiteral",
"src": "3924:28:2",
"type": "",
"value": "o index more than 32 bytes"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3900:6:2"
},
"nodeType": "YulFunctionCall",
"src": "3900:53:2"
},
"nodeType": "YulExpressionStatement",
"src": "3900:53:2"
}
]
},
"name": "store_literal_in_memory_b2c061d25dd4dec479f0720f15754fff58a1a4debc7353bd1d3f4b7b23876297",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "3813:6:2",
"type": ""
}
],
"src": "3715:245:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4112:220:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "4122:74:2",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "4188:3:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4193:2:2",
"type": "",
"value": "58"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "4129:58:2"
},
"nodeType": "YulFunctionCall",
"src": "4129:67:2"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "4122:3:2"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "4294:3:2"
}
],
"functionName": {
"name": "store_literal_in_memory_b2c061d25dd4dec479f0720f15754fff58a1a4debc7353bd1d3f4b7b23876297",
"nodeType": "YulIdentifier",
"src": "4205:88:2"
},
"nodeType": "YulFunctionCall",
"src": "4205:93:2"
},
"nodeType": "YulExpressionStatement",
"src": "4205:93:2"
},
{
"nodeType": "YulAssignment",
"src": "4307:19:2",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "4318:3:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4323:2:2",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4314:3:2"
},
"nodeType": "YulFunctionCall",
"src": "4314:12:2"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "4307:3:2"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_b2c061d25dd4dec479f0720f15754fff58a1a4debc7353bd1d3f4b7b23876297_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "4100:3:2",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "4108:3:2",
"type": ""
}
],
"src": "3966:366:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4509:248:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "4519:26:2",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4531:9:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4542:2:2",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4527:3:2"
},
"nodeType": "YulFunctionCall",
"src": "4527:18:2"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "4519:4:2"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4566:9:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4577:1:2",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4562:3:2"
},
"nodeType": "YulFunctionCall",
"src": "4562:17:2"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "4585:4:2"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4591:9:2"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "4581:3:2"
},
"nodeType": "YulFunctionCall",
"src": "4581:20:2"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "4555:6:2"
},
"nodeType": "YulFunctionCall",
"src": "4555:47:2"
},
"nodeType": "YulExpressionStatement",
"src": "4555:47:2"
},
{
"nodeType": "YulAssignment",
"src": "4611:139:2",
"value": {
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "4745:4:2"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_b2c061d25dd4dec479f0720f15754fff58a1a4debc7353bd1d3f4b7b23876297_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "4619:124:2"
},
"nodeType": "YulFunctionCall",
"src": "4619:131:2"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "4611:4:2"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_b2c061d25dd4dec479f0720f15754fff58a1a4debc7353bd1d3f4b7b23876297__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "4489:9:2",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "4504:4:2",
"type": ""
}
],
"src": "4338:419:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4877:34:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "4887:18:2",
"value": {
"name": "pos",
"nodeType": "YulIdentifier",
"src": "4902:3:2"
},
"variableNames": [
{
"name": "updated_pos",
"nodeType": "YulIdentifier",
"src": "4887:11:2"
}
]
}
]
},
"name": "array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "4849:3:2",
"type": ""
},
{
"name": "length",
"nodeType": "YulTypedName",
"src": "4854:6:2",
"type": ""
}
],
"returnVariables": [
{
"name": "updated_pos",
"nodeType": "YulTypedName",
"src": "4865:11:2",
"type": ""
}
],
"src": "4763:148:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5023:134:2",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "5045:6:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5053:1:2",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5041:3:2"
},
"nodeType": "YulFunctionCall",
"src": "5041:14:2"
},
{
"hexValue": "54797065644d656d566965772f696e646578202d204f76657272616e20746865",
"kind": "string",
"nodeType": "YulLiteral",
"src": "5057:34:2",
"type": "",
"value": "TypedMemView/index - Overran the"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "5034:6:2"
},
"nodeType": "YulFunctionCall",
"src": "5034:58:2"
},
"nodeType": "YulExpressionStatement",
"src": "5034:58:2"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "5113:6:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5121:2:2",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5109:3:2"
},
"nodeType": "YulFunctionCall",
"src": "5109:15:2"
},
{
"hexValue": "20766965772e20536c696365206973206174203078",
"kind": "string",
"nodeType": "YulLiteral",
"src": "5126:23:2",
"type": "",
"value": " view. Slice is at 0x"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "5102:6:2"
},
"nodeType": "YulFunctionCall",
"src": "5102:48:2"
},
"nodeType": "YulExpressionStatement",
"src": "5102:48:2"
}
]
},
"name": "store_literal_in_memory_fb6c6ce939dcb005b895abe7a9570250d9c1c31a5440a6a6e28e0acc2d1c6af1",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "5015:6:2",
"type": ""
}
],
"src": "4917:240:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5327:238:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "5337:92:2",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "5421:3:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5426:2:2",
"type": "",
"value": "53"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulIdentifier",
"src": "5344:76:2"
},
"nodeType": "YulFunctionCall",
"src": "5344:85:2"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "5337:3:2"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "5527:3:2"
}
],
"functionName": {
"name": "store_literal_in_memory_fb6c6ce939dcb005b895abe7a9570250d9c1c31a5440a6a6e28e0acc2d1c6af1",
"nodeType": "YulIdentifier",
"src": "5438:88:2"
},
"nodeType": "YulFunctionCall",
"src": "5438:93:2"
},
"nodeType": "YulExpressionStatement",
"src": "5438:93:2"
},
{
"nodeType": "YulAssignment",
"src": "5540:19:2",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "5551:3:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5556:2:2",
"type": "",
"value": "53"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5547:3:2"
},
"nodeType": "YulFunctionCall",
"src": "5547:12:2"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "5540:3:2"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_fb6c6ce939dcb005b895abe7a9570250d9c1c31a5440a6a6e28e0acc2d1c6af1_to_t_string_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "5315:3:2",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "5323:3:2",
"type": ""
}
],
"src": "5163:402:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5615:53:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "5625:37:2",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "5640:5:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5647:14:2",
"type": "",
"value": "0xffffffffffff"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "5636:3:2"
},
"nodeType": "YulFunctionCall",
"src": "5636:26:2"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "5625:7:2"
}
]
}
]
},
"name": "cleanup_t_uint48",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "5597:5:2",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "5607:7:2",
"type": ""
}
],
"src": "5571:97:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5717:53:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "5727:36:2",
"value": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5752:3:2",
"type": "",
"value": "208"
},
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "5757:5:2"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "5748:3:2"
},
"nodeType": "YulFunctionCall",
"src": "5748:15:2"
},
"variableNames": [
{
"name": "newValue",
"nodeType": "YulIdentifier",
"src": "5727:8:2"
}
]
}
]
},
"name": "shift_left_208",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "5698:5:2",
"type": ""
}
],
"returnVariables": [
{
"name": "newValue",
"nodeType": "YulTypedName",
"src": "5708:8:2",
"type": ""
}
],
"src": "5674:96:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5822:48:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "5832:32:2",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "5858:5:2"
}
],
"functionName": {
"name": "shift_left_208",
"nodeType": "YulIdentifier",
"src": "5843:14:2"
},
"nodeType": "YulFunctionCall",
"src": "5843:21:2"
},
"variableNames": [
{
"name": "aligned",
"nodeType": "YulIdentifier",
"src": "5832:7:2"
}
]
}
]
},
"name": "leftAlign_t_uint48",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "5804:5:2",
"type": ""
}
],
"returnVariables": [
{
"name": "aligned",
"nodeType": "YulTypedName",
"src": "5814:7:2",
"type": ""
}
],
"src": "5776:94:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5957:72:2",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "5974:3:2"
},
{
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "6015:5:2"
}
],
"functionName": {
"name": "cleanup_t_uint48",
"nodeType": "YulIdentifier",
"src": "5998:16:2"
},
"nodeType": "YulFunctionCall",
"src": "5998:23:2"
}
],
"functionName": {
"name": "leftAlign_t_uint48",
"nodeType": "YulIdentifier",
"src": "5979:18:2"
},
"nodeType": "YulFunctionCall",
"src": "5979:43:2"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "5967:6:2"
},
"nodeType": "YulFunctionCall",
"src": "5967:56:2"
},
"nodeType": "YulExpressionStatement",
"src": "5967:56:2"
}
]
},
"name": "abi_encode_t_uint48_to_t_uint48_nonPadded_inplace_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "5945:5:2",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "5952:3:2",
"type": ""
}
],
"src": "5876:153:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6141:59:2",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "6163:6:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6171:1:2",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6159:3:2"
},
"nodeType": "YulFunctionCall",
"src": "6159:14:2"
},
{
"hexValue": "2077697468206c656e677468203078",
"kind": "string",
"nodeType": "YulLiteral",
"src": "6175:17:2",
"type": "",
"value": " with length 0x"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "6152:6:2"
},
"nodeType": "YulFunctionCall",
"src": "6152:41:2"
},
"nodeType": "YulExpressionStatement",
"src": "6152:41:2"
}
]
},
"name": "store_literal_in_memory_3e6849d566dba71a1ac686a5bd3af1bed003e25465c91471808028cdad9d144b",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "6133:6:2",
"type": ""
}
],
"src": "6035:165:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6370:238:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "6380:92:2",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "6464:3:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6469:2:2",
"type": "",
"value": "15"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulIdentifier",
"src": "6387:76:2"
},
"nodeType": "YulFunctionCall",
"src": "6387:85:2"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "6380:3:2"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "6570:3:2"
}
],
"functionName": {
"name": "store_literal_in_memory_3e6849d566dba71a1ac686a5bd3af1bed003e25465c91471808028cdad9d144b",
"nodeType": "YulIdentifier",
"src": "6481:88:2"
},
"nodeType": "YulFunctionCall",
"src": "6481:93:2"
},
"nodeType": "YulExpressionStatement",
"src": "6481:93:2"
},
{
"nodeType": "YulAssignment",
"src": "6583:19:2",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "6594:3:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6599:2:2",
"type": "",
"value": "15"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6590:3:2"
},
"nodeType": "YulFunctionCall",
"src": "6590:12:2"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "6583:3:2"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_3e6849d566dba71a1ac686a5bd3af1bed003e25465c91471808028cdad9d144b_to_t_string_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "6358:3:2",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "6366:3:2",
"type": ""
}
],
"src": "6206:402:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6720:114:2",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "6742:6:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6750:1:2",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6738:3:2"
},
"nodeType": "YulFunctionCall",
"src": "6738:14:2"
},
{
"hexValue": "2e20417474656d7074656420746f20696e646578206174206f66667365742030",
"kind": "string",
"nodeType": "YulLiteral",
"src": "6754:34:2",
"type": "",
"value": ". Attempted to index at offset 0"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "6731:6:2"
},
"nodeType": "YulFunctionCall",
"src": "6731:58:2"
},
"nodeType": "YulExpressionStatement",
"src": "6731:58:2"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "6810:6:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6818:2:2",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6806:3:2"
},
"nodeType": "YulFunctionCall",
"src": "6806:15:2"
},
{
"hexValue": "78",
"kind": "string",
"nodeType": "YulLiteral",
"src": "6823:3:2",
"type": "",
"value": "x"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "6799:6:2"
},
"nodeType": "YulFunctionCall",
"src": "6799:28:2"
},
"nodeType": "YulExpressionStatement",
"src": "6799:28:2"
}
]
},
"name": "store_literal_in_memory_76d133faf43042eef7167f01d32e0891632a5651573db9fc8b6aa42fdbcaf509",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "6712:6:2",
"type": ""
}
],
"src": "6614:220:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "7004:238:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "7014:92:2",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "7098:3:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7103:2:2",
"type": "",
"value": "33"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulIdentifier",
"src": "7021:76:2"
},
"nodeType": "YulFunctionCall",
"src": "7021:85:2"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "7014:3:2"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "7204:3:2"
}
],
"functionName": {
"name": "store_literal_in_memory_76d133faf43042eef7167f01d32e0891632a5651573db9fc8b6aa42fdbcaf509",
"nodeType": "YulIdentifier",
"src": "7115:88:2"
},
"nodeType": "YulFunctionCall",
"src": "7115:93:2"
},
"nodeType": "YulExpressionStatement",
"src": "7115:93:2"
},
{
"nodeType": "YulAssignment",
"src": "7217:19:2",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "7228:3:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7233:2:2",
"type": "",
"value": "33"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7224:3:2"
},
"nodeType": "YulFunctionCall",
"src": "7224:12:2"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "7217:3:2"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_76d133faf43042eef7167f01d32e0891632a5651573db9fc8b6aa42fdbcaf509_to_t_string_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "6992:3:2",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "7000:3:2",
"type": ""
}
],
"src": "6840:402:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "7354:45:2",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "7376:6:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7384:1:2",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7372:3:2"
},
"nodeType": "YulFunctionCall",
"src": "7372:14:2"
},
{
"hexValue": "2e",
"kind": "string",
"nodeType": "YulLiteral",
"src": "7388:3:2",
"type": "",
"value": "."
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "7365:6:2"
},
"nodeType": "YulFunctionCall",
"src": "7365:27:2"
},
"nodeType": "YulExpressionStatement",
"src": "7365:27:2"
}
]
},
"name": "store_literal_in_memory_6f010af653ebe3cb07d297a4ef13366103d392ceffa68dd48232e6e9ff2187bf",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "7346:6:2",
"type": ""
}
],
"src": "7248:151:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "7569:236:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "7579:91:2",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "7663:3:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7668:1:2",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulIdentifier",
"src": "7586:76:2"
},
"nodeType": "YulFunctionCall",
"src": "7586:84:2"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "7579:3:2"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "7768:3:2"
}
],
"functionName": {
"name": "store_literal_in_memory_6f010af653ebe3cb07d297a4ef13366103d392ceffa68dd48232e6e9ff2187bf",
"nodeType": "YulIdentifier",
"src": "7679:88:2"
},
"nodeType": "YulFunctionCall",
"src": "7679:93:2"
},
"nodeType": "YulExpressionStatement",
"src": "7679:93:2"
},
{
"nodeType": "YulAssignment",
"src": "7781:18:2",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "7792:3:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7797:1:2",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7788:3:2"
},
"nodeType": "YulFunctionCall",
"src": "7788:11:2"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "7781:3:2"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_6f010af653ebe3cb07d297a4ef13366103d392ceffa68dd48232e6e9ff2187bf_to_t_string_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "7557:3:2",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "7565:3:2",
"type": ""
}
],
"src": "7405:400:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "8508:1292:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "8519:155:2",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "8670:3:2"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_fb6c6ce939dcb005b895abe7a9570250d9c1c31a5440a6a6e28e0acc2d1c6af1_to_t_string_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulIdentifier",
"src": "8526:142:2"
},
"nodeType": "YulFunctionCall",
"src": "8526:148:2"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "8519:3:2"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "8744:6:2"
},
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "8753:3:2"
}
],
"functionName": {
"name": "abi_encode_t_uint48_to_t_uint48_nonPadded_inplace_fromStack",
"nodeType": "YulIdentifier",
"src": "8684:59:2"
},
"nodeType": "YulFunctionCall",
"src": "8684:73:2"
},
"nodeType": "YulExpressionStatement",
"src": "8684:73:2"
},
{
"nodeType": "YulAssignment",
"src": "8766:18:2",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "8777:3:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8782:1:2",
"type": "",
"value": "6"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8773:3:2"
},
"nodeType": "YulFunctionCall",
"src": "8773:11:2"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "8766:3:2"
}
]
},
{
"nodeType": "YulAssignment",
"src": "8794:155:2",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "8945:3:2"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_3e6849d566dba71a1ac686a5bd3af1bed003e25465c91471808028cdad9d144b_to_t_string_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulIdentifier",
"src": "8801:142:2"
},
"nodeType": "YulFunctionCall",
"src": "8801:148:2"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "8794:3:2"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "9019:6:2"
},
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "9028:3:2"
}
],
"functionName": {
"name": "abi_encode_t_uint48_to_t_uint48_nonPadded_inplace_fromStack",
"nodeType": "YulIdentifier",
"src": "8959:59:2"
},
"nodeType": "YulFunctionCall",
"src": "8959:73:2"
},
"nodeType": "YulExpressionStatement",
"src": "8959:73:2"
},
{
"nodeType": "YulAssignment",
"src": "9041:18:2",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "9052:3:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9057:1:2",
"type": "",
"value": "6"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "9048:3:2"
},
"nodeType": "YulFunctionCall",
"src": "9048:11:2"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "9041:3:2"
}
]
},
{
"nodeType": "YulAssignment",
"src": "9069:155:2",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "9220:3:2"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_76d133faf43042eef7167f01d32e0891632a5651573db9fc8b6aa42fdbcaf509_to_t_string_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulIdentifier",
"src": "9076:142:2"
},
"nodeType": "YulFunctionCall",
"src": "9076:148:2"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "9069:3:2"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value2",
"nodeType": "YulIdentifier",
"src": "9294:6:2"
},
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "9303:3:2"
}
],
"functionName": {
"name": "abi_encode_t_uint48_to_t_uint48_nonPadded_inplace_fromStack",
"nodeType": "YulIdentifier",
"src": "9234:59:2"
},
"nodeType": "YulFunctionCall",
"src": "9234:73:2"
},
"nodeType": "YulExpressionStatement",
"src": "9234:73:2"
},
{
"nodeType": "YulAssignment",
"src": "9316:18:2",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "9327:3:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9332:1:2",
"type": "",
"value": "6"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "9323:3:2"
},
"nodeType": "YulFunctionCall",
"src": "9323:11:2"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "9316:3:2"
}
]
},
{
"nodeType": "YulAssignment",
"src": "9344:155:2",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "9495:3:2"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_3e6849d566dba71a1ac686a5bd3af1bed003e25465c91471808028cdad9d144b_to_t_string_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulIdentifier",
"src": "9351:142:2"
},
"nodeType": "YulFunctionCall",
"src": "9351:148:2"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "9344:3:2"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value3",
"nodeType": "YulIdentifier",
"src": "9569:6:2"
},
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "9578:3:2"
}
],
"functionName": {
"name": "abi_encode_t_uint48_to_t_uint48_nonPadded_inplace_fromStack",
"nodeType": "YulIdentifier",
"src": "9509:59:2"
},
"nodeType": "YulFunctionCall",
"src": "9509:73:2"
},
"nodeType": "YulExpressionStatement",
"src": "9509:73:2"
},
{
"nodeType": "YulAssignment",
"src": "9591:18:2",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "9602:3:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9607:1:2",
"type": "",
"value": "6"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "9598:3:2"
},
"nodeType": "YulFunctionCall",
"src": "9598:11:2"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "9591:3:2"
}
]
},
{
"nodeType": "YulAssignment",
"src": "9619:155:2",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "9770:3:2"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_6f010af653ebe3cb07d297a4ef13366103d392ceffa68dd48232e6e9ff2187bf_to_t_string_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulIdentifier",
"src": "9626:142:2"
},
"nodeType": "YulFunctionCall",
"src": "9626:148:2"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "9619:3:2"
}
]
},
{
"nodeType": "YulAssignment",
"src": "9784:10:2",
"value": {
"name": "pos",
"nodeType": "YulIdentifier",
"src": "9791:3:2"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "9784: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": "8463:3:2",
"type": ""
},
{
"name": "value3",
"nodeType": "YulTypedName",
"src": "8469:6:2",
"type": ""
},
{
"name": "value2",
"nodeType": "YulTypedName",
"src": "8477:6:2",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "8485:6:2",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "8493:6:2",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "8504:3:2",
"type": ""
}
],
"src": "7811:1989:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "9834:152:2",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9851:1:2",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9854:77:2",
"type": "",
"value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "9844:6:2"
},
"nodeType": "YulFunctionCall",
"src": "9844:88:2"
},
"nodeType": "YulExpressionStatement",
"src": "9844:88:2"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9948:1:2",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9951:4:2",
"type": "",
"value": "0x32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "9941:6:2"
},
"nodeType": "YulFunctionCall",
"src": "9941:15:2"
},
"nodeType": "YulExpressionStatement",
"src": "9941:15:2"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9972:1:2",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9975:4:2",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "9965:6:2"
},
"nodeType": "YulFunctionCall",
"src": "9965:15:2"
},
"nodeType": "YulExpressionStatement",
"src": "9965:15:2"
}
]
},
"name": "panic_error_0x32",
"nodeType": "YulFunctionDefinition",
"src": "9806:180:2"
}
]
},
"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_bytes32(value) -> cleaned {\n cleaned := value\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": "73000000000000000000000000000000000000000030146080604052600436106100355760003560e01c8063fdc853081461003a575b600080fd5b81801561004657600080fd5b5061004f610051565b005b600061007073e0f5206bbd039e7b0592d8918820024e2a7437b9610105565b905060006040518060400160405280838152602001600a815250905060006100a082600001518360200151610128565b905060006100b860008361015490919063ffffffff16565b905060006100c58261017f565b90507fee0e21a0909c175792d67fa4e7c4f99d844405993e69b1ac9985af378f4cda4b816040516100f69190610617565b60405180910390a15050505050565b60008173ffffffffffffffffffffffffffffffffffffffff1660001b9050919050565b6060828260405160200161013d92919061067e565b604051602081830303815290604052905092915050565b6000808351905060006020850190506101758464ffffffffff1682846101a4565b9250505092915050565b600061019d6020808462ffffff191661020b9092919063ffffffff16565b9050919050565b60008082846101b391906106d9565b90506040518111156101c457600090505b600081036101f5577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000915050610204565b610200858585610242565b9150505b9392505050565b6000600882602061021c919061071a565b610226919061074f565b60ff1661023485858561026d565b60001c901c90509392505050565b60008060609050600060189050858317821b9250848317821b9250838317811b925050509392505050565b6000808260ff1603610284576000801b90506103aa565b61028d846103b1565b6bffffffffffffffffffffffff168260ff16846102aa91906106d9565b1115610327576102eb6102bc856103d7565b6bffffffffffffffffffffffff166102d3866103b1565b6bffffffffffffffffffffffff16858560ff16610400565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161031e919061081c565b60405180910390fd5b60208260ff16111561036e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610365906108b0565b60405180910390fd5b60006008830290506000610381866103d7565b6bffffffffffffffffffffffff169050600061039c8361046e565b905080868301511693505050505b9392505050565b6000806bffffffffffffffffffffffff90506000601890508184821c1692505050919050565b6000806bffffffffffffffffffffffff90506000607860ff1690508184821c1692505050919050565b6060600061040d8661049d565b915050600061041b8661049d565b91505060006104298661049d565b91505060006104378661049d565b915050838383836040516020016104519493929190610a9f565b604051602081830303815290604052945050505050949350505050565b60007f8000000000000000000000000000000000000000000000000000000000000000600183031d9050919050565b6000806000601f90505b600f8160ff1611156104fa5760006008826104c2919061074f565b60ff1685901c90506104d38161055b565b61ffff168417935060108260ff16146104ee57601084901b93505b600182039150506104a7565b506000600f90505b60ff8160ff16101561055557600060088261051d919061074f565b60ff1685901c905061052e8161055b565b61ffff168317925060008260ff161461054957601083901b92505b60018203915050610502565b50915091565b600061056d60048360ff16901c610594565b60ff168117905060088161ffff16901b905061058882610594565b60ff1681179050919050565b600080600f831690506040518060400160405280601081526020017f30313233343536373839616263646566000000000000000000000000000000008152508160ff16815181106105e8576105e7610b24565b5b602001015160f81c60f81b60f81c915050919050565b6000819050919050565b610611816105fe565b82525050565b600060208201905061062c6000830184610608565b92915050565b6000819050919050565b6000819050919050565b61065761065282610632565b61063c565b82525050565b6000819050919050565b610678610673826105fe565b61065d565b82525050565b600061068a8285610646565b60208201915061069a8284610667565b6020820191508190509392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006106e4826105fe565b91506106ef836105fe565b9250828201905080821115610707576107066106aa565b5b92915050565b600060ff82169050919050565b60006107258261070d565b91506107308361070d565b9250828203905060ff811115610749576107486106aa565b5b92915050565b600061075a8261070d565b91506107658361070d565b92508282026107738161070d565b9150808214610785576107846106aa565b5b5092915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156107c65780820151818401526020810190506107ab565b60008484015250505050565b6000601f19601f8301169050919050565b60006107ee8261078c565b6107f88185610797565b93506108088185602086016107a8565b610811816107d2565b840191505092915050565b6000602082019050818103600083015261083681846107e3565b905092915050565b7f54797065644d656d566965772f696e646578202d20417474656d70746564207460008201527f6f20696e646578206d6f7265207468616e203332206279746573000000000000602082015250565b600061089a603a83610797565b91506108a58261083e565b604082019050919050565b600060208201905081810360008301526108c98161088d565b9050919050565b600081905092915050565b7f54797065644d656d566965772f696e646578202d204f76657272616e2074686560008201527f20766965772e20536c6963652069732061742030780000000000000000000000602082015250565b60006109376035836108d0565b9150610942826108db565b603582019050919050565b600065ffffffffffff82169050919050565b60008160d01b9050919050565b60006109778261095f565b9050919050565b61098f61098a8261094d565b61096c565b82525050565b7f2077697468206c656e6774682030780000000000000000000000000000000000600082015250565b60006109cb600f836108d0565b91506109d682610995565b600f82019050919050565b7f2e20417474656d7074656420746f20696e646578206174206f6666736574203060008201527f7800000000000000000000000000000000000000000000000000000000000000602082015250565b6000610a3d6021836108d0565b9150610a48826109e1565b602182019050919050565b7f2e00000000000000000000000000000000000000000000000000000000000000600082015250565b6000610a896001836108d0565b9150610a9482610a53565b600182019050919050565b6000610aaa8261092a565b9150610ab6828761097e565b600682019150610ac5826109be565b9150610ad1828661097e565b600682019150610ae082610a30565b9150610aec828561097e565b600682019150610afb826109be565b9150610b07828461097e565b600682019150610b1682610a7c565b915081905095945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea264697066735822122095f41e3f6c8bdc9343fb4a3b6d0e516893fd3b2ec884a4e3faeae5c1c1cf919364736f6c63430008110033",
"opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x35 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xFDC85308 EQ PUSH2 0x3A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x46 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4F PUSH2 0x51 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 PUSH2 0x70 PUSH20 0xE0F5206BBD039E7B0592D8918820024E2A7437B9 PUSH2 0x105 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 0xA0 DUP3 PUSH1 0x0 ADD MLOAD DUP4 PUSH1 0x20 ADD MLOAD PUSH2 0x128 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xB8 PUSH1 0x0 DUP4 PUSH2 0x154 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xC5 DUP3 PUSH2 0x17F JUMP JUMPDEST SWAP1 POP PUSH32 0xEE0E21A0909C175792D67FA4E7C4F99D844405993E69B1AC9985AF378F4CDA4B DUP2 PUSH1 0x40 MLOAD PUSH2 0xF6 SWAP2 SWAP1 PUSH2 0x617 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 0x13D SWAP3 SWAP2 SWAP1 PUSH2 0x67E 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 0x175 DUP5 PUSH5 0xFFFFFFFFFF AND DUP3 DUP5 PUSH2 0x1A4 JUMP JUMPDEST SWAP3 POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x19D PUSH1 0x20 DUP1 DUP5 PUSH3 0xFFFFFF NOT AND PUSH2 0x20B SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 PUSH2 0x1B3 SWAP2 SWAP1 PUSH2 0x6D9 JUMP JUMPDEST SWAP1 POP PUSH1 0x40 MLOAD DUP2 GT ISZERO PUSH2 0x1C4 JUMPI PUSH1 0x0 SWAP1 POP JUMPDEST PUSH1 0x0 DUP2 SUB PUSH2 0x1F5 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000 SWAP2 POP POP PUSH2 0x204 JUMP JUMPDEST PUSH2 0x200 DUP6 DUP6 DUP6 PUSH2 0x242 JUMP JUMPDEST SWAP2 POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x8 DUP3 PUSH1 0x20 PUSH2 0x21C SWAP2 SWAP1 PUSH2 0x71A JUMP JUMPDEST PUSH2 0x226 SWAP2 SWAP1 PUSH2 0x74F JUMP JUMPDEST PUSH1 0xFF AND PUSH2 0x234 DUP6 DUP6 DUP6 PUSH2 0x26D 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 0x284 JUMPI PUSH1 0x0 DUP1 SHL SWAP1 POP PUSH2 0x3AA JUMP JUMPDEST PUSH2 0x28D DUP5 PUSH2 0x3B1 JUMP JUMPDEST PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH1 0xFF AND DUP5 PUSH2 0x2AA SWAP2 SWAP1 PUSH2 0x6D9 JUMP JUMPDEST GT ISZERO PUSH2 0x327 JUMPI PUSH2 0x2EB PUSH2 0x2BC DUP6 PUSH2 0x3D7 JUMP JUMPDEST PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2D3 DUP7 PUSH2 0x3B1 JUMP JUMPDEST PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 DUP6 PUSH1 0xFF AND PUSH2 0x400 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x31E SWAP2 SWAP1 PUSH2 0x81C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x20 DUP3 PUSH1 0xFF AND GT ISZERO PUSH2 0x36E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x365 SWAP1 PUSH2 0x8B0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x8 DUP4 MUL SWAP1 POP PUSH1 0x0 PUSH2 0x381 DUP7 PUSH2 0x3D7 JUMP JUMPDEST PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 PUSH2 0x39C DUP4 PUSH2 0x46E 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 0x40D DUP7 PUSH2 0x49D JUMP JUMPDEST SWAP2 POP POP PUSH1 0x0 PUSH2 0x41B DUP7 PUSH2 0x49D JUMP JUMPDEST SWAP2 POP POP PUSH1 0x0 PUSH2 0x429 DUP7 PUSH2 0x49D JUMP JUMPDEST SWAP2 POP POP PUSH1 0x0 PUSH2 0x437 DUP7 PUSH2 0x49D JUMP JUMPDEST SWAP2 POP POP DUP4 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x451 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xA9F 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 0x4FA JUMPI PUSH1 0x0 PUSH1 0x8 DUP3 PUSH2 0x4C2 SWAP2 SWAP1 PUSH2 0x74F JUMP JUMPDEST PUSH1 0xFF AND DUP6 SWAP1 SHR SWAP1 POP PUSH2 0x4D3 DUP2 PUSH2 0x55B JUMP JUMPDEST PUSH2 0xFFFF AND DUP5 OR SWAP4 POP PUSH1 0x10 DUP3 PUSH1 0xFF AND EQ PUSH2 0x4EE JUMPI PUSH1 0x10 DUP5 SWAP1 SHL SWAP4 POP JUMPDEST PUSH1 0x1 DUP3 SUB SWAP2 POP POP PUSH2 0x4A7 JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0xF SWAP1 POP JUMPDEST PUSH1 0xFF DUP2 PUSH1 0xFF AND LT ISZERO PUSH2 0x555 JUMPI PUSH1 0x0 PUSH1 0x8 DUP3 PUSH2 0x51D SWAP2 SWAP1 PUSH2 0x74F JUMP JUMPDEST PUSH1 0xFF AND DUP6 SWAP1 SHR SWAP1 POP PUSH2 0x52E DUP2 PUSH2 0x55B JUMP JUMPDEST PUSH2 0xFFFF AND DUP4 OR SWAP3 POP PUSH1 0x0 DUP3 PUSH1 0xFF AND EQ PUSH2 0x549 JUMPI PUSH1 0x10 DUP4 SWAP1 SHL SWAP3 POP JUMPDEST PUSH1 0x1 DUP3 SUB SWAP2 POP POP PUSH2 0x502 JUMP JUMPDEST POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x56D PUSH1 0x4 DUP4 PUSH1 0xFF AND SWAP1 SHR PUSH2 0x594 JUMP JUMPDEST PUSH1 0xFF AND DUP2 OR SWAP1 POP PUSH1 0x8 DUP2 PUSH2 0xFFFF AND SWAP1 SHL SWAP1 POP PUSH2 0x588 DUP3 PUSH2 0x594 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 0x5E8 JUMPI PUSH2 0x5E7 PUSH2 0xB24 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 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x611 DUP2 PUSH2 0x5FE JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x62C PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x608 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x657 PUSH2 0x652 DUP3 PUSH2 0x632 JUMP JUMPDEST PUSH2 0x63C JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x678 PUSH2 0x673 DUP3 PUSH2 0x5FE JUMP JUMPDEST PUSH2 0x65D JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x68A DUP3 DUP6 PUSH2 0x646 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH2 0x69A DUP3 DUP5 PUSH2 0x667 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 0x6E4 DUP3 PUSH2 0x5FE JUMP JUMPDEST SWAP2 POP PUSH2 0x6EF DUP4 PUSH2 0x5FE JUMP JUMPDEST SWAP3 POP DUP3 DUP3 ADD SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x707 JUMPI PUSH2 0x706 PUSH2 0x6AA 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 0x725 DUP3 PUSH2 0x70D JUMP JUMPDEST SWAP2 POP PUSH2 0x730 DUP4 PUSH2 0x70D JUMP JUMPDEST SWAP3 POP DUP3 DUP3 SUB SWAP1 POP PUSH1 0xFF DUP2 GT ISZERO PUSH2 0x749 JUMPI PUSH2 0x748 PUSH2 0x6AA JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x75A DUP3 PUSH2 0x70D JUMP JUMPDEST SWAP2 POP PUSH2 0x765 DUP4 PUSH2 0x70D JUMP JUMPDEST SWAP3 POP DUP3 DUP3 MUL PUSH2 0x773 DUP2 PUSH2 0x70D JUMP JUMPDEST SWAP2 POP DUP1 DUP3 EQ PUSH2 0x785 JUMPI PUSH2 0x784 PUSH2 0x6AA 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 0x7C6 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x7AB 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 0x7EE DUP3 PUSH2 0x78C JUMP JUMPDEST PUSH2 0x7F8 DUP2 DUP6 PUSH2 0x797 JUMP JUMPDEST SWAP4 POP PUSH2 0x808 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x7A8 JUMP JUMPDEST PUSH2 0x811 DUP2 PUSH2 0x7D2 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 0x836 DUP2 DUP5 PUSH2 0x7E3 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 0x89A PUSH1 0x3A DUP4 PUSH2 0x797 JUMP JUMPDEST SWAP2 POP PUSH2 0x8A5 DUP3 PUSH2 0x83E 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 0x8C9 DUP2 PUSH2 0x88D 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 0x937 PUSH1 0x35 DUP4 PUSH2 0x8D0 JUMP JUMPDEST SWAP2 POP PUSH2 0x942 DUP3 PUSH2 0x8DB 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 0x977 DUP3 PUSH2 0x95F JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x98F PUSH2 0x98A DUP3 PUSH2 0x94D JUMP JUMPDEST PUSH2 0x96C JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH32 0x2077697468206C656E6774682030780000000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9CB PUSH1 0xF DUP4 PUSH2 0x8D0 JUMP JUMPDEST SWAP2 POP PUSH2 0x9D6 DUP3 PUSH2 0x995 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 0xA3D PUSH1 0x21 DUP4 PUSH2 0x8D0 JUMP JUMPDEST SWAP2 POP PUSH2 0xA48 DUP3 PUSH2 0x9E1 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 0xA89 PUSH1 0x1 DUP4 PUSH2 0x8D0 JUMP JUMPDEST SWAP2 POP PUSH2 0xA94 DUP3 PUSH2 0xA53 JUMP JUMPDEST PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAAA DUP3 PUSH2 0x92A JUMP JUMPDEST SWAP2 POP PUSH2 0xAB6 DUP3 DUP8 PUSH2 0x97E JUMP JUMPDEST PUSH1 0x6 DUP3 ADD SWAP2 POP PUSH2 0xAC5 DUP3 PUSH2 0x9BE JUMP JUMPDEST SWAP2 POP PUSH2 0xAD1 DUP3 DUP7 PUSH2 0x97E JUMP JUMPDEST PUSH1 0x6 DUP3 ADD SWAP2 POP PUSH2 0xAE0 DUP3 PUSH2 0xA30 JUMP JUMPDEST SWAP2 POP PUSH2 0xAEC DUP3 DUP6 PUSH2 0x97E JUMP JUMPDEST PUSH1 0x6 DUP3 ADD SWAP2 POP PUSH2 0xAFB DUP3 PUSH2 0x9BE JUMP JUMPDEST SWAP2 POP PUSH2 0xB07 DUP3 DUP5 PUSH2 0x97E JUMP JUMPDEST PUSH1 0x6 DUP3 ADD SWAP2 POP PUSH2 0xB16 DUP3 PUSH2 0xA7C 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 SWAP6 DELEGATECALL 0x1E EXTCODEHASH PUSH13 0x8BDC9343FB4A3B6D0E516893FD EXTCODESIZE 0x2E 0xC8 DUP5 LOG4 0xE3 STATICCALL 0xEA 0xE5 0xC1 0xC1 0xCF SWAP2 SWAP4 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP CALLER ",
"sourceMap": "91:1197:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;910:367;;;;;;;;;;;;;:::i;:::-;;;945:12;960:60;977:42;960:16;:60::i;:::-;945:75;;1031:10;1045:11;;;;;;;;1047:4;1045:11;;;;1053:2;1045:11;;;1031:25;;1069:20;1092:42;1112:1;:11;;;1125:1;:8;;;1092:19;:42::i;:::-;1069:65;;1145:20;1168:14;1180:1;1168:7;:11;;:14;;;;:::i;:::-;1145:37;;1195:16;1214:21;1222:12;1214:7;:21::i;:::-;1195:40;;1253:16;1260:8;1253:16;;;;;;:::i;:::-;;;;;;;;935:342;;;;;910: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;7:77:2:-;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:77::-;479:7;508:5;497:16;;442:77;;;:::o;525:79::-;564:7;593:5;582:16;;525:79;;;:::o;610:157::-;715:45;735:24;753:5;735:24;:::i;:::-;715:45;:::i;:::-;710:3;703:58;610:157;;:::o;773:79::-;812:7;841:5;830:16;;773:79;;;:::o;858:157::-;963:45;983:24;1001:5;983:24;:::i;:::-;963:45;:::i;:::-;958:3;951:58;858:157;;:::o;1021:397::-;1161:3;1176:75;1247:3;1238:6;1176:75;:::i;:::-;1276:2;1271:3;1267:12;1260:19;;1289:75;1360:3;1351:6;1289:75;:::i;:::-;1389:2;1384:3;1380:12;1373:19;;1409:3;1402:10;;1021:397;;;;;:::o;1424:180::-;1472:77;1469:1;1462:88;1569:4;1566:1;1559:15;1593:4;1590:1;1583:15;1610:191;1650:3;1669:20;1687:1;1669:20;:::i;:::-;1664:25;;1703:20;1721:1;1703:20;:::i;:::-;1698:25;;1746:1;1743;1739:9;1732:16;;1767:3;1764:1;1761:10;1758:36;;;1774:18;;:::i;:::-;1758:36;1610:191;;;;:::o;1807:86::-;1842:7;1882:4;1875:5;1871:16;1860:27;;1807:86;;;:::o;1899:191::-;1937:4;1957:18;1973:1;1957:18;:::i;:::-;1952:23;;1989:18;2005:1;1989:18;:::i;:::-;1984:23;;2031:1;2028;2024:9;2016:17;;2055:4;2049;2046:14;2043:40;;;2063:18;;:::i;:::-;2043:40;1899:191;;;;:::o;2096:271::-;2134:7;2157:18;2173:1;2157:18;:::i;:::-;2152:23;;2189:18;2205:1;2189:18;:::i;:::-;2184:23;;2242:1;2239;2235:9;2264:28;2280:11;2264:28;:::i;:::-;2253:39;;2324:11;2315:7;2312:24;2302:58;;2340:18;;:::i;:::-;2302:58;2142:225;2096:271;;;;:::o;2373:99::-;2425:6;2459:5;2453:12;2443:22;;2373:99;;;:::o;2478:169::-;2562:11;2596:6;2591:3;2584:19;2636:4;2631:3;2627:14;2612:29;;2478:169;;;;:::o;2653:246::-;2734:1;2744:113;2758:6;2755:1;2752:13;2744:113;;;2843:1;2838:3;2834:11;2828:18;2824:1;2819:3;2815:11;2808:39;2780:2;2777:1;2773:10;2768:15;;2744:113;;;2891:1;2882:6;2877:3;2873:16;2866:27;2715:184;2653:246;;;:::o;2905:102::-;2946:6;2997:2;2993:7;2988:2;2981:5;2977:14;2973:28;2963:38;;2905:102;;;:::o;3013:377::-;3101:3;3129:39;3162:5;3129:39;:::i;:::-;3184:71;3248:6;3243:3;3184:71;:::i;:::-;3177:78;;3264:65;3322:6;3317:3;3310:4;3303:5;3299:16;3264:65;:::i;:::-;3354:29;3376:6;3354:29;:::i;:::-;3349:3;3345:39;3338:46;;3105:285;3013:377;;;;:::o;3396:313::-;3509:4;3547:2;3536:9;3532:18;3524:26;;3596:9;3590:4;3586:20;3582:1;3571:9;3567:17;3560:47;3624:78;3697:4;3688:6;3624:78;:::i;:::-;3616:86;;3396:313;;;;:::o;3715:245::-;3855:34;3851:1;3843:6;3839:14;3832:58;3924:28;3919:2;3911:6;3907:15;3900:53;3715:245;:::o;3966:366::-;4108:3;4129:67;4193:2;4188:3;4129:67;:::i;:::-;4122:74;;4205:93;4294:3;4205:93;:::i;:::-;4323:2;4318:3;4314:12;4307:19;;3966:366;;;:::o;4338:419::-;4504:4;4542:2;4531:9;4527:18;4519:26;;4591:9;4585:4;4581:20;4577:1;4566:9;4562:17;4555:47;4619:131;4745:4;4619:131;:::i;:::-;4611:139;;4338:419;;;:::o;4763:148::-;4865:11;4902:3;4887:18;;4763:148;;;;:::o;4917:240::-;5057:34;5053:1;5045:6;5041:14;5034:58;5126:23;5121:2;5113:6;5109:15;5102:48;4917:240;:::o;5163:402::-;5323:3;5344:85;5426:2;5421:3;5344:85;:::i;:::-;5337:92;;5438:93;5527:3;5438:93;:::i;:::-;5556:2;5551:3;5547:12;5540:19;;5163:402;;;:::o;5571:97::-;5607:7;5647:14;5640:5;5636:26;5625:37;;5571:97;;;:::o;5674:96::-;5708:8;5757:5;5752:3;5748:15;5727:36;;5674:96;;;:::o;5776:94::-;5814:7;5843:21;5858:5;5843:21;:::i;:::-;5832:32;;5776:94;;;:::o;5876:153::-;5979:43;5998:23;6015:5;5998:23;:::i;:::-;5979:43;:::i;:::-;5974:3;5967:56;5876:153;;:::o;6035:165::-;6175:17;6171:1;6163:6;6159:14;6152:41;6035:165;:::o;6206:402::-;6366:3;6387:85;6469:2;6464:3;6387:85;:::i;:::-;6380:92;;6481:93;6570:3;6481:93;:::i;:::-;6599:2;6594:3;6590:12;6583:19;;6206:402;;;:::o;6614:220::-;6754:34;6750:1;6742:6;6738:14;6731:58;6823:3;6818:2;6810:6;6806:15;6799:28;6614:220;:::o;6840:402::-;7000:3;7021:85;7103:2;7098:3;7021:85;:::i;:::-;7014:92;;7115:93;7204:3;7115:93;:::i;:::-;7233:2;7228:3;7224:12;7217:19;;6840:402;;;:::o;7248:151::-;7388:3;7384:1;7376:6;7372:14;7365:27;7248:151;:::o;7405:400::-;7565:3;7586:84;7668:1;7663:3;7586:84;:::i;:::-;7579:91;;7679:93;7768:3;7679:93;:::i;:::-;7797:1;7792:3;7788:11;7781:18;;7405:400;;;:::o;7811:1989::-;8504:3;8526:148;8670:3;8526:148;:::i;:::-;8519:155;;8684:73;8753:3;8744:6;8684:73;:::i;:::-;8782:1;8777:3;8773:11;8766:18;;8801:148;8945:3;8801:148;:::i;:::-;8794:155;;8959:73;9028:3;9019:6;8959:73;:::i;:::-;9057:1;9052:3;9048:11;9041:18;;9076:148;9220:3;9076:148;:::i;:::-;9069:155;;9234:73;9303:3;9294:6;9234:73;:::i;:::-;9332:1;9327:3;9323:11;9316:18;;9351:148;9495:3;9351:148;:::i;:::-;9344:155;;9509:73;9578:3;9569:6;9509:73;:::i;:::-;9607:1;9602:3;9598:11;9591:18;;9626:148;9770:3;9626:148;:::i;:::-;9619:155;;9791:3;9784:10;;7811:1989;;;;;;;:::o;9806:180::-;9854:77;9851:1;9844:88;9951:4;9948:1;9941:15;9975:4;9972:1;9965:15"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "590600",
"executionCost": "650",
"totalCost": "591250"
},
"external": {
"tryIt()": "infinite"
},
"internal": {
"_amount(bytes29)": "infinite",
"_recipient(bytes29)": "infinite",
"addressToBytes32(address)": "40",
"formatSample(bytes32,uint256)": "infinite"
}
},
"methodIdentifiers": {
"tryIt()": "fdc85308"
}
},
"abi": [
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "Amount",
"type": "event"
}
]
}
{
"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"
}
],
"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": "0x2cd499d57a5a686a20ea39f0dd8ced3bddfce4df435cea519225048ff9c5dd0e",
"license": "MIT",
"urls": [
"bzz-raw://94e2db8fd6aa527723fcd37ee69d0303702f7bc3ece45e9049b603b3b2d70477",
"dweb:/ipfs/QmPJ6bqVWhHym5TSnAeQ2AQm2phYNC3sh5TX8KG6hfXQby"
]
},
"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": 229
}
]
}
},
"object": "608060405234801561001057600080fd5b50610ba5806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063687888681461003b578063b29f083514610059575b600080fd5b610043610063565b6040516100509190610633565b60405180910390f35b6100616100c3565b005b60008061008373e0f5206bbd039e7b0592d8918820024e2a7437b9610121565b9050600061009282600a610144565b905060006100aa60008361017090919063ffffffff16565b905060006100b78261019b565b90508094505050505090565b73__$444bebbe5b1c08ea17d8fdfa4d915df024$__63fdc853086040518163ffffffff1660e01b815260040160006040518083038186803b15801561010757600080fd5b505af415801561011b573d6000803e3d6000fd5b50505050565b60008173ffffffffffffffffffffffffffffffffffffffff1660001b9050919050565b6060828260405160200161015992919061069a565b604051602081830303815290604052905092915050565b6000808351905060006020850190506101918464ffffffffff1682846101c0565b9250505092915050565b60006101b96020808462ffffff19166102279092919063ffffffff16565b9050919050565b60008082846101cf91906106f5565b90506040518111156101e057600090505b60008103610211577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000915050610220565b61021c85858561025e565b9150505b9392505050565b600060088260206102389190610736565b610242919061076b565b60ff16610250858585610289565b60001c901c90509392505050565b60008060609050600060189050858317821b9250848317821b9250838317811b925050509392505050565b6000808260ff16036102a0576000801b90506103c6565b6102a9846103cd565b6bffffffffffffffffffffffff168260ff16846102c691906106f5565b1115610343576103076102d8856103f3565b6bffffffffffffffffffffffff166102ef866103cd565b6bffffffffffffffffffffffff16858560ff1661041c565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161033a9190610838565b60405180910390fd5b60208260ff16111561038a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610381906108cc565b60405180910390fd5b6000600883029050600061039d866103f3565b6bffffffffffffffffffffffff16905060006103b88361048a565b905080868301511693505050505b9392505050565b6000806bffffffffffffffffffffffff90506000601890508184821c1692505050919050565b6000806bffffffffffffffffffffffff90506000607860ff1690508184821c1692505050919050565b60606000610429866104b9565b9150506000610437866104b9565b9150506000610445866104b9565b9150506000610453866104b9565b9150508383838360405160200161046d9493929190610abb565b604051602081830303815290604052945050505050949350505050565b60007f8000000000000000000000000000000000000000000000000000000000000000600183031d9050919050565b6000806000601f90505b600f8160ff1611156105165760006008826104de919061076b565b60ff1685901c90506104ef81610577565b61ffff168417935060108260ff161461050a57601084901b93505b600182039150506104c3565b506000600f90505b60ff8160ff161015610571576000600882610539919061076b565b60ff1685901c905061054a81610577565b61ffff168317925060008260ff161461056557601083901b92505b6001820391505061051e565b50915091565b600061058960048360ff16901c6105b0565b60ff168117905060088161ffff16901b90506105a4826105b0565b60ff1681179050919050565b600080600f831690506040518060400160405280601081526020017f30313233343536373839616263646566000000000000000000000000000000008152508160ff168151811061060457610603610b40565b5b602001015160f81c60f81b60f81c915050919050565b6000819050919050565b61062d8161061a565b82525050565b60006020820190506106486000830184610624565b92915050565b6000819050919050565b6000819050919050565b61067361066e8261064e565b610658565b82525050565b6000819050919050565b61069461068f8261061a565b610679565b82525050565b60006106a68285610662565b6020820191506106b68284610683565b6020820191508190509392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006107008261061a565b915061070b8361061a565b9250828201905080821115610723576107226106c6565b5b92915050565b600060ff82169050919050565b600061074182610729565b915061074c83610729565b9250828203905060ff811115610765576107646106c6565b5b92915050565b600061077682610729565b915061078183610729565b925082820261078f81610729565b91508082146107a1576107a06106c6565b5b5092915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156107e25780820151818401526020810190506107c7565b60008484015250505050565b6000601f19601f8301169050919050565b600061080a826107a8565b61081481856107b3565b93506108248185602086016107c4565b61082d816107ee565b840191505092915050565b6000602082019050818103600083015261085281846107ff565b905092915050565b7f54797065644d656d566965772f696e646578202d20417474656d70746564207460008201527f6f20696e646578206d6f7265207468616e203332206279746573000000000000602082015250565b60006108b6603a836107b3565b91506108c18261085a565b604082019050919050565b600060208201905081810360008301526108e5816108a9565b9050919050565b600081905092915050565b7f54797065644d656d566965772f696e646578202d204f76657272616e2074686560008201527f20766965772e20536c6963652069732061742030780000000000000000000000602082015250565b60006109536035836108ec565b915061095e826108f7565b603582019050919050565b600065ffffffffffff82169050919050565b60008160d01b9050919050565b60006109938261097b565b9050919050565b6109ab6109a682610969565b610988565b82525050565b7f2077697468206c656e6774682030780000000000000000000000000000000000600082015250565b60006109e7600f836108ec565b91506109f2826109b1565b600f82019050919050565b7f2e20417474656d7074656420746f20696e646578206174206f6666736574203060008201527f7800000000000000000000000000000000000000000000000000000000000000602082015250565b6000610a596021836108ec565b9150610a64826109fd565b602182019050919050565b7f2e00000000000000000000000000000000000000000000000000000000000000600082015250565b6000610aa56001836108ec565b9150610ab082610a6f565b600182019050919050565b6000610ac682610946565b9150610ad2828761099a565b600682019150610ae1826109da565b9150610aed828661099a565b600682019150610afc82610a4c565b9150610b08828561099a565b600682019150610b17826109da565b9150610b23828461099a565b600682019150610b3282610a98565b915081905095945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea2646970667358221220465567f2c1d9a1021be214a51701db94bcf5dcc51e6a63134dbc98f72fda3d3d64736f6c63430008110033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBA5 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 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x68788868 EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0xB29F0835 EQ PUSH2 0x59 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x43 PUSH2 0x63 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x50 SWAP2 SWAP1 PUSH2 0x633 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x61 PUSH2 0xC3 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x83 PUSH20 0xE0F5206BBD039E7B0592D8918820024E2A7437B9 PUSH2 0x121 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x92 DUP3 PUSH1 0xA PUSH2 0x144 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xAA PUSH1 0x0 DUP4 PUSH2 0x170 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xB7 DUP3 PUSH2 0x19B JUMP JUMPDEST SWAP1 POP DUP1 SWAP5 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 0x107 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x11B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST 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 0x159 SWAP3 SWAP2 SWAP1 PUSH2 0x69A 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 0x191 DUP5 PUSH5 0xFFFFFFFFFF AND DUP3 DUP5 PUSH2 0x1C0 JUMP JUMPDEST SWAP3 POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1B9 PUSH1 0x20 DUP1 DUP5 PUSH3 0xFFFFFF NOT AND PUSH2 0x227 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 PUSH2 0x1CF SWAP2 SWAP1 PUSH2 0x6F5 JUMP JUMPDEST SWAP1 POP PUSH1 0x40 MLOAD DUP2 GT ISZERO PUSH2 0x1E0 JUMPI PUSH1 0x0 SWAP1 POP JUMPDEST PUSH1 0x0 DUP2 SUB PUSH2 0x211 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000 SWAP2 POP POP PUSH2 0x220 JUMP JUMPDEST PUSH2 0x21C DUP6 DUP6 DUP6 PUSH2 0x25E JUMP JUMPDEST SWAP2 POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x8 DUP3 PUSH1 0x20 PUSH2 0x238 SWAP2 SWAP1 PUSH2 0x736 JUMP JUMPDEST PUSH2 0x242 SWAP2 SWAP1 PUSH2 0x76B JUMP JUMPDEST PUSH1 0xFF AND PUSH2 0x250 DUP6 DUP6 DUP6 PUSH2 0x289 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 0x2A0 JUMPI PUSH1 0x0 DUP1 SHL SWAP1 POP PUSH2 0x3C6 JUMP JUMPDEST PUSH2 0x2A9 DUP5 PUSH2 0x3CD JUMP JUMPDEST PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH1 0xFF AND DUP5 PUSH2 0x2C6 SWAP2 SWAP1 PUSH2 0x6F5 JUMP JUMPDEST GT ISZERO PUSH2 0x343 JUMPI PUSH2 0x307 PUSH2 0x2D8 DUP6 PUSH2 0x3F3 JUMP JUMPDEST PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2EF DUP7 PUSH2 0x3CD JUMP JUMPDEST PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 DUP6 PUSH1 0xFF AND PUSH2 0x41C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x33A SWAP2 SWAP1 PUSH2 0x838 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x20 DUP3 PUSH1 0xFF AND GT ISZERO PUSH2 0x38A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x381 SWAP1 PUSH2 0x8CC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x8 DUP4 MUL SWAP1 POP PUSH1 0x0 PUSH2 0x39D DUP7 PUSH2 0x3F3 JUMP JUMPDEST PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 PUSH2 0x3B8 DUP4 PUSH2 0x48A 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 0x429 DUP7 PUSH2 0x4B9 JUMP JUMPDEST SWAP2 POP POP PUSH1 0x0 PUSH2 0x437 DUP7 PUSH2 0x4B9 JUMP JUMPDEST SWAP2 POP POP PUSH1 0x0 PUSH2 0x445 DUP7 PUSH2 0x4B9 JUMP JUMPDEST SWAP2 POP POP PUSH1 0x0 PUSH2 0x453 DUP7 PUSH2 0x4B9 JUMP JUMPDEST SWAP2 POP POP DUP4 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x46D SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xABB 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 0x516 JUMPI PUSH1 0x0 PUSH1 0x8 DUP3 PUSH2 0x4DE SWAP2 SWAP1 PUSH2 0x76B JUMP JUMPDEST PUSH1 0xFF AND DUP6 SWAP1 SHR SWAP1 POP PUSH2 0x4EF DUP2 PUSH2 0x577 JUMP JUMPDEST PUSH2 0xFFFF AND DUP5 OR SWAP4 POP PUSH1 0x10 DUP3 PUSH1 0xFF AND EQ PUSH2 0x50A JUMPI PUSH1 0x10 DUP5 SWAP1 SHL SWAP4 POP JUMPDEST PUSH1 0x1 DUP3 SUB SWAP2 POP POP PUSH2 0x4C3 JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0xF SWAP1 POP JUMPDEST PUSH1 0xFF DUP2 PUSH1 0xFF AND LT ISZERO PUSH2 0x571 JUMPI PUSH1 0x0 PUSH1 0x8 DUP3 PUSH2 0x539 SWAP2 SWAP1 PUSH2 0x76B JUMP JUMPDEST PUSH1 0xFF AND DUP6 SWAP1 SHR SWAP1 POP PUSH2 0x54A DUP2 PUSH2 0x577 JUMP JUMPDEST PUSH2 0xFFFF AND DUP4 OR SWAP3 POP PUSH1 0x0 DUP3 PUSH1 0xFF AND EQ PUSH2 0x565 JUMPI PUSH1 0x10 DUP4 SWAP1 SHL SWAP3 POP JUMPDEST PUSH1 0x1 DUP3 SUB SWAP2 POP POP PUSH2 0x51E JUMP JUMPDEST POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x589 PUSH1 0x4 DUP4 PUSH1 0xFF AND SWAP1 SHR PUSH2 0x5B0 JUMP JUMPDEST PUSH1 0xFF AND DUP2 OR SWAP1 POP PUSH1 0x8 DUP2 PUSH2 0xFFFF AND SWAP1 SHL SWAP1 POP PUSH2 0x5A4 DUP3 PUSH2 0x5B0 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 0x604 JUMPI PUSH2 0x603 PUSH2 0xB40 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 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x62D DUP2 PUSH2 0x61A JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x648 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x624 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x673 PUSH2 0x66E DUP3 PUSH2 0x64E JUMP JUMPDEST PUSH2 0x658 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x694 PUSH2 0x68F DUP3 PUSH2 0x61A JUMP JUMPDEST PUSH2 0x679 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6A6 DUP3 DUP6 PUSH2 0x662 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH2 0x6B6 DUP3 DUP5 PUSH2 0x683 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 0x700 DUP3 PUSH2 0x61A JUMP JUMPDEST SWAP2 POP PUSH2 0x70B DUP4 PUSH2 0x61A JUMP JUMPDEST SWAP3 POP DUP3 DUP3 ADD SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x723 JUMPI PUSH2 0x722 PUSH2 0x6C6 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 0x741 DUP3 PUSH2 0x729 JUMP JUMPDEST SWAP2 POP PUSH2 0x74C DUP4 PUSH2 0x729 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 SUB SWAP1 POP PUSH1 0xFF DUP2 GT ISZERO PUSH2 0x765 JUMPI PUSH2 0x764 PUSH2 0x6C6 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x776 DUP3 PUSH2 0x729 JUMP JUMPDEST SWAP2 POP PUSH2 0x781 DUP4 PUSH2 0x729 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 MUL PUSH2 0x78F DUP2 PUSH2 0x729 JUMP JUMPDEST SWAP2 POP DUP1 DUP3 EQ PUSH2 0x7A1 JUMPI PUSH2 0x7A0 PUSH2 0x6C6 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 0x7E2 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x7C7 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 0x80A DUP3 PUSH2 0x7A8 JUMP JUMPDEST PUSH2 0x814 DUP2 DUP6 PUSH2 0x7B3 JUMP JUMPDEST SWAP4 POP PUSH2 0x824 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x7C4 JUMP JUMPDEST PUSH2 0x82D DUP2 PUSH2 0x7EE 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 0x852 DUP2 DUP5 PUSH2 0x7FF 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 0x8B6 PUSH1 0x3A DUP4 PUSH2 0x7B3 JUMP JUMPDEST SWAP2 POP PUSH2 0x8C1 DUP3 PUSH2 0x85A 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 0x8E5 DUP2 PUSH2 0x8A9 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 0x953 PUSH1 0x35 DUP4 PUSH2 0x8EC JUMP JUMPDEST SWAP2 POP PUSH2 0x95E DUP3 PUSH2 0x8F7 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 0x993 DUP3 PUSH2 0x97B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x9AB PUSH2 0x9A6 DUP3 PUSH2 0x969 JUMP JUMPDEST PUSH2 0x988 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH32 0x2077697468206C656E6774682030780000000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9E7 PUSH1 0xF DUP4 PUSH2 0x8EC JUMP JUMPDEST SWAP2 POP PUSH2 0x9F2 DUP3 PUSH2 0x9B1 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 0xA59 PUSH1 0x21 DUP4 PUSH2 0x8EC JUMP JUMPDEST SWAP2 POP PUSH2 0xA64 DUP3 PUSH2 0x9FD 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 0xAA5 PUSH1 0x1 DUP4 PUSH2 0x8EC JUMP JUMPDEST SWAP2 POP PUSH2 0xAB0 DUP3 PUSH2 0xA6F JUMP JUMPDEST PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAC6 DUP3 PUSH2 0x946 JUMP JUMPDEST SWAP2 POP PUSH2 0xAD2 DUP3 DUP8 PUSH2 0x99A JUMP JUMPDEST PUSH1 0x6 DUP3 ADD SWAP2 POP PUSH2 0xAE1 DUP3 PUSH2 0x9DA JUMP JUMPDEST SWAP2 POP PUSH2 0xAED DUP3 DUP7 PUSH2 0x99A JUMP JUMPDEST PUSH1 0x6 DUP3 ADD SWAP2 POP PUSH2 0xAFC DUP3 PUSH2 0xA4C JUMP JUMPDEST SWAP2 POP PUSH2 0xB08 DUP3 DUP6 PUSH2 0x99A JUMP JUMPDEST PUSH1 0x6 DUP3 ADD SWAP2 POP PUSH2 0xB17 DUP3 PUSH2 0x9DA JUMP JUMPDEST SWAP2 POP PUSH2 0xB23 DUP3 DUP5 PUSH2 0x99A JUMP JUMPDEST PUSH1 0x6 DUP3 ADD SWAP2 POP PUSH2 0xB32 DUP3 PUSH2 0xA98 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 CHAINID SSTORE PUSH8 0xF2C1D9A1021BE214 0xA5 OR ADD 0xDB SWAP5 0xBC CREATE2 0xDC 0xC5 0x1E PUSH11 0x63134DBC98F72FDA3D3D64 PUSH20 0x6F6C634300081100330000000000000000000000 ",
"sourceMap": "113:497:1:-:0;;;;;;;;;;;;;;;;;;;"
},
"deployedBytecode": {
"functionDebugData": {
"@_amount_67": {
"entryPoint": 411,
"id": 67,
"parameterSlots": 1,
"returnSlots": 1
},
"@addressToBytes32_86": {
"entryPoint": 289,
"id": 86,
"parameterSlots": 1,
"returnSlots": 1
},
"@build_698": {
"entryPoint": 448,
"id": 698,
"parameterSlots": 3,
"returnSlots": 1
},
"@byteHex_263": {
"entryPoint": 1399,
"id": 263,
"parameterSlots": 1,
"returnSlots": 1
},
"@decodedAmount_185": {
"entryPoint": 99,
"id": 185,
"parameterSlots": 0,
"returnSlots": 1
},
"@doIt_148": {
"entryPoint": 195,
"id": 148,
"parameterSlots": 0,
"returnSlots": 0
},
"@encodeHex_356": {
"entryPoint": 1209,
"id": 356,
"parameterSlots": 1,
"returnSlots": 2
},
"@formatSample_33": {
"entryPoint": 324,
"id": 33,
"parameterSlots": 2,
"returnSlots": 1
},
"@indexErrOverrun_1010": {
"entryPoint": 1052,
"id": 1010,
"parameterSlots": 4,
"returnSlots": 1
},
"@indexUint_1117": {
"entryPoint": 551,
"id": 1117,
"parameterSlots": 3,
"returnSlots": 1
},
"@index_1087": {
"entryPoint": 649,
"id": 1087,
"parameterSlots": 3,
"returnSlots": 1
},
"@leftMask_463": {
"entryPoint": 1162,
"id": 463,
"parameterSlots": 1,
"returnSlots": 1
},
"@len_830": {
"entryPoint": 973,
"id": 830,
"parameterSlots": 1,
"returnSlots": 1
},
"@loc_776": {
"entryPoint": 1011,
"id": 776,
"parameterSlots": 1,
"returnSlots": 1
},
"@nibbleHex_236": {
"entryPoint": 1456,
"id": 236,
"parameterSlots": 1,
"returnSlots": 1
},
"@ref_724": {
"entryPoint": 368,
"id": 724,
"parameterSlots": 2,
"returnSlots": 1
},
"@unsafeBuildUnchecked_663": {
"entryPoint": 606,
"id": 663,
"parameterSlots": 3,
"returnSlots": 1
},
"abi_encode_t_bytes32_to_t_bytes32_nonPadded_inplace_fromStack": {
"entryPoint": 1634,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack": {
"entryPoint": 2047,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_t_stringliteral_3e6849d566dba71a1ac686a5bd3af1bed003e25465c91471808028cdad9d144b_to_t_string_memory_ptr_nonPadded_inplace_fromStack": {
"entryPoint": 2522,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_6f010af653ebe3cb07d297a4ef13366103d392ceffa68dd48232e6e9ff2187bf_to_t_string_memory_ptr_nonPadded_inplace_fromStack": {
"entryPoint": 2712,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_76d133faf43042eef7167f01d32e0891632a5651573db9fc8b6aa42fdbcaf509_to_t_string_memory_ptr_nonPadded_inplace_fromStack": {
"entryPoint": 2636,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_b2c061d25dd4dec479f0720f15754fff58a1a4debc7353bd1d3f4b7b23876297_to_t_string_memory_ptr_fromStack": {
"entryPoint": 2217,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_fb6c6ce939dcb005b895abe7a9570250d9c1c31a5440a6a6e28e0acc2d1c6af1_to_t_string_memory_ptr_nonPadded_inplace_fromStack": {
"entryPoint": 2374,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_uint256_to_t_uint256_fromStack": {
"entryPoint": 1572,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_uint256_to_t_uint256_nonPadded_inplace_fromStack": {
"entryPoint": 1667,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_uint48_to_t_uint48_nonPadded_inplace_fromStack": {
"entryPoint": 2458,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_tuple_packed_t_bytes32_t_uint256__to_t_bytes32_t_uint256__nonPadded_inplace_fromStack_reversed": {
"entryPoint": 1690,
"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": 2747,
"id": null,
"parameterSlots": 5,
"returnSlots": 1
},
"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 2104,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_b2c061d25dd4dec479f0720f15754fff58a1a4debc7353bd1d3f4b7b23876297__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 2252,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
"entryPoint": 1587,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"array_length_t_string_memory_ptr": {
"entryPoint": 1960,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"array_storeLengthForEncoding_t_string_memory_ptr_fromStack": {
"entryPoint": 1971,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack": {
"entryPoint": 2284,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"checked_add_t_uint256": {
"entryPoint": 1781,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"checked_mul_t_uint8": {
"entryPoint": 1899,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"checked_sub_t_uint8": {
"entryPoint": 1846,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"cleanup_t_bytes32": {
"entryPoint": 1614,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_uint256": {
"entryPoint": 1562,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_uint48": {
"entryPoint": 2409,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_uint8": {
"entryPoint": 1833,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"copy_memory_to_memory_with_cleanup": {
"entryPoint": 1988,
"id": null,
"parameterSlots": 3,
"returnSlots": 0
},
"leftAlign_t_bytes32": {
"entryPoint": 1624,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"leftAlign_t_uint256": {
"entryPoint": 1657,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"leftAlign_t_uint48": {
"entryPoint": 2440,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"panic_error_0x11": {
"entryPoint": 1734,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"panic_error_0x32": {
"entryPoint": 2880,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"round_up_to_mul_of_32": {
"entryPoint": 2030,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"shift_left_208": {
"entryPoint": 2427,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"store_literal_in_memory_3e6849d566dba71a1ac686a5bd3af1bed003e25465c91471808028cdad9d144b": {
"entryPoint": 2481,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_6f010af653ebe3cb07d297a4ef13366103d392ceffa68dd48232e6e9ff2187bf": {
"entryPoint": 2671,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_76d133faf43042eef7167f01d32e0891632a5651573db9fc8b6aa42fdbcaf509": {
"entryPoint": 2557,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_b2c061d25dd4dec479f0720f15754fff58a1a4debc7353bd1d3f4b7b23876297": {
"entryPoint": 2138,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_fb6c6ce939dcb005b895abe7a9570250d9c1c31a5440a6a6e28e0acc2d1c6af1": {
"entryPoint": 2295,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
}
},
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:9989: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:32:3",
"statements": [
{
"nodeType": "YulAssignment",
"src": "497:16:3",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "508:5:3"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "497:7:3"
}
]
}
]
},
"name": "cleanup_t_bytes32",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "469:5:3",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "479:7:3",
"type": ""
}
],
"src": "442:77:3"
},
{
"body": {
"nodeType": "YulBlock",
"src": "572:32:3",
"statements": [
{
"nodeType": "YulAssignment",
"src": "582:16:3",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "593:5:3"
},
"variableNames": [
{
"name": "aligned",
"nodeType": "YulIdentifier",
"src": "582:7:3"
}
]
}
]
},
"name": "leftAlign_t_bytes32",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "554:5:3",
"type": ""
}
],
"returnVariables": [
{
"name": "aligned",
"nodeType": "YulTypedName",
"src": "564:7:3",
"type": ""
}
],
"src": "525:79:3"
},
{
"body": {
"nodeType": "YulBlock",
"src": "693:74:3",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "710:3:3"
},
{
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "753:5:3"
}
],
"functionName": {
"name": "cleanup_t_bytes32",
"nodeType": "YulIdentifier",
"src": "735:17:3"
},
"nodeType": "YulFunctionCall",
"src": "735:24:3"
}
],
"functionName": {
"name": "leftAlign_t_bytes32",
"nodeType": "YulIdentifier",
"src": "715:19:3"
},
"nodeType": "YulFunctionCall",
"src": "715:45:3"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "703:6:3"
},
"nodeType": "YulFunctionCall",
"src": "703:58:3"
},
"nodeType": "YulExpressionStatement",
"src": "703:58:3"
}
]
},
"name": "abi_encode_t_bytes32_to_t_bytes32_nonPadded_inplace_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "681:5:3",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "688:3:3",
"type": ""
}
],
"src": "610:157:3"
},
{
"body": {
"nodeType": "YulBlock",
"src": "820:32:3",
"statements": [
{
"nodeType": "YulAssignment",
"src": "830:16:3",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "841:5:3"
},
"variableNames": [
{
"name": "aligned",
"nodeType": "YulIdentifier",
"src": "830:7:3"
}
]
}
]
},
"name": "leftAlign_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "802:5:3",
"type": ""
}
],
"returnVariables": [
{
"name": "aligned",
"nodeType": "YulTypedName",
"src": "812:7:3",
"type": ""
}
],
"src": "773:79:3"
},
{
"body": {
"nodeType": "YulBlock",
"src": "941:74:3",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "958:3:3"
},
{
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1001:5:3"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "983:17:3"
},
"nodeType": "YulFunctionCall",
"src": "983:24:3"
}
],
"functionName": {
"name": "leftAlign_t_uint256",
"nodeType": "YulIdentifier",
"src": "963:19:3"
},
"nodeType": "YulFunctionCall",
"src": "963:45:3"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "951:6:3"
},
"nodeType": "YulFunctionCall",
"src": "951:58:3"
},
"nodeType": "YulExpressionStatement",
"src": "951:58:3"
}
]
},
"name": "abi_encode_t_uint256_to_t_uint256_nonPadded_inplace_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "929:5:3",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "936:3:3",
"type": ""
}
],
"src": "858:157:3"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1165:253:3",
"statements": [
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "1238:6:3"
},
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "1247:3:3"
}
],
"functionName": {
"name": "abi_encode_t_bytes32_to_t_bytes32_nonPadded_inplace_fromStack",
"nodeType": "YulIdentifier",
"src": "1176:61:3"
},
"nodeType": "YulFunctionCall",
"src": "1176:75:3"
},
"nodeType": "YulExpressionStatement",
"src": "1176:75:3"
},
{
"nodeType": "YulAssignment",
"src": "1260:19:3",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "1271:3:3"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1276:2:3",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1267:3:3"
},
"nodeType": "YulFunctionCall",
"src": "1267:12:3"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "1260:3:3"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "1351:6:3"
},
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "1360:3:3"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_nonPadded_inplace_fromStack",
"nodeType": "YulIdentifier",
"src": "1289:61:3"
},
"nodeType": "YulFunctionCall",
"src": "1289:75:3"
},
"nodeType": "YulExpressionStatement",
"src": "1289:75:3"
},
{
"nodeType": "YulAssignment",
"src": "1373:19:3",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "1384:3:3"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1389:2:3",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1380:3:3"
},
"nodeType": "YulFunctionCall",
"src": "1380:12:3"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "1373:3:3"
}
]
},
{
"nodeType": "YulAssignment",
"src": "1402:10:3",
"value": {
"name": "pos",
"nodeType": "YulIdentifier",
"src": "1409:3:3"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "1402: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": "1136:3:3",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "1142:6:3",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "1150:6:3",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "1161:3:3",
"type": ""
}
],
"src": "1021:397:3"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1452:152:3",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1469:1:3",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1472:77:3",
"type": "",
"value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1462:6:3"
},
"nodeType": "YulFunctionCall",
"src": "1462:88:3"
},
"nodeType": "YulExpressionStatement",
"src": "1462:88:3"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1566:1:3",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1569:4:3",
"type": "",
"value": "0x11"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1559:6:3"
},
"nodeType": "YulFunctionCall",
"src": "1559:15:3"
},
"nodeType": "YulExpressionStatement",
"src": "1559:15:3"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1590:1:3",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1593:4:3",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "1583:6:3"
},
"nodeType": "YulFunctionCall",
"src": "1583:15:3"
},
"nodeType": "YulExpressionStatement",
"src": "1583:15:3"
}
]
},
"name": "panic_error_0x11",
"nodeType": "YulFunctionDefinition",
"src": "1424:180:3"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1654:147:3",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1664:25:3",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "1687:1:3"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "1669:17:3"
},
"nodeType": "YulFunctionCall",
"src": "1669:20:3"
},
"variableNames": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "1664:1:3"
}
]
},
{
"nodeType": "YulAssignment",
"src": "1698:25:3",
"value": {
"arguments": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "1721:1:3"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "1703:17:3"
},
"nodeType": "YulFunctionCall",
"src": "1703:20:3"
},
"variableNames": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "1698:1:3"
}
]
},
{
"nodeType": "YulAssignment",
"src": "1732:16:3",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "1743:1:3"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "1746:1:3"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1739:3:3"
},
"nodeType": "YulFunctionCall",
"src": "1739:9:3"
},
"variableNames": [
{
"name": "sum",
"nodeType": "YulIdentifier",
"src": "1732:3:3"
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "1772:22:3",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nodeType": "YulIdentifier",
"src": "1774:16:3"
},
"nodeType": "YulFunctionCall",
"src": "1774:18:3"
},
"nodeType": "YulExpressionStatement",
"src": "1774:18:3"
}
]
},
"condition": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "1764:1:3"
},
{
"name": "sum",
"nodeType": "YulIdentifier",
"src": "1767:3:3"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "1761:2:3"
},
"nodeType": "YulFunctionCall",
"src": "1761:10:3"
},
"nodeType": "YulIf",
"src": "1758:36:3"
}
]
},
"name": "checked_add_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "x",
"nodeType": "YulTypedName",
"src": "1641:1:3",
"type": ""
},
{
"name": "y",
"nodeType": "YulTypedName",
"src": "1644:1:3",
"type": ""
}
],
"returnVariables": [
{
"name": "sum",
"nodeType": "YulTypedName",
"src": "1650:3:3",
"type": ""
}
],
"src": "1610:191:3"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1850:43:3",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1860:27:3",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1875:5:3"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1882:4:3",
"type": "",
"value": "0xff"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "1871:3:3"
},
"nodeType": "YulFunctionCall",
"src": "1871:16:3"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "1860:7:3"
}
]
}
]
},
"name": "cleanup_t_uint8",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1832:5:3",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "1842:7:3",
"type": ""
}
],
"src": "1807:86:3"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1942:148:3",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1952:23:3",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "1973:1:3"
}
],
"functionName": {
"name": "cleanup_t_uint8",
"nodeType": "YulIdentifier",
"src": "1957:15:3"
},
"nodeType": "YulFunctionCall",
"src": "1957:18:3"
},
"variableNames": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "1952:1:3"
}
]
},
{
"nodeType": "YulAssignment",
"src": "1984:23:3",
"value": {
"arguments": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "2005:1:3"
}
],
"functionName": {
"name": "cleanup_t_uint8",
"nodeType": "YulIdentifier",
"src": "1989:15:3"
},
"nodeType": "YulFunctionCall",
"src": "1989:18:3"
},
"variableNames": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "1984:1:3"
}
]
},
{
"nodeType": "YulAssignment",
"src": "2016:17:3",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "2028:1:3"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "2031:1:3"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "2024:3:3"
},
"nodeType": "YulFunctionCall",
"src": "2024:9:3"
},
"variableNames": [
{
"name": "diff",
"nodeType": "YulIdentifier",
"src": "2016:4:3"
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "2061:22:3",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nodeType": "YulIdentifier",
"src": "2063:16:3"
},
"nodeType": "YulFunctionCall",
"src": "2063:18:3"
},
"nodeType": "YulExpressionStatement",
"src": "2063:18:3"
}
]
},
"condition": {
"arguments": [
{
"name": "diff",
"nodeType": "YulIdentifier",
"src": "2049:4:3"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2055:4:3",
"type": "",
"value": "0xff"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "2046:2:3"
},
"nodeType": "YulFunctionCall",
"src": "2046:14:3"
},
"nodeType": "YulIf",
"src": "2043:40:3"
}
]
},
"name": "checked_sub_t_uint8",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "x",
"nodeType": "YulTypedName",
"src": "1928:1:3",
"type": ""
},
{
"name": "y",
"nodeType": "YulTypedName",
"src": "1931:1:3",
"type": ""
}
],
"returnVariables": [
{
"name": "diff",
"nodeType": "YulTypedName",
"src": "1937:4:3",
"type": ""
}
],
"src": "1899:191:3"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2142:225:3",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2152:23:3",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "2173:1:3"
}
],
"functionName": {
"name": "cleanup_t_uint8",
"nodeType": "YulIdentifier",
"src": "2157:15:3"
},
"nodeType": "YulFunctionCall",
"src": "2157:18:3"
},
"variableNames": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "2152:1:3"
}
]
},
{
"nodeType": "YulAssignment",
"src": "2184:23:3",
"value": {
"arguments": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "2205:1:3"
}
],
"functionName": {
"name": "cleanup_t_uint8",
"nodeType": "YulIdentifier",
"src": "2189:15:3"
},
"nodeType": "YulFunctionCall",
"src": "2189:18:3"
},
"variableNames": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "2184:1:3"
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "2216:28:3",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "2239:1:3"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "2242:1:3"
}
],
"functionName": {
"name": "mul",
"nodeType": "YulIdentifier",
"src": "2235:3:3"
},
"nodeType": "YulFunctionCall",
"src": "2235:9:3"
},
"variables": [
{
"name": "product_raw",
"nodeType": "YulTypedName",
"src": "2220:11:3",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "2253:39:3",
"value": {
"arguments": [
{
"name": "product_raw",
"nodeType": "YulIdentifier",
"src": "2280:11:3"
}
],
"functionName": {
"name": "cleanup_t_uint8",
"nodeType": "YulIdentifier",
"src": "2264:15:3"
},
"nodeType": "YulFunctionCall",
"src": "2264:28:3"
},
"variableNames": [
{
"name": "product",
"nodeType": "YulIdentifier",
"src": "2253:7:3"
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "2338:22:3",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nodeType": "YulIdentifier",
"src": "2340:16:3"
},
"nodeType": "YulFunctionCall",
"src": "2340:18:3"
},
"nodeType": "YulExpressionStatement",
"src": "2340:18:3"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "product",
"nodeType": "YulIdentifier",
"src": "2315:7:3"
},
{
"name": "product_raw",
"nodeType": "YulIdentifier",
"src": "2324:11:3"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "2312:2:3"
},
"nodeType": "YulFunctionCall",
"src": "2312:24:3"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "2305:6:3"
},
"nodeType": "YulFunctionCall",
"src": "2305:32:3"
},
"nodeType": "YulIf",
"src": "2302:58:3"
}
]
},
"name": "checked_mul_t_uint8",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "x",
"nodeType": "YulTypedName",
"src": "2125:1:3",
"type": ""
},
{
"name": "y",
"nodeType": "YulTypedName",
"src": "2128:1:3",
"type": ""
}
],
"returnVariables": [
{
"name": "product",
"nodeType": "YulTypedName",
"src": "2134:7:3",
"type": ""
}
],
"src": "2096:271:3"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2432:40:3",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2443:22:3",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2459:5:3"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "2453:5:3"
},
"nodeType": "YulFunctionCall",
"src": "2453:12:3"
},
"variableNames": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "2443:6:3"
}
]
}
]
},
"name": "array_length_t_string_memory_ptr",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "2415:5:3",
"type": ""
}
],
"returnVariables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "2425:6:3",
"type": ""
}
],
"src": "2373:99:3"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2574:73:3",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "2591:3:3"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "2596:6:3"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "2584:6:3"
},
"nodeType": "YulFunctionCall",
"src": "2584:19:3"
},
"nodeType": "YulExpressionStatement",
"src": "2584:19:3"
},
{
"nodeType": "YulAssignment",
"src": "2612:29:3",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "2631:3:3"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2636:4:3",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2627:3:3"
},
"nodeType": "YulFunctionCall",
"src": "2627:14:3"
},
"variableNames": [
{
"name": "updated_pos",
"nodeType": "YulIdentifier",
"src": "2612:11:3"
}
]
}
]
},
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "2546:3:3",
"type": ""
},
{
"name": "length",
"nodeType": "YulTypedName",
"src": "2551:6:3",
"type": ""
}
],
"returnVariables": [
{
"name": "updated_pos",
"nodeType": "YulTypedName",
"src": "2562:11:3",
"type": ""
}
],
"src": "2478:169:3"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2715:184:3",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "2725:10:3",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "2734:1:3",
"type": "",
"value": "0"
},
"variables": [
{
"name": "i",
"nodeType": "YulTypedName",
"src": "2729:1:3",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "2794:63:3",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "2819:3:3"
},
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "2824:1:3"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2815:3:3"
},
"nodeType": "YulFunctionCall",
"src": "2815:11:3"
},
{
"arguments": [
{
"arguments": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "2838:3:3"
},
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "2843:1:3"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2834:3:3"
},
"nodeType": "YulFunctionCall",
"src": "2834:11:3"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "2828:5:3"
},
"nodeType": "YulFunctionCall",
"src": "2828:18:3"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "2808:6:3"
},
"nodeType": "YulFunctionCall",
"src": "2808:39:3"
},
"nodeType": "YulExpressionStatement",
"src": "2808:39:3"
}
]
},
"condition": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "2755:1:3"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "2758:6:3"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "2752:2:3"
},
"nodeType": "YulFunctionCall",
"src": "2752:13:3"
},
"nodeType": "YulForLoop",
"post": {
"nodeType": "YulBlock",
"src": "2766:19:3",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2768:15:3",
"value": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "2777:1:3"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2780:2:3",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2773:3:3"
},
"nodeType": "YulFunctionCall",
"src": "2773:10:3"
},
"variableNames": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "2768:1:3"
}
]
}
]
},
"pre": {
"nodeType": "YulBlock",
"src": "2748:3:3",
"statements": []
},
"src": "2744:113:3"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "2877:3:3"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "2882:6:3"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2873:3:3"
},
"nodeType": "YulFunctionCall",
"src": "2873:16:3"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2891:1:3",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "2866:6:3"
},
"nodeType": "YulFunctionCall",
"src": "2866:27:3"
},
"nodeType": "YulExpressionStatement",
"src": "2866:27:3"
}
]
},
"name": "copy_memory_to_memory_with_cleanup",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "src",
"nodeType": "YulTypedName",
"src": "2697:3:3",
"type": ""
},
{
"name": "dst",
"nodeType": "YulTypedName",
"src": "2702:3:3",
"type": ""
},
{
"name": "length",
"nodeType": "YulTypedName",
"src": "2707:6:3",
"type": ""
}
],
"src": "2653:246:3"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2953:54:3",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2963:38:3",
"value": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2981:5:3"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2988:2:3",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2977:3:3"
},
"nodeType": "YulFunctionCall",
"src": "2977:14:3"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2997:2:3",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "2993:3:3"
},
"nodeType": "YulFunctionCall",
"src": "2993:7:3"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "2973:3:3"
},
"nodeType": "YulFunctionCall",
"src": "2973:28:3"
},
"variableNames": [
{
"name": "result",
"nodeType": "YulIdentifier",
"src": "2963:6:3"
}
]
}
]
},
"name": "round_up_to_mul_of_32",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "2936:5:3",
"type": ""
}
],
"returnVariables": [
{
"name": "result",
"nodeType": "YulTypedName",
"src": "2946:6:3",
"type": ""
}
],
"src": "2905:102:3"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3105:285:3",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "3115:53:3",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "3162:5:3"
}
],
"functionName": {
"name": "array_length_t_string_memory_ptr",
"nodeType": "YulIdentifier",
"src": "3129:32:3"
},
"nodeType": "YulFunctionCall",
"src": "3129:39:3"
},
"variables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "3119:6:3",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "3177:78:3",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "3243:3:3"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "3248:6:3"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "3184:58:3"
},
"nodeType": "YulFunctionCall",
"src": "3184:71:3"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "3177:3:3"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "3303:5:3"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3310:4:3",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3299:3:3"
},
"nodeType": "YulFunctionCall",
"src": "3299:16:3"
},
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "3317:3:3"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "3322:6:3"
}
],
"functionName": {
"name": "copy_memory_to_memory_with_cleanup",
"nodeType": "YulIdentifier",
"src": "3264:34:3"
},
"nodeType": "YulFunctionCall",
"src": "3264:65:3"
},
"nodeType": "YulExpressionStatement",
"src": "3264:65:3"
},
{
"nodeType": "YulAssignment",
"src": "3338:46:3",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "3349:3:3"
},
{
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "3376:6:3"
}
],
"functionName": {
"name": "round_up_to_mul_of_32",
"nodeType": "YulIdentifier",
"src": "3354:21:3"
},
"nodeType": "YulFunctionCall",
"src": "3354:29:3"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3345:3:3"
},
"nodeType": "YulFunctionCall",
"src": "3345:39:3"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "3338:3:3"
}
]
}
]
},
"name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "3086:5:3",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "3093:3:3",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "3101:3:3",
"type": ""
}
],
"src": "3013:377:3"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3514:195:3",
"statements": [
{
"nodeType": "YulAssignment",
"src": "3524:26:3",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3536:9:3"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3547:2:3",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3532:3:3"
},
"nodeType": "YulFunctionCall",
"src": "3532:18:3"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "3524:4:3"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3571:9:3"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3582:1:3",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3567:3:3"
},
"nodeType": "YulFunctionCall",
"src": "3567:17:3"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "3590:4:3"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3596:9:3"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "3586:3:3"
},
"nodeType": "YulFunctionCall",
"src": "3586:20:3"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3560:6:3"
},
"nodeType": "YulFunctionCall",
"src": "3560:47:3"
},
"nodeType": "YulExpressionStatement",
"src": "3560:47:3"
},
{
"nodeType": "YulAssignment",
"src": "3616:86:3",
"value": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "3688:6:3"
},
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "3697:4:3"
}
],
"functionName": {
"name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "3624:63:3"
},
"nodeType": "YulFunctionCall",
"src": "3624:78:3"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "3616: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": "3486:9:3",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "3498:6:3",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "3509:4:3",
"type": ""
}
],
"src": "3396:313:3"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3821:139:3",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "3843:6:3"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3851:1:3",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3839:3:3"
},
"nodeType": "YulFunctionCall",
"src": "3839:14:3"
},
{
"hexValue": "54797065644d656d566965772f696e646578202d20417474656d707465642074",
"kind": "string",
"nodeType": "YulLiteral",
"src": "3855:34:3",
"type": "",
"value": "TypedMemView/index - Attempted t"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3832:6:3"
},
"nodeType": "YulFunctionCall",
"src": "3832:58:3"
},
"nodeType": "YulExpressionStatement",
"src": "3832:58:3"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "3911:6:3"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3919:2:3",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3907:3:3"
},
"nodeType": "YulFunctionCall",
"src": "3907:15:3"
},
{
"hexValue": "6f20696e646578206d6f7265207468616e203332206279746573",
"kind": "string",
"nodeType": "YulLiteral",
"src": "3924:28:3",
"type": "",
"value": "o index more than 32 bytes"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3900:6:3"
},
"nodeType": "YulFunctionCall",
"src": "3900:53:3"
},
"nodeType": "YulExpressionStatement",
"src": "3900:53:3"
}
]
},
"name": "store_literal_in_memory_b2c061d25dd4dec479f0720f15754fff58a1a4debc7353bd1d3f4b7b23876297",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "3813:6:3",
"type": ""
}
],
"src": "3715:245:3"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4112:220:3",
"statements": [
{
"nodeType": "YulAssignment",
"src": "4122:74:3",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "4188:3:3"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4193:2:3",
"type": "",
"value": "58"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "4129:58:3"
},
"nodeType": "YulFunctionCall",
"src": "4129:67:3"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "4122:3:3"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "4294:3:3"
}
],
"functionName": {
"name": "store_literal_in_memory_b2c061d25dd4dec479f0720f15754fff58a1a4debc7353bd1d3f4b7b23876297",
"nodeType": "YulIdentifier",
"src": "4205:88:3"
},
"nodeType": "YulFunctionCall",
"src": "4205:93:3"
},
"nodeType": "YulExpressionStatement",
"src": "4205:93:3"
},
{
"nodeType": "YulAssignment",
"src": "4307:19:3",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "4318:3:3"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4323:2:3",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4314:3:3"
},
"nodeType": "YulFunctionCall",
"src": "4314:12:3"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "4307:3:3"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_b2c061d25dd4dec479f0720f15754fff58a1a4debc7353bd1d3f4b7b23876297_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "4100:3:3",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "4108:3:3",
"type": ""
}
],
"src": "3966:366:3"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4509:248:3",
"statements": [
{
"nodeType": "YulAssignment",
"src": "4519:26:3",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4531:9:3"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4542:2:3",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4527:3:3"
},
"nodeType": "YulFunctionCall",
"src": "4527:18:3"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "4519:4:3"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4566:9:3"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4577:1:3",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4562:3:3"
},
"nodeType": "YulFunctionCall",
"src": "4562:17:3"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "4585:4:3"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4591:9:3"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "4581:3:3"
},
"nodeType": "YulFunctionCall",
"src": "4581:20:3"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "4555:6:3"
},
"nodeType": "YulFunctionCall",
"src": "4555:47:3"
},
"nodeType": "YulExpressionStatement",
"src": "4555:47:3"
},
{
"nodeType": "YulAssignment",
"src": "4611:139:3",
"value": {
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "4745:4:3"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_b2c061d25dd4dec479f0720f15754fff58a1a4debc7353bd1d3f4b7b23876297_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "4619:124:3"
},
"nodeType": "YulFunctionCall",
"src": "4619:131:3"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "4611:4:3"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_b2c061d25dd4dec479f0720f15754fff58a1a4debc7353bd1d3f4b7b23876297__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "4489:9:3",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "4504:4:3",
"type": ""
}
],
"src": "4338:419:3"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4877:34:3",
"statements": [
{
"nodeType": "YulAssignment",
"src": "4887:18:3",
"value": {
"name": "pos",
"nodeType": "YulIdentifier",
"src": "4902:3:3"
},
"variableNames": [
{
"name": "updated_pos",
"nodeType": "YulIdentifier",
"src": "4887:11:3"
}
]
}
]
},
"name": "array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "4849:3:3",
"type": ""
},
{
"name": "length",
"nodeType": "YulTypedName",
"src": "4854:6:3",
"type": ""
}
],
"returnVariables": [
{
"name": "updated_pos",
"nodeType": "YulTypedName",
"src": "4865:11:3",
"type": ""
}
],
"src": "4763:148:3"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5023:134:3",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "5045:6:3"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5053:1:3",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5041:3:3"
},
"nodeType": "YulFunctionCall",
"src": "5041:14:3"
},
{
"hexValue": "54797065644d656d566965772f696e646578202d204f76657272616e20746865",
"kind": "string",
"nodeType": "YulLiteral",
"src": "5057:34:3",
"type": "",
"value": "TypedMemView/index - Overran the"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "5034:6:3"
},
"nodeType": "YulFunctionCall",
"src": "5034:58:3"
},
"nodeType": "YulExpressionStatement",
"src": "5034:58:3"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "5113:6:3"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5121:2:3",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5109:3:3"
},
"nodeType": "YulFunctionCall",
"src": "5109:15:3"
},
{
"hexValue": "20766965772e20536c696365206973206174203078",
"kind": "string",
"nodeType": "YulLiteral",
"src": "5126:23:3",
"type": "",
"value": " view. Slice is at 0x"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "5102:6:3"
},
"nodeType": "YulFunctionCall",
"src": "5102:48:3"
},
"nodeType": "YulExpressionStatement",
"src": "5102:48:3"
}
]
},
"name": "store_literal_in_memory_fb6c6ce939dcb005b895abe7a9570250d9c1c31a5440a6a6e28e0acc2d1c6af1",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "5015:6:3",
"type": ""
}
],
"src": "4917:240:3"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5327:238:3",
"statements": [
{
"nodeType": "YulAssignment",
"src": "5337:92:3",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "5421:3:3"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5426:2:3",
"type": "",
"value": "53"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulIdentifier",
"src": "5344:76:3"
},
"nodeType": "YulFunctionCall",
"src": "5344:85:3"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "5337:3:3"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "5527:3:3"
}
],
"functionName": {
"name": "store_literal_in_memory_fb6c6ce939dcb005b895abe7a9570250d9c1c31a5440a6a6e28e0acc2d1c6af1",
"nodeType": "YulIdentifier",
"src": "5438:88:3"
},
"nodeType": "YulFunctionCall",
"src": "5438:93:3"
},
"nodeType": "YulExpressionStatement",
"src": "5438:93:3"
},
{
"nodeType": "YulAssignment",
"src": "5540:19:3",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "5551:3:3"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5556:2:3",
"type": "",
"value": "53"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5547:3:3"
},
"nodeType": "YulFunctionCall",
"src": "5547:12:3"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "5540:3:3"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_fb6c6ce939dcb005b895abe7a9570250d9c1c31a5440a6a6e28e0acc2d1c6af1_to_t_string_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "5315:3:3",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "5323:3:3",
"type": ""
}
],
"src": "5163:402:3"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5615:53:3",
"statements": [
{
"nodeType": "YulAssignment",
"src": "5625:37:3",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "5640:5:3"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5647:14:3",
"type": "",
"value": "0xffffffffffff"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "5636:3:3"
},
"nodeType": "YulFunctionCall",
"src": "5636:26:3"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "5625:7:3"
}
]
}
]
},
"name": "cleanup_t_uint48",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "5597:5:3",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "5607:7:3",
"type": ""
}
],
"src": "5571:97:3"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5717:53:3",
"statements": [
{
"nodeType": "YulAssignment",
"src": "5727:36:3",
"value": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5752:3:3",
"type": "",
"value": "208"
},
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "5757:5:3"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "5748:3:3"
},
"nodeType": "YulFunctionCall",
"src": "5748:15:3"
},
"variableNames": [
{
"name": "newValue",
"nodeType": "YulIdentifier",
"src": "5727:8:3"
}
]
}
]
},
"name": "shift_left_208",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "5698:5:3",
"type": ""
}
],
"returnVariables": [
{
"name": "newValue",
"nodeType": "YulTypedName",
"src": "5708:8:3",
"type": ""
}
],
"src": "5674:96:3"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5822:48:3",
"statements": [
{
"nodeType": "YulAssignment",
"src": "5832:32:3",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "5858:5:3"
}
],
"functionName": {
"name": "shift_left_208",
"nodeType": "YulIdentifier",
"src": "5843:14:3"
},
"nodeType": "YulFunctionCall",
"src": "5843:21:3"
},
"variableNames": [
{
"name": "aligned",
"nodeType": "YulIdentifier",
"src": "5832:7:3"
}
]
}
]
},
"name": "leftAlign_t_uint48",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "5804:5:3",
"type": ""
}
],
"returnVariables": [
{
"name": "aligned",
"nodeType": "YulTypedName",
"src": "5814:7:3",
"type": ""
}
],
"src": "5776:94:3"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5957:72:3",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "5974:3:3"
},
{
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "6015:5:3"
}
],
"functionName": {
"name": "cleanup_t_uint48",
"nodeType": "YulIdentifier",
"src": "5998:16:3"
},
"nodeType": "YulFunctionCall",
"src": "5998:23:3"
}
],
"functionName": {
"name": "leftAlign_t_uint48",
"nodeType": "YulIdentifier",
"src": "5979:18:3"
},
"nodeType": "YulFunctionCall",
"src": "5979:43:3"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "5967:6:3"
},
"nodeType": "YulFunctionCall",
"src": "5967:56:3"
},
"nodeType": "YulExpressionStatement",
"src": "5967:56:3"
}
]
},
"name": "abi_encode_t_uint48_to_t_uint48_nonPadded_inplace_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "5945:5:3",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "5952:3:3",
"type": ""
}
],
"src": "5876:153:3"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6141:59:3",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "6163:6:3"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6171:1:3",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6159:3:3"
},
"nodeType": "YulFunctionCall",
"src": "6159:14:3"
},
{
"hexValue": "2077697468206c656e677468203078",
"kind": "string",
"nodeType": "YulLiteral",
"src": "6175:17:3",
"type": "",
"value": " with length 0x"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "6152:6:3"
},
"nodeType": "YulFunctionCall",
"src": "6152:41:3"
},
"nodeType": "YulExpressionStatement",
"src": "6152:41:3"
}
]
},
"name": "store_literal_in_memory_3e6849d566dba71a1ac686a5bd3af1bed003e25465c91471808028cdad9d144b",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "6133:6:3",
"type": ""
}
],
"src": "6035:165:3"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6370:238:3",
"statements": [
{
"nodeType": "YulAssignment",
"src": "6380:92:3",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "6464:3:3"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6469:2:3",
"type": "",
"value": "15"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulIdentifier",
"src": "6387:76:3"
},
"nodeType": "YulFunctionCall",
"src": "6387:85:3"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "6380:3:3"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "6570:3:3"
}
],
"functionName": {
"name": "store_literal_in_memory_3e6849d566dba71a1ac686a5bd3af1bed003e25465c91471808028cdad9d144b",
"nodeType": "YulIdentifier",
"src": "6481:88:3"
},
"nodeType": "YulFunctionCall",
"src": "6481:93:3"
},
"nodeType": "YulExpressionStatement",
"src": "6481:93:3"
},
{
"nodeType": "YulAssignment",
"src": "6583:19:3",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "6594:3:3"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6599:2:3",
"type": "",
"value": "15"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6590:3:3"
},
"nodeType": "YulFunctionCall",
"src": "6590:12:3"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "6583:3:3"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_3e6849d566dba71a1ac686a5bd3af1bed003e25465c91471808028cdad9d144b_to_t_string_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "6358:3:3",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "6366:3:3",
"type": ""
}
],
"src": "6206:402:3"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6720:114:3",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "6742:6:3"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6750:1:3",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6738:3:3"
},
"nodeType": "YulFunctionCall",
"src": "6738:14:3"
},
{
"hexValue": "2e20417474656d7074656420746f20696e646578206174206f66667365742030",
"kind": "string",
"nodeType": "YulLiteral",
"src": "6754:34:3",
"type": "",
"value": ". Attempted to index at offset 0"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "6731:6:3"
},
"nodeType": "YulFunctionCall",
"src": "6731:58:3"
},
"nodeType": "YulExpressionStatement",
"src": "6731:58:3"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "6810:6:3"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6818:2:3",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6806:3:3"
},
"nodeType": "YulFunctionCall",
"src": "6806:15:3"
},
{
"hexValue": "78",
"kind": "string",
"nodeType": "YulLiteral",
"src": "6823:3:3",
"type": "",
"value": "x"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "6799:6:3"
},
"nodeType": "YulFunctionCall",
"src": "6799:28:3"
},
"nodeType": "YulExpressionStatement",
"src": "6799:28:3"
}
]
},
"name": "store_literal_in_memory_76d133faf43042eef7167f01d32e0891632a5651573db9fc8b6aa42fdbcaf509",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "6712:6:3",
"type": ""
}
],
"src": "6614:220:3"
},
{
"body": {
"nodeType": "YulBlock",
"src": "7004:238:3",
"statements": [
{
"nodeType": "YulAssignment",
"src": "7014:92:3",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "7098:3:3"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7103:2:3",
"type": "",
"value": "33"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulIdentifier",
"src": "7021:76:3"
},
"nodeType": "YulFunctionCall",
"src": "7021:85:3"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "7014:3:3"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "7204:3:3"
}
],
"functionName": {
"name": "store_literal_in_memory_76d133faf43042eef7167f01d32e0891632a5651573db9fc8b6aa42fdbcaf509",
"nodeType": "YulIdentifier",
"src": "7115:88:3"
},
"nodeType": "YulFunctionCall",
"src": "7115:93:3"
},
"nodeType": "YulExpressionStatement",
"src": "7115:93:3"
},
{
"nodeType": "YulAssignment",
"src": "7217:19:3",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "7228:3:3"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7233:2:3",
"type": "",
"value": "33"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7224:3:3"
},
"nodeType": "YulFunctionCall",
"src": "7224:12:3"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "7217:3:3"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_76d133faf43042eef7167f01d32e0891632a5651573db9fc8b6aa42fdbcaf509_to_t_string_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "6992:3:3",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "7000:3:3",
"type": ""
}
],
"src": "6840:402:3"
},
{
"body": {
"nodeType": "YulBlock",
"src": "7354:45:3",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "7376:6:3"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7384:1:3",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7372:3:3"
},
"nodeType": "YulFunctionCall",
"src": "7372:14:3"
},
{
"hexValue": "2e",
"kind": "string",
"nodeType": "YulLiteral",
"src": "7388:3:3",
"type": "",
"value": "."
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "7365:6:3"
},
"nodeType": "YulFunctionCall",
"src": "7365:27:3"
},
"nodeType": "YulExpressionStatement",
"src": "7365:27:3"
}
]
},
"name": "store_literal_in_memory_6f010af653ebe3cb07d297a4ef13366103d392ceffa68dd48232e6e9ff2187bf",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "7346:6:3",
"type": ""
}
],
"src": "7248:151:3"
},
{
"body": {
"nodeType": "YulBlock",
"src": "7569:236:3",
"statements": [
{
"nodeType": "YulAssignment",
"src": "7579:91:3",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "7663:3:3"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7668:1:3",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulIdentifier",
"src": "7586:76:3"
},
"nodeType": "YulFunctionCall",
"src": "7586:84:3"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "7579:3:3"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "7768:3:3"
}
],
"functionName": {
"name": "store_literal_in_memory_6f010af653ebe3cb07d297a4ef13366103d392ceffa68dd48232e6e9ff2187bf",
"nodeType": "YulIdentifier",
"src": "7679:88:3"
},
"nodeType": "YulFunctionCall",
"src": "7679:93:3"
},
"nodeType": "YulExpressionStatement",
"src": "7679:93:3"
},
{
"nodeType": "YulAssignment",
"src": "7781:18:3",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "7792:3:3"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7797:1:3",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7788:3:3"
},
"nodeType": "YulFunctionCall",
"src": "7788:11:3"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "7781:3:3"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_6f010af653ebe3cb07d297a4ef13366103d392ceffa68dd48232e6e9ff2187bf_to_t_string_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "7557:3:3",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "7565:3:3",
"type": ""
}
],
"src": "7405:400:3"
},
{
"body": {
"nodeType": "YulBlock",
"src": "8508:1292:3",
"statements": [
{
"nodeType": "YulAssignment",
"src": "8519:155:3",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "8670:3:3"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_fb6c6ce939dcb005b895abe7a9570250d9c1c31a5440a6a6e28e0acc2d1c6af1_to_t_string_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulIdentifier",
"src": "8526:142:3"
},
"nodeType": "YulFunctionCall",
"src": "8526:148:3"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "8519:3:3"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "8744:6:3"
},
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "8753:3:3"
}
],
"functionName": {
"name": "abi_encode_t_uint48_to_t_uint48_nonPadded_inplace_fromStack",
"nodeType": "YulIdentifier",
"src": "8684:59:3"
},
"nodeType": "YulFunctionCall",
"src": "8684:73:3"
},
"nodeType": "YulExpressionStatement",
"src": "8684:73:3"
},
{
"nodeType": "YulAssignment",
"src": "8766:18:3",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "8777:3:3"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8782:1:3",
"type": "",
"value": "6"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8773:3:3"
},
"nodeType": "YulFunctionCall",
"src": "8773:11:3"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "8766:3:3"
}
]
},
{
"nodeType": "YulAssignment",
"src": "8794:155:3",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "8945:3:3"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_3e6849d566dba71a1ac686a5bd3af1bed003e25465c91471808028cdad9d144b_to_t_string_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulIdentifier",
"src": "8801:142:3"
},
"nodeType": "YulFunctionCall",
"src": "8801:148:3"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "8794:3:3"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "9019:6:3"
},
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "9028:3:3"
}
],
"functionName": {
"name": "abi_encode_t_uint48_to_t_uint48_nonPadded_inplace_fromStack",
"nodeType": "YulIdentifier",
"src": "8959:59:3"
},
"nodeType": "YulFunctionCall",
"src": "8959:73:3"
},
"nodeType": "YulExpressionStatement",
"src": "8959:73:3"
},
{
"nodeType": "YulAssignment",
"src": "9041:18:3",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "9052:3:3"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9057:1:3",
"type": "",
"value": "6"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "9048:3:3"
},
"nodeType": "YulFunctionCall",
"src": "9048:11:3"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "9041:3:3"
}
]
},
{
"nodeType": "YulAssignment",
"src": "9069:155:3",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "9220:3:3"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_76d133faf43042eef7167f01d32e0891632a5651573db9fc8b6aa42fdbcaf509_to_t_string_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulIdentifier",
"src": "9076:142:3"
},
"nodeType": "YulFunctionCall",
"src": "9076:148:3"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "9069:3:3"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value2",
"nodeType": "YulIdentifier",
"src": "9294:6:3"
},
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "9303:3:3"
}
],
"functionName": {
"name": "abi_encode_t_uint48_to_t_uint48_nonPadded_inplace_fromStack",
"nodeType": "YulIdentifier",
"src": "9234:59:3"
},
"nodeType": "YulFunctionCall",
"src": "9234:73:3"
},
"nodeType": "YulExpressionStatement",
"src": "9234:73:3"
},
{
"nodeType": "YulAssignment",
"src": "9316:18:3",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "9327:3:3"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9332:1:3",
"type": "",
"value": "6"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "9323:3:3"
},
"nodeType": "YulFunctionCall",
"src": "9323:11:3"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "9316:3:3"
}
]
},
{
"nodeType": "YulAssignment",
"src": "9344:155:3",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "9495:3:3"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_3e6849d566dba71a1ac686a5bd3af1bed003e25465c91471808028cdad9d144b_to_t_string_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulIdentifier",
"src": "9351:142:3"
},
"nodeType": "YulFunctionCall",
"src": "9351:148:3"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "9344:3:3"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value3",
"nodeType": "YulIdentifier",
"src": "9569:6:3"
},
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "9578:3:3"
}
],
"functionName": {
"name": "abi_encode_t_uint48_to_t_uint48_nonPadded_inplace_fromStack",
"nodeType": "YulIdentifier",
"src": "9509:59:3"
},
"nodeType": "YulFunctionCall",
"src": "9509:73:3"
},
"nodeType": "YulExpressionStatement",
"src": "9509:73:3"
},
{
"nodeType": "YulAssignment",
"src": "9591:18:3",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "9602:3:3"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9607:1:3",
"type": "",
"value": "6"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "9598:3:3"
},
"nodeType": "YulFunctionCall",
"src": "9598:11:3"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "9591:3:3"
}
]
},
{
"nodeType": "YulAssignment",
"src": "9619:155:3",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "9770:3:3"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_6f010af653ebe3cb07d297a4ef13366103d392ceffa68dd48232e6e9ff2187bf_to_t_string_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulIdentifier",
"src": "9626:142:3"
},
"nodeType": "YulFunctionCall",
"src": "9626:148:3"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "9619:3:3"
}
]
},
{
"nodeType": "YulAssignment",
"src": "9784:10:3",
"value": {
"name": "pos",
"nodeType": "YulIdentifier",
"src": "9791:3:3"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "9784: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": "8463:3:3",
"type": ""
},
{
"name": "value3",
"nodeType": "YulTypedName",
"src": "8469:6:3",
"type": ""
},
{
"name": "value2",
"nodeType": "YulTypedName",
"src": "8477:6:3",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "8485:6:3",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "8493:6:3",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "8504:3:3",
"type": ""
}
],
"src": "7811:1989:3"
},
{
"body": {
"nodeType": "YulBlock",
"src": "9834:152:3",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9851:1:3",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9854:77:3",
"type": "",
"value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "9844:6:3"
},
"nodeType": "YulFunctionCall",
"src": "9844:88:3"
},
"nodeType": "YulExpressionStatement",
"src": "9844:88:3"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9948:1:3",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9951:4:3",
"type": "",
"value": "0x32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "9941:6:3"
},
"nodeType": "YulFunctionCall",
"src": "9941:15:3"
},
"nodeType": "YulExpressionStatement",
"src": "9941:15:3"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9972:1:3",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9975:4:3",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "9965:6:3"
},
"nodeType": "YulFunctionCall",
"src": "9965:15:3"
},
"nodeType": "YulExpressionStatement",
"src": "9965:15:3"
}
]
},
"name": "panic_error_0x32",
"nodeType": "YulFunctionDefinition",
"src": "9806: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_bytes32(value) -> cleaned {\n cleaned := value\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": 197
}
]
}
},
"object": "608060405234801561001057600080fd5b50600436106100365760003560e01c8063687888681461003b578063b29f083514610059575b600080fd5b610043610063565b6040516100509190610633565b60405180910390f35b6100616100c3565b005b60008061008373e0f5206bbd039e7b0592d8918820024e2a7437b9610121565b9050600061009282600a610144565b905060006100aa60008361017090919063ffffffff16565b905060006100b78261019b565b90508094505050505090565b73__$444bebbe5b1c08ea17d8fdfa4d915df024$__63fdc853086040518163ffffffff1660e01b815260040160006040518083038186803b15801561010757600080fd5b505af415801561011b573d6000803e3d6000fd5b50505050565b60008173ffffffffffffffffffffffffffffffffffffffff1660001b9050919050565b6060828260405160200161015992919061069a565b604051602081830303815290604052905092915050565b6000808351905060006020850190506101918464ffffffffff1682846101c0565b9250505092915050565b60006101b96020808462ffffff19166102279092919063ffffffff16565b9050919050565b60008082846101cf91906106f5565b90506040518111156101e057600090505b60008103610211577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000915050610220565b61021c85858561025e565b9150505b9392505050565b600060088260206102389190610736565b610242919061076b565b60ff16610250858585610289565b60001c901c90509392505050565b60008060609050600060189050858317821b9250848317821b9250838317811b925050509392505050565b6000808260ff16036102a0576000801b90506103c6565b6102a9846103cd565b6bffffffffffffffffffffffff168260ff16846102c691906106f5565b1115610343576103076102d8856103f3565b6bffffffffffffffffffffffff166102ef866103cd565b6bffffffffffffffffffffffff16858560ff1661041c565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161033a9190610838565b60405180910390fd5b60208260ff16111561038a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610381906108cc565b60405180910390fd5b6000600883029050600061039d866103f3565b6bffffffffffffffffffffffff16905060006103b88361048a565b905080868301511693505050505b9392505050565b6000806bffffffffffffffffffffffff90506000601890508184821c1692505050919050565b6000806bffffffffffffffffffffffff90506000607860ff1690508184821c1692505050919050565b60606000610429866104b9565b9150506000610437866104b9565b9150506000610445866104b9565b9150506000610453866104b9565b9150508383838360405160200161046d9493929190610abb565b604051602081830303815290604052945050505050949350505050565b60007f8000000000000000000000000000000000000000000000000000000000000000600183031d9050919050565b6000806000601f90505b600f8160ff1611156105165760006008826104de919061076b565b60ff1685901c90506104ef81610577565b61ffff168417935060108260ff161461050a57601084901b93505b600182039150506104c3565b506000600f90505b60ff8160ff161015610571576000600882610539919061076b565b60ff1685901c905061054a81610577565b61ffff168317925060008260ff161461056557601083901b92505b6001820391505061051e565b50915091565b600061058960048360ff16901c6105b0565b60ff168117905060088161ffff16901b90506105a4826105b0565b60ff1681179050919050565b600080600f831690506040518060400160405280601081526020017f30313233343536373839616263646566000000000000000000000000000000008152508160ff168151811061060457610603610b40565b5b602001015160f81c60f81b60f81c915050919050565b6000819050919050565b61062d8161061a565b82525050565b60006020820190506106486000830184610624565b92915050565b6000819050919050565b6000819050919050565b61067361066e8261064e565b610658565b82525050565b6000819050919050565b61069461068f8261061a565b610679565b82525050565b60006106a68285610662565b6020820191506106b68284610683565b6020820191508190509392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006107008261061a565b915061070b8361061a565b9250828201905080821115610723576107226106c6565b5b92915050565b600060ff82169050919050565b600061074182610729565b915061074c83610729565b9250828203905060ff811115610765576107646106c6565b5b92915050565b600061077682610729565b915061078183610729565b925082820261078f81610729565b91508082146107a1576107a06106c6565b5b5092915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156107e25780820151818401526020810190506107c7565b60008484015250505050565b6000601f19601f8301169050919050565b600061080a826107a8565b61081481856107b3565b93506108248185602086016107c4565b61082d816107ee565b840191505092915050565b6000602082019050818103600083015261085281846107ff565b905092915050565b7f54797065644d656d566965772f696e646578202d20417474656d70746564207460008201527f6f20696e646578206d6f7265207468616e203332206279746573000000000000602082015250565b60006108b6603a836107b3565b91506108c18261085a565b604082019050919050565b600060208201905081810360008301526108e5816108a9565b9050919050565b600081905092915050565b7f54797065644d656d566965772f696e646578202d204f76657272616e2074686560008201527f20766965772e20536c6963652069732061742030780000000000000000000000602082015250565b60006109536035836108ec565b915061095e826108f7565b603582019050919050565b600065ffffffffffff82169050919050565b60008160d01b9050919050565b60006109938261097b565b9050919050565b6109ab6109a682610969565b610988565b82525050565b7f2077697468206c656e6774682030780000000000000000000000000000000000600082015250565b60006109e7600f836108ec565b91506109f2826109b1565b600f82019050919050565b7f2e20417474656d7074656420746f20696e646578206174206f6666736574203060008201527f7800000000000000000000000000000000000000000000000000000000000000602082015250565b6000610a596021836108ec565b9150610a64826109fd565b602182019050919050565b7f2e00000000000000000000000000000000000000000000000000000000000000600082015250565b6000610aa56001836108ec565b9150610ab082610a6f565b600182019050919050565b6000610ac682610946565b9150610ad2828761099a565b600682019150610ae1826109da565b9150610aed828661099a565b600682019150610afc82610a4c565b9150610b08828561099a565b600682019150610b17826109da565b9150610b23828461099a565b600682019150610b3282610a98565b915081905095945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea2646970667358221220465567f2c1d9a1021be214a51701db94bcf5dcc51e6a63134dbc98f72fda3d3d64736f6c63430008110033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x68788868 EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0xB29F0835 EQ PUSH2 0x59 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x43 PUSH2 0x63 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x50 SWAP2 SWAP1 PUSH2 0x633 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x61 PUSH2 0xC3 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x83 PUSH20 0xE0F5206BBD039E7B0592D8918820024E2A7437B9 PUSH2 0x121 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x92 DUP3 PUSH1 0xA PUSH2 0x144 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xAA PUSH1 0x0 DUP4 PUSH2 0x170 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xB7 DUP3 PUSH2 0x19B JUMP JUMPDEST SWAP1 POP DUP1 SWAP5 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 0x107 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x11B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST 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 0x159 SWAP3 SWAP2 SWAP1 PUSH2 0x69A 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 0x191 DUP5 PUSH5 0xFFFFFFFFFF AND DUP3 DUP5 PUSH2 0x1C0 JUMP JUMPDEST SWAP3 POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1B9 PUSH1 0x20 DUP1 DUP5 PUSH3 0xFFFFFF NOT AND PUSH2 0x227 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 PUSH2 0x1CF SWAP2 SWAP1 PUSH2 0x6F5 JUMP JUMPDEST SWAP1 POP PUSH1 0x40 MLOAD DUP2 GT ISZERO PUSH2 0x1E0 JUMPI PUSH1 0x0 SWAP1 POP JUMPDEST PUSH1 0x0 DUP2 SUB PUSH2 0x211 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000 SWAP2 POP POP PUSH2 0x220 JUMP JUMPDEST PUSH2 0x21C DUP6 DUP6 DUP6 PUSH2 0x25E JUMP JUMPDEST SWAP2 POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x8 DUP3 PUSH1 0x20 PUSH2 0x238 SWAP2 SWAP1 PUSH2 0x736 JUMP JUMPDEST PUSH2 0x242 SWAP2 SWAP1 PUSH2 0x76B JUMP JUMPDEST PUSH1 0xFF AND PUSH2 0x250 DUP6 DUP6 DUP6 PUSH2 0x289 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 0x2A0 JUMPI PUSH1 0x0 DUP1 SHL SWAP1 POP PUSH2 0x3C6 JUMP JUMPDEST PUSH2 0x2A9 DUP5 PUSH2 0x3CD JUMP JUMPDEST PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH1 0xFF AND DUP5 PUSH2 0x2C6 SWAP2 SWAP1 PUSH2 0x6F5 JUMP JUMPDEST GT ISZERO PUSH2 0x343 JUMPI PUSH2 0x307 PUSH2 0x2D8 DUP6 PUSH2 0x3F3 JUMP JUMPDEST PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2EF DUP7 PUSH2 0x3CD JUMP JUMPDEST PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 DUP6 PUSH1 0xFF AND PUSH2 0x41C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x33A SWAP2 SWAP1 PUSH2 0x838 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x20 DUP3 PUSH1 0xFF AND GT ISZERO PUSH2 0x38A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x381 SWAP1 PUSH2 0x8CC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x8 DUP4 MUL SWAP1 POP PUSH1 0x0 PUSH2 0x39D DUP7 PUSH2 0x3F3 JUMP JUMPDEST PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 PUSH2 0x3B8 DUP4 PUSH2 0x48A 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 0x429 DUP7 PUSH2 0x4B9 JUMP JUMPDEST SWAP2 POP POP PUSH1 0x0 PUSH2 0x437 DUP7 PUSH2 0x4B9 JUMP JUMPDEST SWAP2 POP POP PUSH1 0x0 PUSH2 0x445 DUP7 PUSH2 0x4B9 JUMP JUMPDEST SWAP2 POP POP PUSH1 0x0 PUSH2 0x453 DUP7 PUSH2 0x4B9 JUMP JUMPDEST SWAP2 POP POP DUP4 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x46D SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xABB 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 0x516 JUMPI PUSH1 0x0 PUSH1 0x8 DUP3 PUSH2 0x4DE SWAP2 SWAP1 PUSH2 0x76B JUMP JUMPDEST PUSH1 0xFF AND DUP6 SWAP1 SHR SWAP1 POP PUSH2 0x4EF DUP2 PUSH2 0x577 JUMP JUMPDEST PUSH2 0xFFFF AND DUP5 OR SWAP4 POP PUSH1 0x10 DUP3 PUSH1 0xFF AND EQ PUSH2 0x50A JUMPI PUSH1 0x10 DUP5 SWAP1 SHL SWAP4 POP JUMPDEST PUSH1 0x1 DUP3 SUB SWAP2 POP POP PUSH2 0x4C3 JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0xF SWAP1 POP JUMPDEST PUSH1 0xFF DUP2 PUSH1 0xFF AND LT ISZERO PUSH2 0x571 JUMPI PUSH1 0x0 PUSH1 0x8 DUP3 PUSH2 0x539 SWAP2 SWAP1 PUSH2 0x76B JUMP JUMPDEST PUSH1 0xFF AND DUP6 SWAP1 SHR SWAP1 POP PUSH2 0x54A DUP2 PUSH2 0x577 JUMP JUMPDEST PUSH2 0xFFFF AND DUP4 OR SWAP3 POP PUSH1 0x0 DUP3 PUSH1 0xFF AND EQ PUSH2 0x565 JUMPI PUSH1 0x10 DUP4 SWAP1 SHL SWAP3 POP JUMPDEST PUSH1 0x1 DUP3 SUB SWAP2 POP POP PUSH2 0x51E JUMP JUMPDEST POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x589 PUSH1 0x4 DUP4 PUSH1 0xFF AND SWAP1 SHR PUSH2 0x5B0 JUMP JUMPDEST PUSH1 0xFF AND DUP2 OR SWAP1 POP PUSH1 0x8 DUP2 PUSH2 0xFFFF AND SWAP1 SHL SWAP1 POP PUSH2 0x5A4 DUP3 PUSH2 0x5B0 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 0x604 JUMPI PUSH2 0x603 PUSH2 0xB40 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 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x62D DUP2 PUSH2 0x61A JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x648 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x624 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x673 PUSH2 0x66E DUP3 PUSH2 0x64E JUMP JUMPDEST PUSH2 0x658 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x694 PUSH2 0x68F DUP3 PUSH2 0x61A JUMP JUMPDEST PUSH2 0x679 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6A6 DUP3 DUP6 PUSH2 0x662 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH2 0x6B6 DUP3 DUP5 PUSH2 0x683 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 0x700 DUP3 PUSH2 0x61A JUMP JUMPDEST SWAP2 POP PUSH2 0x70B DUP4 PUSH2 0x61A JUMP JUMPDEST SWAP3 POP DUP3 DUP3 ADD SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x723 JUMPI PUSH2 0x722 PUSH2 0x6C6 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 0x741 DUP3 PUSH2 0x729 JUMP JUMPDEST SWAP2 POP PUSH2 0x74C DUP4 PUSH2 0x729 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 SUB SWAP1 POP PUSH1 0xFF DUP2 GT ISZERO PUSH2 0x765 JUMPI PUSH2 0x764 PUSH2 0x6C6 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x776 DUP3 PUSH2 0x729 JUMP JUMPDEST SWAP2 POP PUSH2 0x781 DUP4 PUSH2 0x729 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 MUL PUSH2 0x78F DUP2 PUSH2 0x729 JUMP JUMPDEST SWAP2 POP DUP1 DUP3 EQ PUSH2 0x7A1 JUMPI PUSH2 0x7A0 PUSH2 0x6C6 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 0x7E2 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x7C7 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 0x80A DUP3 PUSH2 0x7A8 JUMP JUMPDEST PUSH2 0x814 DUP2 DUP6 PUSH2 0x7B3 JUMP JUMPDEST SWAP4 POP PUSH2 0x824 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x7C4 JUMP JUMPDEST PUSH2 0x82D DUP2 PUSH2 0x7EE 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 0x852 DUP2 DUP5 PUSH2 0x7FF 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 0x8B6 PUSH1 0x3A DUP4 PUSH2 0x7B3 JUMP JUMPDEST SWAP2 POP PUSH2 0x8C1 DUP3 PUSH2 0x85A 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 0x8E5 DUP2 PUSH2 0x8A9 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 0x953 PUSH1 0x35 DUP4 PUSH2 0x8EC JUMP JUMPDEST SWAP2 POP PUSH2 0x95E DUP3 PUSH2 0x8F7 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 0x993 DUP3 PUSH2 0x97B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x9AB PUSH2 0x9A6 DUP3 PUSH2 0x969 JUMP JUMPDEST PUSH2 0x988 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH32 0x2077697468206C656E6774682030780000000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9E7 PUSH1 0xF DUP4 PUSH2 0x8EC JUMP JUMPDEST SWAP2 POP PUSH2 0x9F2 DUP3 PUSH2 0x9B1 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 0xA59 PUSH1 0x21 DUP4 PUSH2 0x8EC JUMP JUMPDEST SWAP2 POP PUSH2 0xA64 DUP3 PUSH2 0x9FD 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 0xAA5 PUSH1 0x1 DUP4 PUSH2 0x8EC JUMP JUMPDEST SWAP2 POP PUSH2 0xAB0 DUP3 PUSH2 0xA6F JUMP JUMPDEST PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAC6 DUP3 PUSH2 0x946 JUMP JUMPDEST SWAP2 POP PUSH2 0xAD2 DUP3 DUP8 PUSH2 0x99A JUMP JUMPDEST PUSH1 0x6 DUP3 ADD SWAP2 POP PUSH2 0xAE1 DUP3 PUSH2 0x9DA JUMP JUMPDEST SWAP2 POP PUSH2 0xAED DUP3 DUP7 PUSH2 0x99A JUMP JUMPDEST PUSH1 0x6 DUP3 ADD SWAP2 POP PUSH2 0xAFC DUP3 PUSH2 0xA4C JUMP JUMPDEST SWAP2 POP PUSH2 0xB08 DUP3 DUP6 PUSH2 0x99A JUMP JUMPDEST PUSH1 0x6 DUP3 ADD SWAP2 POP PUSH2 0xB17 DUP3 PUSH2 0x9DA JUMP JUMPDEST SWAP2 POP PUSH2 0xB23 DUP3 DUP5 PUSH2 0x99A JUMP JUMPDEST PUSH1 0x6 DUP3 ADD SWAP2 POP PUSH2 0xB32 DUP3 PUSH2 0xA98 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 CHAINID SSTORE PUSH8 0xF2C1D9A1021BE214 0xA5 OR ADD 0xDB SWAP5 0xBC CREATE2 0xDC 0xC5 0x1E PUSH11 0x63134DBC98F72FDA3D3D64 PUSH20 0x6F6C634300081100330000000000000000000000 ",
"sourceMap": "113:497:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;244:363;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;180:56;;;:::i;:::-;;244:363;290:7;310:17;330:67;354:42;330:23;:67::i;:::-;310:87;;408:20;431:34;451:9;462:2;431:19;:34::i;:::-;408:57;;476:20;499:14;511:1;499:7;:11;;:14;;;;:::i;:::-;476:37;;526:16;545:28;560:12;545:14;:28::i;:::-;526:47;;591:8;584:15;;;;;;244:363;:::o;180:56::-;214:6;:12;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;180:56::o;773:129:0:-;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: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;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;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;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:77::-;479:7;508:5;497:16;;442:77;;;:::o;525:79::-;564:7;593:5;582:16;;525:79;;;:::o;610:157::-;715:45;735:24;753:5;735:24;:::i;:::-;715:45;:::i;:::-;710:3;703:58;610:157;;:::o;773:79::-;812:7;841:5;830:16;;773:79;;;:::o;858:157::-;963:45;983:24;1001:5;983:24;:::i;:::-;963:45;:::i;:::-;958:3;951:58;858:157;;:::o;1021:397::-;1161:3;1176:75;1247:3;1238:6;1176:75;:::i;:::-;1276:2;1271:3;1267:12;1260:19;;1289:75;1360:3;1351:6;1289:75;:::i;:::-;1389:2;1384:3;1380:12;1373:19;;1409:3;1402:10;;1021:397;;;;;:::o;1424:180::-;1472:77;1469:1;1462:88;1569:4;1566:1;1559:15;1593:4;1590:1;1583:15;1610:191;1650:3;1669:20;1687:1;1669:20;:::i;:::-;1664:25;;1703:20;1721:1;1703:20;:::i;:::-;1698:25;;1746:1;1743;1739:9;1732:16;;1767:3;1764:1;1761:10;1758:36;;;1774:18;;:::i;:::-;1758:36;1610:191;;;;:::o;1807:86::-;1842:7;1882:4;1875:5;1871:16;1860:27;;1807:86;;;:::o;1899:191::-;1937:4;1957:18;1973:1;1957:18;:::i;:::-;1952:23;;1989:18;2005:1;1989:18;:::i;:::-;1984:23;;2031:1;2028;2024:9;2016:17;;2055:4;2049;2046:14;2043:40;;;2063:18;;:::i;:::-;2043:40;1899:191;;;;:::o;2096:271::-;2134:7;2157:18;2173:1;2157:18;:::i;:::-;2152:23;;2189:18;2205:1;2189:18;:::i;:::-;2184:23;;2242:1;2239;2235:9;2264:28;2280:11;2264:28;:::i;:::-;2253:39;;2324:11;2315:7;2312:24;2302:58;;2340:18;;:::i;:::-;2302:58;2142:225;2096:271;;;;:::o;2373:99::-;2425:6;2459:5;2453:12;2443:22;;2373:99;;;:::o;2478:169::-;2562:11;2596:6;2591:3;2584:19;2636:4;2631:3;2627:14;2612:29;;2478:169;;;;:::o;2653:246::-;2734:1;2744:113;2758:6;2755:1;2752:13;2744:113;;;2843:1;2838:3;2834:11;2828:18;2824:1;2819:3;2815:11;2808:39;2780:2;2777:1;2773:10;2768:15;;2744:113;;;2891:1;2882:6;2877:3;2873:16;2866:27;2715:184;2653:246;;;:::o;2905:102::-;2946:6;2997:2;2993:7;2988:2;2981:5;2977:14;2973:28;2963:38;;2905:102;;;:::o;3013:377::-;3101:3;3129:39;3162:5;3129:39;:::i;:::-;3184:71;3248:6;3243:3;3184:71;:::i;:::-;3177:78;;3264:65;3322:6;3317:3;3310:4;3303:5;3299:16;3264:65;:::i;:::-;3354:29;3376:6;3354:29;:::i;:::-;3349:3;3345:39;3338:46;;3105:285;3013:377;;;;:::o;3396:313::-;3509:4;3547:2;3536:9;3532:18;3524:26;;3596:9;3590:4;3586:20;3582:1;3571:9;3567:17;3560:47;3624:78;3697:4;3688:6;3624:78;:::i;:::-;3616:86;;3396:313;;;;:::o;3715:245::-;3855:34;3851:1;3843:6;3839:14;3832:58;3924:28;3919:2;3911:6;3907:15;3900:53;3715:245;:::o;3966:366::-;4108:3;4129:67;4193:2;4188:3;4129:67;:::i;:::-;4122:74;;4205:93;4294:3;4205:93;:::i;:::-;4323:2;4318:3;4314:12;4307:19;;3966:366;;;:::o;4338:419::-;4504:4;4542:2;4531:9;4527:18;4519:26;;4591:9;4585:4;4581:20;4577:1;4566:9;4562:17;4555:47;4619:131;4745:4;4619:131;:::i;:::-;4611:139;;4338:419;;;:::o;4763:148::-;4865:11;4902:3;4887:18;;4763:148;;;;:::o;4917:240::-;5057:34;5053:1;5045:6;5041:14;5034:58;5126:23;5121:2;5113:6;5109:15;5102:48;4917:240;:::o;5163:402::-;5323:3;5344:85;5426:2;5421:3;5344:85;:::i;:::-;5337:92;;5438:93;5527:3;5438:93;:::i;:::-;5556:2;5551:3;5547:12;5540:19;;5163:402;;;:::o;5571:97::-;5607:7;5647:14;5640:5;5636:26;5625:37;;5571:97;;;:::o;5674:96::-;5708:8;5757:5;5752:3;5748:15;5727:36;;5674:96;;;:::o;5776:94::-;5814:7;5843:21;5858:5;5843:21;:::i;:::-;5832:32;;5776:94;;;:::o;5876:153::-;5979:43;5998:23;6015:5;5998:23;:::i;:::-;5979:43;:::i;:::-;5974:3;5967:56;5876:153;;:::o;6035:165::-;6175:17;6171:1;6163:6;6159:14;6152:41;6035:165;:::o;6206:402::-;6366:3;6387:85;6469:2;6464:3;6387:85;:::i;:::-;6380:92;;6481:93;6570:3;6481:93;:::i;:::-;6599:2;6594:3;6590:12;6583:19;;6206:402;;;:::o;6614:220::-;6754:34;6750:1;6742:6;6738:14;6731:58;6823:3;6818:2;6810:6;6806:15;6799:28;6614:220;:::o;6840:402::-;7000:3;7021:85;7103:2;7098:3;7021:85;:::i;:::-;7014:92;;7115:93;7204:3;7115:93;:::i;:::-;7233:2;7228:3;7224:12;7217:19;;6840:402;;;:::o;7248:151::-;7388:3;7384:1;7376:6;7372:14;7365:27;7248:151;:::o;7405:400::-;7565:3;7586:84;7668:1;7663:3;7586:84;:::i;:::-;7579:91;;7679:93;7768:3;7679:93;:::i;:::-;7797:1;7792:3;7788:11;7781:18;;7405:400;;;:::o;7811:1989::-;8504:3;8526:148;8670:3;8526:148;:::i;:::-;8519:155;;8684:73;8753:3;8744:6;8684:73;:::i;:::-;8782:1;8777:3;8773:11;8766:18;;8801:148;8945:3;8801:148;:::i;:::-;8794:155;;8959:73;9028:3;9019:6;8959:73;:::i;:::-;9057:1;9052:3;9048:11;9041:18;;9076:148;9220:3;9076:148;:::i;:::-;9069:155;;9234:73;9303:3;9294:6;9234:73;:::i;:::-;9332:1;9327:3;9323:11;9316:18;;9351:148;9495:3;9351:148;:::i;:::-;9344:155;;9509:73;9578:3;9569:6;9509:73;:::i;:::-;9607:1;9602:3;9598:11;9591:18;;9626:148;9770:3;9626:148;:::i;:::-;9619:155;;9791:3;9784:10;;7811:1989;;;;;;;:::o;9806:180::-;9854:77;9851:1;9844:88;9951:4;9948:1;9941:15;9975:4;9972:1;9965:15"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "596200",
"executionCost": "632",
"totalCost": "596832"
},
"external": {
"decodedAmount()": "infinite",
"doIt()": "infinite"
}
},
"methodIdentifiers": {
"decodedAmount()": "68788868",
"doIt()": "b29f0835"
}
},
"abi": [
{
"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": "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": "0x2cd499d57a5a686a20ea39f0dd8ced3bddfce4df435cea519225048ff9c5dd0e",
"license": "MIT",
"urls": [
"bzz-raw://94e2db8fd6aa527723fcd37ee69d0303702f7bc3ece45e9049b603b3b2d70477",
"dweb:/ipfs/QmPJ6bqVWhHym5TSnAeQ2AQm2phYNC3sh5TX8KG6hfXQby"
]
},
"SampleWrapper.sol": {
"keccak256": "0x3326fc73a9464d30ffd04aa945800cc9fc3191ef4f69087ed7b85ae0d0d0cdea",
"license": "MIT",
"urls": [
"bzz-raw://32ae0c74245bb1c82941a7887d3df589aaf67b245f85f0f4bd256b8396105501",
"dweb:/ipfs/QmNxxtpBX6AFe6a1crx5DupjhVouJpbZxrDV21pLpVgPLf"
]
},
"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 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();
}
function decodedAmount() public pure returns (uint256) {
bytes32 recipient = Sample.addressToBytes32(0xE0f5206BBD039e7b0592d8918820024e2a7437b9);
bytes memory daBytes = Sample.formatSample(recipient, 10);
bytes29 _originalMsg = daBytes.ref(0);
uint256 daAmount = Sample._amount(_originalMsg);
return daAmount;
}
}
// 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": 759,
"src": "18328:4:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 776,
"name": "encodeHex",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 169,
"src": "18318:9:0",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
"typeString": "function (uint256) pure returns (uint256,uint256)"
}
},
"id": 778,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "18318:15:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
"typeString": "tuple(uint256,uint256)"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "18302:31:0"
},
{
"assignments": [
null,
781
],
"declarations": [
null,
{
"constant": false,
"id": 781,
"mutability": "mutable",
"name": "c",
"nameLocation": "18355:1:0",
"nodeType": "VariableDeclaration",
"scope": 822,
"src": "18347:9:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 780,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "18347:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 785,
"initialValue": {
"arguments": [
{
"id": 783,
"name": "_index",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 761,
"src": "18370:6:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 782,
"name": "encodeHex",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 169,
"src": "18360:9:0",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
"typeString": "function (uint256) pure returns (uint256,uint256)"
}
},
"id": 784,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "18360:17:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
"typeString": "tuple(uint256,uint256)"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "18344:33:0"
},
{
"assignments": [
null,
787
],
"declarations": [
null,
{
"constant": false,
"id": 787,
"mutability": "mutable",
"name": "d",
"nameLocation": "18399:1:0",
"nodeType": "VariableDeclaration",
"scope": 822,
"src": "18391:9:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 786,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "18391:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 791,
"initialValue": {
"arguments": [
{
"id": 789,
"name": "_slice",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 763,
"src": "18414:6:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 788,
"name": "encodeHex",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 169,
"src": "18404:9:0",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
"typeString": "function (uint256) pure returns (uint256,uint256)"
}
},
"id": 790,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "18404:17:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
"typeString": "tuple(uint256,uint256)"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "18388:33:0"
},
{
"expression": {
"id": 820,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 792,
"name": "err",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 766,
"src": "18432:3:0",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"arguments": [
{
"arguments": [
{
"hexValue": "54797065644d656d566965772f696e646578202d204f76657272616e2074686520766965772e20536c696365206973206174203078",
"id": 797,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "18494:55:0",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_fb6c6ce939dcb005b895abe7a9570250d9c1c31a5440a6a6e28e0acc2d1c6af1",
"typeString": "literal_string \"TypedMemView/index - Overran the view. Slice is at 0x\""
},
"value": "TypedMemView/index - Overran the view. Slice is at 0x"
},
{
"arguments": [
{
"id": 800,
"name": "a",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 769,
"src": "18575:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 799,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "18568:6:0",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_uint48_$",
"typeString": "type(uint48)"
},
"typeName": {
"id": 798,
"name": "uint48",
"nodeType": "ElementaryTypeName",
"src": "18568:6:0",
"typeDescriptions": {}
}
},
"id": 801,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "18568:9:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint48",
"typeString": "uint48"
}
},
{
"hexValue": "2077697468206c656e677468203078",
"id": 802,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "18596:17:0",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_3e6849d566dba71a1ac686a5bd3af1bed003e25465c91471808028cdad9d144b",
"typeString": "literal_string \" with length 0x\""
},
"value": " with length 0x"
},
{
"arguments": [
{
"id": 805,
"name": "b",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 775,
"src": "18639:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 804,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "18632:6:0",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_uint48_$",
"typeString": "type(uint48)"
},
"typeName": {
"id": 803,
"name": "uint48",
"nodeType": "ElementaryTypeName",
"src": "18632:6:0",
"typeDescriptions": {}
}
},
"id": 806,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "18632:9:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint48",
"typeString": "uint48"
}
},
{
"hexValue": "2e20417474656d7074656420746f20696e646578206174206f6666736574203078",
"id": 807,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "18660:35:0",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_76d133faf43042eef7167f01d32e0891632a5651573db9fc8b6aa42fdbcaf509",
"typeString": "literal_string \". Attempted to index at offset 0x\""
},
"value": ". Attempted to index at offset 0x"
},
{
"arguments": [
{
"id": 810,
"name": "c",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 781,
"src": "18721:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 809,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "18714:6:0",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_uint48_$",
"typeString": "type(uint48)"
},
"typeName": {
"id": 808,
"name": "uint48",
"nodeType": "ElementaryTypeName",
"src": "18714:6:0",
"typeDescriptions": {}
}
},
"id": 811,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "18714:9:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint48",
"typeString": "uint48"
}
},
{
"hexValue": "2077697468206c656e677468203078",
"id": 812,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "18742:17:0",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_3e6849d566dba71a1ac686a5bd3af1bed003e25465c91471808028cdad9d144b",
"typeString": "literal_string \" with length 0x\""
},
"value": " with length 0x"
},
{
"arguments": [
{
"id": 815,
"name": "d",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 787,
"src": "18785:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 814,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "18778:6:0",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_uint48_$",
"typeString": "type(uint48)"
},
"typeName": {
"id": 813,
"name": "uint48",
"nodeType": "ElementaryTypeName",
"src": "18778:6:0",
"typeDescriptions": {}
}
},
"id": 816,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "18778:9:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint48",
"typeString": "uint48"
}
},
{
"hexValue": "2e",
"id": 817,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "18806:3:0",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_6f010af653ebe3cb07d297a4ef13366103d392ceffa68dd48232e6e9ff2187bf",
"typeString": "literal_string \".\""
},
"value": "."
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_stringliteral_fb6c6ce939dcb005b895abe7a9570250d9c1c31a5440a6a6e28e0acc2d1c6af1",
"typeString": "literal_string \"TypedMemView/index - Overran the view. Slice is at 0x\""
},
{
"typeIdentifier": "t_uint48",
"typeString": "uint48"
},
{
"typeIdentifier": "t_stringliteral_3e6849d566dba71a1ac686a5bd3af1bed003e25465c91471808028cdad9d144b",
"typeString": "literal_string \" with length 0x\""
},
{
"typeIdentifier": "t_uint48",
"typeString": "uint48"
},
{
"typeIdentifier": "t_stringliteral_76d133faf43042eef7167f01d32e0891632a5651573db9fc8b6aa42fdbcaf509",
"typeString": "literal_string \". Attempted to index at offset 0x\""
},
{
"typeIdentifier": "t_uint48",
"typeString": "uint48"
},
{
"typeIdentifier": "t_stringliteral_3e6849d566dba71a1ac686a5bd3af1bed003e25465c91471808028cdad9d144b",
"typeString": "literal_string \" with length 0x\""
},
{
"typeIdentifier": "t_uint48",
"typeString": "uint48"
},
{
"typeIdentifier": "t_stringliteral_6f010af653ebe3cb07d297a4ef13366103d392ceffa68dd48232e6e9ff2187bf",
"typeString": "literal_string \".\""
}
],
"expression": {
"id": 795,
"name": "abi",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4294967295,
"src": "18459:3:0",
"typeDescriptions": {
"typeIdentifier": "t_magic_abi",
"typeString": "abi"
}
},
"id": 796,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberLocation": "18463:12:0",
"memberName": "encodePacked",
"nodeType": "MemberAccess",
"src": "18459:16:0",
"typeDescriptions": {
"typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
"typeString": "function () pure returns (bytes memory)"
}
},
"id": 818,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "18459:365:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"id": 794,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "18438:6:0",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_string_storage_ptr_$",
"typeString": "type(string storage pointer)"
},
"typeName": {
"id": 793,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "18438:6:0",
"typeDescriptions": {}
}
},
"id": 819,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "18438:397:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
},
"src": "18432:403:0",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
},
"id": 821,
"nodeType": "ExpressionStatement",
"src": "18432:403:0"
}
]
},
"documentation": {
"id": 755,
"nodeType": "StructuredDocumentation",
"src": "17779:305:0",
"text": " @notice Construct an error message for an indexing overrun.\n @param _loc The memory address\n @param _len The length\n @param _index The index\n @param _slice The slice where the overrun occurred\n @return err - The err"
},
"id": 823,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "indexErrOverrun",
"nameLocation": "18099:15:0",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 764,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 757,
"mutability": "mutable",
"name": "_loc",
"nameLocation": "18123:4:0",
"nodeType": "VariableDeclaration",
"scope": 823,
"src": "18115:12:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 756,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "18115:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 759,
"mutability": "mutable",
"name": "_len",
"nameLocation": "18137:4:0",
"nodeType": "VariableDeclaration",
"scope": 823,
"src": "18129:12:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 758,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "18129:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 761,
"mutability": "mutable",
"name": "_index",
"nameLocation": "18151:6:0",
"nodeType": "VariableDeclaration",
"scope": 823,
"src": "18143:14:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 760,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "18143:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 763,
"mutability": "mutable",
"name": "_slice",
"nameLocation": "18167:6:0",
"nodeType": "VariableDeclaration",
"scope": 823,
"src": "18159:14:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 762,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "18159:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "18114:60:0"
},
"returnParameters": {
"id": 767,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 766,
"mutability": "mutable",
"name": "err",
"nameLocation": "18239:3:0",
"nodeType": "VariableDeclaration",
"scope": 823,
"src": "18225:17:0",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 765,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "18225:6:0",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"visibility": "internal"
}
],
"src": "18224:19:0"
},
"scope": 1419,
"src": "18090:753:0",
"stateMutability": "pure",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 899,
"nodeType": "Block",
"src": "19458:633:0",
"statements": [
{
"condition": {
"commonType": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"id": 837,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 835,
"name": "_bytes",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 830,
"src": "19473:6:0",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"hexValue": "30",
"id": 836,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "19483:1:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "19473:11:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 843,
"nodeType": "IfStatement",
"src": "19469:34:0",
"trueBody": {
"expression": {
"arguments": [
{
"hexValue": "30",
"id": 840,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "19501:1:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"id": 839,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "19493:7:0",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_bytes32_$",
"typeString": "type(bytes32)"
},
"typeName": {
"id": 838,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "19493:7:0",
"typeDescriptions": {}
}
},
"id": 841,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "19493:10:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"functionReturnParameters": 834,
"id": 842,
"nodeType": "Return",
"src": "19486:17:0"
}
},
{
"condition": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 850,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 846,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 844,
"name": "_index",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 828,
"src": "19518:6:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "+",
"rightExpression": {
"id": 845,
"name": "_bytes",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 830,
"src": "19527:6:0",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"src": "19518:15:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"arguments": [
{
"id": 848,
"name": "memView",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 826,
"src": "19540:7:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
}
],
"id": 847,
"name": "len",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 643,
"src": "19536:3:0",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_bytes29_$returns$_t_uint96_$",
"typeString": "function (bytes29) pure returns (uint96)"
}
},
"id": 849,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "19536:12:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint96",
"typeString": "uint96"
}
},
"src": "19518:30:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 868,
"nodeType": "IfStatement",
"src": "19514:139:0",
"trueBody": {
"id": 867,
"nodeType": "Block",
"src": "19550:103:0",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"id": 854,
"name": "memView",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 826,
"src": "19592:7:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
}
],
"id": 853,
"name": "loc",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 589,
"src": "19588:3:0",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_bytes29_$returns$_t_uint96_$",
"typeString": "function (bytes29) pure returns (uint96)"
}
},
"id": 855,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "19588:12:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint96",
"typeString": "uint96"
}
},
{
"arguments": [
{
"id": 857,
"name": "memView",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 826,
"src": "19606:7:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
}
],
"id": 856,
"name": "len",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 643,
"src": "19602:3:0",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_bytes29_$returns$_t_uint96_$",
"typeString": "function (bytes29) pure returns (uint96)"
}
},
"id": 858,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "19602:12:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint96",
"typeString": "uint96"
}
},
{
"id": 859,
"name": "_index",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 828,
"src": "19616:6:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"arguments": [
{
"id": 862,
"name": "_bytes",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 830,
"src": "19632:6:0",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
],
"id": 861,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "19624:7:0",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_uint256_$",
"typeString": "type(uint256)"
},
"typeName": {
"id": 860,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "19624:7:0",
"typeDescriptions": {}
}
},
"id": 863,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "19624:15:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint96",
"typeString": "uint96"
},
{
"typeIdentifier": "t_uint96",
"typeString": "uint96"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 852,
"name": "indexErrOverrun",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 823,
"src": "19572:15:0",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$",
"typeString": "function (uint256,uint256,uint256,uint256) pure returns (string memory)"
}
},
"id": 864,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "19572:68:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
],
"id": 851,
"name": "revert",
"nodeType": "Identifier",
"overloadedDeclarations": [
4294967277,
4294967277
],
"referencedDeclaration": 4294967277,
"src": "19565:6:0",
"typeDescriptions": {
"typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
"typeString": "function (string memory) pure"
}
},
"id": 865,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "19565:76:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 866,
"nodeType": "ExpressionStatement",
"src": "19565:76:0"
}
]
}
},
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"id": 872,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 870,
"name": "_bytes",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 830,
"src": "19671:6:0",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "BinaryOperation",
"operator": "<=",
"rightExpression": {
"hexValue": "3332",
"id": 871,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "19681:2:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_32_by_1",
"typeString": "int_const 32"
},
"value": "32"
},
"src": "19671:12:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "54797065644d656d566965772f696e646578202d20417474656d7074656420746f20696e646578206d6f7265207468616e203332206279746573",
"id": 873,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "19685:60:0",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_b2c061d25dd4dec479f0720f15754fff58a1a4debc7353bd1d3f4b7b23876297",
"typeString": "literal_string \"TypedMemView/index - Attempted to index more than 32 bytes\""
},
"value": "TypedMemView/index - Attempted to index more than 32 bytes"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_b2c061d25dd4dec479f0720f15754fff58a1a4debc7353bd1d3f4b7b23876297",
"typeString": "literal_string \"TypedMemView/index - Attempted to index more than 32 bytes\""
}
],
"id": 869,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
4294967278,
4294967278
],
"referencedDeclaration": 4294967278,
"src": "19663:7:0",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 874,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "19663:83:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 875,
"nodeType": "ExpressionStatement",
"src": "19663:83:0"
},
{
"assignments": [
877
],
"declarations": [
{
"constant": false,
"id": 877,
"mutability": "mutable",
"name": "bitLength",
"nameLocation": "19765:9:0",
"nodeType": "VariableDeclaration",
"scope": 899,
"src": "19759:15:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 876,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "19759:5:0",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"visibility": "internal"
}
],
"id": 878,
"nodeType": "VariableDeclarationStatement",
"src": "19759:15:0"
},
{
"id": 885,
"nodeType": "UncheckedBlock",
"src": "19785:59:0",
"statements": [
{
"expression": {
"id": 883,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 879,
"name": "bitLength",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 877,
"src": "19810:9:0",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"commonType": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"id": 882,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 880,
"name": "_bytes",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 830,
"src": "19822:6:0",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "BinaryOperation",
"operator": "*",
"rightExpression": {
"hexValue": "38",
"id": 881,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "19831:1:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_8_by_1",
"typeString": "int_const 8"
},
"value": "8"
},
"src": "19822:10:0",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"src": "19810:22:0",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"id": 884,
"nodeType": "ExpressionStatement",
"src": "19810:22:0"
}
]
},
{
"assignments": [
887
],
"declarations": [
{
"constant": false,
"id": 887,
"mutability": "mutable",
"name": "_loc",
"nameLocation": "19862:4:0",
"nodeType": "VariableDeclaration",
"scope": 899,
"src": "19854:12:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 886,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "19854:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 891,
"initialValue": {
"arguments": [
{
"id": 889,
"name": "memView",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 826,
"src": "19873:7:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
}
],
"id": 888,
"name": "loc",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 589,
"src": "19869:3:0",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_bytes29_$returns$_t_uint96_$",
"typeString": "function (bytes29) pure returns (uint96)"
}
},
"id": 890,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "19869:12:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint96",
"typeString": "uint96"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "19854:27:0"
},
{
"assignments": [
893
],
"declarations": [
{
"constant": false,
"id": 893,
"mutability": "mutable",
"name": "_mask",
"nameLocation": "19900:5:0",
"nodeType": "VariableDeclaration",
"scope": 899,
"src": "19892:13:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 892,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "19892:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 897,
"initialValue": {
"arguments": [
{
"id": 895,
"name": "bitLength",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 877,
"src": "19917:9:0",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
],
"id": 894,
"name": "leftMask",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 276,
"src": "19908:8:0",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint8_$returns$_t_uint256_$",
"typeString": "function (uint8) pure returns (uint256)"
}
},
"id": 896,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "19908:19:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "19892:35:0"
},
{
"AST": {
"nodeType": "YulBlock",
"src": "19947:137:0",
"statements": [
{
"nodeType": "YulAssignment",
"src": "20027:46:0",
"value": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "_loc",
"nodeType": "YulIdentifier",
"src": "20051:4:0"
},
{
"name": "_index",
"nodeType": "YulIdentifier",
"src": "20057:6:0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "20047:3:0"
},
"nodeType": "YulFunctionCall",
"src": "20047:17:0"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "20041:5:0"
},
"nodeType": "YulFunctionCall",
"src": "20041:24:0"
},
{
"name": "_mask",
"nodeType": "YulIdentifier",
"src": "20067:5:0"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "20037:3:0"
},
"nodeType": "YulFunctionCall",
"src": "20037:36:0"
},
"variableNames": [
{
"name": "result",
"nodeType": "YulIdentifier",
"src": "20027:6:0"
}
]
}
]
},
"evmVersion": "london",
"externalReferences": [
{
"declaration": 828,
"isOffset": false,
"isSlot": false,
"src": "20057:6:0",
"valueSize": 1
},
{
"declaration": 887,
"isOffset": false,
"isSlot": false,
"src": "20051:4:0",
"valueSize": 1
},
{
"declaration": 893,
"isOffset": false,
"isSlot": false,
"src": "20067:5:0",
"valueSize": 1
},
{
"declaration": 833,
"isOffset": false,
"isSlot": false,
"src": "20027:6:0",
"valueSize": 1
}
],
"id": 898,
"nodeType": "InlineAssembly",
"src": "19938:146:0"
}
]
},
"documentation": {
"id": 824,
"nodeType": "StructuredDocumentation",
"src": "18851:500:0",
"text": " @notice Load up to 32 bytes from the view onto the stack.\n @dev Returns a bytes32 with only the `_bytes` highest bytes set.\n This can be immediately cast to a smaller fixed-length byte array.\n To automatically cast to an integer, use `indexUint`.\n @param memView The view\n @param _index The index\n @param _bytes The bytes\n @return result - The 32 byte result"
},
"id": 900,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "index",
"nameLocation": "19366:5:0",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 831,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 826,
"mutability": "mutable",
"name": "memView",
"nameLocation": "19380:7:0",
"nodeType": "VariableDeclaration",
"scope": 900,
"src": "19372:15:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
},
"typeName": {
"id": 825,
"name": "bytes29",
"nodeType": "ElementaryTypeName",
"src": "19372:7:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes29",
"typeString": "bytes29"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 828,
"mutability": "mutable",
"name": "_index",
"nameLocation": "19397:6:0",
"nodeType": "VariableDeclaration",
"scope": 900,
"src": "19389:14:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 827,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "19389:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 830,
"mutability": "mutable",
"name": "_bytes",
"nameLocation": "19411:6:0",
"nodeType": "VariableDeclaration",
"scope": 900,
"src": "19405:12:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 829,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "19405:5:0",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"visibility": "internal"
}
],
"src": "19371:47:0"
},
"returnParameters": {
"id": 834,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 833,
"mutability": "mutable",
"name": "result",
"nameLocation": "19450:6:0",
"nodeType": "VariableDeclaration",
"scope": 900,
"src
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