Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
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.4+commit.c7e474f2.js&optimize=false&runs=200&gist=
Prueba Pokemon - Pokedex
Relización de pruebas con Solidity, creando dos contracts.
Tenemos dos contracts, con los que podremos dar de alta pokemon, y luego con otra de las funciones, devolver el listado de pokemons que hemos dado de alta.
Al acceso a la pokedex, para ver el listado, solo podrá el usuario que los haya dado de alta.
---
Remix default workspace is present when:
i. Remix loads for the very first time
ii. A new workspace is created with 'Default' template
iii. There are no files existing in the File Explorer
This workspace contains 3 directories:
1. 'contracts': Holds three contracts with increasing levels of complexity.
2. 'scripts': Contains four typescript files to deploy a contract. It is explained below.
3. 'tests': Contains one Solidity test file for 'Ballot' contract & one JS test file for 'Storage' contract.
SCRIPTS
The 'scripts' folder has four typescript files which help to deploy the 'Storage' contract using 'web3.js' and 'ethers.js' libraries.
For the deployment of any other contract, just update the contract's name from 'Storage' to the desired contract and provide constructor arguments accordingly
in the file `deploy_with_ethers.ts` or `deploy_with_web3.ts`
In the 'tests' folder there is a script containing Mocha-Chai unit tests for 'Storage' contract.
To run a script, right click on file name in the file explorer and click 'Run'. Remember, Solidity file must already be compiled.
Output from script will appear in remix terminal.
Please note, require/import is supported in a limited manner for Remix supported modules.
For now, modules supported by Remix are ethers, web3, swarmgw, chai, multihashes, remix and hardhat only for hardhat.ethers object/plugin.
For unsupported modules, an error like this will be thrown: '<module_name> module require is not supported by Remix IDE' will be shown.
{
"id": "1923d25903a5cbcc346b1cc25c0eb57d",
"_format": "hh-sol-build-info-1",
"solcVersion": "0.8.4",
"solcLongVersion": "0.8.4+commit.c7e474f2",
"input": {
"language": "Solidity",
"sources": {
"contracts/pokemon.sol": {
"content": "// SPDX-License-Identifier: MIT\r\n\r\npragma solidity ^0.8.4;\r\n\r\ncontract Pokemon {\r\n\r\n // Listado de tipo de pokemon a elegir\r\n enum State {ELECTRICO, FUEGO, AGUA, PLANTA}\r\n\r\n // Cualidades para cada pokemon\r\n struct cualidades {\r\n string name;\r\n string tipo_pokemon;\r\n string ataque;\r\n }\r\n\r\n // Listado de pokemon que tenemos\r\n cualidades [] pokedex;\r\n\r\n // Añadir un nuevo pokemon a la pokedex\r\n function capturar_nuevo_pokemon(string memory _name, string memory _tipo_pokemon, string memory _ataque) internal {\r\n pokedex.push(cualidades(_name, _tipo_pokemon, _ataque));\r\n }\r\n}\r\n\r\ncontract Entrador_pokemon is Pokemon {\r\n \r\n // Quien es el propietario de este entrenador pokemon\r\n address public owner;\r\n\r\n // Asignamos el valor al entrenador Pokemon\r\n constructor () {\r\n owner = msg.sender;\r\n }\r\n\r\n // Conseguimos un pokemon para nuestra pokedex\r\n function lanzar_pokeball(string memory _nombrePokemon, string memory _tipo_pokemon, string memory _ataque) external {\r\n require (keccak256(bytes(_nombrePokemon)) != keccak256(bytes(\" \")), \"Debes poner el nombre al pokemon\");\r\n capturar_nuevo_pokemon(_nombrePokemon, _tipo_pokemon, _ataque);\r\n }\r\n\r\n // Modifer para poner algún filtro. Solo permitimos conseguir pokemon al owner\r\n modifier onlyOwner() {\r\n require(owner == msg.sender, \"No tienes permisos para capturar estos pokemon para esta Pokedex\");\r\n _;\r\n }\r\n\r\n function hashPrivateNumber(uint _number) public view onlyOwner returns (bytes32) {\r\n return keccak256(abi.encodePacked(_number));\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": {
"contracts/pokemon.sol": {
"Entrador_pokemon": {
"abi": [
{
"inputs": [],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_number",
"type": "uint256"
}
],
"name": "hashPrivateNumber",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "_nombrePokemon",
"type": "string"
},
{
"internalType": "string",
"name": "_tipo_pokemon",
"type": "string"
},
{
"internalType": "string",
"name": "_ataque",
"type": "string"
}
],
"name": "lanzar_pokeball",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
}
],
"devdoc": {
"kind": "dev",
"methods": {},
"version": 1
},
"evm": {
"assembly": " /* \"contracts/pokemon.sol\":640:1645 contract Entrador_pokemon is Pokemon {\r... */\n mstore(0x40, 0x80)\n /* \"contracts/pokemon.sol\":827:879 constructor () {\r... */\n callvalue\n dup1\n iszero\n tag_1\n jumpi\n 0x00\n dup1\n revert\ntag_1:\n pop\n /* \"contracts/pokemon.sol\":861:871 msg.sender */\n caller\n /* \"contracts/pokemon.sol\":853:858 owner */\n 0x01\n 0x00\n /* \"contracts/pokemon.sol\":853:871 owner = msg.sender */\n 0x0100\n exp\n dup2\n sload\n dup2\n 0xffffffffffffffffffffffffffffffffffffffff\n mul\n not\n and\n swap1\n dup4\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n mul\n or\n swap1\n sstore\n pop\n /* \"contracts/pokemon.sol\":640:1645 contract Entrador_pokemon is Pokemon {\r... */\n dataSize(sub_0)\n dup1\n dataOffset(sub_0)\n 0x00\n codecopy\n 0x00\n return\nstop\n\nsub_0: assembly {\n /* \"contracts/pokemon.sol\":640:1645 contract Entrador_pokemon is Pokemon {\r... */\n mstore(0x40, 0x80)\n callvalue\n dup1\n iszero\n tag_1\n jumpi\n 0x00\n dup1\n revert\n tag_1:\n pop\n jumpi(tag_2, lt(calldatasize, 0x04))\n shr(0xe0, calldataload(0x00))\n dup1\n 0x57fb6b9c\n eq\n tag_3\n jumpi\n dup1\n 0x8da5cb5b\n eq\n tag_4\n jumpi\n dup1\n 0xbda02842\n eq\n tag_5\n jumpi\n tag_2:\n 0x00\n dup1\n revert\n /* \"contracts/pokemon.sol\":939:1250 function lanzar_pokeball(string memory _nombrePokemon, string memory _tipo_pokemon, string memory _ataque) external {\r... */\n tag_3:\n tag_6\n 0x04\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n tag_7\n swap2\n swap1\n tag_8\n jump\t// in\n tag_7:\n tag_9\n jump\t// in\n tag_6:\n stop\n /* \"contracts/pokemon.sol\":749:769 address public owner */\n tag_4:\n tag_10\n tag_11\n jump\t// in\n tag_10:\n mload(0x40)\n tag_12\n swap2\n swap1\n tag_13\n jump\t// in\n tag_12:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"contracts/pokemon.sol\":1499:1642 function hashPrivateNumber(uint _number) public view onlyOwner returns (bytes32) {\r... */\n tag_5:\n tag_14\n 0x04\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n tag_15\n swap2\n swap1\n tag_16\n jump\t// in\n tag_15:\n tag_17\n jump\t// in\n tag_14:\n mload(0x40)\n tag_18\n swap2\n swap1\n tag_19\n jump\t// in\n tag_18:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"contracts/pokemon.sol\":939:1250 function lanzar_pokeball(string memory _nombrePokemon, string memory _tipo_pokemon, string memory _ataque) external {\r... */\n tag_9:\n /* \"contracts/pokemon.sol\":1121:1131 bytes(\" \") */\n mload(0x40)\n dup1\n 0x40\n add\n 0x40\n mstore\n dup1\n 0x01\n dup2\n mstore\n 0x20\n add\n 0x2000000000000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n pop\n /* \"contracts/pokemon.sol\":1111:1132 keccak256(bytes(\" \")) */\n dup1\n mload\n swap1\n 0x20\n add\n keccak256\n /* \"contracts/pokemon.sol\":1091:1105 _nombrePokemon */\n dup4\n /* \"contracts/pokemon.sol\":1075:1107 keccak256(bytes(_nombrePokemon)) */\n dup1\n mload\n swap1\n 0x20\n add\n keccak256\n /* \"contracts/pokemon.sol\":1075:1132 keccak256(bytes(_nombrePokemon)) != keccak256(bytes(\" \")) */\n eq\n iszero\n /* \"contracts/pokemon.sol\":1066:1169 require (keccak256(bytes(_nombrePokemon)) != keccak256(bytes(\" \")), \"Debes poner el nombre al pokemon\") */\n tag_21\n jumpi\n mload(0x40)\n 0x08c379a000000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_22\n swap1\n tag_23\n jump\t// in\n tag_22:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n tag_21:\n /* \"contracts/pokemon.sol\":1180:1242 capturar_nuevo_pokemon(_nombrePokemon, _tipo_pokemon, _ataque) */\n tag_24\n /* \"contracts/pokemon.sol\":1203:1217 _nombrePokemon */\n dup4\n /* \"contracts/pokemon.sol\":1219:1232 _tipo_pokemon */\n dup4\n /* \"contracts/pokemon.sol\":1234:1241 _ataque */\n dup4\n /* \"contracts/pokemon.sol\":1180:1202 capturar_nuevo_pokemon */\n tag_25\n /* \"contracts/pokemon.sol\":1180:1242 capturar_nuevo_pokemon(_nombrePokemon, _tipo_pokemon, _ataque) */\n jump\t// in\n tag_24:\n /* \"contracts/pokemon.sol\":939:1250 function lanzar_pokeball(string memory _nombrePokemon, string memory _tipo_pokemon, string memory _ataque) external {\r... */\n pop\n pop\n pop\n jump\t// out\n /* \"contracts/pokemon.sol\":749:769 address public owner */\n tag_11:\n 0x01\n 0x00\n swap1\n sload\n swap1\n 0x0100\n exp\n swap1\n div\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n jump\t// out\n /* \"contracts/pokemon.sol\":1499:1642 function hashPrivateNumber(uint _number) public view onlyOwner returns (bytes32) {\r... */\n tag_17:\n /* \"contracts/pokemon.sol\":1571:1578 bytes32 */\n 0x00\n /* \"contracts/pokemon.sol\":1392:1402 msg.sender */\n caller\n /* \"contracts/pokemon.sol\":1383:1402 owner == msg.sender */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"contracts/pokemon.sol\":1383:1388 owner */\n 0x01\n 0x00\n swap1\n sload\n swap1\n 0x0100\n exp\n swap1\n div\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"contracts/pokemon.sol\":1383:1402 owner == msg.sender */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n eq\n /* \"contracts/pokemon.sol\":1375:1471 require(owner == msg.sender, \"No tienes permisos para capturar estos pokemon para esta Pokedex\") */\n tag_27\n jumpi\n mload(0x40)\n 0x08c379a000000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_28\n swap1\n tag_29\n jump\t// in\n tag_28:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n tag_27:\n /* \"contracts/pokemon.sol\":1625:1632 _number */\n dup2\n /* \"contracts/pokemon.sol\":1608:1633 abi.encodePacked(_number) */\n add(0x20, mload(0x40))\n tag_31\n swap2\n swap1\n tag_32\n jump\t// in\n tag_31:\n mload(0x40)\n 0x20\n dup2\n dup4\n sub\n sub\n dup2\n mstore\n swap1\n 0x40\n mstore\n /* \"contracts/pokemon.sol\":1598:1634 keccak256(abi.encodePacked(_number)) */\n dup1\n mload\n swap1\n 0x20\n add\n keccak256\n /* \"contracts/pokemon.sol\":1591:1634 return keccak256(abi.encodePacked(_number)) */\n swap1\n pop\n /* \"contracts/pokemon.sol\":1499:1642 function hashPrivateNumber(uint _number) public view onlyOwner returns (bytes32) {\r... */\n swap2\n swap1\n pop\n jump\t// out\n /* \"contracts/pokemon.sol\":445:633 function capturar_nuevo_pokemon(string memory _name, string memory _tipo_pokemon, string memory _ataque) internal {\r... */\n tag_25:\n /* \"contracts/pokemon.sol\":570:577 pokedex */\n 0x00\n /* \"contracts/pokemon.sol\":583:624 cualidades(_name, _tipo_pokemon, _ataque) */\n mload(0x40)\n dup1\n 0x60\n add\n 0x40\n mstore\n dup1\n /* \"contracts/pokemon.sol\":594:599 _name */\n dup6\n /* \"contracts/pokemon.sol\":583:624 cualidades(_name, _tipo_pokemon, _ataque) */\n dup2\n mstore\n 0x20\n add\n /* \"contracts/pokemon.sol\":601:614 _tipo_pokemon */\n dup5\n /* \"contracts/pokemon.sol\":583:624 cualidades(_name, _tipo_pokemon, _ataque) */\n dup2\n mstore\n 0x20\n add\n /* \"contracts/pokemon.sol\":616:623 _ataque */\n dup4\n /* \"contracts/pokemon.sol\":583:624 cualidades(_name, _tipo_pokemon, _ataque) */\n dup2\n mstore\n pop\n /* \"contracts/pokemon.sol\":570:625 pokedex.push(cualidades(_name, _tipo_pokemon, _ataque)) */\n swap1\n dup1\n 0x01\n dup2\n sload\n add\n dup1\n dup3\n sstore\n dup1\n swap2\n pop\n pop\n 0x01\n swap1\n sub\n swap1\n 0x00\n mstore\n keccak256(0x00, 0x20)\n swap1\n 0x03\n mul\n add\n 0x00\n swap1\n swap2\n swap1\n swap2\n swap1\n swap2\n pop\n 0x00\n dup3\n add\n mload\n dup2\n 0x00\n add\n swap1\n dup1\n mload\n swap1\n 0x20\n add\n swap1\n tag_35\n swap3\n swap2\n swap1\n tag_36\n jump\t// in\n tag_35:\n pop\n 0x20\n dup3\n add\n mload\n dup2\n 0x01\n add\n swap1\n dup1\n mload\n swap1\n 0x20\n add\n swap1\n tag_37\n swap3\n swap2\n swap1\n tag_36\n jump\t// in\n tag_37:\n pop\n 0x40\n dup3\n add\n mload\n dup2\n 0x02\n add\n swap1\n dup1\n mload\n swap1\n 0x20\n add\n swap1\n tag_38\n swap3\n swap2\n swap1\n tag_36\n jump\t// in\n tag_38:\n pop\n pop\n pop\n /* \"contracts/pokemon.sol\":445:633 function capturar_nuevo_pokemon(string memory _name, string memory _tipo_pokemon, string memory _ataque) internal {\r... */\n pop\n pop\n pop\n jump\t// out\n tag_36:\n dup3\n dup1\n sload\n tag_39\n swap1\n tag_40\n jump\t// in\n tag_39:\n swap1\n 0x00\n mstore\n keccak256(0x00, 0x20)\n swap1\n 0x1f\n add\n 0x20\n swap1\n div\n dup2\n add\n swap3\n dup3\n tag_42\n jumpi\n 0x00\n dup6\n sstore\n jump(tag_41)\n tag_42:\n dup3\n 0x1f\n lt\n tag_43\n jumpi\n dup1\n mload\n not(0xff)\n and\n dup4\n dup1\n add\n or\n dup6\n sstore\n jump(tag_41)\n tag_43:\n dup3\n dup1\n add\n 0x01\n add\n dup6\n sstore\n dup3\n iszero\n tag_41\n jumpi\n swap2\n dup3\n add\n tag_44:\n dup3\n dup2\n gt\n iszero\n tag_45\n jumpi\n dup3\n mload\n dup3\n sstore\n swap2\n 0x20\n add\n swap2\n swap1\n 0x01\n add\n swap1\n jump(tag_44)\n tag_45:\n tag_41:\n pop\n swap1\n pop\n tag_46\n swap2\n swap1\n tag_47\n jump\t// in\n tag_46:\n pop\n swap1\n jump\t// out\n tag_47:\n tag_48:\n dup1\n dup3\n gt\n iszero\n tag_49\n jumpi\n 0x00\n dup2\n 0x00\n swap1\n sstore\n pop\n 0x01\n add\n jump(tag_48)\n tag_49:\n pop\n swap1\n jump\t// out\n /* \"#utility.yul\":7:352 */\n tag_51:\n /* \"#utility.yul\":85:90 */\n 0x00\n /* \"#utility.yul\":110:176 */\n tag_53\n /* \"#utility.yul\":126:175 */\n tag_54\n /* \"#utility.yul\":168:174 */\n dup5\n /* \"#utility.yul\":126:175 */\n tag_55\n jump\t// in\n tag_54:\n /* \"#utility.yul\":110:176 */\n tag_56\n jump\t// in\n tag_53:\n /* \"#utility.yul\":101:176 */\n swap1\n pop\n /* \"#utility.yul\":199:205 */\n dup3\n /* \"#utility.yul\":192:197 */\n dup2\n /* \"#utility.yul\":185:206 */\n mstore\n /* \"#utility.yul\":237:241 */\n 0x20\n /* \"#utility.yul\":230:235 */\n dup2\n /* \"#utility.yul\":226:242 */\n add\n /* \"#utility.yul\":275:278 */\n dup5\n /* \"#utility.yul\":266:272 */\n dup5\n /* \"#utility.yul\":261:264 */\n dup5\n /* \"#utility.yul\":257:273 */\n add\n /* \"#utility.yul\":254:279 */\n gt\n /* \"#utility.yul\":251:253 */\n iszero\n tag_57\n jumpi\n /* \"#utility.yul\":292:293 */\n 0x00\n /* \"#utility.yul\":289:290 */\n dup1\n /* \"#utility.yul\":282:294 */\n revert\n /* \"#utility.yul\":251:253 */\n tag_57:\n /* \"#utility.yul\":305:346 */\n tag_58\n /* \"#utility.yul\":339:345 */\n dup5\n /* \"#utility.yul\":334:337 */\n dup3\n /* \"#utility.yul\":329:332 */\n dup6\n /* \"#utility.yul\":305:346 */\n tag_59\n jump\t// in\n tag_58:\n /* \"#utility.yul\":91:352 */\n pop\n swap4\n swap3\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":372:645 */\n tag_60:\n /* \"#utility.yul\":428:433 */\n 0x00\n /* \"#utility.yul\":477:480 */\n dup3\n /* \"#utility.yul\":470:474 */\n 0x1f\n /* \"#utility.yul\":462:468 */\n dup4\n /* \"#utility.yul\":458:475 */\n add\n /* \"#utility.yul\":454:481 */\n slt\n /* \"#utility.yul\":444:446 */\n tag_62\n jumpi\n /* \"#utility.yul\":495:496 */\n 0x00\n /* \"#utility.yul\":492:493 */\n dup1\n /* \"#utility.yul\":485:497 */\n revert\n /* \"#utility.yul\":444:446 */\n tag_62:\n /* \"#utility.yul\":535:541 */\n dup2\n /* \"#utility.yul\":522:542 */\n calldataload\n /* \"#utility.yul\":560:639 */\n tag_63\n /* \"#utility.yul\":635:638 */\n dup5\n /* \"#utility.yul\":627:633 */\n dup3\n /* \"#utility.yul\":620:624 */\n 0x20\n /* \"#utility.yul\":612:618 */\n dup7\n /* \"#utility.yul\":608:625 */\n add\n /* \"#utility.yul\":560:639 */\n tag_51\n jump\t// in\n tag_63:\n /* \"#utility.yul\":551:639 */\n swap2\n pop\n /* \"#utility.yul\":434:645 */\n pop\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":651:790 */\n tag_64:\n /* \"#utility.yul\":697:702 */\n 0x00\n /* \"#utility.yul\":735:741 */\n dup2\n /* \"#utility.yul\":722:742 */\n calldataload\n /* \"#utility.yul\":713:742 */\n swap1\n pop\n /* \"#utility.yul\":751:784 */\n tag_66\n /* \"#utility.yul\":778:783 */\n dup2\n /* \"#utility.yul\":751:784 */\n tag_67\n jump\t// in\n tag_66:\n /* \"#utility.yul\":703:790 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":796:1687 */\n tag_8:\n /* \"#utility.yul\":903:909 */\n 0x00\n /* \"#utility.yul\":911:917 */\n dup1\n /* \"#utility.yul\":919:925 */\n 0x00\n /* \"#utility.yul\":968:970 */\n 0x60\n /* \"#utility.yul\":956:965 */\n dup5\n /* \"#utility.yul\":947:954 */\n dup7\n /* \"#utility.yul\":943:966 */\n sub\n /* \"#utility.yul\":939:971 */\n slt\n /* \"#utility.yul\":936:938 */\n iszero\n tag_69\n jumpi\n /* \"#utility.yul\":984:985 */\n 0x00\n /* \"#utility.yul\":981:982 */\n dup1\n /* \"#utility.yul\":974:986 */\n revert\n /* \"#utility.yul\":936:938 */\n tag_69:\n /* \"#utility.yul\":1055:1056 */\n 0x00\n /* \"#utility.yul\":1044:1053 */\n dup5\n /* \"#utility.yul\":1040:1057 */\n add\n /* \"#utility.yul\":1027:1058 */\n calldataload\n /* \"#utility.yul\":1085:1103 */\n 0xffffffffffffffff\n /* \"#utility.yul\":1077:1083 */\n dup2\n /* \"#utility.yul\":1074:1104 */\n gt\n /* \"#utility.yul\":1071:1073 */\n iszero\n tag_70\n jumpi\n /* \"#utility.yul\":1117:1118 */\n 0x00\n /* \"#utility.yul\":1114:1115 */\n dup1\n /* \"#utility.yul\":1107:1119 */\n revert\n /* \"#utility.yul\":1071:1073 */\n tag_70:\n /* \"#utility.yul\":1145:1208 */\n tag_71\n /* \"#utility.yul\":1200:1207 */\n dup7\n /* \"#utility.yul\":1191:1197 */\n dup3\n /* \"#utility.yul\":1180:1189 */\n dup8\n /* \"#utility.yul\":1176:1198 */\n add\n /* \"#utility.yul\":1145:1208 */\n tag_60\n jump\t// in\n tag_71:\n /* \"#utility.yul\":1135:1208 */\n swap4\n pop\n /* \"#utility.yul\":998:1218 */\n pop\n /* \"#utility.yul\":1285:1287 */\n 0x20\n /* \"#utility.yul\":1274:1283 */\n dup5\n /* \"#utility.yul\":1270:1288 */\n add\n /* \"#utility.yul\":1257:1289 */\n calldataload\n /* \"#utility.yul\":1316:1334 */\n 0xffffffffffffffff\n /* \"#utility.yul\":1308:1314 */\n dup2\n /* \"#utility.yul\":1305:1335 */\n gt\n /* \"#utility.yul\":1302:1304 */\n iszero\n tag_72\n jumpi\n /* \"#utility.yul\":1348:1349 */\n 0x00\n /* \"#utility.yul\":1345:1346 */\n dup1\n /* \"#utility.yul\":1338:1350 */\n revert\n /* \"#utility.yul\":1302:1304 */\n tag_72:\n /* \"#utility.yul\":1376:1439 */\n tag_73\n /* \"#utility.yul\":1431:1438 */\n dup7\n /* \"#utility.yul\":1422:1428 */\n dup3\n /* \"#utility.yul\":1411:1420 */\n dup8\n /* \"#utility.yul\":1407:1429 */\n add\n /* \"#utility.yul\":1376:1439 */\n tag_60\n jump\t// in\n tag_73:\n /* \"#utility.yul\":1366:1439 */\n swap3\n pop\n /* \"#utility.yul\":1228:1449 */\n pop\n /* \"#utility.yul\":1516:1518 */\n 0x40\n /* \"#utility.yul\":1505:1514 */\n dup5\n /* \"#utility.yul\":1501:1519 */\n add\n /* \"#utility.yul\":1488:1520 */\n calldataload\n /* \"#utility.yul\":1547:1565 */\n 0xffffffffffffffff\n /* \"#utility.yul\":1539:1545 */\n dup2\n /* \"#utility.yul\":1536:1566 */\n gt\n /* \"#utility.yul\":1533:1535 */\n iszero\n tag_74\n jumpi\n /* \"#utility.yul\":1579:1580 */\n 0x00\n /* \"#utility.yul\":1576:1577 */\n dup1\n /* \"#utility.yul\":1569:1581 */\n revert\n /* \"#utility.yul\":1533:1535 */\n tag_74:\n /* \"#utility.yul\":1607:1670 */\n tag_75\n /* \"#utility.yul\":1662:1669 */\n dup7\n /* \"#utility.yul\":1653:1659 */\n dup3\n /* \"#utility.yul\":1642:1651 */\n dup8\n /* \"#utility.yul\":1638:1660 */\n add\n /* \"#utility.yul\":1607:1670 */\n tag_60\n jump\t// in\n tag_75:\n /* \"#utility.yul\":1597:1670 */\n swap2\n pop\n /* \"#utility.yul\":1459:1680 */\n pop\n /* \"#utility.yul\":926:1687 */\n swap3\n pop\n swap3\n pop\n swap3\n jump\t// out\n /* \"#utility.yul\":1693:1955 */\n tag_16:\n /* \"#utility.yul\":1752:1758 */\n 0x00\n /* \"#utility.yul\":1801:1803 */\n 0x20\n /* \"#utility.yul\":1789:1798 */\n dup3\n /* \"#utility.yul\":1780:1787 */\n dup5\n /* \"#utility.yul\":1776:1799 */\n sub\n /* \"#utility.yul\":1772:1804 */\n slt\n /* \"#utility.yul\":1769:1771 */\n iszero\n tag_77\n jumpi\n /* \"#utility.yul\":1817:1818 */\n 0x00\n /* \"#utility.yul\":1814:1815 */\n dup1\n /* \"#utility.yul\":1807:1819 */\n revert\n /* \"#utility.yul\":1769:1771 */\n tag_77:\n /* \"#utility.yul\":1860:1861 */\n 0x00\n /* \"#utility.yul\":1885:1938 */\n tag_78\n /* \"#utility.yul\":1930:1937 */\n dup5\n /* \"#utility.yul\":1921:1927 */\n dup3\n /* \"#utility.yul\":1910:1919 */\n dup6\n /* \"#utility.yul\":1906:1928 */\n add\n /* \"#utility.yul\":1885:1938 */\n tag_64\n jump\t// in\n tag_78:\n /* \"#utility.yul\":1875:1938 */\n swap2\n pop\n /* \"#utility.yul\":1831:1948 */\n pop\n /* \"#utility.yul\":1759:1955 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":1961:2079 */\n tag_79:\n /* \"#utility.yul\":2048:2072 */\n tag_81\n /* \"#utility.yul\":2066:2071 */\n dup2\n /* \"#utility.yul\":2048:2072 */\n tag_82\n jump\t// in\n tag_81:\n /* \"#utility.yul\":2043:2046 */\n dup3\n /* \"#utility.yul\":2036:2073 */\n mstore\n /* \"#utility.yul\":2026:2079 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":2085:2203 */\n tag_83:\n /* \"#utility.yul\":2172:2196 */\n tag_85\n /* \"#utility.yul\":2190:2195 */\n dup2\n /* \"#utility.yul\":2172:2196 */\n tag_86\n jump\t// in\n tag_85:\n /* \"#utility.yul\":2167:2170 */\n dup3\n /* \"#utility.yul\":2160:2197 */\n mstore\n /* \"#utility.yul\":2150:2203 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":2209:2575 */\n tag_87:\n /* \"#utility.yul\":2351:2354 */\n 0x00\n /* \"#utility.yul\":2372:2439 */\n tag_89\n /* \"#utility.yul\":2436:2438 */\n 0x20\n /* \"#utility.yul\":2431:2434 */\n dup4\n /* \"#utility.yul\":2372:2439 */\n tag_90\n jump\t// in\n tag_89:\n /* \"#utility.yul\":2365:2439 */\n swap2\n pop\n /* \"#utility.yul\":2448:2541 */\n tag_91\n /* \"#utility.yul\":2537:2540 */\n dup3\n /* \"#utility.yul\":2448:2541 */\n tag_92\n jump\t// in\n tag_91:\n /* \"#utility.yul\":2566:2568 */\n 0x20\n /* \"#utility.yul\":2561:2564 */\n dup3\n /* \"#utility.yul\":2557:2569 */\n add\n /* \"#utility.yul\":2550:2569 */\n swap1\n pop\n /* \"#utility.yul\":2355:2575 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":2581:2947 */\n tag_93:\n /* \"#utility.yul\":2723:2726 */\n 0x00\n /* \"#utility.yul\":2744:2811 */\n tag_95\n /* \"#utility.yul\":2808:2810 */\n 0x40\n /* \"#utility.yul\":2803:2806 */\n dup4\n /* \"#utility.yul\":2744:2811 */\n tag_90\n jump\t// in\n tag_95:\n /* \"#utility.yul\":2737:2811 */\n swap2\n pop\n /* \"#utility.yul\":2820:2913 */\n tag_96\n /* \"#utility.yul\":2909:2912 */\n dup3\n /* \"#utility.yul\":2820:2913 */\n tag_97\n jump\t// in\n tag_96:\n /* \"#utility.yul\":2938:2940 */\n 0x40\n /* \"#utility.yul\":2933:2936 */\n dup3\n /* \"#utility.yul\":2929:2941 */\n add\n /* \"#utility.yul\":2922:2941 */\n swap1\n pop\n /* \"#utility.yul\":2727:2947 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":2953:3110 */\n tag_98:\n /* \"#utility.yul\":3058:3103 */\n tag_100\n /* \"#utility.yul\":3078:3102 */\n tag_101\n /* \"#utility.yul\":3096:3101 */\n dup3\n /* \"#utility.yul\":3078:3102 */\n tag_102\n jump\t// in\n tag_101:\n /* \"#utility.yul\":3058:3103 */\n tag_103\n jump\t// in\n tag_100:\n /* \"#utility.yul\":3053:3056 */\n dup3\n /* \"#utility.yul\":3046:3104 */\n mstore\n /* \"#utility.yul\":3036:3110 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":3116:3372 */\n tag_32:\n /* \"#utility.yul\":3228:3231 */\n 0x00\n /* \"#utility.yul\":3243:3318 */\n tag_105\n /* \"#utility.yul\":3314:3317 */\n dup3\n /* \"#utility.yul\":3305:3311 */\n dup5\n /* \"#utility.yul\":3243:3318 */\n tag_98\n jump\t// in\n tag_105:\n /* \"#utility.yul\":3343:3345 */\n 0x20\n /* \"#utility.yul\":3338:3341 */\n dup3\n /* \"#utility.yul\":3334:3346 */\n add\n /* \"#utility.yul\":3327:3346 */\n swap2\n pop\n /* \"#utility.yul\":3363:3366 */\n dup2\n /* \"#utility.yul\":3356:3366 */\n swap1\n pop\n /* \"#utility.yul\":3232:3372 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":3378:3600 */\n tag_13:\n /* \"#utility.yul\":3471:3475 */\n 0x00\n /* \"#utility.yul\":3509:3511 */\n 0x20\n /* \"#utility.yul\":3498:3507 */\n dup3\n /* \"#utility.yul\":3494:3512 */\n add\n /* \"#utility.yul\":3486:3512 */\n swap1\n pop\n /* \"#utility.yul\":3522:3593 */\n tag_107\n /* \"#utility.yul\":3590:3591 */\n 0x00\n /* \"#utility.yul\":3579:3588 */\n dup4\n /* \"#utility.yul\":3575:3592 */\n add\n /* \"#utility.yul\":3566:3572 */\n dup5\n /* \"#utility.yul\":3522:3593 */\n tag_79\n jump\t// in\n tag_107:\n /* \"#utility.yul\":3476:3600 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":3606:3828 */\n tag_19:\n /* \"#utility.yul\":3699:3703 */\n 0x00\n /* \"#utility.yul\":3737:3739 */\n 0x20\n /* \"#utility.yul\":3726:3735 */\n dup3\n /* \"#utility.yul\":3722:3740 */\n add\n /* \"#utility.yul\":3714:3740 */\n swap1\n pop\n /* \"#utility.yul\":3750:3821 */\n tag_109\n /* \"#utility.yul\":3818:3819 */\n 0x00\n /* \"#utility.yul\":3807:3816 */\n dup4\n /* \"#utility.yul\":3803:3820 */\n add\n /* \"#utility.yul\":3794:3800 */\n dup5\n /* \"#utility.yul\":3750:3821 */\n tag_83\n jump\t// in\n tag_109:\n /* \"#utility.yul\":3704:3828 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":3834:4253 */\n tag_23:\n /* \"#utility.yul\":4000:4004 */\n 0x00\n /* \"#utility.yul\":4038:4040 */\n 0x20\n /* \"#utility.yul\":4027:4036 */\n dup3\n /* \"#utility.yul\":4023:4041 */\n add\n /* \"#utility.yul\":4015:4041 */\n swap1\n pop\n /* \"#utility.yul\":4087:4096 */\n dup2\n /* \"#utility.yul\":4081:4085 */\n dup2\n /* \"#utility.yul\":4077:4097 */\n sub\n /* \"#utility.yul\":4073:4074 */\n 0x00\n /* \"#utility.yul\":4062:4071 */\n dup4\n /* \"#utility.yul\":4058:4075 */\n add\n /* \"#utility.yul\":4051:4098 */\n mstore\n /* \"#utility.yul\":4115:4246 */\n tag_111\n /* \"#utility.yul\":4241:4245 */\n dup2\n /* \"#utility.yul\":4115:4246 */\n tag_87\n jump\t// in\n tag_111:\n /* \"#utility.yul\":4107:4246 */\n swap1\n pop\n /* \"#utility.yul\":4005:4253 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":4259:4678 */\n tag_29:\n /* \"#utility.yul\":4425:4429 */\n 0x00\n /* \"#utility.yul\":4463:4465 */\n 0x20\n /* \"#utility.yul\":4452:4461 */\n dup3\n /* \"#utility.yul\":4448:4466 */\n add\n /* \"#utility.yul\":4440:4466 */\n swap1\n pop\n /* \"#utility.yul\":4512:4521 */\n dup2\n /* \"#utility.yul\":4506:4510 */\n dup2\n /* \"#utility.yul\":4502:4522 */\n sub\n /* \"#utility.yul\":4498:4499 */\n 0x00\n /* \"#utility.yul\":4487:4496 */\n dup4\n /* \"#utility.yul\":4483:4500 */\n add\n /* \"#utility.yul\":4476:4523 */\n mstore\n /* \"#utility.yul\":4540:4671 */\n tag_113\n /* \"#utility.yul\":4666:4670 */\n dup2\n /* \"#utility.yul\":4540:4671 */\n tag_93\n jump\t// in\n tag_113:\n /* \"#utility.yul\":4532:4671 */\n swap1\n pop\n /* \"#utility.yul\":4430:4678 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":4684:4813 */\n tag_56:\n /* \"#utility.yul\":4718:4724 */\n 0x00\n /* \"#utility.yul\":4745:4765 */\n tag_115\n tag_116\n jump\t// in\n tag_115:\n /* \"#utility.yul\":4735:4765 */\n swap1\n pop\n /* \"#utility.yul\":4774:4807 */\n tag_117\n /* \"#utility.yul\":4802:4806 */\n dup3\n /* \"#utility.yul\":4794:4800 */\n dup3\n /* \"#utility.yul\":4774:4807 */\n tag_118\n jump\t// in\n tag_117:\n /* \"#utility.yul\":4725:4813 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":4819:4894 */\n tag_116:\n /* \"#utility.yul\":4852:4858 */\n 0x00\n /* \"#utility.yul\":4885:4887 */\n 0x40\n /* \"#utility.yul\":4879:4888 */\n mload\n /* \"#utility.yul\":4869:4888 */\n swap1\n pop\n /* \"#utility.yul\":4859:4894 */\n swap1\n jump\t// out\n /* \"#utility.yul\":4900:5208 */\n tag_55:\n /* \"#utility.yul\":4962:4966 */\n 0x00\n /* \"#utility.yul\":5052:5070 */\n 0xffffffffffffffff\n /* \"#utility.yul\":5044:5050 */\n dup3\n /* \"#utility.yul\":5041:5071 */\n gt\n /* \"#utility.yul\":5038:5040 */\n iszero\n tag_121\n jumpi\n /* \"#utility.yul\":5074:5092 */\n tag_122\n tag_123\n jump\t// in\n tag_122:\n /* \"#utility.yul\":5038:5040 */\n tag_121:\n /* \"#utility.yul\":5112:5141 */\n tag_124\n /* \"#utility.yul\":5134:5140 */\n dup3\n /* \"#utility.yul\":5112:5141 */\n tag_125\n jump\t// in\n tag_124:\n /* \"#utility.yul\":5104:5141 */\n swap1\n pop\n /* \"#utility.yul\":5196:5200 */\n 0x20\n /* \"#utility.yul\":5190:5194 */\n dup2\n /* \"#utility.yul\":5186:5201 */\n add\n /* \"#utility.yul\":5178:5201 */\n swap1\n pop\n /* \"#utility.yul\":4967:5208 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":5214:5383 */\n tag_90:\n /* \"#utility.yul\":5298:5309 */\n 0x00\n /* \"#utility.yul\":5332:5338 */\n dup3\n /* \"#utility.yul\":5327:5330 */\n dup3\n /* \"#utility.yul\":5320:5339 */\n mstore\n /* \"#utility.yul\":5372:5376 */\n 0x20\n /* \"#utility.yul\":5367:5370 */\n dup3\n /* \"#utility.yul\":5363:5377 */\n add\n /* \"#utility.yul\":5348:5377 */\n swap1\n pop\n /* \"#utility.yul\":5310:5383 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":5389:5485 */\n tag_82:\n /* \"#utility.yul\":5426:5433 */\n 0x00\n /* \"#utility.yul\":5455:5479 */\n tag_128\n /* \"#utility.yul\":5473:5478 */\n dup3\n /* \"#utility.yul\":5455:5479 */\n tag_129\n jump\t// in\n tag_128:\n /* \"#utility.yul\":5444:5479 */\n swap1\n pop\n /* \"#utility.yul\":5434:5485 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":5491:5568 */\n tag_86:\n /* \"#utility.yul\":5528:5535 */\n 0x00\n /* \"#utility.yul\":5557:5562 */\n dup2\n /* \"#utility.yul\":5546:5562 */\n swap1\n pop\n /* \"#utility.yul\":5536:5568 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":5574:5700 */\n tag_129:\n /* \"#utility.yul\":5611:5618 */\n 0x00\n /* \"#utility.yul\":5651:5693 */\n 0xffffffffffffffffffffffffffffffffffffffff\n /* \"#utility.yul\":5644:5649 */\n dup3\n /* \"#utility.yul\":5640:5694 */\n and\n /* \"#utility.yul\":5629:5694 */\n swap1\n pop\n /* \"#utility.yul\":5619:5700 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":5706:5783 */\n tag_102:\n /* \"#utility.yul\":5743:5750 */\n 0x00\n /* \"#utility.yul\":5772:5777 */\n dup2\n /* \"#utility.yul\":5761:5777 */\n swap1\n pop\n /* \"#utility.yul\":5751:5783 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":5789:5943 */\n tag_59:\n /* \"#utility.yul\":5873:5879 */\n dup3\n /* \"#utility.yul\":5868:5871 */\n dup2\n /* \"#utility.yul\":5863:5866 */\n dup4\n /* \"#utility.yul\":5850:5880 */\n calldatacopy\n /* \"#utility.yul\":5935:5936 */\n 0x00\n /* \"#utility.yul\":5926:5932 */\n dup4\n /* \"#utility.yul\":5921:5924 */\n dup4\n /* \"#utility.yul\":5917:5933 */\n add\n /* \"#utility.yul\":5910:5937 */\n mstore\n /* \"#utility.yul\":5840:5943 */\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":5949:6269 */\n tag_40:\n /* \"#utility.yul\":5993:5999 */\n 0x00\n /* \"#utility.yul\":6030:6031 */\n 0x02\n /* \"#utility.yul\":6024:6028 */\n dup3\n /* \"#utility.yul\":6020:6032 */\n div\n /* \"#utility.yul\":6010:6032 */\n swap1\n pop\n /* \"#utility.yul\":6077:6078 */\n 0x01\n /* \"#utility.yul\":6071:6075 */\n dup3\n /* \"#utility.yul\":6067:6079 */\n and\n /* \"#utility.yul\":6098:6116 */\n dup1\n /* \"#utility.yul\":6088:6090 */\n tag_135\n jumpi\n /* \"#utility.yul\":6154:6158 */\n 0x7f\n /* \"#utility.yul\":6146:6152 */\n dup3\n /* \"#utility.yul\":6142:6159 */\n and\n /* \"#utility.yul\":6132:6159 */\n swap2\n pop\n /* \"#utility.yul\":6088:6090 */\n tag_135:\n /* \"#utility.yul\":6216:6218 */\n 0x20\n /* \"#utility.yul\":6208:6214 */\n dup3\n /* \"#utility.yul\":6205:6219 */\n lt\n /* \"#utility.yul\":6185:6203 */\n dup2\n /* \"#utility.yul\":6182:6220 */\n eq\n /* \"#utility.yul\":6179:6181 */\n iszero\n tag_136\n jumpi\n /* \"#utility.yul\":6235:6253 */\n tag_137\n tag_138\n jump\t// in\n tag_137:\n /* \"#utility.yul\":6179:6181 */\n tag_136:\n /* \"#utility.yul\":6000:6269 */\n pop\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":6275:6556 */\n tag_118:\n /* \"#utility.yul\":6358:6385 */\n tag_140\n /* \"#utility.yul\":6380:6384 */\n dup3\n /* \"#utility.yul\":6358:6385 */\n tag_125\n jump\t// in\n tag_140:\n /* \"#utility.yul\":6350:6356 */\n dup2\n /* \"#utility.yul\":6346:6386 */\n add\n /* \"#utility.yul\":6488:6494 */\n dup2\n /* \"#utility.yul\":6476:6486 */\n dup2\n /* \"#utility.yul\":6473:6495 */\n lt\n /* \"#utility.yul\":6452:6470 */\n 0xffffffffffffffff\n /* \"#utility.yul\":6440:6450 */\n dup3\n /* \"#utility.yul\":6437:6471 */\n gt\n /* \"#utility.yul\":6434:6496 */\n or\n /* \"#utility.yul\":6431:6433 */\n iszero\n tag_141\n jumpi\n /* \"#utility.yul\":6499:6517 */\n tag_142\n tag_123\n jump\t// in\n tag_142:\n /* \"#utility.yul\":6431:6433 */\n tag_141:\n /* \"#utility.yul\":6539:6549 */\n dup1\n /* \"#utility.yul\":6535:6537 */\n 0x40\n /* \"#utility.yul\":6528:6550 */\n mstore\n /* \"#utility.yul\":6318:6556 */\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":6562:6641 */\n tag_103:\n /* \"#utility.yul\":6601:6608 */\n 0x00\n /* \"#utility.yul\":6630:6635 */\n dup2\n /* \"#utility.yul\":6619:6635 */\n swap1\n pop\n /* \"#utility.yul\":6609:6641 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":6647:6827 */\n tag_138:\n /* \"#utility.yul\":6695:6772 */\n 0x4e487b7100000000000000000000000000000000000000000000000000000000\n /* \"#utility.yul\":6692:6693 */\n 0x00\n /* \"#utility.yul\":6685:6773 */\n mstore\n /* \"#utility.yul\":6792:6796 */\n 0x22\n /* \"#utility.yul\":6789:6790 */\n 0x04\n /* \"#utility.yul\":6782:6797 */\n mstore\n /* \"#utility.yul\":6816:6820 */\n 0x24\n /* \"#utility.yul\":6813:6814 */\n 0x00\n /* \"#utility.yul\":6806:6821 */\n revert\n /* \"#utility.yul\":6833:7013 */\n tag_123:\n /* \"#utility.yul\":6881:6958 */\n 0x4e487b7100000000000000000000000000000000000000000000000000000000\n /* \"#utility.yul\":6878:6879 */\n 0x00\n /* \"#utility.yul\":6871:6959 */\n mstore\n /* \"#utility.yul\":6978:6982 */\n 0x41\n /* \"#utility.yul\":6975:6976 */\n 0x04\n /* \"#utility.yul\":6968:6983 */\n mstore\n /* \"#utility.yul\":7002:7006 */\n 0x24\n /* \"#utility.yul\":6999:7000 */\n 0x00\n /* \"#utility.yul\":6992:7007 */\n revert\n /* \"#utility.yul\":7019:7121 */\n tag_125:\n /* \"#utility.yul\":7060:7066 */\n 0x00\n /* \"#utility.yul\":7111:7113 */\n 0x1f\n /* \"#utility.yul\":7107:7114 */\n not\n /* \"#utility.yul\":7102:7104 */\n 0x1f\n /* \"#utility.yul\":7095:7100 */\n dup4\n /* \"#utility.yul\":7091:7105 */\n add\n /* \"#utility.yul\":7087:7115 */\n and\n /* \"#utility.yul\":7077:7115 */\n swap1\n pop\n /* \"#utility.yul\":7067:7121 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":7127:7309 */\n tag_92:\n /* \"#utility.yul\":7267:7301 */\n 0x446562657320706f6e657220656c206e6f6d62726520616c20706f6b656d6f6e\n /* \"#utility.yul\":7263:7264 */\n 0x00\n /* \"#utility.yul\":7255:7261 */\n dup3\n /* \"#utility.yul\":7251:7265 */\n add\n /* \"#utility.yul\":7244:7302 */\n mstore\n /* \"#utility.yul\":7233:7309 */\n pop\n jump\t// out\n /* \"#utility.yul\":7315:7566 */\n tag_97:\n /* \"#utility.yul\":7455:7489 */\n 0x4e6f207469656e6573207065726d69736f732070617261206361707475726172\n /* \"#utility.yul\":7451:7452 */\n 0x00\n /* \"#utility.yul\":7443:7449 */\n dup3\n /* \"#utility.yul\":7439:7453 */\n add\n /* \"#utility.yul\":7432:7490 */\n mstore\n /* \"#utility.yul\":7524:7558 */\n 0x206573746f7320706f6b656d6f6e2070617261206573746120506f6b65646578\n /* \"#utility.yul\":7519:7521 */\n 0x20\n /* \"#utility.yul\":7511:7517 */\n dup3\n /* \"#utility.yul\":7507:7522 */\n add\n /* \"#utility.yul\":7500:7559 */\n mstore\n /* \"#utility.yul\":7421:7566 */\n pop\n jump\t// out\n /* \"#utility.yul\":7572:7694 */\n tag_67:\n /* \"#utility.yul\":7645:7669 */\n tag_150\n /* \"#utility.yul\":7663:7668 */\n dup2\n /* \"#utility.yul\":7645:7669 */\n tag_102\n jump\t// in\n tag_150:\n /* \"#utility.yul\":7638:7643 */\n dup2\n /* \"#utility.yul\":7635:7670 */\n eq\n /* \"#utility.yul\":7625:7627 */\n tag_151\n jumpi\n /* \"#utility.yul\":7684:7685 */\n 0x00\n /* \"#utility.yul\":7681:7682 */\n dup1\n /* \"#utility.yul\":7674:7686 */\n revert\n /* \"#utility.yul\":7625:7627 */\n tag_151:\n /* \"#utility.yul\":7615:7694 */\n pop\n jump\t// out\n\n auxdata: 0xa2646970667358221220f6d92718d94368efc5f07397a8db6b8213e1bb29e9c588bd8fbe89277ee62a0064736f6c63430008040033\n}\n",
"bytecode": {
"generatedSources": [],
"linkReferences": {},
"object": "608060405234801561001057600080fd5b5033600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610819806100616000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806357fb6b9c146100465780638da5cb5b14610062578063bda0284214610080575b600080fd5b610060600480360381019061005b91906103f0565b6100b0565b005b61006a610146565b6040516100779190610546565b60405180910390f35b61009a60048036038101906100959190610487565b61016c565b6040516100a79190610561565b60405180910390f35b6040518060400160405280600181526020017f20000000000000000000000000000000000000000000000000000000000000008152508051906020012083805190602001201415610136576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161012d9061057c565b60405180910390fd5b61014183838361022c565b505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60003373ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146101fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101f59061059c565b60405180910390fd5b8160405160200161020f919061052b565b604051602081830303815290604052805190602001209050919050565b60006040518060600160405280858152602001848152602001838152509080600181540180825580915050600190039060005260206000209060030201600090919091909150600082015181600001908051906020019061028e9291906102d0565b5060208201518160010190805190602001906102ab9291906102d0565b5060408201518160020190805190602001906102c89291906102d0565b505050505050565b8280546102dc90610678565b90600052602060002090601f0160209004810192826102fe5760008555610345565b82601f1061031757805160ff1916838001178555610345565b82800160010185558215610345579182015b82811115610344578251825591602001919060010190610329565b5b5090506103529190610356565b5090565b5b8082111561036f576000816000905550600101610357565b5090565b6000610386610381846105e1565b6105bc565b90508281526020810184848401111561039e57600080fd5b6103a9848285610669565b509392505050565b600082601f8301126103c257600080fd5b81356103d2848260208601610373565b91505092915050565b6000813590506103ea816107cc565b92915050565b60008060006060848603121561040557600080fd5b600084013567ffffffffffffffff81111561041f57600080fd5b61042b868287016103b1565b935050602084013567ffffffffffffffff81111561044857600080fd5b610454868287016103b1565b925050604084013567ffffffffffffffff81111561047157600080fd5b61047d868287016103b1565b9150509250925092565b60006020828403121561049957600080fd5b60006104a7848285016103db565b91505092915050565b6104b981610623565b82525050565b6104c881610635565b82525050565b60006104db602083610612565b91506104e682610754565b602082019050919050565b60006104fe604083610612565b91506105098261077d565b604082019050919050565b6105256105208261065f565b6106db565b82525050565b60006105378284610514565b60208201915081905092915050565b600060208201905061055b60008301846104b0565b92915050565b600060208201905061057660008301846104bf565b92915050565b60006020820190508181036000830152610595816104ce565b9050919050565b600060208201905081810360008301526105b5816104f1565b9050919050565b60006105c66105d7565b90506105d282826106aa565b919050565b6000604051905090565b600067ffffffffffffffff8211156105fc576105fb610714565b5b61060582610743565b9050602081019050919050565b600082825260208201905092915050565b600061062e8261063f565b9050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b6000600282049050600182168061069057607f821691505b602082108114156106a4576106a36106e5565b5b50919050565b6106b382610743565b810181811067ffffffffffffffff821117156106d2576106d1610714565b5b80604052505050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f446562657320706f6e657220656c206e6f6d62726520616c20706f6b656d6f6e600082015250565b7f4e6f207469656e6573207065726d69736f73207061726120636170747572617260008201527f206573746f7320706f6b656d6f6e2070617261206573746120506f6b65646578602082015250565b6107d58161065f565b81146107e057600080fd5b5056fea2646970667358221220f6d92718d94368efc5f07397a8db6b8213e1bb29e9c588bd8fbe89277ee62a0064736f6c63430008040033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLER PUSH1 0x1 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x819 DUP1 PUSH2 0x61 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x41 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x57FB6B9C EQ PUSH2 0x46 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x62 JUMPI DUP1 PUSH4 0xBDA02842 EQ PUSH2 0x80 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x60 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x5B SWAP2 SWAP1 PUSH2 0x3F0 JUMP JUMPDEST PUSH2 0xB0 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x6A PUSH2 0x146 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x77 SWAP2 SWAP1 PUSH2 0x546 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x9A PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x95 SWAP2 SWAP1 PUSH2 0x487 JUMP JUMPDEST PUSH2 0x16C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA7 SWAP2 SWAP1 PUSH2 0x561 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x2000000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP4 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 EQ ISZERO PUSH2 0x136 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x12D SWAP1 PUSH2 0x57C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x141 DUP4 DUP4 DUP4 PUSH2 0x22C JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1FE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1F5 SWAP1 PUSH2 0x59C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x20F SWAP2 SWAP1 PUSH2 0x52B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE POP SWAP1 DUP1 PUSH1 0x1 DUP2 SLOAD ADD DUP1 DUP3 SSTORE DUP1 SWAP2 POP POP PUSH1 0x1 SWAP1 SUB SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x0 SWAP1 SWAP2 SWAP1 SWAP2 SWAP1 SWAP2 POP PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x28E SWAP3 SWAP2 SWAP1 PUSH2 0x2D0 JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x2AB SWAP3 SWAP2 SWAP1 PUSH2 0x2D0 JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD DUP2 PUSH1 0x2 ADD SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x2C8 SWAP3 SWAP2 SWAP1 PUSH2 0x2D0 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH2 0x2DC SWAP1 PUSH2 0x678 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH2 0x2FE JUMPI PUSH1 0x0 DUP6 SSTORE PUSH2 0x345 JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH2 0x317 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x345 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x345 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x344 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x329 JUMP JUMPDEST JUMPDEST POP SWAP1 POP PUSH2 0x352 SWAP2 SWAP1 PUSH2 0x356 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x36F JUMPI PUSH1 0x0 DUP2 PUSH1 0x0 SWAP1 SSTORE POP PUSH1 0x1 ADD PUSH2 0x357 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x386 PUSH2 0x381 DUP5 PUSH2 0x5E1 JUMP JUMPDEST PUSH2 0x5BC JUMP JUMPDEST SWAP1 POP DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 DUP5 DUP5 ADD GT ISZERO PUSH2 0x39E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3A9 DUP5 DUP3 DUP6 PUSH2 0x669 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x3D2 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x373 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x3EA DUP2 PUSH2 0x7CC JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x405 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x41F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x42B DUP7 DUP3 DUP8 ADD PUSH2 0x3B1 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x448 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x454 DUP7 DUP3 DUP8 ADD PUSH2 0x3B1 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x471 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x47D DUP7 DUP3 DUP8 ADD PUSH2 0x3B1 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x499 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4A7 DUP5 DUP3 DUP6 ADD PUSH2 0x3DB JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x4B9 DUP2 PUSH2 0x623 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x4C8 DUP2 PUSH2 0x635 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4DB PUSH1 0x20 DUP4 PUSH2 0x612 JUMP JUMPDEST SWAP2 POP PUSH2 0x4E6 DUP3 PUSH2 0x754 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4FE PUSH1 0x40 DUP4 PUSH2 0x612 JUMP JUMPDEST SWAP2 POP PUSH2 0x509 DUP3 PUSH2 0x77D JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x525 PUSH2 0x520 DUP3 PUSH2 0x65F JUMP JUMPDEST PUSH2 0x6DB JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x537 DUP3 DUP5 PUSH2 0x514 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP2 POP DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x55B PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x4B0 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x576 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x4BF JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x595 DUP2 PUSH2 0x4CE JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x5B5 DUP2 PUSH2 0x4F1 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5C6 PUSH2 0x5D7 JUMP JUMPDEST SWAP1 POP PUSH2 0x5D2 DUP3 DUP3 PUSH2 0x6AA JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x5FC JUMPI PUSH2 0x5FB PUSH2 0x714 JUMP JUMPDEST JUMPDEST PUSH2 0x605 DUP3 PUSH2 0x743 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 ADD 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 PUSH2 0x62E DUP3 PUSH2 0x63F JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY PUSH1 0x0 DUP4 DUP4 ADD MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH2 0x690 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH2 0x6A4 JUMPI PUSH2 0x6A3 PUSH2 0x6E5 JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x6B3 DUP3 PUSH2 0x743 JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x6D2 JUMPI PUSH2 0x6D1 PUSH2 0x714 JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x446562657320706F6E657220656C206E6F6D62726520616C20706F6B656D6F6E PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH32 0x4E6F207469656E6573207065726D69736F732070617261206361707475726172 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x206573746F7320706F6B656D6F6E2070617261206573746120506F6B65646578 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH2 0x7D5 DUP2 PUSH2 0x65F JUMP JUMPDEST DUP2 EQ PUSH2 0x7E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xF6 0xD9 0x27 XOR 0xD9 NUMBER PUSH9 0xEFC5F07397A8DB6B82 SGT 0xE1 0xBB 0x29 0xE9 0xC5 DUP9 0xBD DUP16 0xBE DUP10 0x27 PUSH31 0xE62A0064736F6C634300080400330000000000000000000000000000000000 ",
"sourceMap": "640:1005:0:-:0;;;827:52;;;;;;;;;;861:10;853:5;;:18;;;;;;;;;;;;;;;;;;640:1005;;;;;;"
},
"deployedBytecode": {
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:7697:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "91:261:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "101:75:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "168:6:1"
}
],
"functionName": {
"name": "array_allocation_size_t_string_memory_ptr",
"nodeType": "YulIdentifier",
"src": "126:41:1"
},
"nodeType": "YulFunctionCall",
"src": "126:49:1"
}
],
"functionName": {
"name": "allocate_memory",
"nodeType": "YulIdentifier",
"src": "110:15:1"
},
"nodeType": "YulFunctionCall",
"src": "110:66:1"
},
"variableNames": [
{
"name": "array",
"nodeType": "YulIdentifier",
"src": "101:5:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "array",
"nodeType": "YulIdentifier",
"src": "192:5:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "199:6:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "185:6:1"
},
"nodeType": "YulFunctionCall",
"src": "185:21:1"
},
"nodeType": "YulExpressionStatement",
"src": "185:21:1"
},
{
"nodeType": "YulVariableDeclaration",
"src": "215:27:1",
"value": {
"arguments": [
{
"name": "array",
"nodeType": "YulIdentifier",
"src": "230:5:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "237:4:1",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "226:3:1"
},
"nodeType": "YulFunctionCall",
"src": "226:16:1"
},
"variables": [
{
"name": "dst",
"nodeType": "YulTypedName",
"src": "219:3:1",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "280:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "289:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "292:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "282:6:1"
},
"nodeType": "YulFunctionCall",
"src": "282:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "282:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "261:3:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "266:6:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "257:3:1"
},
"nodeType": "YulFunctionCall",
"src": "257:16:1"
},
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "275:3:1"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "254:2:1"
},
"nodeType": "YulFunctionCall",
"src": "254:25:1"
},
"nodeType": "YulIf",
"src": "251:2:1"
},
{
"expression": {
"arguments": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "329:3:1"
},
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "334:3:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "339:6:1"
}
],
"functionName": {
"name": "copy_calldata_to_memory",
"nodeType": "YulIdentifier",
"src": "305:23:1"
},
"nodeType": "YulFunctionCall",
"src": "305:41:1"
},
"nodeType": "YulExpressionStatement",
"src": "305:41:1"
}
]
},
"name": "abi_decode_available_length_t_string_memory_ptr",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "src",
"nodeType": "YulTypedName",
"src": "64:3:1",
"type": ""
},
{
"name": "length",
"nodeType": "YulTypedName",
"src": "69:6:1",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "77:3:1",
"type": ""
}
],
"returnVariables": [
{
"name": "array",
"nodeType": "YulTypedName",
"src": "85:5:1",
"type": ""
}
],
"src": "7:345:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "434:211:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "483:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "492:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "495:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "485:6:1"
},
"nodeType": "YulFunctionCall",
"src": "485:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "485:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "462:6:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "470:4:1",
"type": "",
"value": "0x1f"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "458:3:1"
},
"nodeType": "YulFunctionCall",
"src": "458:17:1"
},
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "477:3:1"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "454:3:1"
},
"nodeType": "YulFunctionCall",
"src": "454:27:1"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "447:6:1"
},
"nodeType": "YulFunctionCall",
"src": "447:35:1"
},
"nodeType": "YulIf",
"src": "444:2:1"
},
{
"nodeType": "YulVariableDeclaration",
"src": "508:34:1",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "535:6:1"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "522:12:1"
},
"nodeType": "YulFunctionCall",
"src": "522:20:1"
},
"variables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "512:6:1",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "551:88:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "612:6:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "620:4:1",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "608:3:1"
},
"nodeType": "YulFunctionCall",
"src": "608:17:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "627:6:1"
},
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "635:3:1"
}
],
"functionName": {
"name": "abi_decode_available_length_t_string_memory_ptr",
"nodeType": "YulIdentifier",
"src": "560:47:1"
},
"nodeType": "YulFunctionCall",
"src": "560:79:1"
},
"variableNames": [
{
"name": "array",
"nodeType": "YulIdentifier",
"src": "551:5:1"
}
]
}
]
},
"name": "abi_decode_t_string_memory_ptr",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "412:6:1",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "420:3:1",
"type": ""
}
],
"returnVariables": [
{
"name": "array",
"nodeType": "YulTypedName",
"src": "428:5:1",
"type": ""
}
],
"src": "372:273:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "703:87:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "713:29:1",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "735:6:1"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "722:12:1"
},
"nodeType": "YulFunctionCall",
"src": "722:20:1"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "713:5:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "778:5:1"
}
],
"functionName": {
"name": "validator_revert_t_uint256",
"nodeType": "YulIdentifier",
"src": "751:26:1"
},
"nodeType": "YulFunctionCall",
"src": "751:33:1"
},
"nodeType": "YulExpressionStatement",
"src": "751:33:1"
}
]
},
"name": "abi_decode_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "681:6:1",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "689:3:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "697:5:1",
"type": ""
}
],
"src": "651:139:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "926:761:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "972:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "981:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "984:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "974:6:1"
},
"nodeType": "YulFunctionCall",
"src": "974:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "974:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "947:7:1"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "956:9:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "943:3:1"
},
"nodeType": "YulFunctionCall",
"src": "943:23:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "968:2:1",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "939:3:1"
},
"nodeType": "YulFunctionCall",
"src": "939:32:1"
},
"nodeType": "YulIf",
"src": "936:2:1"
},
{
"nodeType": "YulBlock",
"src": "998:220:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "1013:45:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1044:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1055:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1040:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1040:17:1"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "1027:12:1"
},
"nodeType": "YulFunctionCall",
"src": "1027:31:1"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "1017:6:1",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "1105:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1114:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1117:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "1107:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1107:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "1107:12:1"
}
]
},
"condition": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "1077:6:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1085:18:1",
"type": "",
"value": "0xffffffffffffffff"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "1074:2:1"
},
"nodeType": "YulFunctionCall",
"src": "1074:30:1"
},
"nodeType": "YulIf",
"src": "1071:2:1"
},
{
"nodeType": "YulAssignment",
"src": "1135:73:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1180:9:1"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "1191:6:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1176:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1176:22:1"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "1200:7:1"
}
],
"functionName": {
"name": "abi_decode_t_string_memory_ptr",
"nodeType": "YulIdentifier",
"src": "1145:30:1"
},
"nodeType": "YulFunctionCall",
"src": "1145:63:1"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "1135:6:1"
}
]
}
]
},
{
"nodeType": "YulBlock",
"src": "1228:221:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "1243:46:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1274:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1285:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1270:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1270:18:1"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "1257:12:1"
},
"nodeType": "YulFunctionCall",
"src": "1257:32:1"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "1247:6:1",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "1336:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1345:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1348:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "1338:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1338:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "1338:12:1"
}
]
},
"condition": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "1308:6:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1316:18:1",
"type": "",
"value": "0xffffffffffffffff"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "1305:2:1"
},
"nodeType": "YulFunctionCall",
"src": "1305:30:1"
},
"nodeType": "YulIf",
"src": "1302:2:1"
},
{
"nodeType": "YulAssignment",
"src": "1366:73:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1411:9:1"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "1422:6:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1407:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1407:22:1"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "1431:7:1"
}
],
"functionName": {
"name": "abi_decode_t_string_memory_ptr",
"nodeType": "YulIdentifier",
"src": "1376:30:1"
},
"nodeType": "YulFunctionCall",
"src": "1376:63:1"
},
"variableNames": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "1366:6:1"
}
]
}
]
},
{
"nodeType": "YulBlock",
"src": "1459:221:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "1474:46:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1505:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1516:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1501:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1501:18:1"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "1488:12:1"
},
"nodeType": "YulFunctionCall",
"src": "1488:32:1"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "1478:6:1",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "1567:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1576:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1579:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "1569:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1569:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "1569:12:1"
}
]
},
"condition": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "1539:6:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1547:18:1",
"type": "",
"value": "0xffffffffffffffff"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "1536:2:1"
},
"nodeType": "YulFunctionCall",
"src": "1536:30:1"
},
"nodeType": "YulIf",
"src": "1533:2:1"
},
{
"nodeType": "YulAssignment",
"src": "1597:73:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1642:9:1"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "1653:6:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1638:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1638:22:1"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "1662:7:1"
}
],
"functionName": {
"name": "abi_decode_t_string_memory_ptr",
"nodeType": "YulIdentifier",
"src": "1607:30:1"
},
"nodeType": "YulFunctionCall",
"src": "1607:63:1"
},
"variableNames": [
{
"name": "value2",
"nodeType": "YulIdentifier",
"src": "1597:6:1"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_string_memory_ptrt_string_memory_ptrt_string_memory_ptr",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "880:9:1",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "891:7:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "903:6:1",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "911:6:1",
"type": ""
},
{
"name": "value2",
"nodeType": "YulTypedName",
"src": "919:6:1",
"type": ""
}
],
"src": "796:891:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1759:196:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "1805:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1814:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1817:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "1807:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1807:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "1807:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "1780:7:1"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1789:9:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "1776:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1776:23:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1801:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "1772:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1772:32:1"
},
"nodeType": "YulIf",
"src": "1769:2:1"
},
{
"nodeType": "YulBlock",
"src": "1831:117:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "1846:15:1",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "1860:1:1",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "1850:6:1",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "1875:63:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1910:9:1"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "1921:6:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1906:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1906:22:1"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "1930:7:1"
}
],
"functionName": {
"name": "abi_decode_t_uint256",
"nodeType": "YulIdentifier",
"src": "1885:20:1"
},
"nodeType": "YulFunctionCall",
"src": "1885:53:1"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "1875:6:1"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "1729:9:1",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "1740:7:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "1752:6:1",
"type": ""
}
],
"src": "1693:262:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2026:53:1",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "2043:3:1"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2066:5:1"
}
],
"functionName": {
"name": "cleanup_t_address",
"nodeType": "YulIdentifier",
"src": "2048:17:1"
},
"nodeType": "YulFunctionCall",
"src": "2048:24:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "2036:6:1"
},
"nodeType": "YulFunctionCall",
"src": "2036:37:1"
},
"nodeType": "YulExpressionStatement",
"src": "2036:37:1"
}
]
},
"name": "abi_encode_t_address_to_t_address_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "2014:5:1",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "2021:3:1",
"type": ""
}
],
"src": "1961:118:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2150:53:1",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "2167:3:1"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2190:5:1"
}
],
"functionName": {
"name": "cleanup_t_bytes32",
"nodeType": "YulIdentifier",
"src": "2172:17:1"
},
"nodeType": "YulFunctionCall",
"src": "2172:24:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "2160:6:1"
},
"nodeType": "YulFunctionCall",
"src": "2160:37:1"
},
"nodeType": "YulExpressionStatement",
"src": "2160:37:1"
}
]
},
"name": "abi_encode_t_bytes32_to_t_bytes32_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "2138:5:1",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "2145:3:1",
"type": ""
}
],
"src": "2085:118:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2355:220:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2365:74:1",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "2431:3:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2436:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "2372:58:1"
},
"nodeType": "YulFunctionCall",
"src": "2372:67:1"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "2365:3:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "2537:3:1"
}
],
"functionName": {
"name": "store_literal_in_memory_5331388343a2514bef7d9c0cd91b3a30ad2fac988aaef47225f19af4ea6fa292",
"nodeType": "YulIdentifier",
"src": "2448:88:1"
},
"nodeType": "YulFunctionCall",
"src": "2448:93:1"
},
"nodeType": "YulExpressionStatement",
"src": "2448:93:1"
},
{
"nodeType": "YulAssignment",
"src": "2550:19:1",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "2561:3:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2566:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2557:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2557:12:1"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "2550:3:1"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_5331388343a2514bef7d9c0cd91b3a30ad2fac988aaef47225f19af4ea6fa292_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "2343:3:1",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "2351:3:1",
"type": ""
}
],
"src": "2209:366:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2727:220:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2737:74:1",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "2803:3:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2808:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "2744:58:1"
},
"nodeType": "YulFunctionCall",
"src": "2744:67:1"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "2737:3:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "2909:3:1"
}
],
"functionName": {
"name": "store_literal_in_memory_fca442303c9afb9c1d41b7f1cc6f1dc7f4d303357d160519af9eec7ff47cef67",
"nodeType": "YulIdentifier",
"src": "2820:88:1"
},
"nodeType": "YulFunctionCall",
"src": "2820:93:1"
},
"nodeType": "YulExpressionStatement",
"src": "2820:93:1"
},
{
"nodeType": "YulAssignment",
"src": "2922:19:1",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "2933:3:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2938:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2929:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2929:12:1"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "2922:3:1"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_fca442303c9afb9c1d41b7f1cc6f1dc7f4d303357d160519af9eec7ff47cef67_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "2715:3:1",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "2723:3:1",
"type": ""
}
],
"src": "2581:366:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3036:74:1",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "3053:3:1"
},
{
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "3096:5:1"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "3078:17:1"
},
"nodeType": "YulFunctionCall",
"src": "3078:24:1"
}
],
"functionName": {
"name": "leftAlign_t_uint256",
"nodeType": "YulIdentifier",
"src": "3058:19:1"
},
"nodeType": "YulFunctionCall",
"src": "3058:45:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3046:6:1"
},
"nodeType": "YulFunctionCall",
"src": "3046:58:1"
},
"nodeType": "YulExpressionStatement",
"src": "3046:58:1"
}
]
},
"name": "abi_encode_t_uint256_to_t_uint256_nonPadded_inplace_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "3024:5:1",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "3031:3:1",
"type": ""
}
],
"src": "2953:157:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3232:140:1",
"statements": [
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "3305:6:1"
},
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "3314:3:1"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_nonPadded_inplace_fromStack",
"nodeType": "YulIdentifier",
"src": "3243:61:1"
},
"nodeType": "YulFunctionCall",
"src": "3243:75:1"
},
"nodeType": "YulExpressionStatement",
"src": "3243:75:1"
},
{
"nodeType": "YulAssignment",
"src": "3327:19:1",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "3338:3:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3343:2:1",
"type": "",