{
  "abi": [],
  "bytecode": {
    "object": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220341b15723c077bd7594d53655a46759913586ec69216d932af8062f94c3bb31664736f6c63430008110033",
    "sourceMap": "7337:4527:9:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;7337:4527:9;;;;;;;;;;;;;;;;;",
    "linkReferences": {}
  },
  "deployedBytecode": {
    "object": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220341b15723c077bd7594d53655a46759913586ec69216d932af8062f94c3bb31664736f6c63430008110033",
    "sourceMap": "7337:4527:9:-:0;;;;;;;;",
    "linkReferences": {}
  },
  "methodIdentifiers": {},
  "rawMetadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/StdStorage.sol\":\"stdStorage\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\"]},\"sources\":{\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0xb0da85ce6999940eba6190a26c15b9bc7aede57123891287e1b30f80333a9cf5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d287fd41de40ef992588f7a9531e66d1e9f8e4f3f194b9e721ac576d4613964a\",\"dweb:/ipfs/QmbFYYjoc8WGLKVfDe4rscYPwdGq48incbwRQNoLtcMMjn\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x2d0cec0827a5ee9df571cde75cb742f8b977218283739e163801baa8c34439f6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://310afde56e845d7f36ca7ce191715038f8259d7a9250c171689744a797223556\",\"dweb:/ipfs/QmULG8AwNa5B64EMUSCwG1bAyJJK1sodAsAYvjk3vXbgMj\"]}},\"version\":1}",
  "metadata": {
    "compiler": {
      "version": "0.8.17+commit.8df45f5f"
    },
    "language": "Solidity",
    "output": {
      "abi": [],
      "devdoc": {
        "kind": "dev",
        "methods": {},
        "version": 1
      },
      "userdoc": {
        "kind": "user",
        "methods": {},
        "version": 1
      }
    },
    "settings": {
      "remappings": [
        ":ds-test/=lib/forge-std/lib/ds-test/src/",
        ":forge-std/=lib/forge-std/src/"
      ],
      "optimizer": {
        "enabled": true,
        "runs": 200
      },
      "metadata": {
        "bytecodeHash": "ipfs"
      },
      "compilationTarget": {
        "lib/forge-std/src/StdStorage.sol": "stdStorage"
      },
      "libraries": {}
    },
    "sources": {
      "lib/forge-std/src/StdStorage.sol": {
        "keccak256": "0xb0da85ce6999940eba6190a26c15b9bc7aede57123891287e1b30f80333a9cf5",
        "urls": [
          "bzz-raw://d287fd41de40ef992588f7a9531e66d1e9f8e4f3f194b9e721ac576d4613964a",
          "dweb:/ipfs/QmbFYYjoc8WGLKVfDe4rscYPwdGq48incbwRQNoLtcMMjn"
        ],
        "license": "MIT"
      },
      "lib/forge-std/src/Vm.sol": {
        "keccak256": "0x2d0cec0827a5ee9df571cde75cb742f8b977218283739e163801baa8c34439f6",
        "urls": [
          "bzz-raw://310afde56e845d7f36ca7ce191715038f8259d7a9250c171689744a797223556",
          "dweb:/ipfs/QmULG8AwNa5B64EMUSCwG1bAyJJK1sodAsAYvjk3vXbgMj"
        ],
        "license": "MIT"
      }
    },
    "version": 1
  },
  "ast": {
    "absolutePath": "lib/forge-std/src/StdStorage.sol",
    "id": 7107,
    "exportedSymbols": {
      "StdStorage": [
        5672
      ],
      "Vm": [
        8315
      ],
      "VmSafe": [
        7990
      ],
      "stdStorage": [
        7106
      ],
      "stdStorageSafe": [
        6565
      ]
    },
    "nodeType": "SourceUnit",
    "src": "32:11833:9",
    "nodes": [
      {
        "id": 5643,
        "nodeType": "PragmaDirective",
        "src": "32:31:9",
        "literals": [
          "solidity",
          ">=",
          "0.6",
          ".2",
          "<",
          "0.9",
          ".0"
        ]
      },
      {
        "id": 5644,
        "nodeType": "ImportDirective",
        "src": "65:18:9",
        "absolutePath": "lib/forge-std/src/Vm.sol",
        "file": "./Vm.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 7107,
        "sourceUnit": 8316,
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "id": 5672,
        "nodeType": "StructDefinition",
        "src": "85:271:9",
        "canonicalName": "StdStorage",
        "members": [
          {
            "constant": false,
            "id": 5652,
            "mutability": "mutable",
            "name": "slots",
            "nameLocation": "176:5:9",
            "nodeType": "VariableDeclaration",
            "scope": 5672,
            "src": "109:72:9",
            "stateVariable": false,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes4_$_t_mapping$_t_bytes32_$_t_uint256_$_$_$",
              "typeString": "mapping(address => mapping(bytes4 => mapping(bytes32 => uint256)))"
            },
            "typeName": {
              "id": 5651,
              "keyType": {
                "id": 5645,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "117:7:9",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "109:66:9",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes4_$_t_mapping$_t_bytes32_$_t_uint256_$_$_$",
                "typeString": "mapping(address => mapping(bytes4 => mapping(bytes32 => uint256)))"
              },
              "valueType": {
                "id": 5650,
                "keyType": {
                  "id": 5646,
                  "name": "bytes4",
                  "nodeType": "ElementaryTypeName",
                  "src": "136:6:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  }
                },
                "nodeType": "Mapping",
                "src": "128:46:9",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_bytes4_$_t_mapping$_t_bytes32_$_t_uint256_$_$",
                  "typeString": "mapping(bytes4 => mapping(bytes32 => uint256))"
                },
                "valueType": {
                  "id": 5649,
                  "keyType": {
                    "id": 5647,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "154:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "146:27:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                    "typeString": "mapping(bytes32 => uint256)"
                  },
                  "valueType": {
                    "id": 5648,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "165:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                }
              }
            },
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 5660,
            "mutability": "mutable",
            "name": "finds",
            "nameLocation": "251:5:9",
            "nodeType": "VariableDeclaration",
            "scope": 5672,
            "src": "187:69:9",
            "stateVariable": false,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes4_$_t_mapping$_t_bytes32_$_t_bool_$_$_$",
              "typeString": "mapping(address => mapping(bytes4 => mapping(bytes32 => bool)))"
            },
            "typeName": {
              "id": 5659,
              "keyType": {
                "id": 5653,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "195:7:9",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "187:63:9",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes4_$_t_mapping$_t_bytes32_$_t_bool_$_$_$",
                "typeString": "mapping(address => mapping(bytes4 => mapping(bytes32 => bool)))"
              },
              "valueType": {
                "id": 5658,
                "keyType": {
                  "id": 5654,
                  "name": "bytes4",
                  "nodeType": "ElementaryTypeName",
                  "src": "214:6:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  }
                },
                "nodeType": "Mapping",
                "src": "206:43:9",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_bytes4_$_t_mapping$_t_bytes32_$_t_bool_$_$",
                  "typeString": "mapping(bytes4 => mapping(bytes32 => bool))"
                },
                "valueType": {
                  "id": 5657,
                  "keyType": {
                    "id": 5655,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "232:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "224:24:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
                    "typeString": "mapping(bytes32 => bool)"
                  },
                  "valueType": {
                    "id": 5656,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "243:4:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  }
                }
              }
            },
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 5663,
            "mutability": "mutable",
            "name": "_keys",
            "nameLocation": "272:5:9",
            "nodeType": "VariableDeclaration",
            "scope": 5672,
            "src": "262:15:9",
            "stateVariable": false,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
              "typeString": "bytes32[]"
            },
            "typeName": {
              "baseType": {
                "id": 5661,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "262:7:9",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "id": 5662,
              "nodeType": "ArrayTypeName",
              "src": "262:9:9",
              "typeDescriptions": {
                "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                "typeString": "bytes32[]"
              }
            },
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 5665,
            "mutability": "mutable",
            "name": "_sig",
            "nameLocation": "290:4:9",
            "nodeType": "VariableDeclaration",
            "scope": 5672,
            "src": "283:11:9",
            "stateVariable": false,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes4",
              "typeString": "bytes4"
            },
            "typeName": {
              "id": 5664,
              "name": "bytes4",
              "nodeType": "ElementaryTypeName",
              "src": "283:6:9",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes4",
                "typeString": "bytes4"
              }
            },
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 5667,
            "mutability": "mutable",
            "name": "_depth",
            "nameLocation": "308:6:9",
            "nodeType": "VariableDeclaration",
            "scope": 5672,
            "src": "300:14:9",
            "stateVariable": false,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 5666,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "300:7:9",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 5669,
            "mutability": "mutable",
            "name": "_target",
            "nameLocation": "328:7:9",
            "nodeType": "VariableDeclaration",
            "scope": 5672,
            "src": "320:15:9",
            "stateVariable": false,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 5668,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "320:7:9",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 5671,
            "mutability": "mutable",
            "name": "_set",
            "nameLocation": "349:4:9",
            "nodeType": "VariableDeclaration",
            "scope": 5672,
            "src": "341:12:9",
            "stateVariable": false,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 5670,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "341:7:9",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "visibility": "internal"
          }
        ],
        "name": "StdStorage",
        "nameLocation": "92:10:9",
        "scope": 7107,
        "visibility": "public"
      },
      {
        "id": 6565,
        "nodeType": "ContractDefinition",
        "src": "358:6977:9",
        "nodes": [
          {
            "id": 5682,
            "nodeType": "EventDefinition",
            "src": "387:74:9",
            "anonymous": false,
            "eventSelector": "9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed",
            "name": "SlotFound",
            "nameLocation": "393:9:9",
            "parameters": {
              "id": 5681,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5674,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "who",
                  "nameLocation": "411:3:9",
                  "nodeType": "VariableDeclaration",
                  "scope": 5682,
                  "src": "403:11:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5673,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "403:7:9",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5676,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "fsig",
                  "nameLocation": "423:4:9",
                  "nodeType": "VariableDeclaration",
                  "scope": 5682,
                  "src": "416:11:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 5675,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "416:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5678,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "keysHash",
                  "nameLocation": "437:8:9",
                  "nodeType": "VariableDeclaration",
                  "scope": 5682,
                  "src": "429:16:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5677,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "429:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5680,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "slot",
                  "nameLocation": "455:4:9",
                  "nodeType": "VariableDeclaration",
                  "scope": 5682,
                  "src": "447:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5679,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "447:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "402:58:9"
            }
          },
          {
            "id": 5688,
            "nodeType": "EventDefinition",
            "src": "466:54:9",
            "anonymous": false,
            "eventSelector": "080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a5",
            "name": "WARNING_UninitedSlot",
            "nameLocation": "472:20:9",
            "parameters": {
              "id": 5687,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5684,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "who",
                  "nameLocation": "501:3:9",
                  "nodeType": "VariableDeclaration",
                  "scope": 5688,
                  "src": "493:11:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5683,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "493:7:9",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5686,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "slot",
                  "nameLocation": "514:4:9",
                  "nodeType": "VariableDeclaration",
                  "scope": 5688,
                  "src": "506:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5685,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "506:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "492:27:9"
            }
          },
          {
            "id": 5705,
            "nodeType": "VariableDeclaration",
            "src": "526:84:9",
            "constant": true,
            "mutability": "constant",
            "name": "vm",
            "nameLocation": "546:2:9",
            "scope": 6565,
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_Vm_$8315",
              "typeString": "contract Vm"
            },
            "typeName": {
              "id": 5690,
              "nodeType": "UserDefinedTypeName",
              "pathNode": {
                "id": 5689,
                "name": "Vm",
                "nameLocations": [
                  "526:2:9"
                ],
                "nodeType": "IdentifierPath",
                "referencedDeclaration": 8315,
                "src": "526:2:9"
              },
              "referencedDeclaration": 8315,
              "src": "526:2:9",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Vm_$8315",
                "typeString": "contract Vm"
              }
            },
            "value": {
              "arguments": [
                {
                  "arguments": [
                    {
                      "arguments": [
                        {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6865766d20636865617420636f6465",
                                  "id": 5699,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "588:17:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d",
                                    "typeString": "literal_string \"hevm cheat code\""
                                  },
                                  "value": "hevm cheat code"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d",
                                    "typeString": "literal_string \"hevm cheat code\""
                                  }
                                ],
                                "id": 5698,
                                "name": "keccak256",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -8,
                                "src": "578:9:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                  "typeString": "function (bytes memory) pure returns (bytes32)"
                                }
                              },
                              "id": 5700,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "578:28:9",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 5697,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "570:7:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": {
                              "id": 5696,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "570:7:9",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 5701,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "570:37:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 5695,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "562:7:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint160_$",
                          "typeString": "type(uint160)"
                        },
                        "typeName": {
                          "id": 5694,
                          "name": "uint160",
                          "nodeType": "ElementaryTypeName",
                          "src": "562:7:9",
                          "typeDescriptions": {}
                        }
                      },
                      "id": 5702,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "562:46:9",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint160",
                        "typeString": "uint160"
                      }
                    }
                  ],
                  "expression": {
                    "argumentTypes": [
                      {
                        "typeIdentifier": "t_uint160",
                        "typeString": "uint160"
                      }
                    ],
                    "id": 5693,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "nodeType": "ElementaryTypeNameExpression",
                    "src": "554:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_type$_t_address_$",
                      "typeString": "type(address)"
                    },
                    "typeName": {
                      "id": 5692,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "554:7:9",
                      "typeDescriptions": {}
                    }
                  },
                  "id": 5703,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "typeConversion",
                  "lValueRequested": false,
                  "nameLocations": [],
                  "names": [],
                  "nodeType": "FunctionCall",
                  "src": "554:55:9",
                  "tryCall": false,
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                }
              ],
              "expression": {
                "argumentTypes": [
                  {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                ],
                "id": 5691,
                "name": "Vm",
                "nodeType": "Identifier",
                "overloadedDeclarations": [],
                "referencedDeclaration": 8315,
                "src": "551:2:9",
                "typeDescriptions": {
                  "typeIdentifier": "t_type$_t_contract$_Vm_$8315_$",
                  "typeString": "type(contract Vm)"
                }
              },
              "id": 5704,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "typeConversion",
              "lValueRequested": false,
              "nameLocations": [],
              "names": [],
              "nodeType": "FunctionCall",
              "src": "551:59:9",
              "tryCall": false,
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Vm_$8315",
                "typeString": "contract Vm"
              }
            },
            "visibility": "private"
          },
          {
            "id": 5723,
            "nodeType": "FunctionDefinition",
            "src": "617:123:9",
            "body": {
              "id": 5722,
              "nodeType": "Block",
              "src": "684:56:9",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "id": 5717,
                                "name": "sigStr",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5707,
                                "src": "724:6:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              ],
                              "id": 5716,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "718:5:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                "typeString": "type(bytes storage pointer)"
                              },
                              "typeName": {
                                "id": 5715,
                                "name": "bytes",
                                "nodeType": "ElementaryTypeName",
                                "src": "718:5:9",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 5718,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "718:13:9",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "id": 5714,
                          "name": "keccak256",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -8,
                          "src": "708:9:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                            "typeString": "function (bytes memory) pure returns (bytes32)"
                          }
                        },
                        "id": 5719,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "708:24:9",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 5713,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "701:6:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_bytes4_$",
                        "typeString": "type(bytes4)"
                      },
                      "typeName": {
                        "id": 5712,
                        "name": "bytes4",
                        "nodeType": "ElementaryTypeName",
                        "src": "701:6:9",
                        "typeDescriptions": {}
                      }
                    },
                    "id": 5720,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "701:32:9",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "functionReturnParameters": 5711,
                  "id": 5721,
                  "nodeType": "Return",
                  "src": "694:39:9"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "sigs",
            "nameLocation": "626:4:9",
            "parameters": {
              "id": 5708,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5707,
                  "mutability": "mutable",
                  "name": "sigStr",
                  "nameLocation": "645:6:9",
                  "nodeType": "VariableDeclaration",
                  "scope": 5723,
                  "src": "631:20:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 5706,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "631:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "630:22:9"
            },
            "returnParameters": {
              "id": 5711,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5710,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 5723,
                  "src": "676:6:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 5709,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "676:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "675:8:9"
            },
            "scope": 6565,
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 6168,
            "nodeType": "FunctionDefinition",
            "src": "1254:3205:9",
            "body": {
              "id": 6167,
              "nodeType": "Block",
              "src": "1320:3139:9",
              "statements": [
                {
                  "assignments": [
                    5733
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5733,
                      "mutability": "mutable",
                      "name": "who",
                      "nameLocation": "1338:3:9",
                      "nodeType": "VariableDeclaration",
                      "scope": 6167,
                      "src": "1330:11:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5732,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1330:7:9",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 5736,
                  "initialValue": {
                    "expression": {
                      "id": 5734,
                      "name": "self",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5727,
                      "src": "1344:4:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                        "typeString": "struct StdStorage storage pointer"
                      }
                    },
                    "id": 5735,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberLocation": "1349:7:9",
                    "memberName": "_target",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 5669,
                    "src": "1344:12:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1330:26:9"
                },
                {
                  "assignments": [
                    5738
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5738,
                      "mutability": "mutable",
                      "name": "fsig",
                      "nameLocation": "1373:4:9",
                      "nodeType": "VariableDeclaration",
                      "scope": 6167,
                      "src": "1366:11:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      },
                      "typeName": {
                        "id": 5737,
                        "name": "bytes4",
                        "nodeType": "ElementaryTypeName",
                        "src": "1366:6:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 5741,
                  "initialValue": {
                    "expression": {
                      "id": 5739,
                      "name": "self",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5727,
                      "src": "1380:4:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                        "typeString": "struct StdStorage storage pointer"
                      }
                    },
                    "id": 5740,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberLocation": "1385:4:9",
                    "memberName": "_sig",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 5665,
                    "src": "1380:9:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1366:23:9"
                },
                {
                  "assignments": [
                    5743
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5743,
                      "mutability": "mutable",
                      "name": "field_depth",
                      "nameLocation": "1407:11:9",
                      "nodeType": "VariableDeclaration",
                      "scope": 6167,
                      "src": "1399:19:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5742,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1399:7:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 5746,
                  "initialValue": {
                    "expression": {
                      "id": 5744,
                      "name": "self",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5727,
                      "src": "1421:4:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                        "typeString": "struct StdStorage storage pointer"
                      }
                    },
                    "id": 5745,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberLocation": "1426:6:9",
                    "memberName": "_depth",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 5667,
                    "src": "1421:11:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1399:33:9"
                },
                {
                  "assignments": [
                    5751
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5751,
                      "mutability": "mutable",
                      "name": "ins",
                      "nameLocation": "1459:3:9",
                      "nodeType": "VariableDeclaration",
                      "scope": 6167,
                      "src": "1442:20:9",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                        "typeString": "bytes32[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 5749,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1442:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 5750,
                        "nodeType": "ArrayTypeName",
                        "src": "1442:9:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                          "typeString": "bytes32[]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 5754,
                  "initialValue": {
                    "expression": {
                      "id": 5752,
                      "name": "self",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5727,
                      "src": "1465:4:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                        "typeString": "struct StdStorage storage pointer"
                      }
                    },
                    "id": 5753,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberLocation": "1470:5:9",
                    "memberName": "_keys",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 5663,
                    "src": "1465:10:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                      "typeString": "bytes32[] storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1442:33:9"
                },
                {
                  "condition": {
                    "baseExpression": {
                      "baseExpression": {
                        "baseExpression": {
                          "expression": {
                            "id": 5755,
                            "name": "self",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5727,
                            "src": "1526:4:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                              "typeString": "struct StdStorage storage pointer"
                            }
                          },
                          "id": 5756,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "1531:5:9",
                          "memberName": "finds",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 5660,
                          "src": "1526:10:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes4_$_t_mapping$_t_bytes32_$_t_bool_$_$_$",
                            "typeString": "mapping(address => mapping(bytes4 => mapping(bytes32 => bool)))"
                          }
                        },
                        "id": 5758,
                        "indexExpression": {
                          "id": 5757,
                          "name": "who",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5733,
                          "src": "1537:3:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "1526:15:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes4_$_t_mapping$_t_bytes32_$_t_bool_$_$",
                          "typeString": "mapping(bytes4 => mapping(bytes32 => bool))"
                        }
                      },
                      "id": 5760,
                      "indexExpression": {
                        "id": 5759,
                        "name": "fsig",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5738,
                        "src": "1542:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "1526:21:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
                        "typeString": "mapping(bytes32 => bool)"
                      }
                    },
                    "id": 5768,
                    "indexExpression": {
                      "arguments": [
                        {
                          "arguments": [
                            {
                              "id": 5764,
                              "name": "ins",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5751,
                              "src": "1575:3:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                "typeString": "bytes32[] memory"
                              }
                            },
                            {
                              "id": 5765,
                              "name": "field_depth",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5743,
                              "src": "1580:11:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                "typeString": "bytes32[] memory"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 5762,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "1558:3:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 5763,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "1562:12:9",
                            "memberName": "encodePacked",
                            "nodeType": "MemberAccess",
                            "src": "1558:16:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function () pure returns (bytes memory)"
                            }
                          },
                          "id": 5766,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1558:34:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        ],
                        "id": 5761,
                        "name": "keccak256",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -8,
                        "src": "1548:9:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                          "typeString": "function (bytes memory) pure returns (bytes32)"
                        }
                      },
                      "id": 5767,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1548:45:9",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "1526:68:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 5785,
                  "nodeType": "IfStatement",
                  "src": "1522:174:9",
                  "trueBody": {
                    "id": 5784,
                    "nodeType": "Block",
                    "src": "1596:100:9",
                    "statements": [
                      {
                        "expression": {
                          "baseExpression": {
                            "baseExpression": {
                              "baseExpression": {
                                "expression": {
                                  "id": 5769,
                                  "name": "self",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5727,
                                  "src": "1617:4:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                                    "typeString": "struct StdStorage storage pointer"
                                  }
                                },
                                "id": 5770,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "1622:5:9",
                                "memberName": "slots",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 5652,
                                "src": "1617:10:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes4_$_t_mapping$_t_bytes32_$_t_uint256_$_$_$",
                                  "typeString": "mapping(address => mapping(bytes4 => mapping(bytes32 => uint256)))"
                                }
                              },
                              "id": 5772,
                              "indexExpression": {
                                "id": 5771,
                                "name": "who",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5733,
                                "src": "1628:3:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "1617:15:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes4_$_t_mapping$_t_bytes32_$_t_uint256_$_$",
                                "typeString": "mapping(bytes4 => mapping(bytes32 => uint256))"
                              }
                            },
                            "id": 5774,
                            "indexExpression": {
                              "id": 5773,
                              "name": "fsig",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5738,
                              "src": "1633:4:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "1617:21:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                              "typeString": "mapping(bytes32 => uint256)"
                            }
                          },
                          "id": 5782,
                          "indexExpression": {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "id": 5778,
                                    "name": "ins",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5751,
                                    "src": "1666:3:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                      "typeString": "bytes32[] memory"
                                    }
                                  },
                                  {
                                    "id": 5779,
                                    "name": "field_depth",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5743,
                                    "src": "1671:11:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                      "typeString": "bytes32[] memory"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 5776,
                                    "name": "abi",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -1,
                                    "src": "1649:3:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_abi",
                                      "typeString": "abi"
                                    }
                                  },
                                  "id": 5777,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberLocation": "1653:12:9",
                                  "memberName": "encodePacked",
                                  "nodeType": "MemberAccess",
                                  "src": "1649:16:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                    "typeString": "function () pure returns (bytes memory)"
                                  }
                                },
                                "id": 5780,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1649:34:9",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "id": 5775,
                              "name": "keccak256",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -8,
                              "src": "1639:9:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                "typeString": "function (bytes memory) pure returns (bytes32)"
                              }
                            },
                            "id": 5781,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1639:45:9",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "1617:68:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 5731,
                        "id": 5783,
                        "nodeType": "Return",
                        "src": "1610:75:9"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    5787
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5787,
                      "mutability": "mutable",
                      "name": "cald",
                      "nameLocation": "1718:4:9",
                      "nodeType": "VariableDeclaration",
                      "scope": 6167,
                      "src": "1705:17:9",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 5786,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "1705:5:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 5795,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 5790,
                        "name": "fsig",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5738,
                        "src": "1742:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "id": 5792,
                            "name": "ins",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5751,
                            "src": "1756:3:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                              "typeString": "bytes32[] memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                              "typeString": "bytes32[] memory"
                            }
                          ],
                          "id": 5791,
                          "name": "flatten",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6564,
                          "src": "1748:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_array$_t_bytes32_$dyn_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (bytes32[] memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 5793,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1748:12:9",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "expression": {
                        "id": 5788,
                        "name": "abi",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -1,
                        "src": "1725:3:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_abi",
                          "typeString": "abi"
                        }
                      },
                      "id": 5789,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberLocation": "1729:12:9",
                      "memberName": "encodePacked",
                      "nodeType": "MemberAccess",
                      "src": "1725:16:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                        "typeString": "function () pure returns (bytes memory)"
                      }
                    },
                    "id": 5794,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1725:36:9",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1705:56:9"
                },
                {
                  "expression": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "id": 5796,
                        "name": "vm",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5705,
                        "src": "1771:2:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Vm_$8315",
                          "typeString": "contract Vm"
                        }
                      },
                      "id": 5798,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "1774:6:9",
                      "memberName": "record",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7714,
                      "src": "1771:9:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$__$returns$__$",
                        "typeString": "function () external"
                      }
                    },
                    "id": 5799,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1771:11:9",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5800,
                  "nodeType": "ExpressionStatement",
                  "src": "1771:11:9"
                },
                {
                  "assignments": [
                    5802
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5802,
                      "mutability": "mutable",
                      "name": "fdat",
                      "nameLocation": "1800:4:9",
                      "nodeType": "VariableDeclaration",
                      "scope": 6167,
                      "src": "1792:12:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 5801,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "1792:7:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 5803,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1792:12:9"
                },
                {
                  "id": 5820,
                  "nodeType": "Block",
                  "src": "1814:128:9",
                  "statements": [
                    {
                      "assignments": [
                        null,
                        5805
                      ],
                      "declarations": [
                        null,
                        {
                          "constant": false,
                          "id": 5805,
                          "mutability": "mutable",
                          "name": "rdat",
                          "nameLocation": "1844:4:9",
                          "nodeType": "VariableDeclaration",
                          "scope": 5820,
                          "src": "1831:17:9",
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes"
                          },
                          "typeName": {
                            "id": 5804,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "1831:5:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage_ptr",
                              "typeString": "bytes"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 5810,
                      "initialValue": {
                        "arguments": [
                          {
                            "id": 5808,
                            "name": "cald",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5787,
                            "src": "1867:4:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "expression": {
                            "id": 5806,
                            "name": "who",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5733,
                            "src": "1852:3:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 5807,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "1856:10:9",
                          "memberName": "staticcall",
                          "nodeType": "MemberAccess",
                          "src": "1852:14:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "function (bytes memory) view returns (bool,bytes memory)"
                          }
                        },
                        "id": 5809,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1852:20:9",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                          "typeString": "tuple(bool,bytes memory)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "1828:44:9"
                    },
                    {
                      "expression": {
                        "id": 5818,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "id": 5811,
                          "name": "fdat",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5802,
                          "src": "1886:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "arguments": [
                            {
                              "id": 5813,
                              "name": "rdat",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5805,
                              "src": "1908:4:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 5816,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "hexValue": "3332",
                                "id": 5814,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1914:2:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_32_by_1",
                                  "typeString": "int_const 32"
                                },
                                "value": "32"
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "*",
                              "rightExpression": {
                                "id": 5815,
                                "name": "field_depth",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5743,
                                "src": "1919:11:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "1914:16:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 5812,
                            "name": "bytesToBytes32",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6523,
                            "src": "1893:14:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory,uint256) pure returns (bytes32)"
                            }
                          },
                          "id": 5817,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1893:38:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "src": "1886:45:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "id": 5819,
                      "nodeType": "ExpressionStatement",
                      "src": "1886:45:9"
                    }
                  ]
                },
                {
                  "assignments": [
                    5825,
                    null
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5825,
                      "mutability": "mutable",
                      "name": "reads",
                      "nameLocation": "1970:5:9",
                      "nodeType": "VariableDeclaration",
                      "scope": 6167,
                      "src": "1953:22:9",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                        "typeString": "bytes32[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 5823,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1953:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 5824,
                        "nodeType": "ArrayTypeName",
                        "src": "1953:9:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                          "typeString": "bytes32[]"
                        }
                      },
                      "visibility": "internal"
                    },
                    null
                  ],
                  "id": 5833,
                  "initialValue": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 5830,
                            "name": "who",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5733,
                            "src": "2000:3:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 5829,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1992:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 5828,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "1992:7:9",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 5831,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1992:12:9",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "id": 5826,
                        "name": "vm",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5705,
                        "src": "1980:2:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Vm_$8315",
                          "typeString": "contract Vm"
                        }
                      },
                      "id": 5827,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "1983:8:9",
                      "memberName": "accesses",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7725,
                      "src": "1980:11:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$_t_array$_t_bytes32_$dyn_memory_ptr_$",
                        "typeString": "function (address) external returns (bytes32[] memory,bytes32[] memory)"
                      }
                    },
                    "id": 5832,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1980:25:9",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_array$_t_bytes32_$dyn_memory_ptr_$_t_array$_t_bytes32_$dyn_memory_ptr_$",
                      "typeString": "tuple(bytes32[] memory,bytes32[] memory)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1952:53:9"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 5837,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "id": 5834,
                        "name": "reads",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5825,
                        "src": "2019:5:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[] memory"
                        }
                      },
                      "id": 5835,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "2025:6:9",
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "2019:12:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "hexValue": "31",
                      "id": 5836,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2035:1:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "src": "2019:17:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 5939,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "expression": {
                          "id": 5936,
                          "name": "reads",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5825,
                          "src": "2776:5:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                            "typeString": "bytes32[] memory"
                          }
                        },
                        "id": 5937,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "2782:6:9",
                        "memberName": "length",
                        "nodeType": "MemberAccess",
                        "src": "2776:12:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">",
                      "rightExpression": {
                        "hexValue": "31",
                        "id": 5938,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2791:1:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "src": "2776:16:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseBody": {
                      "id": 6115,
                      "nodeType": "Block",
                      "src": "3976:107:9",
                      "statements": [
                        {
                          "expression": {
                            "arguments": [
                              {
                                "hexValue": "66616c7365",
                                "id": 6111,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3998:5:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "false"
                              },
                              {
                                "hexValue": "73746453746f726167652066696e642853746453746f72616765293a204e6f2073746f726167652075736520646574656374656420666f72207461726765742e",
                                "id": 6112,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "string",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4005:66:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_stringliteral_328ff448bebe6b9a52a670e66989b0a23c94fd0cbd86c30e5432c6ddc5340283",
                                  "typeString": "literal_string \"stdStorage find(StdStorage): No storage use detected for target.\""
                                },
                                "value": "stdStorage find(StdStorage): No storage use detected for target."
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_328ff448bebe6b9a52a670e66989b0a23c94fd0cbd86c30e5432c6ddc5340283",
                                  "typeString": "literal_string \"stdStorage find(StdStorage): No storage use detected for target.\""
                                }
                              ],
                              "id": 6110,
                              "name": "require",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [
                                -18,
                                -18
                              ],
                              "referencedDeclaration": -18,
                              "src": "3990:7:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                "typeString": "function (bool,string memory) pure"
                              }
                            },
                            "id": 6113,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3990:82:9",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$",
                              "typeString": "tuple()"
                            }
                          },
                          "id": 6114,
                          "nodeType": "ExpressionStatement",
                          "src": "3990:82:9"
                        }
                      ]
                    },
                    "id": 6116,
                    "nodeType": "IfStatement",
                    "src": "2772:1311:9",
                    "trueBody": {
                      "id": 6109,
                      "nodeType": "Block",
                      "src": "2794:1176:9",
                      "statements": [
                        {
                          "body": {
                            "id": 6107,
                            "nodeType": "Block",
                            "src": "2851:1109:9",
                            "statements": [
                              {
                                "assignments": [
                                  5952
                                ],
                                "declarations": [
                                  {
                                    "constant": false,
                                    "id": 5952,
                                    "mutability": "mutable",
                                    "name": "prev",
                                    "nameLocation": "2877:4:9",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 6107,
                                    "src": "2869:12:9",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    "typeName": {
                                      "id": 5951,
                                      "name": "bytes32",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "2869:7:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "visibility": "internal"
                                  }
                                ],
                                "id": 5960,
                                "initialValue": {
                                  "arguments": [
                                    {
                                      "id": 5955,
                                      "name": "who",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5733,
                                      "src": "2892:3:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "baseExpression": {
                                        "id": 5956,
                                        "name": "reads",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5825,
                                        "src": "2897:5:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                          "typeString": "bytes32[] memory"
                                        }
                                      },
                                      "id": 5958,
                                      "indexExpression": {
                                        "id": 5957,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5941,
                                        "src": "2903:1:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "2897:8:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    ],
                                    "expression": {
                                      "id": 5953,
                                      "name": "vm",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5705,
                                      "src": "2884:2:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_Vm_$8315",
                                        "typeString": "contract Vm"
                                      }
                                    },
                                    "id": 5954,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "2887:4:9",
                                    "memberName": "load",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 7550,
                                    "src": "2884:7:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_bytes32_$returns$_t_bytes32_$",
                                      "typeString": "function (address,bytes32) external returns (bytes32)"
                                    }
                                  },
                                  "id": 5959,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2884:22:9",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "nodeType": "VariableDeclarationStatement",
                                "src": "2869:37:9"
                              },
                              {
                                "condition": {
                                  "commonType": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  "id": 5966,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 5961,
                                    "name": "prev",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5952,
                                    "src": "2928:4:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "arguments": [
                                      {
                                        "hexValue": "30",
                                        "id": 5964,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "2944:1:9",
                                        "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": 5963,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "2936:7:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_bytes32_$",
                                        "typeString": "type(bytes32)"
                                      },
                                      "typeName": {
                                        "id": 5962,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2936:7:9",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 5965,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "2936:10:9",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "src": "2928:18:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "id": 5978,
                                "nodeType": "IfStatement",
                                "src": "2924:114:9",
                                "trueBody": {
                                  "id": 5977,
                                  "nodeType": "Block",
                                  "src": "2948:90:9",
                                  "statements": [
                                    {
                                      "eventCall": {
                                        "arguments": [
                                          {
                                            "id": 5968,
                                            "name": "who",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 5733,
                                            "src": "2996:3:9",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "baseExpression": {
                                                  "id": 5971,
                                                  "name": "reads",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 5825,
                                                  "src": "3009:5:9",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                                    "typeString": "bytes32[] memory"
                                                  }
                                                },
                                                "id": 5973,
                                                "indexExpression": {
                                                  "id": 5972,
                                                  "name": "i",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 5941,
                                                  "src": "3015:1:9",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "IndexAccess",
                                                "src": "3009:8:9",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bytes32",
                                                  "typeString": "bytes32"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_bytes32",
                                                  "typeString": "bytes32"
                                                }
                                              ],
                                              "id": 5970,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "ElementaryTypeNameExpression",
                                              "src": "3001:7:9",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_uint256_$",
                                                "typeString": "type(uint256)"
                                              },
                                              "typeName": {
                                                "id": 5969,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "3001:7:9",
                                                "typeDescriptions": {}
                                              }
                                            },
                                            "id": 5974,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "nameLocations": [],
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "3001:17:9",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 5967,
                                          "name": "WARNING_UninitedSlot",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5688,
                                          "src": "2975:20:9",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
                                            "typeString": "function (address,uint256)"
                                          }
                                        },
                                        "id": 5975,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "2975:44:9",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_tuple$__$",
                                          "typeString": "tuple()"
                                        }
                                      },
                                      "id": 5976,
                                      "nodeType": "EmitStatement",
                                      "src": "2970:49:9"
                                    }
                                  ]
                                }
                              },
                              {
                                "expression": {
                                  "arguments": [
                                    {
                                      "id": 5982,
                                      "name": "who",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5733,
                                      "src": "3089:3:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "baseExpression": {
                                        "id": 5983,
                                        "name": "reads",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5825,
                                        "src": "3094:5:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                          "typeString": "bytes32[] memory"
                                        }
                                      },
                                      "id": 5985,
                                      "indexExpression": {
                                        "id": 5984,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5941,
                                        "src": "3100:1:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "3094:8:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    {
                                      "arguments": [
                                        {
                                          "hexValue": "1337",
                                          "id": 5988,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "hexString",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "3112:9:9",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_2636a8beb2c41b8ccafa9a55a5a5e333892a83b491df3a67d2768946a9f9c6dc",
                                            "typeString": "literal_string hex\"1337\""
                                          },
                                          "value": "\u00137"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_stringliteral_2636a8beb2c41b8ccafa9a55a5a5e333892a83b491df3a67d2768946a9f9c6dc",
                                            "typeString": "literal_string hex\"1337\""
                                          }
                                        ],
                                        "id": 5987,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "3104:7:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_bytes32_$",
                                          "typeString": "type(bytes32)"
                                        },
                                        "typeName": {
                                          "id": 5986,
                                          "name": "bytes32",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "3104:7:9",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 5989,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "3104:18:9",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      },
                                      {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    ],
                                    "expression": {
                                      "id": 5979,
                                      "name": "vm",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5705,
                                      "src": "3080:2:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_Vm_$8315",
                                        "typeString": "contract Vm"
                                      }
                                    },
                                    "id": 5981,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "3083:5:9",
                                    "memberName": "store",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 8026,
                                    "src": "3080:8:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_bytes32_$_t_bytes32_$returns$__$",
                                      "typeString": "function (address,bytes32,bytes32) external"
                                    }
                                  },
                                  "id": 5990,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3080:43:9",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$__$",
                                    "typeString": "tuple()"
                                  }
                                },
                                "id": 5991,
                                "nodeType": "ExpressionStatement",
                                "src": "3080:43:9"
                              },
                              {
                                "assignments": [
                                  5993
                                ],
                                "declarations": [
                                  {
                                    "constant": false,
                                    "id": 5993,
                                    "mutability": "mutable",
                                    "name": "success",
                                    "nameLocation": "3146:7:9",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 6107,
                                    "src": "3141:12:9",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "typeName": {
                                      "id": 5992,
                                      "name": "bool",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "3141:4:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "visibility": "internal"
                                  }
                                ],
                                "id": 5994,
                                "nodeType": "VariableDeclarationStatement",
                                "src": "3141:12:9"
                              },
                              {
                                "assignments": [
                                  5996
                                ],
                                "declarations": [
                                  {
                                    "constant": false,
                                    "id": 5996,
                                    "mutability": "mutable",
                                    "name": "rdat",
                                    "nameLocation": "3184:4:9",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 6107,
                                    "src": "3171:17:9",
                                    "stateVariable": false,
                                    "storageLocation": "memory",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes"
                                    },
                                    "typeName": {
                                      "id": 5995,
                                      "name": "bytes",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "3171:5:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_storage_ptr",
                                        "typeString": "bytes"
                                      }
                                    },
                                    "visibility": "internal"
                                  }
                                ],
                                "id": 5997,
                                "nodeType": "VariableDeclarationStatement",
                                "src": "3171:17:9"
                              },
                              {
                                "id": 6016,
                                "nodeType": "Block",
                                "src": "3206:146:9",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 6005,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "components": [
                                          {
                                            "id": 5998,
                                            "name": "success",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 5993,
                                            "src": "3229:7:9",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            }
                                          },
                                          {
                                            "id": 5999,
                                            "name": "rdat",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 5996,
                                            "src": "3238:4:9",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes memory"
                                            }
                                          }
                                        ],
                                        "id": 6000,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "TupleExpression",
                                        "src": "3228:15:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                                          "typeString": "tuple(bool,bytes memory)"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "arguments": [
                                          {
                                            "id": 6003,
                                            "name": "cald",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 5787,
                                            "src": "3261:4:9",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes memory"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes memory"
                                            }
                                          ],
                                          "expression": {
                                            "id": 6001,
                                            "name": "who",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 5733,
                                            "src": "3246:3:9",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          "id": 6002,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberLocation": "3250:10:9",
                                          "memberName": "staticcall",
                                          "nodeType": "MemberAccess",
                                          "src": "3246:14:9",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                                            "typeString": "function (bytes memory) view returns (bool,bytes memory)"
                                          }
                                        },
                                        "id": 6004,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "3246:20:9",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                                          "typeString": "tuple(bool,bytes memory)"
                                        }
                                      },
                                      "src": "3228:38:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 6006,
                                    "nodeType": "ExpressionStatement",
                                    "src": "3228:38:9"
                                  },
                                  {
                                    "expression": {
                                      "id": 6014,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 6007,
                                        "name": "fdat",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5802,
                                        "src": "3288:4:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "arguments": [
                                          {
                                            "id": 6009,
                                            "name": "rdat",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 5996,
                                            "src": "3310:4:9",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes memory"
                                            }
                                          },
                                          {
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 6012,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "hexValue": "3332",
                                              "id": 6010,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "3316:2:9",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_32_by_1",
                                                "typeString": "int_const 32"
                                              },
                                              "value": "32"
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "*",
                                            "rightExpression": {
                                              "id": 6011,
                                              "name": "field_depth",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 5743,
                                              "src": "3321:11:9",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "3316:16:9",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes memory"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 6008,
                                          "name": "bytesToBytes32",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6523,
                                          "src": "3295:14:9",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$",
                                            "typeString": "function (bytes memory,uint256) pure returns (bytes32)"
                                          }
                                        },
                                        "id": 6013,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "3295:38:9",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "src": "3288:45:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "id": 6015,
                                    "nodeType": "ExpressionStatement",
                                    "src": "3288:45:9"
                                  }
                                ]
                              },
                              {
                                "condition": {
                                  "commonType": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "id": 6024,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 6017,
                                    "name": "success",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5993,
                                    "src": "3374:7:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&&",
                                  "rightExpression": {
                                    "commonType": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    "id": 6023,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 6018,
                                      "name": "fdat",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5802,
                                      "src": "3385:4:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "arguments": [
                                        {
                                          "hexValue": "1337",
                                          "id": 6021,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "hexString",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "3401:9:9",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_2636a8beb2c41b8ccafa9a55a5a5e333892a83b491df3a67d2768946a9f9c6dc",
                                            "typeString": "literal_string hex\"1337\""
                                          },
                                          "value": "\u00137"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_stringliteral_2636a8beb2c41b8ccafa9a55a5a5e333892a83b491df3a67d2768946a9f9c6dc",
                                            "typeString": "literal_string hex\"1337\""
                                          }
                                        ],
                                        "id": 6020,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "3393:7:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_bytes32_$",
                                          "typeString": "type(bytes32)"
                                        },
                                        "typeName": {
                                          "id": 6019,
                                          "name": "bytes32",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "3393:7:9",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 6022,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "3393:18:9",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "src": "3385:26:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "src": "3374:37:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "id": 6096,
                                "nodeType": "IfStatement",
                                "src": "3370:529:9",
                                "trueBody": {
                                  "id": 6095,
                                  "nodeType": "Block",
                                  "src": "3413:486:9",
                                  "statements": [
                                    {
                                      "eventCall": {
                                        "arguments": [
                                          {
                                            "id": 6026,
                                            "name": "who",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 5733,
                                            "src": "3519:3:9",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          {
                                            "id": 6027,
                                            "name": "fsig",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 5738,
                                            "src": "3524:4:9",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes4",
                                              "typeString": "bytes4"
                                            }
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "id": 6031,
                                                    "name": "ins",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 5751,
                                                    "src": "3557:3:9",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                                      "typeString": "bytes32[] memory"
                                                    }
                                                  },
                                                  {
                                                    "id": 6032,
                                                    "name": "field_depth",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 5743,
                                                    "src": "3562:11:9",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                                      "typeString": "bytes32[] memory"
                                                    },
                                                    {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  ],
                                                  "expression": {
                                                    "id": 6029,
                                                    "name": "abi",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": -1,
                                                    "src": "3540:3:9",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_magic_abi",
                                                      "typeString": "abi"
                                                    }
                                                  },
                                                  "id": 6030,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "lValueRequested": false,
                                                  "memberLocation": "3544:12:9",
                                                  "memberName": "encodePacked",
                                                  "nodeType": "MemberAccess",
                                                  "src": "3540:16:9",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                                    "typeString": "function () pure returns (bytes memory)"
                                                  }
                                                },
                                                "id": 6033,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "nameLocations": [],
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "3540:34:9",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bytes_memory_ptr",
                                                  "typeString": "bytes memory"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_bytes_memory_ptr",
                                                  "typeString": "bytes memory"
                                                }
                                              ],
                                              "id": 6028,
                                              "name": "keccak256",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": -8,
                                              "src": "3530:9:9",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                                "typeString": "function (bytes memory) pure returns (bytes32)"
                                              }
                                            },
                                            "id": 6034,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "nameLocations": [],
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "3530:45:9",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            }
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "baseExpression": {
                                                  "id": 6037,
                                                  "name": "reads",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 5825,
                                                  "src": "3585:5:9",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                                    "typeString": "bytes32[] memory"
                                                  }
                                                },
                                                "id": 6039,
                                                "indexExpression": {
                                                  "id": 6038,
                                                  "name": "i",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 5941,
                                                  "src": "3591:1:9",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "IndexAccess",
                                                "src": "3585:8:9",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bytes32",
                                                  "typeString": "bytes32"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_bytes32",
                                                  "typeString": "bytes32"
                                                }
                                              ],
                                              "id": 6036,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "ElementaryTypeNameExpression",
                                              "src": "3577:7:9",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_uint256_$",
                                                "typeString": "type(uint256)"
                                              },
                                              "typeName": {
                                                "id": 6035,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "3577:7:9",
                                                "typeDescriptions": {}
                                              }
                                            },
                                            "id": 6040,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "nameLocations": [],
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "3577:17:9",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            },
                                            {
                                              "typeIdentifier": "t_bytes4",
                                              "typeString": "bytes4"
                                            },
                                            {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 6025,
                                          "name": "SlotFound",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5682,
                                          "src": "3509:9:9",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes4_$_t_bytes32_$_t_uint256_$returns$__$",
                                            "typeString": "function (address,bytes4,bytes32,uint256)"
                                          }
                                        },
                                        "id": 6041,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "3509:86:9",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_tuple$__$",
                                          "typeString": "tuple()"
                                        }
                                      },
                                      "id": 6042,
                                      "nodeType": "EmitStatement",
                                      "src": "3504:91:9"
                                    },
                                    {
                                      "expression": {
                                        "id": 6064,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                          "baseExpression": {
                                            "baseExpression": {
                                              "baseExpression": {
                                                "expression": {
                                                  "id": 6043,
                                                  "name": "self",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 5727,
                                                  "src": "3617:4:9",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                                                    "typeString": "struct StdStorage storage pointer"
                                                  }
                                                },
                                                "id": 6054,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberLocation": "3622:5:9",
                                                "memberName": "slots",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 5652,
                                                "src": "3617:10:9",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes4_$_t_mapping$_t_bytes32_$_t_uint256_$_$_$",
                                                  "typeString": "mapping(address => mapping(bytes4 => mapping(bytes32 => uint256)))"
                                                }
                                              },
                                              "id": 6055,
                                              "indexExpression": {
                                                "id": 6045,
                                                "name": "who",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 5733,
                                                "src": "3628:3:9",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              },
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "nodeType": "IndexAccess",
                                              "src": "3617:15:9",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_mapping$_t_bytes4_$_t_mapping$_t_bytes32_$_t_uint256_$_$",
                                                "typeString": "mapping(bytes4 => mapping(bytes32 => uint256))"
                                              }
                                            },
                                            "id": 6056,
                                            "indexExpression": {
                                              "id": 6046,
                                              "name": "fsig",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 5738,
                                              "src": "3633:4:9",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes4",
                                                "typeString": "bytes4"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "3617:21:9",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                              "typeString": "mapping(bytes32 => uint256)"
                                            }
                                          },
                                          "id": 6057,
                                          "indexExpression": {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "id": 6050,
                                                    "name": "ins",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 5751,
                                                    "src": "3666:3:9",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                                      "typeString": "bytes32[] memory"
                                                    }
                                                  },
                                                  {
                                                    "id": 6051,
                                                    "name": "field_depth",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 5743,
                                                    "src": "3671:11:9",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                                      "typeString": "bytes32[] memory"
                                                    },
                                                    {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  ],
                                                  "expression": {
                                                    "id": 6048,
                                                    "name": "abi",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": -1,
                                                    "src": "3649:3:9",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_magic_abi",
                                                      "typeString": "abi"
                                                    }
                                                  },
                                                  "id": 6049,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "lValueRequested": false,
                                                  "memberLocation": "3653:12:9",
                                                  "memberName": "encodePacked",
                                                  "nodeType": "MemberAccess",
                                                  "src": "3649:16:9",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                                    "typeString": "function () pure returns (bytes memory)"
                                                  }
                                                },
                                                "id": 6052,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "nameLocations": [],
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "3649:34:9",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bytes_memory_ptr",
                                                  "typeString": "bytes memory"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_bytes_memory_ptr",
                                                  "typeString": "bytes memory"
                                                }
                                              ],
                                              "id": 6047,
                                              "name": "keccak256",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": -8,
                                              "src": "3639:9:9",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                                "typeString": "function (bytes memory) pure returns (bytes32)"
                                              }
                                            },
                                            "id": 6053,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "nameLocations": [],
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "3639:45:9",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": true,
                                          "nodeType": "IndexAccess",
                                          "src": "3617:68:9",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                          "arguments": [
                                            {
                                              "baseExpression": {
                                                "id": 6060,
                                                "name": "reads",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 5825,
                                                "src": "3696:5:9",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                                  "typeString": "bytes32[] memory"
                                                }
                                              },
                                              "id": 6062,
                                              "indexExpression": {
                                                "id": 6061,
                                                "name": "i",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 5941,
                                                "src": "3702:1:9",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "nodeType": "IndexAccess",
                                              "src": "3696:8:9",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                              }
                                            ],
                                            "id": 6059,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "ElementaryTypeNameExpression",
                                            "src": "3688:7:9",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_uint256_$",
                                              "typeString": "type(uint256)"
                                            },
                                            "typeName": {
                                              "id": 6058,
                                              "name": "uint256",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "3688:7:9",
                                              "typeDescriptions": {}
                                            }
                                          },
                                          "id": 6063,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "typeConversion",
                                          "lValueRequested": false,
                                          "nameLocations": [],
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "3688:17:9",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "3617:88:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 6065,
                                      "nodeType": "ExpressionStatement",
                                      "src": "3617:88:9"
                                    },
                                    {
                                      "expression": {
                                        "id": 6082,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                          "baseExpression": {
                                            "baseExpression": {
                                              "baseExpression": {
                                                "expression": {
                                                  "id": 6066,
                                                  "name": "self",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 5727,
                                                  "src": "3727:4:9",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                                                    "typeString": "struct StdStorage storage pointer"
                                                  }
                                                },
                                                "id": 6077,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberLocation": "3732:5:9",
                                                "memberName": "finds",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 5660,
                                                "src": "3727:10:9",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes4_$_t_mapping$_t_bytes32_$_t_bool_$_$_$",
                                                  "typeString": "mapping(address => mapping(bytes4 => mapping(bytes32 => bool)))"
                                                }
                                              },
                                              "id": 6078,
                                              "indexExpression": {
                                                "id": 6068,
                                                "name": "who",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 5733,
                                                "src": "3738:3:9",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              },
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "nodeType": "IndexAccess",
                                              "src": "3727:15:9",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_mapping$_t_bytes4_$_t_mapping$_t_bytes32_$_t_bool_$_$",
                                                "typeString": "mapping(bytes4 => mapping(bytes32 => bool))"
                                              }
                                            },
                                            "id": 6079,
                                            "indexExpression": {
                                              "id": 6069,
                                              "name": "fsig",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 5738,
                                              "src": "3743:4:9",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes4",
                                                "typeString": "bytes4"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "3727:21:9",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
                                              "typeString": "mapping(bytes32 => bool)"
                                            }
                                          },
                                          "id": 6080,
                                          "indexExpression": {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "id": 6073,
                                                    "name": "ins",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 5751,
                                                    "src": "3776:3:9",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                                      "typeString": "bytes32[] memory"
                                                    }
                                                  },
                                                  {
                                                    "id": 6074,
                                                    "name": "field_depth",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 5743,
                                                    "src": "3781:11:9",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                                      "typeString": "bytes32[] memory"
                                                    },
                                                    {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  ],
                                                  "expression": {
                                                    "id": 6071,
                                                    "name": "abi",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": -1,
                                                    "src": "3759:3:9",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_magic_abi",
                                                      "typeString": "abi"
                                                    }
                                                  },
                                                  "id": 6072,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "lValueRequested": false,
                                                  "memberLocation": "3763:12:9",
                                                  "memberName": "encodePacked",
                                                  "nodeType": "MemberAccess",
                                                  "src": "3759:16:9",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                                    "typeString": "function () pure returns (bytes memory)"
                                                  }
                                                },
                                                "id": 6075,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "nameLocations": [],
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "3759:34:9",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bytes_memory_ptr",
                                                  "typeString": "bytes memory"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_bytes_memory_ptr",
                                                  "typeString": "bytes memory"
                                                }
                                              ],
                                              "id": 6070,
                                              "name": "keccak256",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": -8,
                                              "src": "3749:9:9",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                                "typeString": "function (bytes memory) pure returns (bytes32)"
                                              }
                                            },
                                            "id": 6076,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "nameLocations": [],
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "3749:45:9",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": true,
                                          "nodeType": "IndexAccess",
                                          "src": "3727:68:9",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                          "hexValue": "74727565",
                                          "id": 6081,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "bool",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "3798:4:9",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          },
                                          "value": "true"
                                        },
                                        "src": "3727:75:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "id": 6083,
                                      "nodeType": "ExpressionStatement",
                                      "src": "3727:75:9"
                                    },
                                    {
                                      "expression": {
                                        "arguments": [
                                          {
                                            "id": 6087,
                                            "name": "who",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 5733,
                                            "src": "3833:3:9",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          {
                                            "baseExpression": {
                                              "id": 6088,
                                              "name": "reads",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 5825,
                                              "src": "3838:5:9",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                                "typeString": "bytes32[] memory"
                                              }
                                            },
                                            "id": 6090,
                                            "indexExpression": {
                                              "id": 6089,
                                              "name": "i",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 5941,
                                              "src": "3844:1:9",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "3838:8:9",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            }
                                          },
                                          {
                                            "id": 6091,
                                            "name": "prev",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 5952,
                                            "src": "3848:4:9",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            },
                                            {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            },
                                            {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            }
                                          ],
                                          "expression": {
                                            "id": 6084,
                                            "name": "vm",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 5705,
                                            "src": "3824:2:9",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_contract$_Vm_$8315",
                                              "typeString": "contract Vm"
                                            }
                                          },
                                          "id": 6086,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberLocation": "3827:5:9",
                                          "memberName": "store",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 8026,
                                          "src": "3824:8:9",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_bytes32_$_t_bytes32_$returns$__$",
                                            "typeString": "function (address,bytes32,bytes32) external"
                                          }
                                        },
                                        "id": 6092,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "3824:29:9",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_tuple$__$",
                                          "typeString": "tuple()"
                                        }
                                      },
                                      "id": 6093,
                                      "nodeType": "ExpressionStatement",
                                      "src": "3824:29:9"
                                    },
                                    {
                                      "id": 6094,
                                      "nodeType": "Break",
                                      "src": "3875:5:9"
                                    }
                                  ]
                                }
                              },
                              {
                                "expression": {
                                  "arguments": [
                                    {
                                      "id": 6100,
                                      "name": "who",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5733,
                                      "src": "3925:3:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "baseExpression": {
                                        "id": 6101,
                                        "name": "reads",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5825,
                                        "src": "3930:5:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                          "typeString": "bytes32[] memory"
                                        }
                                      },
                                      "id": 6103,
                                      "indexExpression": {
                                        "id": 6102,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5941,
                                        "src": "3936:1:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "3930:8:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    {
                                      "id": 6104,
                                      "name": "prev",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5952,
                                      "src": "3940:4:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      },
                                      {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    ],
                                    "expression": {
                                      "id": 6097,
                                      "name": "vm",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5705,
                                      "src": "3916:2:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_Vm_$8315",
                                        "typeString": "contract Vm"
                                      }
                                    },
                                    "id": 6099,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "3919:5:9",
                                    "memberName": "store",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 8026,
                                    "src": "3916:8:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_bytes32_$_t_bytes32_$returns$__$",
                                      "typeString": "function (address,bytes32,bytes32) external"
                                    }
                                  },
                                  "id": 6105,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3916:29:9",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$__$",
                                    "typeString": "tuple()"
                                  }
                                },
                                "id": 6106,
                                "nodeType": "ExpressionStatement",
                                "src": "3916:29:9"
                              }
                            ]
                          },
                          "condition": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 5947,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 5944,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5941,
                              "src": "2828:1:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<",
                            "rightExpression": {
                              "expression": {
                                "id": 5945,
                                "name": "reads",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5825,
                                "src": "2832:5:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                  "typeString": "bytes32[] memory"
                                }
                              },
                              "id": 5946,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "2838:6:9",
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "2832:12:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "2828:16:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "id": 6108,
                          "initializationExpression": {
                            "assignments": [
                              5941
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 5941,
                                "mutability": "mutable",
                                "name": "i",
                                "nameLocation": "2821:1:9",
                                "nodeType": "VariableDeclaration",
                                "scope": 6108,
                                "src": "2813:9:9",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 5940,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2813:7:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 5943,
                            "initialValue": {
                              "hexValue": "30",
                              "id": 5942,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2825:1:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "2813:13:9"
                          },
                          "loopExpression": {
                            "expression": {
                              "id": 5949,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "++",
                              "prefix": false,
                              "src": "2846:3:9",
                              "subExpression": {
                                "id": 5948,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5941,
                                "src": "2846:1:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 5950,
                            "nodeType": "ExpressionStatement",
                            "src": "2846:3:9"
                          },
                          "nodeType": "ForStatement",
                          "src": "2808:1152:9"
                        }
                      ]
                    }
                  },
                  "id": 6117,
                  "nodeType": "IfStatement",
                  "src": "2015:2068:9",
                  "trueBody": {
                    "id": 5935,
                    "nodeType": "Block",
                    "src": "2038:728:9",
                    "statements": [
                      {
                        "assignments": [
                          5839
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5839,
                            "mutability": "mutable",
                            "name": "curr",
                            "nameLocation": "2060:4:9",
                            "nodeType": "VariableDeclaration",
                            "scope": 5935,
                            "src": "2052:12:9",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 5838,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "2052:7:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5847,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 5842,
                              "name": "who",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5733,
                              "src": "2075:3:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "baseExpression": {
                                "id": 5843,
                                "name": "reads",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5825,
                                "src": "2080:5:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                  "typeString": "bytes32[] memory"
                                }
                              },
                              "id": 5845,
                              "indexExpression": {
                                "hexValue": "30",
                                "id": 5844,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2086:1:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "2080:8:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "id": 5840,
                              "name": "vm",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5705,
                              "src": "2067:2:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Vm_$8315",
                                "typeString": "contract Vm"
                              }
                            },
                            "id": 5841,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "2070:4:9",
                            "memberName": "load",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7550,
                            "src": "2067:7:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_bytes32_$returns$_t_bytes32_$",
                              "typeString": "function (address,bytes32) external returns (bytes32)"
                            }
                          },
                          "id": 5846,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2067:22:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2052:37:9"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          "id": 5853,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 5848,
                            "name": "curr",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5839,
                            "src": "2107:4:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "arguments": [
                              {
                                "hexValue": "30",
                                "id": 5851,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2123:1:9",
                                "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": 5850,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "2115:7:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_bytes32_$",
                                "typeString": "type(bytes32)"
                              },
                              "typeName": {
                                "id": 5849,
                                "name": "bytes32",
                                "nodeType": "ElementaryTypeName",
                                "src": "2115:7:9",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 5852,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2115:10:9",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "2107:18:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5865,
                        "nodeType": "IfStatement",
                        "src": "2103:106:9",
                        "trueBody": {
                          "id": 5864,
                          "nodeType": "Block",
                          "src": "2127:82:9",
                          "statements": [
                            {
                              "eventCall": {
                                "arguments": [
                                  {
                                    "id": 5855,
                                    "name": "who",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5733,
                                    "src": "2171:3:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "baseExpression": {
                                          "id": 5858,
                                          "name": "reads",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5825,
                                          "src": "2184:5:9",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                            "typeString": "bytes32[] memory"
                                          }
                                        },
                                        "id": 5860,
                                        "indexExpression": {
                                          "hexValue": "30",
                                          "id": 5859,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "2190:1:9",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_0_by_1",
                                            "typeString": "int_const 0"
                                          },
                                          "value": "0"
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "2184:8:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      ],
                                      "id": 5857,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "2176:7:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": {
                                        "id": 5856,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2176:7:9",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 5861,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "2176:17:9",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 5854,
                                  "name": "WARNING_UninitedSlot",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5688,
                                  "src": "2150:20:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,uint256)"
                                  }
                                },
                                "id": 5862,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2150:44:9",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 5863,
                              "nodeType": "EmitStatement",
                              "src": "2145:49:9"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          "id": 5868,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 5866,
                            "name": "fdat",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5802,
                            "src": "2226:4:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 5867,
                            "name": "curr",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5839,
                            "src": "2234:4:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "2226:12:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5875,
                        "nodeType": "IfStatement",
                        "src": "2222:238:9",
                        "trueBody": {
                          "id": 5874,
                          "nodeType": "Block",
                          "src": "2240:220:9",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "hexValue": "66616c7365",
                                    "id": 5870,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "bool",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2287:5:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "value": "false"
                                  },
                                  {
                                    "hexValue": "73746453746f726167652066696e642853746453746f72616765293a205061636b656420736c6f742e205468697320776f756c642063617573652064616e6765726f7573206f76657277726974696e6720616e642063757272656e746c792069736e277420737570706f727465642e",
                                    "id": 5871,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2314:113:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_4bfa78e02b745efea2b29d358f6dc28382f5209b1d2b2dbeb8ef0862e74440b3",
                                      "typeString": "literal_string \"stdStorage find(StdStorage): Packed slot. This would cause dangerous overwriting and currently isn't supported.\""
                                    },
                                    "value": "stdStorage find(StdStorage): Packed slot. This would cause dangerous overwriting and currently isn't supported."
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_4bfa78e02b745efea2b29d358f6dc28382f5209b1d2b2dbeb8ef0862e74440b3",
                                      "typeString": "literal_string \"stdStorage find(StdStorage): Packed slot. This would cause dangerous overwriting and currently isn't supported.\""
                                    }
                                  ],
                                  "id": 5869,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "2258:7:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 5872,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2258:187:9",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 5873,
                              "nodeType": "ExpressionStatement",
                              "src": "2258:187:9"
                            }
                          ]
                        }
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 5877,
                              "name": "who",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5733,
                              "src": "2488:3:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 5878,
                              "name": "fsig",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5738,
                              "src": "2493:4:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "id": 5882,
                                      "name": "ins",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5751,
                                      "src": "2526:3:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                        "typeString": "bytes32[] memory"
                                      }
                                    },
                                    {
                                      "id": 5883,
                                      "name": "field_depth",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5743,
                                      "src": "2531:11:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                        "typeString": "bytes32[] memory"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "id": 5880,
                                      "name": "abi",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -1,
                                      "src": "2509:3:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_abi",
                                        "typeString": "abi"
                                      }
                                    },
                                    "id": 5881,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberLocation": "2513:12:9",
                                    "memberName": "encodePacked",
                                    "nodeType": "MemberAccess",
                                    "src": "2509:16:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                      "typeString": "function () pure returns (bytes memory)"
                                    }
                                  },
                                  "id": 5884,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2509:34:9",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                ],
                                "id": 5879,
                                "name": "keccak256",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -8,
                                "src": "2499:9:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                  "typeString": "function (bytes memory) pure returns (bytes32)"
                                }
                              },
                              "id": 5885,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2499:45:9",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "baseExpression": {
                                    "id": 5888,
                                    "name": "reads",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5825,
                                    "src": "2554:5:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                      "typeString": "bytes32[] memory"
                                    }
                                  },
                                  "id": 5890,
                                  "indexExpression": {
                                    "hexValue": "30",
                                    "id": 5889,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2560:1:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "2554:8:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "id": 5887,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2546:7:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 5886,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2546:7:9",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 5891,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2546:17:9",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 5876,
                            "name": "SlotFound",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5682,
                            "src": "2478:9:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes4_$_t_bytes32_$_t_uint256_$returns$__$",
                              "typeString": "function (address,bytes4,bytes32,uint256)"
                            }
                          },
                          "id": 5892,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2478:86:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5893,
                        "nodeType": "EmitStatement",
                        "src": "2473:91:9"
                      },
                      {
                        "expression": {
                          "id": 5915,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "baseExpression": {
                                "baseExpression": {
                                  "expression": {
                                    "id": 5894,
                                    "name": "self",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5727,
                                    "src": "2578:4:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                                      "typeString": "struct StdStorage storage pointer"
                                    }
                                  },
                                  "id": 5905,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "2583:5:9",
                                  "memberName": "slots",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 5652,
                                  "src": "2578:10:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes4_$_t_mapping$_t_bytes32_$_t_uint256_$_$_$",
                                    "typeString": "mapping(address => mapping(bytes4 => mapping(bytes32 => uint256)))"
                                  }
                                },
                                "id": 5906,
                                "indexExpression": {
                                  "id": 5896,
                                  "name": "who",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5733,
                                  "src": "2589:3:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "2578:15:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes4_$_t_mapping$_t_bytes32_$_t_uint256_$_$",
                                  "typeString": "mapping(bytes4 => mapping(bytes32 => uint256))"
                                }
                              },
                              "id": 5907,
                              "indexExpression": {
                                "id": 5897,
                                "name": "fsig",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5738,
                                "src": "2594:4:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "2578:21:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                "typeString": "mapping(bytes32 => uint256)"
                              }
                            },
                            "id": 5908,
                            "indexExpression": {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "id": 5901,
                                      "name": "ins",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5751,
                                      "src": "2627:3:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                        "typeString": "bytes32[] memory"
                                      }
                                    },
                                    {
                                      "id": 5902,
                                      "name": "field_depth",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5743,
                                      "src": "2632:11:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                        "typeString": "bytes32[] memory"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "id": 5899,
                                      "name": "abi",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -1,
                                      "src": "2610:3:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_abi",
                                        "typeString": "abi"
                                      }
                                    },
                                    "id": 5900,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberLocation": "2614:12:9",
                                    "memberName": "encodePacked",
                                    "nodeType": "MemberAccess",
                                    "src": "2610:16:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                      "typeString": "function () pure returns (bytes memory)"
                                    }
                                  },
                                  "id": 5903,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2610:34:9",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                ],
                                "id": 5898,
                                "name": "keccak256",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -8,
                                "src": "2600:9:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                  "typeString": "function (bytes memory) pure returns (bytes32)"
                                }
                              },
                              "id": 5904,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2600:45:9",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "2578:68:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "baseExpression": {
                                  "id": 5911,
                                  "name": "reads",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5825,
                                  "src": "2657:5:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                    "typeString": "bytes32[] memory"
                                  }
                                },
                                "id": 5913,
                                "indexExpression": {
                                  "hexValue": "30",
                                  "id": 5912,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2663:1:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "2657:8:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "id": 5910,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "2649:7:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": {
                                "id": 5909,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "2649:7:9",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 5914,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2649:17:9",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2578:88:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5916,
                        "nodeType": "ExpressionStatement",
                        "src": "2578:88:9"
                      },
                      {
                        "expression": {
                          "id": 5933,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "baseExpression": {
                                "baseExpression": {
                                  "expression": {
                                    "id": 5917,
                                    "name": "self",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5727,
                                    "src": "2680:4:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                                      "typeString": "struct StdStorage storage pointer"
                                    }
                                  },
                                  "id": 5928,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "2685:5:9",
                                  "memberName": "finds",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 5660,
                                  "src": "2680:10:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes4_$_t_mapping$_t_bytes32_$_t_bool_$_$_$",
                                    "typeString": "mapping(address => mapping(bytes4 => mapping(bytes32 => bool)))"
                                  }
                                },
                                "id": 5929,
                                "indexExpression": {
                                  "id": 5919,
                                  "name": "who",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5733,
                                  "src": "2691:3:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "2680:15:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes4_$_t_mapping$_t_bytes32_$_t_bool_$_$",
                                  "typeString": "mapping(bytes4 => mapping(bytes32 => bool))"
                                }
                              },
                              "id": 5930,
                              "indexExpression": {
                                "id": 5920,
                                "name": "fsig",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5738,
                                "src": "2696:4:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "2680:21:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
                                "typeString": "mapping(bytes32 => bool)"
                              }
                            },
                            "id": 5931,
                            "indexExpression": {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "id": 5924,
                                      "name": "ins",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5751,
                                      "src": "2729:3:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                        "typeString": "bytes32[] memory"
                                      }
                                    },
                                    {
                                      "id": 5925,
                                      "name": "field_depth",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5743,
                                      "src": "2734:11:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                        "typeString": "bytes32[] memory"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "id": 5922,
                                      "name": "abi",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -1,
                                      "src": "2712:3:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_abi",
                                        "typeString": "abi"
                                      }
                                    },
                                    "id": 5923,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberLocation": "2716:12:9",
                                    "memberName": "encodePacked",
                                    "nodeType": "MemberAccess",
                                    "src": "2712:16:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                      "typeString": "function () pure returns (bytes memory)"
                                    }
                                  },
                                  "id": 5926,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2712:34:9",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                ],
                                "id": 5921,
                                "name": "keccak256",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -8,
                                "src": "2702:9:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                  "typeString": "function (bytes memory) pure returns (bytes32)"
                                }
                              },
                              "id": 5927,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2702:45:9",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "2680:68:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "74727565",
                            "id": 5932,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2751:4:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "2680:75:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5934,
                        "nodeType": "ExpressionStatement",
                        "src": "2680:75:9"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "baseExpression": {
                          "baseExpression": {
                            "baseExpression": {
                              "expression": {
                                "id": 6119,
                                "name": "self",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5727,
                                "src": "4114:4:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                                  "typeString": "struct StdStorage storage pointer"
                                }
                              },
                              "id": 6120,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "4119:5:9",
                              "memberName": "finds",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 5660,
                              "src": "4114:10:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes4_$_t_mapping$_t_bytes32_$_t_bool_$_$_$",
                                "typeString": "mapping(address => mapping(bytes4 => mapping(bytes32 => bool)))"
                              }
                            },
                            "id": 6122,
                            "indexExpression": {
                              "id": 6121,
                              "name": "who",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5733,
                              "src": "4125:3:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "4114:15:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes4_$_t_mapping$_t_bytes32_$_t_bool_$_$",
                              "typeString": "mapping(bytes4 => mapping(bytes32 => bool))"
                            }
                          },
                          "id": 6124,
                          "indexExpression": {
                            "id": 6123,
                            "name": "fsig",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5738,
                            "src": "4130:4:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "4114:21:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
                            "typeString": "mapping(bytes32 => bool)"
                          }
                        },
                        "id": 6132,
                        "indexExpression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 6128,
                                  "name": "ins",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5751,
                                  "src": "4163:3:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                    "typeString": "bytes32[] memory"
                                  }
                                },
                                {
                                  "id": 6129,
                                  "name": "field_depth",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5743,
                                  "src": "4168:11:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                    "typeString": "bytes32[] memory"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 6126,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "4146:3:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 6127,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberLocation": "4150:12:9",
                                "memberName": "encodePacked",
                                "nodeType": "MemberAccess",
                                "src": "4146:16:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 6130,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4146:34:9",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 6125,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -8,
                            "src": "4136:9:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 6131,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4136:45:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "4114:68:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "73746453746f726167652066696e642853746453746f72616765293a20536c6f74287329206e6f7420666f756e642e",
                        "id": 6133,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4196:49:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_47c274d4780c7bff83310cd576005a97888a2b2935c22f84e1e5282c1bfb39a8",
                          "typeString": "literal_string \"stdStorage find(StdStorage): Slot(s) not found.\""
                        },
                        "value": "stdStorage find(StdStorage): Slot(s) not found."
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_47c274d4780c7bff83310cd576005a97888a2b2935c22f84e1e5282c1bfb39a8",
                          "typeString": "literal_string \"stdStorage find(StdStorage): Slot(s) not found.\""
                        }
                      ],
                      "id": 6118,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "4093:7:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 6134,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4093:162:9",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6135,
                  "nodeType": "ExpressionStatement",
                  "src": "4093:162:9"
                },
                {
                  "expression": {
                    "id": 6138,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "delete",
                    "prefix": true,
                    "src": "4266:19:9",
                    "subExpression": {
                      "expression": {
                        "id": 6136,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5727,
                        "src": "4273:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                          "typeString": "struct StdStorage storage pointer"
                        }
                      },
                      "id": 6137,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberLocation": "4278:7:9",
                      "memberName": "_target",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5669,
                      "src": "4273:12:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6139,
                  "nodeType": "ExpressionStatement",
                  "src": "4266:19:9"
                },
                {
                  "expression": {
                    "id": 6142,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "delete",
                    "prefix": true,
                    "src": "4295:16:9",
                    "subExpression": {
                      "expression": {
                        "id": 6140,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5727,
                        "src": "4302:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                          "typeString": "struct StdStorage storage pointer"
                        }
                      },
                      "id": 6141,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberLocation": "4307:4:9",
                      "memberName": "_sig",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5665,
                      "src": "4302:9:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6143,
                  "nodeType": "ExpressionStatement",
                  "src": "4295:16:9"
                },
                {
                  "expression": {
                    "id": 6146,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "delete",
                    "prefix": true,
                    "src": "4321:17:9",
                    "subExpression": {
                      "expression": {
                        "id": 6144,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5727,
                        "src": "4328:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                          "typeString": "struct StdStorage storage pointer"
                        }
                      },
                      "id": 6145,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberLocation": "4333:5:9",
                      "memberName": "_keys",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5663,
                      "src": "4328:10:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                        "typeString": "bytes32[] storage ref"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6147,
                  "nodeType": "ExpressionStatement",
                  "src": "4321:17:9"
                },
                {
                  "expression": {
                    "id": 6150,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "delete",
                    "prefix": true,
                    "src": "4348:18:9",
                    "subExpression": {
                      "expression": {
                        "id": 6148,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5727,
                        "src": "4355:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                          "typeString": "struct StdStorage storage pointer"
                        }
                      },
                      "id": 6149,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberLocation": "4360:6:9",
                      "memberName": "_depth",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5667,
                      "src": "4355:11:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6151,
                  "nodeType": "ExpressionStatement",
                  "src": "4348:18:9"
                },
                {
                  "expression": {
                    "baseExpression": {
                      "baseExpression": {
                        "baseExpression": {
                          "expression": {
                            "id": 6152,
                            "name": "self",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5727,
                            "src": "4384:4:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                              "typeString": "struct StdStorage storage pointer"
                            }
                          },
                          "id": 6153,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "4389:5:9",
                          "memberName": "slots",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 5652,
                          "src": "4384:10:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes4_$_t_mapping$_t_bytes32_$_t_uint256_$_$_$",
                            "typeString": "mapping(address => mapping(bytes4 => mapping(bytes32 => uint256)))"
                          }
                        },
                        "id": 6155,
                        "indexExpression": {
                          "id": 6154,
                          "name": "who",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5733,
                          "src": "4395:3:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "4384:15:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes4_$_t_mapping$_t_bytes32_$_t_uint256_$_$",
                          "typeString": "mapping(bytes4 => mapping(bytes32 => uint256))"
                        }
                      },
                      "id": 6157,
                      "indexExpression": {
                        "id": 6156,
                        "name": "fsig",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5738,
                        "src": "4400:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "4384:21:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                        "typeString": "mapping(bytes32 => uint256)"
                      }
                    },
                    "id": 6165,
                    "indexExpression": {
                      "arguments": [
                        {
                          "arguments": [
                            {
                              "id": 6161,
                              "name": "ins",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5751,
                              "src": "4433:3:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                "typeString": "bytes32[] memory"
                              }
                            },
                            {
                              "id": 6162,
                              "name": "field_depth",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5743,
                              "src": "4438:11:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                "typeString": "bytes32[] memory"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 6159,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "4416:3:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 6160,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "4420:12:9",
                            "memberName": "encodePacked",
                            "nodeType": "MemberAccess",
                            "src": "4416:16:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function () pure returns (bytes memory)"
                            }
                          },
                          "id": 6163,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4416:34:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        ],
                        "id": 6158,
                        "name": "keccak256",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -8,
                        "src": "4406:9:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                          "typeString": "function (bytes memory) pure returns (bytes32)"
                        }
                      },
                      "id": 6164,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4406:45:9",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "4384:68:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 5731,
                  "id": 6166,
                  "nodeType": "Return",
                  "src": "4377:75:9"
                }
              ]
            },
            "documentation": {
              "id": 5724,
              "nodeType": "StructuredDocumentation",
              "src": "746:129:9",
              "text": "@notice find an arbitrary storage slot given a function sig, input data, address of the contract and a value to check against"
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "find",
            "nameLocation": "1263:4:9",
            "parameters": {
              "id": 5728,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5727,
                  "mutability": "mutable",
                  "name": "self",
                  "nameLocation": "1287:4:9",
                  "nodeType": "VariableDeclaration",
                  "scope": 6168,
                  "src": "1268:23:9",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                    "typeString": "struct StdStorage"
                  },
                  "typeName": {
                    "id": 5726,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 5725,
                      "name": "StdStorage",
                      "nameLocations": [
                        "1268:10:9"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 5672,
                      "src": "1268:10:9"
                    },
                    "referencedDeclaration": 5672,
                    "src": "1268:10:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                      "typeString": "struct StdStorage"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1267:25:9"
            },
            "returnParameters": {
              "id": 5731,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5730,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 6168,
                  "src": "1311:7:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5729,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1311:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1310:9:9"
            },
            "scope": 6565,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 6188,
            "nodeType": "FunctionDefinition",
            "src": "4465:156:9",
            "body": {
              "id": 6187,
              "nodeType": "Block",
              "src": "4561:60:9",
              "statements": [
                {
                  "expression": {
                    "id": 6183,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 6179,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6171,
                        "src": "4571:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                          "typeString": "struct StdStorage storage pointer"
                        }
                      },
                      "id": 6181,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberLocation": "4576:7:9",
                      "memberName": "_target",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5669,
                      "src": "4571:12:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 6182,
                      "name": "_target",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6173,
                      "src": "4586:7:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "4571:22:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 6184,
                  "nodeType": "ExpressionStatement",
                  "src": "4571:22:9"
                },
                {
                  "expression": {
                    "id": 6185,
                    "name": "self",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 6171,
                    "src": "4610:4:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                      "typeString": "struct StdStorage storage pointer"
                    }
                  },
                  "functionReturnParameters": 6178,
                  "id": 6186,
                  "nodeType": "Return",
                  "src": "4603:11:9"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "target",
            "nameLocation": "4474:6:9",
            "parameters": {
              "id": 6174,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6171,
                  "mutability": "mutable",
                  "name": "self",
                  "nameLocation": "4500:4:9",
                  "nodeType": "VariableDeclaration",
                  "scope": 6188,
                  "src": "4481:23:9",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                    "typeString": "struct StdStorage"
                  },
                  "typeName": {
                    "id": 6170,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6169,
                      "name": "StdStorage",
                      "nameLocations": [
                        "4481:10:9"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 5672,
                      "src": "4481:10:9"
                    },
                    "referencedDeclaration": 5672,
                    "src": "4481:10:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                      "typeString": "struct StdStorage"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6173,
                  "mutability": "mutable",
                  "name": "_target",
                  "nameLocation": "4514:7:9",
                  "nodeType": "VariableDeclaration",
                  "scope": 6188,
                  "src": "4506:15:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6172,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4506:7:9",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4480:42:9"
            },
            "returnParameters": {
              "id": 6178,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6177,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 6188,
                  "src": "4541:18:9",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                    "typeString": "struct StdStorage"
                  },
                  "typeName": {
                    "id": 6176,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6175,
                      "name": "StdStorage",
                      "nameLocations": [
                        "4541:10:9"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 5672,
                      "src": "4541:10:9"
                    },
                    "referencedDeclaration": 5672,
                    "src": "4541:10:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                      "typeString": "struct StdStorage"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4540:20:9"
            },
            "scope": 6565,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 6208,
            "nodeType": "FunctionDefinition",
            "src": "4627:143:9",
            "body": {
              "id": 6207,
              "nodeType": "Block",
              "src": "4716:54:9",
              "statements": [
                {
                  "expression": {
                    "id": 6203,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 6199,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6191,
                        "src": "4726:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                          "typeString": "struct StdStorage storage pointer"
                        }
                      },
                      "id": 6201,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberLocation": "4731:4:9",
                      "memberName": "_sig",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5665,
                      "src": "4726:9:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 6202,
                      "name": "_sig",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6193,
                      "src": "4738:4:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      }
                    },
                    "src": "4726:16:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "id": 6204,
                  "nodeType": "ExpressionStatement",
                  "src": "4726:16:9"
                },
                {
                  "expression": {
                    "id": 6205,
                    "name": "self",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 6191,
                    "src": "4759:4:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                      "typeString": "struct StdStorage storage pointer"
                    }
                  },
                  "functionReturnParameters": 6198,
                  "id": 6206,
                  "nodeType": "Return",
                  "src": "4752:11:9"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "sig",
            "nameLocation": "4636:3:9",
            "parameters": {
              "id": 6194,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6191,
                  "mutability": "mutable",
                  "name": "self",
                  "nameLocation": "4659:4:9",
                  "nodeType": "VariableDeclaration",
                  "scope": 6208,
                  "src": "4640:23:9",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                    "typeString": "struct StdStorage"
                  },
                  "typeName": {
                    "id": 6190,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6189,
                      "name": "StdStorage",
                      "nameLocations": [
                        "4640:10:9"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 5672,
                      "src": "4640:10:9"
                    },
                    "referencedDeclaration": 5672,
                    "src": "4640:10:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                      "typeString": "struct StdStorage"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6193,
                  "mutability": "mutable",
                  "name": "_sig",
                  "nameLocation": "4672:4:9",
                  "nodeType": "VariableDeclaration",
                  "scope": 6208,
                  "src": "4665:11:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 6192,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "4665:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4639:38:9"
            },
            "returnParameters": {
              "id": 6198,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6197,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 6208,
                  "src": "4696:18:9",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                    "typeString": "struct StdStorage"
                  },
                  "typeName": {
                    "id": 6196,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6195,
                      "name": "StdStorage",
                      "nameLocations": [
                        "4696:10:9"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 5672,
                      "src": "4696:10:9"
                    },
                    "referencedDeclaration": 5672,
                    "src": "4696:10:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                      "typeString": "struct StdStorage"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4695:20:9"
            },
            "scope": 6565,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 6230,
            "nodeType": "FunctionDefinition",
            "src": "4776:156:9",
            "body": {
              "id": 6229,
              "nodeType": "Block",
              "src": "4872:60:9",
              "statements": [
                {
                  "expression": {
                    "id": 6225,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 6219,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6211,
                        "src": "4882:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                          "typeString": "struct StdStorage storage pointer"
                        }
                      },
                      "id": 6221,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberLocation": "4887:4:9",
                      "memberName": "_sig",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5665,
                      "src": "4882:9:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 6223,
                          "name": "_sig",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6213,
                          "src": "4899:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        ],
                        "id": 6222,
                        "name": "sigs",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5723,
                        "src": "4894:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes4_$",
                          "typeString": "function (string memory) pure returns (bytes4)"
                        }
                      },
                      "id": 6224,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4894:10:9",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      }
                    },
                    "src": "4882:22:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "id": 6226,
                  "nodeType": "ExpressionStatement",
                  "src": "4882:22:9"
                },
                {
                  "expression": {
                    "id": 6227,
                    "name": "self",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 6211,
                    "src": "4921:4:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                      "typeString": "struct StdStorage storage pointer"
                    }
                  },
                  "functionReturnParameters": 6218,
                  "id": 6228,
                  "nodeType": "Return",
                  "src": "4914:11:9"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "sig",
            "nameLocation": "4785:3:9",
            "parameters": {
              "id": 6214,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6211,
                  "mutability": "mutable",
                  "name": "self",
                  "nameLocation": "4808:4:9",
                  "nodeType": "VariableDeclaration",
                  "scope": 6230,
                  "src": "4789:23:9",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                    "typeString": "struct StdStorage"
                  },
                  "typeName": {
                    "id": 6210,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6209,
                      "name": "StdStorage",
                      "nameLocations": [
                        "4789:10:9"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 5672,
                      "src": "4789:10:9"
                    },
                    "referencedDeclaration": 5672,
                    "src": "4789:10:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                      "typeString": "struct StdStorage"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6213,
                  "mutability": "mutable",
                  "name": "_sig",
                  "nameLocation": "4828:4:9",
                  "nodeType": "VariableDeclaration",
                  "scope": 6230,
                  "src": "4814:18:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 6212,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4814:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4788:45:9"
            },
            "returnParameters": {
              "id": 6218,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6217,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 6230,
                  "src": "4852:18:9",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                    "typeString": "struct StdStorage"
                  },
                  "typeName": {
                    "id": 6216,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6215,
                      "name": "StdStorage",
                      "nameLocations": [
                        "4852:10:9"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 5672,
                      "src": "4852:10:9"
                    },
                    "referencedDeclaration": 5672,
                    "src": "4852:10:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                      "typeString": "struct StdStorage"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4851:20:9"
            },
            "scope": 6565,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 6261,
            "nodeType": "FunctionDefinition",
            "src": "4938:179:9",
            "body": {
              "id": 6260,
              "nodeType": "Block",
              "src": "5032:85:9",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "id": 6252,
                                    "name": "who",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6235,
                                    "src": "5082:3:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 6251,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "5074:7:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint160_$",
                                    "typeString": "type(uint160)"
                                  },
                                  "typeName": {
                                    "id": 6250,
                                    "name": "uint160",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5074:7:9",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 6253,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5074:12:9",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                }
                              ],
                              "id": 6249,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "5066:7:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": {
                                "id": 6248,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "5066:7:9",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 6254,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5066:21:9",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 6247,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "5058:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes32_$",
                            "typeString": "type(bytes32)"
                          },
                          "typeName": {
                            "id": 6246,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "5058:7:9",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 6255,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5058:30:9",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "expression": {
                          "id": 6241,
                          "name": "self",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6233,
                          "src": "5042:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                            "typeString": "struct StdStorage storage pointer"
                          }
                        },
                        "id": 6244,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "5047:5:9",
                        "memberName": "_keys",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5663,
                        "src": "5042:10:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                          "typeString": "bytes32[] storage ref"
                        }
                      },
                      "id": 6245,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "5053:4:9",
                      "memberName": "push",
                      "nodeType": "MemberAccess",
                      "src": "5042:15:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_bytes32_$dyn_storage_ptr_$_t_bytes32_$returns$__$bound_to$_t_array$_t_bytes32_$dyn_storage_ptr_$",
                        "typeString": "function (bytes32[] storage pointer,bytes32)"
                      }
                    },
                    "id": 6256,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5042:47:9",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6257,
                  "nodeType": "ExpressionStatement",
                  "src": "5042:47:9"
                },
                {
                  "expression": {
                    "id": 6258,
                    "name": "self",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 6233,
                    "src": "5106:4:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                      "typeString": "struct StdStorage storage pointer"
                    }
                  },
                  "functionReturnParameters": 6240,
                  "id": 6259,
                  "nodeType": "Return",
                  "src": "5099:11:9"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "with_key",
            "nameLocation": "4947:8:9",
            "parameters": {
              "id": 6236,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6233,
                  "mutability": "mutable",
                  "name": "self",
                  "nameLocation": "4975:4:9",
                  "nodeType": "VariableDeclaration",
                  "scope": 6261,
                  "src": "4956:23:9",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                    "typeString": "struct StdStorage"
                  },
                  "typeName": {
                    "id": 6232,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6231,
                      "name": "StdStorage",
                      "nameLocations": [
                        "4956:10:9"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 5672,
                      "src": "4956:10:9"
                    },
                    "referencedDeclaration": 5672,
                    "src": "4956:10:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                      "typeString": "struct StdStorage"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6235,
                  "mutability": "mutable",
                  "name": "who",
                  "nameLocation": "4989:3:9",
                  "nodeType": "VariableDeclaration",
                  "scope": 6261,
                  "src": "4981:11:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6234,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4981:7:9",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4955:38:9"
            },
            "returnParameters": {
              "id": 6240,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6239,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 6261,
                  "src": "5012:18:9",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                    "typeString": "struct StdStorage"
                  },
                  "typeName": {
                    "id": 6238,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6237,
                      "name": "StdStorage",
                      "nameLocations": [
                        "5012:10:9"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 5672,
                      "src": "5012:10:9"
                    },
                    "referencedDeclaration": 5672,
                    "src": "5012:10:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                      "typeString": "struct StdStorage"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5011:20:9"
            },
            "scope": 6565,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 6286,
            "nodeType": "FunctionDefinition",
            "src": "5123:161:9",
            "body": {
              "id": 6285,
              "nodeType": "Block",
              "src": "5217:67:9",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 6279,
                            "name": "amt",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6266,
                            "src": "5251:3:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 6278,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "5243:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes32_$",
                            "typeString": "type(bytes32)"
                          },
                          "typeName": {
                            "id": 6277,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "5243:7:9",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 6280,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5243:12:9",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "expression": {
                          "id": 6272,
                          "name": "self",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6264,
                          "src": "5227:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                            "typeString": "struct StdStorage storage pointer"
                          }
                        },
                        "id": 6275,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "5232:5:9",
                        "memberName": "_keys",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5663,
                        "src": "5227:10:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                          "typeString": "bytes32[] storage ref"
                        }
                      },
                      "id": 6276,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "5238:4:9",
                      "memberName": "push",
                      "nodeType": "MemberAccess",
                      "src": "5227:15:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_bytes32_$dyn_storage_ptr_$_t_bytes32_$returns$__$bound_to$_t_array$_t_bytes32_$dyn_storage_ptr_$",
                        "typeString": "function (bytes32[] storage pointer,bytes32)"
                      }
                    },
                    "id": 6281,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5227:29:9",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6282,
                  "nodeType": "ExpressionStatement",
                  "src": "5227:29:9"
                },
                {
                  "expression": {
                    "id": 6283,
                    "name": "self",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 6264,
                    "src": "5273:4:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                      "typeString": "struct StdStorage storage pointer"
                    }
                  },
                  "functionReturnParameters": 6271,
                  "id": 6284,
                  "nodeType": "Return",
                  "src": "5266:11:9"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "with_key",
            "nameLocation": "5132:8:9",
            "parameters": {
              "id": 6267,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6264,
                  "mutability": "mutable",
                  "name": "self",
                  "nameLocation": "5160:4:9",
                  "nodeType": "VariableDeclaration",
                  "scope": 6286,
                  "src": "5141:23:9",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                    "typeString": "struct StdStorage"
                  },
                  "typeName": {
                    "id": 6263,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6262,
                      "name": "StdStorage",
                      "nameLocations": [
                        "5141:10:9"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 5672,
                      "src": "5141:10:9"
                    },
                    "referencedDeclaration": 5672,
                    "src": "5141:10:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                      "typeString": "struct StdStorage"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6266,
                  "mutability": "mutable",
                  "name": "amt",
                  "nameLocation": "5174:3:9",
                  "nodeType": "VariableDeclaration",
                  "scope": 6286,
                  "src": "5166:11:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6265,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5166:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5140:38:9"
            },
            "returnParameters": {
              "id": 6271,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6270,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 6286,
                  "src": "5197:18:9",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                    "typeString": "struct StdStorage"
                  },
                  "typeName": {
                    "id": 6269,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6268,
                      "name": "StdStorage",
                      "nameLocations": [
                        "5197:10:9"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 5672,
                      "src": "5197:10:9"
                    },
                    "referencedDeclaration": 5672,
                    "src": "5197:10:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                      "typeString": "struct StdStorage"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5196:20:9"
            },
            "scope": 6565,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 6308,
            "nodeType": "FunctionDefinition",
            "src": "5290:152:9",
            "body": {
              "id": 6307,
              "nodeType": "Block",
              "src": "5384:58:9",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 6302,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6291,
                        "src": "5410:3:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "expression": {
                          "id": 6297,
                          "name": "self",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6289,
                          "src": "5394:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                            "typeString": "struct StdStorage storage pointer"
                          }
                        },
                        "id": 6300,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "5399:5:9",
                        "memberName": "_keys",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5663,
                        "src": "5394:10:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                          "typeString": "bytes32[] storage ref"
                        }
                      },
                      "id": 6301,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "5405:4:9",
                      "memberName": "push",
                      "nodeType": "MemberAccess",
                      "src": "5394:15:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_bytes32_$dyn_storage_ptr_$_t_bytes32_$returns$__$bound_to$_t_array$_t_bytes32_$dyn_storage_ptr_$",
                        "typeString": "function (bytes32[] storage pointer,bytes32)"
                      }
                    },
                    "id": 6303,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5394:20:9",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6304,
                  "nodeType": "ExpressionStatement",
                  "src": "5394:20:9"
                },
                {
                  "expression": {
                    "id": 6305,
                    "name": "self",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 6289,
                    "src": "5431:4:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                      "typeString": "struct StdStorage storage pointer"
                    }
                  },
                  "functionReturnParameters": 6296,
                  "id": 6306,
                  "nodeType": "Return",
                  "src": "5424:11:9"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "with_key",
            "nameLocation": "5299:8:9",
            "parameters": {
              "id": 6292,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6289,
                  "mutability": "mutable",
                  "name": "self",
                  "nameLocation": "5327:4:9",
                  "nodeType": "VariableDeclaration",
                  "scope": 6308,
                  "src": "5308:23:9",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                    "typeString": "struct StdStorage"
                  },
                  "typeName": {
                    "id": 6288,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6287,
                      "name": "StdStorage",
                      "nameLocations": [
                        "5308:10:9"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 5672,
                      "src": "5308:10:9"
                    },
                    "referencedDeclaration": 5672,
                    "src": "5308:10:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                      "typeString": "struct StdStorage"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6291,
                  "mutability": "mutable",
                  "name": "key",
                  "nameLocation": "5341:3:9",
                  "nodeType": "VariableDeclaration",
                  "scope": 6308,
                  "src": "5333:11:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 6290,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5333:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5307:38:9"
            },
            "returnParameters": {
              "id": 6296,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6295,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 6308,
                  "src": "5364:18:9",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                    "typeString": "struct StdStorage"
                  },
                  "typeName": {
                    "id": 6294,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6293,
                      "name": "StdStorage",
                      "nameLocations": [
                        "5364:10:9"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 5672,
                      "src": "5364:10:9"
                    },
                    "referencedDeclaration": 5672,
                    "src": "5364:10:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                      "typeString": "struct StdStorage"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5363:20:9"
            },
            "scope": 6565,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 6328,
            "nodeType": "FunctionDefinition",
            "src": "5448:152:9",
            "body": {
              "id": 6327,
              "nodeType": "Block",
              "src": "5542:58:9",
              "statements": [
                {
                  "expression": {
                    "id": 6323,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 6319,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6311,
                        "src": "5552:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                          "typeString": "struct StdStorage storage pointer"
                        }
                      },
                      "id": 6321,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberLocation": "5557:6:9",
                      "memberName": "_depth",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5667,
                      "src": "5552:11:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 6322,
                      "name": "_depth",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6313,
                      "src": "5566:6:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "5552:20:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 6324,
                  "nodeType": "ExpressionStatement",
                  "src": "5552:20:9"
                },
                {
                  "expression": {
                    "id": 6325,
                    "name": "self",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 6311,
                    "src": "5589:4:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                      "typeString": "struct StdStorage storage pointer"
                    }
                  },
                  "functionReturnParameters": 6318,
                  "id": 6326,
                  "nodeType": "Return",
                  "src": "5582:11:9"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "depth",
            "nameLocation": "5457:5:9",
            "parameters": {
              "id": 6314,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6311,
                  "mutability": "mutable",
                  "name": "self",
                  "nameLocation": "5482:4:9",
                  "nodeType": "VariableDeclaration",
                  "scope": 6328,
                  "src": "5463:23:9",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                    "typeString": "struct StdStorage"
                  },
                  "typeName": {
                    "id": 6310,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6309,
                      "name": "StdStorage",
                      "nameLocations": [
                        "5463:10:9"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 5672,
                      "src": "5463:10:9"
                    },
                    "referencedDeclaration": 5672,
                    "src": "5463:10:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                      "typeString": "struct StdStorage"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6313,
                  "mutability": "mutable",
                  "name": "_depth",
                  "nameLocation": "5496:6:9",
                  "nodeType": "VariableDeclaration",
                  "scope": 6328,
                  "src": "5488:14:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6312,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5488:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5462:41:9"
            },
            "returnParameters": {
              "id": 6318,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6317,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 6328,
                  "src": "5522:18:9",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                    "typeString": "struct StdStorage"
                  },
                  "typeName": {
                    "id": 6316,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6315,
                      "name": "StdStorage",
                      "nameLocations": [
                        "5522:10:9"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 5672,
                      "src": "5522:10:9"
                    },
                    "referencedDeclaration": 5672,
                    "src": "5522:10:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                      "typeString": "struct StdStorage"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5521:20:9"
            },
            "scope": 6565,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 6360,
            "nodeType": "FunctionDefinition",
            "src": "5606:194:9",
            "body": {
              "id": 6359,
              "nodeType": "Block",
              "src": "5676:124:9",
              "statements": [
                {
                  "assignments": [
                    6337
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 6337,
                      "mutability": "mutable",
                      "name": "t",
                      "nameLocation": "5694:1:9",
                      "nodeType": "VariableDeclaration",
                      "scope": 6359,
                      "src": "5686:9:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6336,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "5686:7:9",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 6340,
                  "initialValue": {
                    "expression": {
                      "id": 6338,
                      "name": "self",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6331,
                      "src": "5698:4:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                        "typeString": "struct StdStorage storage pointer"
                      }
                    },
                    "id": 6339,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberLocation": "5703:7:9",
                    "memberName": "_target",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 5669,
                    "src": "5698:12:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5686:24:9"
                },
                {
                  "assignments": [
                    6342
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 6342,
                      "mutability": "mutable",
                      "name": "s",
                      "nameLocation": "5728:1:9",
                      "nodeType": "VariableDeclaration",
                      "scope": 6359,
                      "src": "5720:9:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6341,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5720:7:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 6346,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 6344,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6331,
                        "src": "5737:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                          "typeString": "struct StdStorage storage pointer"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                          "typeString": "struct StdStorage storage pointer"
                        }
                      ],
                      "id": 6343,
                      "name": "find",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6168,
                      "src": "5732:4:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StdStorage_$5672_storage_ptr_$returns$_t_uint256_$",
                        "typeString": "function (struct StdStorage storage pointer) returns (uint256)"
                      }
                    },
                    "id": 6345,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5732:10:9",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5720:22:9"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 6351,
                            "name": "t",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6337,
                            "src": "5778:1:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "arguments": [
                              {
                                "id": 6354,
                                "name": "s",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6342,
                                "src": "5789:1:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 6353,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "5781:7:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_bytes32_$",
                                "typeString": "type(bytes32)"
                              },
                              "typeName": {
                                "id": 6352,
                                "name": "bytes32",
                                "nodeType": "ElementaryTypeName",
                                "src": "5781:7:9",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 6355,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5781:10:9",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "expression": {
                            "id": 6349,
                            "name": "vm",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5705,
                            "src": "5770:2:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Vm_$8315",
                              "typeString": "contract Vm"
                            }
                          },
                          "id": 6350,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "5773:4:9",
                          "memberName": "load",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7550,
                          "src": "5770:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_bytes32_$returns$_t_bytes32_$",
                            "typeString": "function (address,bytes32) external returns (bytes32)"
                          }
                        },
                        "id": 6356,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5770:22:9",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "id": 6347,
                        "name": "abi",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -1,
                        "src": "5759:3:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_abi",
                          "typeString": "abi"
                        }
                      },
                      "id": 6348,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberLocation": "5763:6:9",
                      "memberName": "encode",
                      "nodeType": "MemberAccess",
                      "src": "5759:10:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                        "typeString": "function () pure returns (bytes memory)"
                      }
                    },
                    "id": 6357,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5759:34:9",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "functionReturnParameters": 6335,
                  "id": 6358,
                  "nodeType": "Return",
                  "src": "5752:41:9"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "read",
            "nameLocation": "5615:4:9",
            "parameters": {
              "id": 6332,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6331,
                  "mutability": "mutable",
                  "name": "self",
                  "nameLocation": "5639:4:9",
                  "nodeType": "VariableDeclaration",
                  "scope": 6360,
                  "src": "5620:23:9",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                    "typeString": "struct StdStorage"
                  },
                  "typeName": {
                    "id": 6330,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6329,
                      "name": "StdStorage",
                      "nameLocations": [
                        "5620:10:9"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 5672,
                      "src": "5620:10:9"
                    },
                    "referencedDeclaration": 5672,
                    "src": "5620:10:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                      "typeString": "struct StdStorage"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5619:25:9"
            },
            "returnParameters": {
              "id": 6335,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6334,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 6360,
                  "src": "5662:12:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 6333,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "5662:5:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5661:14:9"
            },
            "scope": 6565,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "private"
          },
          {
            "id": 6379,
            "nodeType": "FunctionDefinition",
            "src": "5806:131:9",
            "body": {
              "id": 6378,
              "nodeType": "Block",
              "src": "5880:57:9",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 6371,
                            "name": "self",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6363,
                            "src": "5913:4:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                              "typeString": "struct StdStorage storage pointer"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                              "typeString": "struct StdStorage storage pointer"
                            }
                          ],
                          "id": 6370,
                          "name": "read",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6360,
                          "src": "5908:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StdStorage_$5672_storage_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (struct StdStorage storage pointer) returns (bytes memory)"
                          }
                        },
                        "id": 6372,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5908:10:9",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "components": [
                          {
                            "id": 6374,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "5921:7:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_bytes32_$",
                              "typeString": "type(bytes32)"
                            },
                            "typeName": {
                              "id": 6373,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "5921:7:9",
                              "typeDescriptions": {}
                            }
                          }
                        ],
                        "id": 6375,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "5920:9:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_bytes32_$",
                          "typeString": "type(bytes32)"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_type$_t_bytes32_$",
                          "typeString": "type(bytes32)"
                        }
                      ],
                      "expression": {
                        "id": 6368,
                        "name": "abi",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -1,
                        "src": "5897:3:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_abi",
                          "typeString": "abi"
                        }
                      },
                      "id": 6369,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberLocation": "5901:6:9",
                      "memberName": "decode",
                      "nodeType": "MemberAccess",
                      "src": "5897:10:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                        "typeString": "function () pure"
                      }
                    },
                    "id": 6376,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5897:33:9",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 6367,
                  "id": 6377,
                  "nodeType": "Return",
                  "src": "5890:40:9"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "read_bytes32",
            "nameLocation": "5815:12:9",
            "parameters": {
              "id": 6364,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6363,
                  "mutability": "mutable",
                  "name": "self",
                  "nameLocation": "5847:4:9",
                  "nodeType": "VariableDeclaration",
                  "scope": 6379,
                  "src": "5828:23:9",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                    "typeString": "struct StdStorage"
                  },
                  "typeName": {
                    "id": 6362,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6361,
                      "name": "StdStorage",
                      "nameLocations": [
                        "5828:10:9"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 5672,
                      "src": "5828:10:9"
                    },
                    "referencedDeclaration": 5672,
                    "src": "5828:10:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                      "typeString": "struct StdStorage"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5827:25:9"
            },
            "returnParameters": {
              "id": 6367,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6366,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 6379,
                  "src": "5871:7:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 6365,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5871:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5870:9:9"
            },
            "scope": 6565,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 6410,
            "nodeType": "FunctionDefinition",
            "src": "5943:279:9",
            "body": {
              "id": 6409,
              "nodeType": "Block",
              "src": "6011:211:9",
              "statements": [
                {
                  "assignments": [
                    6388
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 6388,
                      "mutability": "mutable",
                      "name": "v",
                      "nameLocation": "6028:1:9",
                      "nodeType": "VariableDeclaration",
                      "scope": 6409,
                      "src": "6021:8:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "typeName": {
                        "id": 6387,
                        "name": "int256",
                        "nodeType": "ElementaryTypeName",
                        "src": "6021:6:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 6392,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 6390,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6382,
                        "src": "6041:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                          "typeString": "struct StdStorage storage pointer"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                          "typeString": "struct StdStorage storage pointer"
                        }
                      ],
                      "id": 6389,
                      "name": "read_int",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6467,
                      "src": "6032:8:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StdStorage_$5672_storage_ptr_$returns$_t_int256_$",
                        "typeString": "function (struct StdStorage storage pointer) returns (int256)"
                      }
                    },
                    "id": 6391,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6032:14:9",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6021:25:9"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    },
                    "id": 6395,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 6393,
                      "name": "v",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6388,
                      "src": "6060:1:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 6394,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "6065:1:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "6060:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 6398,
                  "nodeType": "IfStatement",
                  "src": "6056:24:9",
                  "trueBody": {
                    "expression": {
                      "hexValue": "66616c7365",
                      "id": 6396,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "6075:5:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "false"
                    },
                    "functionReturnParameters": 6386,
                    "id": 6397,
                    "nodeType": "Return",
                    "src": "6068:12:9"
                  }
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    },
                    "id": 6401,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 6399,
                      "name": "v",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6388,
                      "src": "6094:1:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "hexValue": "31",
                      "id": 6400,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "6099:1:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "src": "6094:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 6404,
                  "nodeType": "IfStatement",
                  "src": "6090:23:9",
                  "trueBody": {
                    "expression": {
                      "hexValue": "74727565",
                      "id": 6402,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "6109:4:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "functionReturnParameters": 6386,
                    "id": 6403,
                    "nodeType": "Return",
                    "src": "6102:11:9"
                  }
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "hexValue": "73746453746f7261676520726561645f626f6f6c2853746453746f72616765293a2043616e6e6f74206465636f64652e204d616b65207375726520796f75206172652072656164696e67206120626f6f6c2e",
                        "id": 6406,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6130:84:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_91e3b02d190bb3e407570bfe894974b331ad10ba40f732248485a8a79ed8e4f5",
                          "typeString": "literal_string \"stdStorage read_bool(StdStorage): Cannot decode. Make sure you are reading a bool.\""
                        },
                        "value": "stdStorage read_bool(StdStorage): Cannot decode. Make sure you are reading a bool."
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_91e3b02d190bb3e407570bfe894974b331ad10ba40f732248485a8a79ed8e4f5",
                          "typeString": "literal_string \"stdStorage read_bool(StdStorage): Cannot decode. Make sure you are reading a bool.\""
                        }
                      ],
                      "id": 6405,
                      "name": "revert",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -19,
                        -19
                      ],
                      "referencedDeclaration": -19,
                      "src": "6123:6:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (string memory) pure"
                      }
                    },
                    "id": 6407,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6123:92:9",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6408,
                  "nodeType": "ExpressionStatement",
                  "src": "6123:92:9"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "read_bool",
            "nameLocation": "5952:9:9",
            "parameters": {
              "id": 6383,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6382,
                  "mutability": "mutable",
                  "name": "self",
                  "nameLocation": "5981:4:9",
                  "nodeType": "VariableDeclaration",
                  "scope": 6410,
                  "src": "5962:23:9",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                    "typeString": "struct StdStorage"
                  },
                  "typeName": {
                    "id": 6381,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6380,
                      "name": "StdStorage",
                      "nameLocations": [
                        "5962:10:9"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 5672,
                      "src": "5962:10:9"
                    },
                    "referencedDeclaration": 5672,
                    "src": "5962:10:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                      "typeString": "struct StdStorage"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5961:25:9"
            },
            "returnParameters": {
              "id": 6386,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6385,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 6410,
                  "src": "6005:4:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 6384,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "6005:4:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6004:6:9"
            },
            "scope": 6565,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 6429,
            "nodeType": "FunctionDefinition",
            "src": "6228:131:9",
            "body": {
              "id": 6428,
              "nodeType": "Block",
              "src": "6302:57:9",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 6421,
                            "name": "self",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6413,
                            "src": "6335:4:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                              "typeString": "struct StdStorage storage pointer"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                              "typeString": "struct StdStorage storage pointer"
                            }
                          ],
                          "id": 6420,
                          "name": "read",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6360,
                          "src": "6330:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StdStorage_$5672_storage_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (struct StdStorage storage pointer) returns (bytes memory)"
                          }
                        },
                        "id": 6422,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6330:10:9",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "components": [
                          {
                            "id": 6424,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "6343:7:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 6423,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "6343:7:9",
                              "typeDescriptions": {}
                            }
                          }
                        ],
                        "id": 6425,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "6342:9:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        }
                      ],
                      "expression": {
                        "id": 6418,
                        "name": "abi",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -1,
                        "src": "6319:3:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_abi",
                          "typeString": "abi"
                        }
                      },
                      "id": 6419,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberLocation": "6323:6:9",
                      "memberName": "decode",
                      "nodeType": "MemberAccess",
                      "src": "6319:10:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                        "typeString": "function () pure"
                      }
                    },
                    "id": 6426,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6319:33:9",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    }
                  },
                  "functionReturnParameters": 6417,
                  "id": 6427,
                  "nodeType": "Return",
                  "src": "6312:40:9"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "read_address",
            "nameLocation": "6237:12:9",
            "parameters": {
              "id": 6414,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6413,
                  "mutability": "mutable",
                  "name": "self",
                  "nameLocation": "6269:4:9",
                  "nodeType": "VariableDeclaration",
                  "scope": 6429,
                  "src": "6250:23:9",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                    "typeString": "struct StdStorage"
                  },
                  "typeName": {
                    "id": 6412,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6411,
                      "name": "StdStorage",
                      "nameLocations": [
                        "6250:10:9"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 5672,
                      "src": "6250:10:9"
                    },
                    "referencedDeclaration": 5672,
                    "src": "6250:10:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                      "typeString": "struct StdStorage"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6249:25:9"
            },
            "returnParameters": {
              "id": 6417,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6416,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 6429,
                  "src": "6293:7:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6415,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6293:7:9",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6292:9:9"
            },
            "scope": 6565,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 6448,
            "nodeType": "FunctionDefinition",
            "src": "6365:128:9",
            "body": {
              "id": 6447,
              "nodeType": "Block",
              "src": "6436:57:9",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 6440,
                            "name": "self",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6432,
                            "src": "6469:4:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                              "typeString": "struct StdStorage storage pointer"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                              "typeString": "struct StdStorage storage pointer"
                            }
                          ],
                          "id": 6439,
                          "name": "read",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6360,
                          "src": "6464:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StdStorage_$5672_storage_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (struct StdStorage storage pointer) returns (bytes memory)"
                          }
                        },
                        "id": 6441,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6464:10:9",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "components": [
                          {
                            "id": 6443,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "6477:7:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": {
                              "id": 6442,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6477:7:9",
                              "typeDescriptions": {}
                            }
                          }
                        ],
                        "id": 6444,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "6476:9:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint256_$",
                          "typeString": "type(uint256)"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_type$_t_uint256_$",
                          "typeString": "type(uint256)"
                        }
                      ],
                      "expression": {
                        "id": 6437,
                        "name": "abi",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -1,
                        "src": "6453:3:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_abi",
                          "typeString": "abi"
                        }
                      },
                      "id": 6438,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberLocation": "6457:6:9",
                      "memberName": "decode",
                      "nodeType": "MemberAccess",
                      "src": "6453:10:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                        "typeString": "function () pure"
                      }
                    },
                    "id": 6445,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6453:33:9",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 6436,
                  "id": 6446,
                  "nodeType": "Return",
                  "src": "6446:40:9"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "read_uint",
            "nameLocation": "6374:9:9",
            "parameters": {
              "id": 6433,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6432,
                  "mutability": "mutable",
                  "name": "self",
                  "nameLocation": "6403:4:9",
                  "nodeType": "VariableDeclaration",
                  "scope": 6448,
                  "src": "6384:23:9",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                    "typeString": "struct StdStorage"
                  },
                  "typeName": {
                    "id": 6431,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6430,
                      "name": "StdStorage",
                      "nameLocations": [
                        "6384:10:9"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 5672,
                      "src": "6384:10:9"
                    },
                    "referencedDeclaration": 5672,
                    "src": "6384:10:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                      "typeString": "struct StdStorage"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6383:25:9"
            },
            "returnParameters": {
              "id": 6436,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6435,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 6448,
                  "src": "6427:7:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6434,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6427:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6426:9:9"
            },
            "scope": 6565,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 6467,
            "nodeType": "FunctionDefinition",
            "src": "6499:125:9",
            "body": {
              "id": 6466,
              "nodeType": "Block",
              "src": "6568:56:9",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 6459,
                            "name": "self",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6451,
                            "src": "6601:4:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                              "typeString": "struct StdStorage storage pointer"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                              "typeString": "struct StdStorage storage pointer"
                            }
                          ],
                          "id": 6458,
                          "name": "read",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6360,
                          "src": "6596:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StdStorage_$5672_storage_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (struct StdStorage storage pointer) returns (bytes memory)"
                          }
                        },
                        "id": 6460,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6596:10:9",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "components": [
                          {
                            "id": 6462,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "6609:6:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_int256_$",
                              "typeString": "type(int256)"
                            },
                            "typeName": {
                              "id": 6461,
                              "name": "int256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6609:6:9",
                              "typeDescriptions": {}
                            }
                          }
                        ],
                        "id": 6463,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "6608:8:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_int256_$",
                          "typeString": "type(int256)"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_type$_t_int256_$",
                          "typeString": "type(int256)"
                        }
                      ],
                      "expression": {
                        "id": 6456,
                        "name": "abi",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -1,
                        "src": "6585:3:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_abi",
                          "typeString": "abi"
                        }
                      },
                      "id": 6457,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberLocation": "6589:6:9",
                      "memberName": "decode",
                      "nodeType": "MemberAccess",
                      "src": "6585:10:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                        "typeString": "function () pure"
                      }
                    },
                    "id": 6464,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6585:32:9",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "functionReturnParameters": 6455,
                  "id": 6465,
                  "nodeType": "Return",
                  "src": "6578:39:9"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "read_int",
            "nameLocation": "6508:8:9",
            "parameters": {
              "id": 6452,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6451,
                  "mutability": "mutable",
                  "name": "self",
                  "nameLocation": "6536:4:9",
                  "nodeType": "VariableDeclaration",
                  "scope": 6467,
                  "src": "6517:23:9",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                    "typeString": "struct StdStorage"
                  },
                  "typeName": {
                    "id": 6450,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6449,
                      "name": "StdStorage",
                      "nameLocations": [
                        "6517:10:9"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 5672,
                      "src": "6517:10:9"
                    },
                    "referencedDeclaration": 5672,
                    "src": "6517:10:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                      "typeString": "struct StdStorage"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6516:25:9"
            },
            "returnParameters": {
              "id": 6455,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6454,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 6467,
                  "src": "6560:6:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 6453,
                    "name": "int256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6560:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6559:8:9"
            },
            "scope": 6565,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 6523,
            "nodeType": "FunctionDefinition",
            "src": "6630:304:9",
            "body": {
              "id": 6522,
              "nodeType": "Block",
              "src": "6717:217:9",
              "statements": [
                {
                  "assignments": [
                    6477
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 6477,
                      "mutability": "mutable",
                      "name": "out",
                      "nameLocation": "6735:3:9",
                      "nodeType": "VariableDeclaration",
                      "scope": 6522,
                      "src": "6727:11:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 6476,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "6727:7:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 6478,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6727:11:9"
                },
                {
                  "assignments": [
                    6480
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 6480,
                      "mutability": "mutable",
                      "name": "max",
                      "nameLocation": "6757:3:9",
                      "nodeType": "VariableDeclaration",
                      "scope": 6522,
                      "src": "6749:11:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6479,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "6749:7:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 6489,
                  "initialValue": {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 6484,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "expression": {
                          "id": 6481,
                          "name": "b",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6469,
                          "src": "6763:1:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "id": 6482,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "6765:6:9",
                        "memberName": "length",
                        "nodeType": "MemberAccess",
                        "src": "6763:8:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">",
                      "rightExpression": {
                        "hexValue": "3332",
                        "id": 6483,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6774:2:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_32_by_1",
                          "typeString": "int_const 32"
                        },
                        "value": "32"
                      },
                      "src": "6763:13:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseExpression": {
                      "expression": {
                        "id": 6486,
                        "name": "b",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6469,
                        "src": "6784:1:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 6487,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "6786:6:9",
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "6784:8:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 6488,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "Conditional",
                    "src": "6763:29:9",
                    "trueExpression": {
                      "hexValue": "3332",
                      "id": 6485,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "6779:2:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_32_by_1",
                        "typeString": "int_const 32"
                      },
                      "value": "32"
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6749:43:9"
                },
                {
                  "body": {
                    "id": 6518,
                    "nodeType": "Block",
                    "src": "6836:72:9",
                    "statements": [
                      {
                        "expression": {
                          "id": 6516,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 6500,
                            "name": "out",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6477,
                            "src": "6850:3:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "|=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "id": 6515,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "arguments": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_bytes1",
                                    "typeString": "bytes1"
                                  },
                                  "id": 6509,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "baseExpression": {
                                      "id": 6503,
                                      "name": "b",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6469,
                                      "src": "6865:1:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    },
                                    "id": 6507,
                                    "indexExpression": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 6506,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 6504,
                                        "name": "offset",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6471,
                                        "src": "6867:6:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "+",
                                      "rightExpression": {
                                        "id": 6505,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6491,
                                        "src": "6876:1:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "6867:10:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "6865:13:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes1",
                                      "typeString": "bytes1"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&",
                                  "rightExpression": {
                                    "hexValue": "30784646",
                                    "id": 6508,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6881:4:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_255_by_1",
                                      "typeString": "int_const 255"
                                    },
                                    "value": "0xFF"
                                  },
                                  "src": "6865:20:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes1",
                                    "typeString": "bytes1"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes1",
                                    "typeString": "bytes1"
                                  }
                                ],
                                "id": 6502,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "6857:7:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes32_$",
                                  "typeString": "type(bytes32)"
                                },
                                "typeName": {
                                  "id": 6501,
                                  "name": "bytes32",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "6857:7:9",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 6510,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6857:29:9",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">>",
                            "rightExpression": {
                              "components": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 6513,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 6511,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6491,
                                    "src": "6891:1:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "*",
                                  "rightExpression": {
                                    "hexValue": "38",
                                    "id": 6512,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6895:1:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_8_by_1",
                                      "typeString": "int_const 8"
                                    },
                                    "value": "8"
                                  },
                                  "src": "6891:5:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 6514,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "6890:7:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "6857:40:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "6850:47:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 6517,
                        "nodeType": "ExpressionStatement",
                        "src": "6850:47:9"
                      }
                    ]
                  },
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 6496,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 6494,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6491,
                      "src": "6822:1:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "id": 6495,
                      "name": "max",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6480,
                      "src": "6826:3:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6822:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 6519,
                  "initializationExpression": {
                    "assignments": [
                      6491
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 6491,
                        "mutability": "mutable",
                        "name": "i",
                        "nameLocation": "6815:1:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 6519,
                        "src": "6807:9:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6490,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6807:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 6493,
                    "initialValue": {
                      "hexValue": "30",
                      "id": 6492,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "6819:1:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "6807:13:9"
                  },
                  "loopExpression": {
                    "expression": {
                      "id": 6498,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "6831:3:9",
                      "subExpression": {
                        "id": 6497,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6491,
                        "src": "6831:1:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 6499,
                    "nodeType": "ExpressionStatement",
                    "src": "6831:3:9"
                  },
                  "nodeType": "ForStatement",
                  "src": "6802:106:9"
                },
                {
                  "expression": {
                    "id": 6520,
                    "name": "out",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 6477,
                    "src": "6924:3:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 6475,
                  "id": 6521,
                  "nodeType": "Return",
                  "src": "6917:10:9"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "bytesToBytes32",
            "nameLocation": "6639:14:9",
            "parameters": {
              "id": 6472,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6469,
                  "mutability": "mutable",
                  "name": "b",
                  "nameLocation": "6667:1:9",
                  "nodeType": "VariableDeclaration",
                  "scope": 6523,
                  "src": "6654:14:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 6468,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "6654:5:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6471,
                  "mutability": "mutable",
                  "name": "offset",
                  "nameLocation": "6678:6:9",
                  "nodeType": "VariableDeclaration",
                  "scope": 6523,
                  "src": "6670:14:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6470,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6670:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6653:32:9"
            },
            "returnParameters": {
              "id": 6475,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6474,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 6523,
                  "src": "6708:7:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 6473,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6708:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6707:9:9"
            },
            "scope": 6565,
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "private"
          },
          {
            "id": 6564,
            "nodeType": "FunctionDefinition",
            "src": "6940:393:9",
            "body": {
              "id": 6563,
              "nodeType": "Block",
              "src": "7013:320:9",
              "statements": [
                {
                  "assignments": [
                    6532
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 6532,
                      "mutability": "mutable",
                      "name": "result",
                      "nameLocation": "7036:6:9",
                      "nodeType": "VariableDeclaration",
                      "scope": 6563,
                      "src": "7023:19:9",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 6531,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "7023:5:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 6540,
                  "initialValue": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 6538,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "expression": {
                            "id": 6535,
                            "name": "b",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6526,
                            "src": "7055:1:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                              "typeString": "bytes32[] memory"
                            }
                          },
                          "id": 6536,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "7057:6:9",
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "7055:8:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "*",
                        "rightExpression": {
                          "hexValue": "3332",
                          "id": 6537,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "7066:2:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_32_by_1",
                            "typeString": "int_const 32"
                          },
                          "value": "32"
                        },
                        "src": "7055:13:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 6534,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "7045:9:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                        "typeString": "function (uint256) pure returns (bytes memory)"
                      },
                      "typeName": {
                        "id": 6533,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "7049:5:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      }
                    },
                    "id": 6539,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7045:24:9",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7023:46:9"
                },
                {
                  "body": {
                    "id": 6559,
                    "nodeType": "Block",
                    "src": "7118:185:9",
                    "statements": [
                      {
                        "assignments": [
                          6553
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6553,
                            "mutability": "mutable",
                            "name": "k",
                            "nameLocation": "7140:1:9",
                            "nodeType": "VariableDeclaration",
                            "scope": 6559,
                            "src": "7132:9:9",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 6552,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "7132:7:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6557,
                        "initialValue": {
                          "baseExpression": {
                            "id": 6554,
                            "name": "b",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6526,
                            "src": "7144:1:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                              "typeString": "bytes32[] memory"
                            }
                          },
                          "id": 6556,
                          "indexExpression": {
                            "id": 6555,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6542,
                            "src": "7146:1:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "7144:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7132:16:9"
                      },
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "7218:75:9",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "result",
                                        "nodeType": "YulIdentifier",
                                        "src": "7247:6:9"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "7259:2:9",
                                            "type": "",
                                            "value": "32"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "7267:2:9",
                                                "type": "",
                                                "value": "32"
                                              },
                                              {
                                                "name": "i",
                                                "nodeType": "YulIdentifier",
                                                "src": "7271:1:9"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "mul",
                                              "nodeType": "YulIdentifier",
                                              "src": "7263:3:9"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "7263:10:9"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "7255:3:9"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7255:19:9"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7243:3:9"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7243:32:9"
                                  },
                                  {
                                    "name": "k",
                                    "nodeType": "YulIdentifier",
                                    "src": "7277:1:9"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7236:6:9"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7236:43:9"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7236:43:9"
                            }
                          ]
                        },
                        "documentation": "@solidity memory-safe-assembly",
                        "evmVersion": "london",
                        "externalReferences": [
                          {
                            "declaration": 6542,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "7271:1:9",
                            "valueSize": 1
                          },
                          {
                            "declaration": 6553,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "7277:1:9",
                            "valueSize": 1
                          },
                          {
                            "declaration": 6532,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "7247:6:9",
                            "valueSize": 1
                          }
                        ],
                        "id": 6558,
                        "nodeType": "InlineAssembly",
                        "src": "7209:84:9"
                      }
                    ]
                  },
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 6548,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 6545,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6542,
                      "src": "7099:1:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "expression": {
                        "id": 6546,
                        "name": "b",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6526,
                        "src": "7103:1:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[] memory"
                        }
                      },
                      "id": 6547,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "7105:6:9",
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "7103:8:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "7099:12:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 6560,
                  "initializationExpression": {
                    "assignments": [
                      6542
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 6542,
                        "mutability": "mutable",
                        "name": "i",
                        "nameLocation": "7092:1:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 6560,
                        "src": "7084:9:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6541,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7084:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 6544,
                    "initialValue": {
                      "hexValue": "30",
                      "id": 6543,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "7096:1:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "7084:13:9"
                  },
                  "loopExpression": {
                    "expression": {
                      "id": 6550,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "7113:3:9",
                      "subExpression": {
                        "id": 6549,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6542,
                        "src": "7113:1:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 6551,
                    "nodeType": "ExpressionStatement",
                    "src": "7113:3:9"
                  },
                  "nodeType": "ForStatement",
                  "src": "7079:224:9"
                },
                {
                  "expression": {
                    "id": 6561,
                    "name": "result",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 6532,
                    "src": "7320:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "functionReturnParameters": 6530,
                  "id": 6562,
                  "nodeType": "Return",
                  "src": "7313:13:9"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "flatten",
            "nameLocation": "6949:7:9",
            "parameters": {
              "id": 6527,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6526,
                  "mutability": "mutable",
                  "name": "b",
                  "nameLocation": "6974:1:9",
                  "nodeType": "VariableDeclaration",
                  "scope": 6564,
                  "src": "6957:18:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                    "typeString": "bytes32[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 6524,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "6957:7:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "id": 6525,
                    "nodeType": "ArrayTypeName",
                    "src": "6957:9:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                      "typeString": "bytes32[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6956:20:9"
            },
            "returnParameters": {
              "id": 6530,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6529,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 6564,
                  "src": "6999:12:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 6528,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "6999:5:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6998:14:9"
            },
            "scope": 6565,
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "private"
          }
        ],
        "abstract": false,
        "baseContracts": [],
        "canonicalName": "stdStorageSafe",
        "contractDependencies": [],
        "contractKind": "library",
        "fullyImplemented": true,
        "linearizedBaseContracts": [
          6565
        ],
        "name": "stdStorageSafe",
        "nameLocation": "366:14:9",
        "scope": 7107,
        "usedErrors": []
      },
      {
        "id": 7106,
        "nodeType": "ContractDefinition",
        "src": "7337:4527:9",
        "nodes": [
          {
            "id": 6582,
            "nodeType": "VariableDeclaration",
            "src": "7362:84:9",
            "constant": true,
            "mutability": "constant",
            "name": "vm",
            "nameLocation": "7382:2:9",
            "scope": 7106,
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_Vm_$8315",
              "typeString": "contract Vm"
            },
            "typeName": {
              "id": 6567,
              "nodeType": "UserDefinedTypeName",
              "pathNode": {
                "id": 6566,
                "name": "Vm",
                "nameLocations": [
                  "7362:2:9"
                ],
                "nodeType": "IdentifierPath",
                "referencedDeclaration": 8315,
                "src": "7362:2:9"
              },
              "referencedDeclaration": 8315,
              "src": "7362:2:9",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Vm_$8315",
                "typeString": "contract Vm"
              }
            },
            "value": {
              "arguments": [
                {
                  "arguments": [
                    {
                      "arguments": [
                        {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6865766d20636865617420636f6465",
                                  "id": 6576,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "7424:17:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d",
                                    "typeString": "literal_string \"hevm cheat code\""
                                  },
                                  "value": "hevm cheat code"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d",
                                    "typeString": "literal_string \"hevm cheat code\""
                                  }
                                ],
                                "id": 6575,
                                "name": "keccak256",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -8,
                                "src": "7414:9:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                  "typeString": "function (bytes memory) pure returns (bytes32)"
                                }
                              },
                              "id": 6577,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7414:28:9",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 6574,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "7406:7:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": {
                              "id": 6573,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "7406:7:9",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 6578,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7406:37:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 6572,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "7398:7:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint160_$",
                          "typeString": "type(uint160)"
                        },
                        "typeName": {
                          "id": 6571,
                          "name": "uint160",
                          "nodeType": "ElementaryTypeName",
                          "src": "7398:7:9",
                          "typeDescriptions": {}
                        }
                      },
                      "id": 6579,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "7398:46:9",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint160",
                        "typeString": "uint160"
                      }
                    }
                  ],
                  "expression": {
                    "argumentTypes": [
                      {
                        "typeIdentifier": "t_uint160",
                        "typeString": "uint160"
                      }
                    ],
                    "id": 6570,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "nodeType": "ElementaryTypeNameExpression",
                    "src": "7390:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_type$_t_address_$",
                      "typeString": "type(address)"
                    },
                    "typeName": {
                      "id": 6569,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "7390:7:9",
                      "typeDescriptions": {}
                    }
                  },
                  "id": 6580,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "typeConversion",
                  "lValueRequested": false,
                  "nameLocations": [],
                  "names": [],
                  "nodeType": "FunctionCall",
                  "src": "7390:55:9",
                  "tryCall": false,
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                }
              ],
              "expression": {
                "argumentTypes": [
                  {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                ],
                "id": 6568,
                "name": "Vm",
                "nodeType": "Identifier",
                "overloadedDeclarations": [],
                "referencedDeclaration": 8315,
                "src": "7387:2:9",
                "typeDescriptions": {
                  "typeIdentifier": "t_type$_t_contract$_Vm_$8315_$",
                  "typeString": "type(contract Vm)"
                }
              },
              "id": 6581,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "typeConversion",
              "lValueRequested": false,
              "nameLocations": [],
              "names": [],
              "nodeType": "FunctionCall",
              "src": "7387:59:9",
              "tryCall": false,
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Vm_$8315",
                "typeString": "contract Vm"
              }
            },
            "visibility": "private"
          },
          {
            "id": 6595,
            "nodeType": "FunctionDefinition",
            "src": "7453:118:9",
            "body": {
              "id": 6594,
              "nodeType": "Block",
              "src": "7520:51:9",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 6591,
                        "name": "sigStr",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6584,
                        "src": "7557:6:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "expression": {
                        "id": 6589,
                        "name": "stdStorageSafe",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6565,
                        "src": "7537:14:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_stdStorageSafe_$6565_$",
                          "typeString": "type(library stdStorageSafe)"
                        }
                      },
                      "id": 6590,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "7552:4:9",
                      "memberName": "sigs",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5723,
                      "src": "7537:19:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes4_$",
                        "typeString": "function (string memory) pure returns (bytes4)"
                      }
                    },
                    "id": 6592,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7537:27:9",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "functionReturnParameters": 6588,
                  "id": 6593,
                  "nodeType": "Return",
                  "src": "7530:34:9"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "sigs",
            "nameLocation": "7462:4:9",
            "parameters": {
              "id": 6585,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6584,
                  "mutability": "mutable",
                  "name": "sigStr",
                  "nameLocation": "7481:6:9",
                  "nodeType": "VariableDeclaration",
                  "scope": 6595,
                  "src": "7467:20:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 6583,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "7467:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7466:22:9"
            },
            "returnParameters": {
              "id": 6588,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6587,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 6595,
                  "src": "7512:6:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 6586,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "7512:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7511:8:9"
            },
            "scope": 7106,
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 6609,
            "nodeType": "FunctionDefinition",
            "src": "7577:115:9",
            "body": {
              "id": 6608,
              "nodeType": "Block",
              "src": "7643:49:9",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 6605,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6598,
                        "src": "7680:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                          "typeString": "struct StdStorage storage pointer"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                          "typeString": "struct StdStorage storage pointer"
                        }
                      ],
                      "expression": {
                        "id": 6603,
                        "name": "stdStorageSafe",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6565,
                        "src": "7660:14:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_stdStorageSafe_$6565_$",
                          "typeString": "type(library stdStorageSafe)"
                        }
                      },
                      "id": 6604,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "7675:4:9",
                      "memberName": "find",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6168,
                      "src": "7660:19:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StdStorage_$5672_storage_ptr_$returns$_t_uint256_$",
                        "typeString": "function (struct StdStorage storage pointer) returns (uint256)"
                      }
                    },
                    "id": 6606,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7660:25:9",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 6602,
                  "id": 6607,
                  "nodeType": "Return",
                  "src": "7653:32:9"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "find",
            "nameLocation": "7586:4:9",
            "parameters": {
              "id": 6599,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6598,
                  "mutability": "mutable",
                  "name": "self",
                  "nameLocation": "7610:4:9",
                  "nodeType": "VariableDeclaration",
                  "scope": 6609,
                  "src": "7591:23:9",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                    "typeString": "struct StdStorage"
                  },
                  "typeName": {
                    "id": 6597,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6596,
                      "name": "StdStorage",
                      "nameLocations": [
                        "7591:10:9"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 5672,
                      "src": "7591:10:9"
                    },
                    "referencedDeclaration": 5672,
                    "src": "7591:10:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                      "typeString": "struct StdStorage"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7590:25:9"
            },
            "returnParameters": {
              "id": 6602,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6601,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 6609,
                  "src": "7634:7:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6600,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7634:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7633:9:9"
            },
            "scope": 7106,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 6627,
            "nodeType": "FunctionDefinition",
            "src": "7698:156:9",
            "body": {
              "id": 6626,
              "nodeType": "Block",
              "src": "7794:60:9",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 6622,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6612,
                        "src": "7833:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                          "typeString": "struct StdStorage storage pointer"
                        }
                      },
                      {
                        "id": 6623,
                        "name": "_target",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6614,
                        "src": "7839:7:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                          "typeString": "struct StdStorage storage pointer"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "id": 6620,
                        "name": "stdStorageSafe",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6565,
                        "src": "7811:14:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_stdStorageSafe_$6565_$",
                          "typeString": "type(library stdStorageSafe)"
                        }
                      },
                      "id": 6621,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "7826:6:9",
                      "memberName": "target",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6188,
                      "src": "7811:21:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StdStorage_$5672_storage_ptr_$_t_address_$returns$_t_struct$_StdStorage_$5672_storage_ptr_$",
                        "typeString": "function (struct StdStorage storage pointer,address) returns (struct StdStorage storage pointer)"
                      }
                    },
                    "id": 6624,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7811:36:9",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                      "typeString": "struct StdStorage storage pointer"
                    }
                  },
                  "functionReturnParameters": 6619,
                  "id": 6625,
                  "nodeType": "Return",
                  "src": "7804:43:9"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "target",
            "nameLocation": "7707:6:9",
            "parameters": {
              "id": 6615,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6612,
                  "mutability": "mutable",
                  "name": "self",
                  "nameLocation": "7733:4:9",
                  "nodeType": "VariableDeclaration",
                  "scope": 6627,
                  "src": "7714:23:9",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                    "typeString": "struct StdStorage"
                  },
                  "typeName": {
                    "id": 6611,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6610,
                      "name": "StdStorage",
                      "nameLocations": [
                        "7714:10:9"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 5672,
                      "src": "7714:10:9"
                    },
                    "referencedDeclaration": 5672,
                    "src": "7714:10:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                      "typeString": "struct StdStorage"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6614,
                  "mutability": "mutable",
                  "name": "_target",
                  "nameLocation": "7747:7:9",
                  "nodeType": "VariableDeclaration",
                  "scope": 6627,
                  "src": "7739:15:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6613,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7739:7:9",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7713:42:9"
            },
            "returnParameters": {
              "id": 6619,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6618,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 6627,
                  "src": "7774:18:9",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                    "typeString": "struct StdStorage"
                  },
                  "typeName": {
                    "id": 6617,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6616,
                      "name": "StdStorage",
                      "nameLocations": [
                        "7774:10:9"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 5672,
                      "src": "7774:10:9"
                    },
                    "referencedDeclaration": 5672,
                    "src": "7774:10:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                      "typeString": "struct StdStorage"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7773:20:9"
            },
            "scope": 7106,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 6645,
            "nodeType": "FunctionDefinition",
            "src": "7860:143:9",
            "body": {
              "id": 6644,
              "nodeType": "Block",
              "src": "7949:54:9",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 6640,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6630,
                        "src": "7985:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                          "typeString": "struct StdStorage storage pointer"
                        }
                      },
                      {
                        "id": 6641,
                        "name": "_sig",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6632,
                        "src": "7991:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                          "typeString": "struct StdStorage storage pointer"
                        },
                        {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      ],
                      "expression": {
                        "id": 6638,
                        "name": "stdStorageSafe",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6565,
                        "src": "7966:14:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_stdStorageSafe_$6565_$",
                          "typeString": "type(library stdStorageSafe)"
                        }
                      },
                      "id": 6639,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "7981:3:9",
                      "memberName": "sig",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6208,
                      "src": "7966:18:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StdStorage_$5672_storage_ptr_$_t_bytes4_$returns$_t_struct$_StdStorage_$5672_storage_ptr_$",
                        "typeString": "function (struct StdStorage storage pointer,bytes4) returns (struct StdStorage storage pointer)"
                      }
                    },
                    "id": 6642,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7966:30:9",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                      "typeString": "struct StdStorage storage pointer"
                    }
                  },
                  "functionReturnParameters": 6637,
                  "id": 6643,
                  "nodeType": "Return",
                  "src": "7959:37:9"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "sig",
            "nameLocation": "7869:3:9",
            "parameters": {
              "id": 6633,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6630,
                  "mutability": "mutable",
                  "name": "self",
                  "nameLocation": "7892:4:9",
                  "nodeType": "VariableDeclaration",
                  "scope": 6645,
                  "src": "7873:23:9",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                    "typeString": "struct StdStorage"
                  },
                  "typeName": {
                    "id": 6629,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6628,
                      "name": "StdStorage",
                      "nameLocations": [
                        "7873:10:9"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 5672,
                      "src": "7873:10:9"
                    },
                    "referencedDeclaration": 5672,
                    "src": "7873:10:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                      "typeString": "struct StdStorage"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6632,
                  "mutability": "mutable",
                  "name": "_sig",
                  "nameLocation": "7905:4:9",
                  "nodeType": "VariableDeclaration",
                  "scope": 6645,
                  "src": "7898:11:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 6631,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "7898:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7872:38:9"
            },
            "returnParameters": {
              "id": 6637,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6636,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 6645,
                  "src": "7929:18:9",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                    "typeString": "struct StdStorage"
                  },
                  "typeName": {
                    "id": 6635,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6634,
                      "name": "StdStorage",
                      "nameLocations": [
                        "7929:10:9"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 5672,
                      "src": "7929:10:9"
                    },
                    "referencedDeclaration": 5672,
                    "src": "7929:10:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                      "typeString": "struct StdStorage"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7928:20:9"
            },
            "scope": 7106,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 6663,
            "nodeType": "FunctionDefinition",
            "src": "8009:150:9",
            "body": {
              "id": 6662,
              "nodeType": "Block",
              "src": "8105:54:9",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 6658,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6648,
                        "src": "8141:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                          "typeString": "struct StdStorage storage pointer"
                        }
                      },
                      {
                        "id": 6659,
                        "name": "_sig",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6650,
                        "src": "8147:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                          "typeString": "struct StdStorage storage pointer"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "expression": {
                        "id": 6656,
                        "name": "stdStorageSafe",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6565,
                        "src": "8122:14:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_stdStorageSafe_$6565_$",
                          "typeString": "type(library stdStorageSafe)"
                        }
                      },
                      "id": 6657,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "8137:3:9",
                      "memberName": "sig",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6230,
                      "src": "8122:18:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StdStorage_$5672_storage_ptr_$_t_string_memory_ptr_$returns$_t_struct$_StdStorage_$5672_storage_ptr_$",
                        "typeString": "function (struct StdStorage storage pointer,string memory) returns (struct StdStorage storage pointer)"
                      }
                    },
                    "id": 6660,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8122:30:9",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                      "typeString": "struct StdStorage storage pointer"
                    }
                  },
                  "functionReturnParameters": 6655,
                  "id": 6661,
                  "nodeType": "Return",
                  "src": "8115:37:9"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "sig",
            "nameLocation": "8018:3:9",
            "parameters": {
              "id": 6651,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6648,
                  "mutability": "mutable",
                  "name": "self",
                  "nameLocation": "8041:4:9",
                  "nodeType": "VariableDeclaration",
                  "scope": 6663,
                  "src": "8022:23:9",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                    "typeString": "struct StdStorage"
                  },
                  "typeName": {
                    "id": 6647,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6646,
                      "name": "StdStorage",
                      "nameLocations": [
                        "8022:10:9"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 5672,
                      "src": "8022:10:9"
                    },
                    "referencedDeclaration": 5672,
                    "src": "8022:10:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                      "typeString": "struct StdStorage"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6650,
                  "mutability": "mutable",
                  "name": "_sig",
                  "nameLocation": "8061:4:9",
                  "nodeType": "VariableDeclaration",
                  "scope": 6663,
                  "src": "8047:18:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 6649,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "8047:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8021:45:9"
            },
            "returnParameters": {
              "id": 6655,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6654,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 6663,
                  "src": "8085:18:9",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                    "typeString": "struct StdStorage"
                  },
                  "typeName": {
                    "id": 6653,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6652,
                      "name": "StdStorage",
                      "nameLocations": [
                        "8085:10:9"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 5672,
                      "src": "8085:10:9"
                    },
                    "referencedDeclaration": 5672,
                    "src": "8085:10:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                      "typeString": "struct StdStorage"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8084:20:9"
            },
            "scope": 7106,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 6681,
            "nodeType": "FunctionDefinition",
            "src": "8165:152:9",
            "body": {
              "id": 6680,
              "nodeType": "Block",
              "src": "8259:58:9",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 6676,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6666,
                        "src": "8300:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                          "typeString": "struct StdStorage storage pointer"
                        }
                      },
                      {
                        "id": 6677,
                        "name": "who",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6668,
                        "src": "8306:3:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                          "typeString": "struct StdStorage storage pointer"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "id": 6674,
                        "name": "stdStorageSafe",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6565,
                        "src": "8276:14:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_stdStorageSafe_$6565_$",
                          "typeString": "type(library stdStorageSafe)"
                        }
                      },
                      "id": 6675,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "8291:8:9",
                      "memberName": "with_key",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6261,
                      "src": "8276:23:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StdStorage_$5672_storage_ptr_$_t_address_$returns$_t_struct$_StdStorage_$5672_storage_ptr_$",
                        "typeString": "function (struct StdStorage storage pointer,address) returns (struct StdStorage storage pointer)"
                      }
                    },
                    "id": 6678,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8276:34:9",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                      "typeString": "struct StdStorage storage pointer"
                    }
                  },
                  "functionReturnParameters": 6673,
                  "id": 6679,
                  "nodeType": "Return",
                  "src": "8269:41:9"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "with_key",
            "nameLocation": "8174:8:9",
            "parameters": {
              "id": 6669,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6666,
                  "mutability": "mutable",
                  "name": "self",
                  "nameLocation": "8202:4:9",
                  "nodeType": "VariableDeclaration",
                  "scope": 6681,
                  "src": "8183:23:9",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                    "typeString": "struct StdStorage"
                  },
                  "typeName": {
                    "id": 6665,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6664,
                      "name": "StdStorage",
                      "nameLocations": [
                        "8183:10:9"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 5672,
                      "src": "8183:10:9"
                    },
                    "referencedDeclaration": 5672,
                    "src": "8183:10:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                      "typeString": "struct StdStorage"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6668,
                  "mutability": "mutable",
                  "name": "who",
                  "nameLocation": "8216:3:9",
                  "nodeType": "VariableDeclaration",
                  "scope": 6681,
                  "src": "8208:11:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6667,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8208:7:9",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8182:38:9"
            },
            "returnParameters": {
              "id": 6673,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6672,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 6681,
                  "src": "8239:18:9",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                    "typeString": "struct StdStorage"
                  },
                  "typeName": {
                    "id": 6671,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6670,
                      "name": "StdStorage",
                      "nameLocations": [
                        "8239:10:9"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 5672,
                      "src": "8239:10:9"
                    },
                    "referencedDeclaration": 5672,
                    "src": "8239:10:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                      "typeString": "struct StdStorage"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8238:20:9"
            },
            "scope": 7106,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 6699,
            "nodeType": "FunctionDefinition",
            "src": "8323:152:9",
            "body": {
              "id": 6698,
              "nodeType": "Block",
              "src": "8417:58:9",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 6694,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6684,
                        "src": "8458:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                          "typeString": "struct StdStorage storage pointer"
                        }
                      },
                      {
                        "id": 6695,
                        "name": "amt",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6686,
                        "src": "8464:3:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                          "typeString": "struct StdStorage storage pointer"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "id": 6692,
                        "name": "stdStorageSafe",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6565,
                        "src": "8434:14:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_stdStorageSafe_$6565_$",
                          "typeString": "type(library stdStorageSafe)"
                        }
                      },
                      "id": 6693,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "8449:8:9",
                      "memberName": "with_key",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6286,
                      "src": "8434:23:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StdStorage_$5672_storage_ptr_$_t_uint256_$returns$_t_struct$_StdStorage_$5672_storage_ptr_$",
                        "typeString": "function (struct StdStorage storage pointer,uint256) returns (struct StdStorage storage pointer)"
                      }
                    },
                    "id": 6696,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8434:34:9",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                      "typeString": "struct StdStorage storage pointer"
                    }
                  },
                  "functionReturnParameters": 6691,
                  "id": 6697,
                  "nodeType": "Return",
                  "src": "8427:41:9"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "with_key",
            "nameLocation": "8332:8:9",
            "parameters": {
              "id": 6687,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6684,
                  "mutability": "mutable",
                  "name": "self",
                  "nameLocation": "8360:4:9",
                  "nodeType": "VariableDeclaration",
                  "scope": 6699,
                  "src": "8341:23:9",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                    "typeString": "struct StdStorage"
                  },
                  "typeName": {
                    "id": 6683,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6682,
                      "name": "StdStorage",
                      "nameLocations": [
                        "8341:10:9"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 5672,
                      "src": "8341:10:9"
                    },
                    "referencedDeclaration": 5672,
                    "src": "8341:10:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                      "typeString": "struct StdStorage"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6686,
                  "mutability": "mutable",
                  "name": "amt",
                  "nameLocation": "8374:3:9",
                  "nodeType": "VariableDeclaration",
                  "scope": 6699,
                  "src": "8366:11:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6685,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "8366:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8340:38:9"
            },
            "returnParameters": {
              "id": 6691,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6690,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 6699,
                  "src": "8397:18:9",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                    "typeString": "struct StdStorage"
                  },
                  "typeName": {
                    "id": 6689,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6688,
                      "name": "StdStorage",
                      "nameLocations": [
                        "8397:10:9"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 5672,
                      "src": "8397:10:9"
                    },
                    "referencedDeclaration": 5672,
                    "src": "8397:10:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                      "typeString": "struct StdStorage"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8396:20:9"
            },
            "scope": 7106,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 6717,
            "nodeType": "FunctionDefinition",
            "src": "8481:152:9",
            "body": {
              "id": 6716,
              "nodeType": "Block",
              "src": "8575:58:9",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 6712,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6702,
                        "src": "8616:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                          "typeString": "struct StdStorage storage pointer"
                        }
                      },
                      {
                        "id": 6713,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6704,
                        "src": "8622:3:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                          "typeString": "struct StdStorage storage pointer"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "id": 6710,
                        "name": "stdStorageSafe",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6565,
                        "src": "8592:14:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_stdStorageSafe_$6565_$",
                          "typeString": "type(library stdStorageSafe)"
                        }
                      },
                      "id": 6711,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "8607:8:9",
                      "memberName": "with_key",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6308,
                      "src": "8592:23:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StdStorage_$5672_storage_ptr_$_t_bytes32_$returns$_t_struct$_StdStorage_$5672_storage_ptr_$",
                        "typeString": "function (struct StdStorage storage pointer,bytes32) returns (struct StdStorage storage pointer)"
                      }
                    },
                    "id": 6714,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8592:34:9",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                      "typeString": "struct StdStorage storage pointer"
                    }
                  },
                  "functionReturnParameters": 6709,
                  "id": 6715,
                  "nodeType": "Return",
                  "src": "8585:41:9"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "with_key",
            "nameLocation": "8490:8:9",
            "parameters": {
              "id": 6705,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6702,
                  "mutability": "mutable",
                  "name": "self",
                  "nameLocation": "8518:4:9",
                  "nodeType": "VariableDeclaration",
                  "scope": 6717,
                  "src": "8499:23:9",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                    "typeString": "struct StdStorage"
                  },
                  "typeName": {
                    "id": 6701,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6700,
                      "name": "StdStorage",
                      "nameLocations": [
                        "8499:10:9"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 5672,
                      "src": "8499:10:9"
                    },
                    "referencedDeclaration": 5672,
                    "src": "8499:10:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                      "typeString": "struct StdStorage"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6704,
                  "mutability": "mutable",
                  "name": "key",
                  "nameLocation": "8532:3:9",
                  "nodeType": "VariableDeclaration",
                  "scope": 6717,
                  "src": "8524:11:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 6703,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "8524:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8498:38:9"
            },
            "returnParameters": {
              "id": 6709,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6708,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 6717,
                  "src": "8555:18:9",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                    "typeString": "struct StdStorage"
                  },
                  "typeName": {
                    "id": 6707,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6706,
                      "name": "StdStorage",
                      "nameLocations": [
                        "8555:10:9"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 5672,
                      "src": "8555:10:9"
                    },
                    "referencedDeclaration": 5672,
                    "src": "8555:10:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                      "typeString": "struct StdStorage"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8554:20:9"
            },
            "scope": 7106,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 6735,
            "nodeType": "FunctionDefinition",
            "src": "8639:152:9",
            "body": {
              "id": 6734,
              "nodeType": "Block",
              "src": "8733:58:9",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 6730,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6720,
                        "src": "8771:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                          "typeString": "struct StdStorage storage pointer"
                        }
                      },
                      {
                        "id": 6731,
                        "name": "_depth",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6722,
                        "src": "8777:6:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                          "typeString": "struct StdStorage storage pointer"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "id": 6728,
                        "name": "stdStorageSafe",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6565,
                        "src": "8750:14:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_stdStorageSafe_$6565_$",
                          "typeString": "type(library stdStorageSafe)"
                        }
                      },
                      "id": 6729,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "8765:5:9",
                      "memberName": "depth",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6328,
                      "src": "8750:20:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StdStorage_$5672_storage_ptr_$_t_uint256_$returns$_t_struct$_StdStorage_$5672_storage_ptr_$",
                        "typeString": "function (struct StdStorage storage pointer,uint256) returns (struct StdStorage storage pointer)"
                      }
                    },
                    "id": 6732,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8750:34:9",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                      "typeString": "struct StdStorage storage pointer"
                    }
                  },
                  "functionReturnParameters": 6727,
                  "id": 6733,
                  "nodeType": "Return",
                  "src": "8743:41:9"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "depth",
            "nameLocation": "8648:5:9",
            "parameters": {
              "id": 6723,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6720,
                  "mutability": "mutable",
                  "name": "self",
                  "nameLocation": "8673:4:9",
                  "nodeType": "VariableDeclaration",
                  "scope": 6735,
                  "src": "8654:23:9",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                    "typeString": "struct StdStorage"
                  },
                  "typeName": {
                    "id": 6719,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6718,
                      "name": "StdStorage",
                      "nameLocations": [
                        "8654:10:9"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 5672,
                      "src": "8654:10:9"
                    },
                    "referencedDeclaration": 5672,
                    "src": "8654:10:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                      "typeString": "struct StdStorage"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6722,
                  "mutability": "mutable",
                  "name": "_depth",
                  "nameLocation": "8687:6:9",
                  "nodeType": "VariableDeclaration",
                  "scope": 6735,
                  "src": "8679:14:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6721,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "8679:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8653:41:9"
            },
            "returnParameters": {
              "id": 6727,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6726,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 6735,
                  "src": "8713:18:9",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                    "typeString": "struct StdStorage"
                  },
                  "typeName": {
                    "id": 6725,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6724,
                      "name": "StdStorage",
                      "nameLocations": [
                        "8713:10:9"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 5672,
                      "src": "8713:10:9"
                    },
                    "referencedDeclaration": 5672,
                    "src": "8713:10:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                      "typeString": "struct StdStorage"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8712:20:9"
            },
            "scope": 7106,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 6758,
            "nodeType": "FunctionDefinition",
            "src": "8797:138:9",
            "body": {
              "id": 6757,
              "nodeType": "Block",
              "src": "8867:68:9",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 6744,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6738,
                        "src": "8891:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                          "typeString": "struct StdStorage storage pointer"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "id": 6751,
                                    "name": "who",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6740,
                                    "src": "8921:3:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 6750,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "8913:7:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint160_$",
                                    "typeString": "type(uint160)"
                                  },
                                  "typeName": {
                                    "id": 6749,
                                    "name": "uint160",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "8913:7:9",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 6752,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8913:12:9",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                }
                              ],
                              "id": 6748,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "8905:7:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": {
                                "id": 6747,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "8905:7:9",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 6753,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8905:21:9",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 6746,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "8897:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes32_$",
                            "typeString": "type(bytes32)"
                          },
                          "typeName": {
                            "id": 6745,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "8897:7:9",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 6754,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8897:30:9",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                          "typeString": "struct StdStorage storage pointer"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 6743,
                      "name": "checked_write",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        6758,
                        6775,
                        6793,
                        6938
                      ],
                      "referencedDeclaration": 6938,
                      "src": "8877:13:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StdStorage_$5672_storage_ptr_$_t_bytes32_$returns$__$",
                        "typeString": "function (struct StdStorage storage pointer,bytes32)"
                      }
                    },
                    "id": 6755,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8877:51:9",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6756,
                  "nodeType": "ExpressionStatement",
                  "src": "8877:51:9"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "checked_write",
            "nameLocation": "8806:13:9",
            "parameters": {
              "id": 6741,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6738,
                  "mutability": "mutable",
                  "name": "self",
                  "nameLocation": "8839:4:9",
                  "nodeType": "VariableDeclaration",
                  "scope": 6758,
                  "src": "8820:23:9",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                    "typeString": "struct StdStorage"
                  },
                  "typeName": {
                    "id": 6737,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6736,
                      "name": "StdStorage",
                      "nameLocations": [
                        "8820:10:9"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 5672,
                      "src": "8820:10:9"
                    },
                    "referencedDeclaration": 5672,
                    "src": "8820:10:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                      "typeString": "struct StdStorage"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6740,
                  "mutability": "mutable",
                  "name": "who",
                  "nameLocation": "8853:3:9",
                  "nodeType": "VariableDeclaration",
                  "scope": 6758,
                  "src": "8845:11:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6739,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8845:7:9",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8819:38:9"
            },
            "returnParameters": {
              "id": 6742,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8867:0:9"
            },
            "scope": 7106,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 6775,
            "nodeType": "FunctionDefinition",
            "src": "8941:120:9",
            "body": {
              "id": 6774,
              "nodeType": "Block",
              "src": "9011:50:9",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 6767,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6761,
                        "src": "9035:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                          "typeString": "struct StdStorage storage pointer"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "id": 6770,
                            "name": "amt",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6763,
                            "src": "9049:3:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 6769,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "9041:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes32_$",
                            "typeString": "type(bytes32)"
                          },
                          "typeName": {
                            "id": 6768,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "9041:7:9",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 6771,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9041:12:9",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                          "typeString": "struct StdStorage storage pointer"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 6766,
                      "name": "checked_write",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        6758,
                        6775,
                        6793,
                        6938
                      ],
                      "referencedDeclaration": 6938,
                      "src": "9021:13:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StdStorage_$5672_storage_ptr_$_t_bytes32_$returns$__$",
                        "typeString": "function (struct StdStorage storage pointer,bytes32)"
                      }
                    },
                    "id": 6772,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9021:33:9",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6773,
                  "nodeType": "ExpressionStatement",
                  "src": "9021:33:9"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "checked_write",
            "nameLocation": "8950:13:9",
            "parameters": {
              "id": 6764,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6761,
                  "mutability": "mutable",
                  "name": "self",
                  "nameLocation": "8983:4:9",
                  "nodeType": "VariableDeclaration",
                  "scope": 6775,
                  "src": "8964:23:9",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                    "typeString": "struct StdStorage"
                  },
                  "typeName": {
                    "id": 6760,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6759,
                      "name": "StdStorage",
                      "nameLocations": [
                        "8964:10:9"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 5672,
                      "src": "8964:10:9"
                    },
                    "referencedDeclaration": 5672,
                    "src": "8964:10:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                      "typeString": "struct StdStorage"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6763,
                  "mutability": "mutable",
                  "name": "amt",
                  "nameLocation": "8997:3:9",
                  "nodeType": "VariableDeclaration",
                  "scope": 6775,
                  "src": "8989:11:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6762,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "8989:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8963:38:9"
            },
            "returnParameters": {
              "id": 6765,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "9011:0:9"
            },
            "scope": 7106,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 6793,
            "nodeType": "FunctionDefinition",
            "src": "9067:222:9",
            "body": {
              "id": 6792,
              "nodeType": "Block",
              "src": "9136:153:9",
              "statements": [
                {
                  "assignments": [
                    6784
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 6784,
                      "mutability": "mutable",
                      "name": "t",
                      "nameLocation": "9154:1:9",
                      "nodeType": "VariableDeclaration",
                      "scope": 6792,
                      "src": "9146:9:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 6783,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "9146:7:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 6785,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9146:9:9"
                },
                {
                  "AST": {
                    "nodeType": "YulBlock",
                    "src": "9217:34:9",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "9231:10:9",
                        "value": {
                          "name": "write",
                          "nodeType": "YulIdentifier",
                          "src": "9236:5:9"
                        },
                        "variableNames": [
                          {
                            "name": "t",
                            "nodeType": "YulIdentifier",
                            "src": "9231:1:9"
                          }
                        ]
                      }
                    ]
                  },
                  "documentation": "@solidity memory-safe-assembly",
                  "evmVersion": "london",
                  "externalReferences": [
                    {
                      "declaration": 6784,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "9231:1:9",
                      "valueSize": 1
                    },
                    {
                      "declaration": 6780,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "9236:5:9",
                      "valueSize": 1
                    }
                  ],
                  "id": 6786,
                  "nodeType": "InlineAssembly",
                  "src": "9208:43:9"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 6788,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6778,
                        "src": "9274:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                          "typeString": "struct StdStorage storage pointer"
                        }
                      },
                      {
                        "id": 6789,
                        "name": "t",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6784,
                        "src": "9280:1:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                          "typeString": "struct StdStorage storage pointer"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 6787,
                      "name": "checked_write",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        6758,
                        6775,
                        6793,
                        6938
                      ],
                      "referencedDeclaration": 6938,
                      "src": "9260:13:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StdStorage_$5672_storage_ptr_$_t_bytes32_$returns$__$",
                        "typeString": "function (struct StdStorage storage pointer,bytes32)"
                      }
                    },
                    "id": 6790,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9260:22:9",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6791,
                  "nodeType": "ExpressionStatement",
                  "src": "9260:22:9"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "checked_write",
            "nameLocation": "9076:13:9",
            "parameters": {
              "id": 6781,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6778,
                  "mutability": "mutable",
                  "name": "self",
                  "nameLocation": "9109:4:9",
                  "nodeType": "VariableDeclaration",
                  "scope": 6793,
                  "src": "9090:23:9",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                    "typeString": "struct StdStorage"
                  },
                  "typeName": {
                    "id": 6777,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6776,
                      "name": "StdStorage",
                      "nameLocations": [
                        "9090:10:9"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 5672,
                      "src": "9090:10:9"
                    },
                    "referencedDeclaration": 5672,
                    "src": "9090:10:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                      "typeString": "struct StdStorage"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6780,
                  "mutability": "mutable",
                  "name": "write",
                  "nameLocation": "9120:5:9",
                  "nodeType": "VariableDeclaration",
                  "scope": 6793,
                  "src": "9115:10:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 6779,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "9115:4:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "9089:37:9"
            },
            "returnParameters": {
              "id": 6782,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "9136:0:9"
            },
            "scope": 7106,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 6938,
            "nodeType": "FunctionDefinition",
            "src": "9295:1095:9",
            "body": {
              "id": 6937,
              "nodeType": "Block",
              "src": "9365:1025:9",
              "statements": [
                {
                  "assignments": [
                    6802
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 6802,
                      "mutability": "mutable",
                      "name": "who",
                      "nameLocation": "9383:3:9",
                      "nodeType": "VariableDeclaration",
                      "scope": 6937,
                      "src": "9375:11:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6801,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "9375:7:9",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 6805,
                  "initialValue": {
                    "expression": {
                      "id": 6803,
                      "name": "self",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6796,
                      "src": "9389:4:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                        "typeString": "struct StdStorage storage pointer"
                      }
                    },
                    "id": 6804,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberLocation": "9394:7:9",
                    "memberName": "_target",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 5669,
                    "src": "9389:12:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9375:26:9"
                },
                {
                  "assignments": [
                    6807
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 6807,
                      "mutability": "mutable",
                      "name": "fsig",
                      "nameLocation": "9418:4:9",
                      "nodeType": "VariableDeclaration",
                      "scope": 6937,
                      "src": "9411:11:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      },
                      "typeName": {
                        "id": 6806,
                        "name": "bytes4",
                        "nodeType": "ElementaryTypeName",
                        "src": "9411:6:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 6810,
                  "initialValue": {
                    "expression": {
                      "id": 6808,
                      "name": "self",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6796,
                      "src": "9425:4:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                        "typeString": "struct StdStorage storage pointer"
                      }
                    },
                    "id": 6809,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberLocation": "9430:4:9",
                    "memberName": "_sig",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 5665,
                    "src": "9425:9:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9411:23:9"
                },
                {
                  "assignments": [
                    6812
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 6812,
                      "mutability": "mutable",
                      "name": "field_depth",
                      "nameLocation": "9452:11:9",
                      "nodeType": "VariableDeclaration",
                      "scope": 6937,
                      "src": "9444:19:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6811,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "9444:7:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 6815,
                  "initialValue": {
                    "expression": {
                      "id": 6813,
                      "name": "self",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6796,
                      "src": "9466:4:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                        "typeString": "struct StdStorage storage pointer"
                      }
                    },
                    "id": 6814,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberLocation": "9471:6:9",
                    "memberName": "_depth",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 5667,
                    "src": "9466:11:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9444:33:9"
                },
                {
                  "assignments": [
                    6820
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 6820,
                      "mutability": "mutable",
                      "name": "ins",
                      "nameLocation": "9504:3:9",
                      "nodeType": "VariableDeclaration",
                      "scope": 6937,
                      "src": "9487:20:9",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                        "typeString": "bytes32[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 6818,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "9487:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 6819,
                        "nodeType": "ArrayTypeName",
                        "src": "9487:9:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                          "typeString": "bytes32[]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 6823,
                  "initialValue": {
                    "expression": {
                      "id": 6821,
                      "name": "self",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6796,
                      "src": "9510:4:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                        "typeString": "struct StdStorage storage pointer"
                      }
                    },
                    "id": 6822,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberLocation": "9515:5:9",
                    "memberName": "_keys",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 5663,
                    "src": "9510:10:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                      "typeString": "bytes32[] storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9487:33:9"
                },
                {
                  "assignments": [
                    6825
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 6825,
                      "mutability": "mutable",
                      "name": "cald",
                      "nameLocation": "9544:4:9",
                      "nodeType": "VariableDeclaration",
                      "scope": 6937,
                      "src": "9531:17:9",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 6824,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "9531:5:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 6833,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 6828,
                        "name": "fsig",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6807,
                        "src": "9568:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "id": 6830,
                            "name": "ins",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6820,
                            "src": "9582:3:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                              "typeString": "bytes32[] memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                              "typeString": "bytes32[] memory"
                            }
                          ],
                          "id": 6829,
                          "name": "flatten",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7105,
                          "src": "9574:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_array$_t_bytes32_$dyn_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (bytes32[] memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 6831,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9574:12:9",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "expression": {
                        "id": 6826,
                        "name": "abi",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -1,
                        "src": "9551:3:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_abi",
                          "typeString": "abi"
                        }
                      },
                      "id": 6827,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberLocation": "9555:12:9",
                      "memberName": "encodePacked",
                      "nodeType": "MemberAccess",
                      "src": "9551:16:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                        "typeString": "function () pure returns (bytes memory)"
                      }
                    },
                    "id": 6832,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9551:36:9",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9531:56:9"
                },
                {
                  "condition": {
                    "id": 6848,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "!",
                    "prefix": true,
                    "src": "9601:69:9",
                    "subExpression": {
                      "baseExpression": {
                        "baseExpression": {
                          "baseExpression": {
                            "expression": {
                              "id": 6834,
                              "name": "self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6796,
                              "src": "9602:4:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                                "typeString": "struct StdStorage storage pointer"
                              }
                            },
                            "id": 6835,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "9607:5:9",
                            "memberName": "finds",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 5660,
                            "src": "9602:10:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes4_$_t_mapping$_t_bytes32_$_t_bool_$_$_$",
                              "typeString": "mapping(address => mapping(bytes4 => mapping(bytes32 => bool)))"
                            }
                          },
                          "id": 6837,
                          "indexExpression": {
                            "id": 6836,
                            "name": "who",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6802,
                            "src": "9613:3:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "9602:15:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes4_$_t_mapping$_t_bytes32_$_t_bool_$_$",
                            "typeString": "mapping(bytes4 => mapping(bytes32 => bool))"
                          }
                        },
                        "id": 6839,
                        "indexExpression": {
                          "id": 6838,
                          "name": "fsig",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6807,
                          "src": "9618:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "9602:21:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
                          "typeString": "mapping(bytes32 => bool)"
                        }
                      },
                      "id": 6847,
                      "indexExpression": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "id": 6843,
                                "name": "ins",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6820,
                                "src": "9651:3:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                  "typeString": "bytes32[] memory"
                                }
                              },
                              {
                                "id": 6844,
                                "name": "field_depth",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6812,
                                "src": "9656:11:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                  "typeString": "bytes32[] memory"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "id": 6841,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -1,
                                "src": "9634:3:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 6842,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "9638:12:9",
                              "memberName": "encodePacked",
                              "nodeType": "MemberAccess",
                              "src": "9634:16:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function () pure returns (bytes memory)"
                              }
                            },
                            "id": 6845,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9634:34:9",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "id": 6840,
                          "name": "keccak256",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -8,
                          "src": "9624:9:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                            "typeString": "function (bytes memory) pure returns (bytes32)"
                          }
                        },
                        "id": 6846,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9624:45:9",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "9602:68:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 6854,
                  "nodeType": "IfStatement",
                  "src": "9597:110:9",
                  "trueBody": {
                    "id": 6853,
                    "nodeType": "Block",
                    "src": "9672:35:9",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 6850,
                              "name": "self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6796,
                              "src": "9691:4:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                                "typeString": "struct StdStorage storage pointer"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                                "typeString": "struct StdStorage storage pointer"
                              }
                            ],
                            "id": 6849,
                            "name": "find",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6609,
                            "src": "9686:4:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StdStorage_$5672_storage_ptr_$returns$_t_uint256_$",
                              "typeString": "function (struct StdStorage storage pointer) returns (uint256)"
                            }
                          },
                          "id": 6851,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9686:10:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 6852,
                        "nodeType": "ExpressionStatement",
                        "src": "9686:10:9"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    6856
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 6856,
                      "mutability": "mutable",
                      "name": "slot",
                      "nameLocation": "9724:4:9",
                      "nodeType": "VariableDeclaration",
                      "scope": 6937,
                      "src": "9716:12:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 6855,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "9716:7:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 6874,
                  "initialValue": {
                    "arguments": [
                      {
                        "baseExpression": {
                          "baseExpression": {
                            "baseExpression": {
                              "expression": {
                                "id": 6859,
                                "name": "self",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6796,
                                "src": "9739:4:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                                  "typeString": "struct StdStorage storage pointer"
                                }
                              },
                              "id": 6860,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "9744:5:9",
                              "memberName": "slots",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 5652,
                              "src": "9739:10:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes4_$_t_mapping$_t_bytes32_$_t_uint256_$_$_$",
                                "typeString": "mapping(address => mapping(bytes4 => mapping(bytes32 => uint256)))"
                              }
                            },
                            "id": 6862,
                            "indexExpression": {
                              "id": 6861,
                              "name": "who",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6802,
                              "src": "9750:3:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "9739:15:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes4_$_t_mapping$_t_bytes32_$_t_uint256_$_$",
                              "typeString": "mapping(bytes4 => mapping(bytes32 => uint256))"
                            }
                          },
                          "id": 6864,
                          "indexExpression": {
                            "id": 6863,
                            "name": "fsig",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6807,
                            "src": "9755:4:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "9739:21:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                            "typeString": "mapping(bytes32 => uint256)"
                          }
                        },
                        "id": 6872,
                        "indexExpression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 6868,
                                  "name": "ins",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6820,
                                  "src": "9788:3:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                    "typeString": "bytes32[] memory"
                                  }
                                },
                                {
                                  "id": 6869,
                                  "name": "field_depth",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6812,
                                  "src": "9793:11:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                    "typeString": "bytes32[] memory"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 6866,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "9771:3:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 6867,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberLocation": "9775:12:9",
                                "memberName": "encodePacked",
                                "nodeType": "MemberAccess",
                                "src": "9771:16:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 6870,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9771:34:9",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 6865,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -8,
                            "src": "9761:9:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 6871,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9761:45:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "9739:68:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 6858,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "9731:7:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_bytes32_$",
                        "typeString": "type(bytes32)"
                      },
                      "typeName": {
                        "id": 6857,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "9731:7:9",
                        "typeDescriptions": {}
                      }
                    },
                    "id": 6873,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9731:77:9",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9716:92:9"
                },
                {
                  "assignments": [
                    6876
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 6876,
                      "mutability": "mutable",
                      "name": "fdat",
                      "nameLocation": "9827:4:9",
                      "nodeType": "VariableDeclaration",
                      "scope": 6937,
                      "src": "9819:12:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 6875,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "9819:7:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 6877,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9819:12:9"
                },
                {
                  "id": 6894,
                  "nodeType": "Block",
                  "src": "9841:128:9",
                  "statements": [
                    {
                      "assignments": [
                        null,
                        6879
                      ],
                      "declarations": [
                        null,
                        {
                          "constant": false,
                          "id": 6879,
                          "mutability": "mutable",
                          "name": "rdat",
                          "nameLocation": "9871:4:9",
                          "nodeType": "VariableDeclaration",
                          "scope": 6894,
                          "src": "9858:17:9",
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes"
                          },
                          "typeName": {
                            "id": 6878,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "9858:5:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage_ptr",
                              "typeString": "bytes"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 6884,
                      "initialValue": {
                        "arguments": [
                          {
                            "id": 6882,
                            "name": "cald",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6825,
                            "src": "9894:4:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "expression": {
                            "id": 6880,
                            "name": "who",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6802,
                            "src": "9879:3:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 6881,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "9883:10:9",
                          "memberName": "staticcall",
                          "nodeType": "MemberAccess",
                          "src": "9879:14:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "function (bytes memory) view returns (bool,bytes memory)"
                          }
                        },
                        "id": 6883,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9879:20:9",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                          "typeString": "tuple(bool,bytes memory)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "9855:44:9"
                    },
                    {
                      "expression": {
                        "id": 6892,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "id": 6885,
                          "name": "fdat",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6876,
                          "src": "9913:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "arguments": [
                            {
                              "id": 6887,
                              "name": "rdat",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6879,
                              "src": "9935:4:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 6890,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "hexValue": "3332",
                                "id": 6888,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "9941:2:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_32_by_1",
                                  "typeString": "int_const 32"
                                },
                                "value": "32"
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "*",
                              "rightExpression": {
                                "id": 6889,
                                "name": "field_depth",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6812,
                                "src": "9946:11:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "9941:16:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 6886,
                            "name": "bytesToBytes32",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7064,
                            "src": "9920:14:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory,uint256) pure returns (bytes32)"
                            }
                          },
                          "id": 6891,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9920:38:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "src": "9913:45:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "id": 6893,
                      "nodeType": "ExpressionStatement",
                      "src": "9913:45:9"
                    }
                  ]
                },
                {
                  "assignments": [
                    6896
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 6896,
                      "mutability": "mutable",
                      "name": "curr",
                      "nameLocation": "9986:4:9",
                      "nodeType": "VariableDeclaration",
                      "scope": 6937,
                      "src": "9978:12:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 6895,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "9978:7:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 6902,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 6899,
                        "name": "who",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6802,
                        "src": "10001:3:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 6900,
                        "name": "slot",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6856,
                        "src": "10006:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "id": 6897,
                        "name": "vm",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6582,
                        "src": "9993:2:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Vm_$8315",
                          "typeString": "contract Vm"
                        }
                      },
                      "id": 6898,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "9996:4:9",
                      "memberName": "load",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7550,
                      "src": "9993:7:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_bytes32_$returns$_t_bytes32_$",
                        "typeString": "function (address,bytes32) external returns (bytes32)"
                      }
                    },
                    "id": 6901,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9993:18:9",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9978:33:9"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    },
                    "id": 6905,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 6903,
                      "name": "fdat",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6876,
                      "src": "10026:4:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "id": 6904,
                      "name": "curr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6896,
                      "src": "10034:4:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "10026:12:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 6912,
                  "nodeType": "IfStatement",
                  "src": "10022:218:9",
                  "trueBody": {
                    "id": 6911,
                    "nodeType": "Block",
                    "src": "10040:200:9",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "hexValue": "66616c7365",
                              "id": 6907,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10079:5:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "false"
                            },
                            {
                              "hexValue": "73746453746f726167652066696e642853746453746f72616765293a205061636b656420736c6f742e205468697320776f756c642063617573652064616e6765726f7573206f76657277726974696e6720616e642063757272656e746c792069736e277420737570706f727465642e",
                              "id": 6908,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10102:113:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_4bfa78e02b745efea2b29d358f6dc28382f5209b1d2b2dbeb8ef0862e74440b3",
                                "typeString": "literal_string \"stdStorage find(StdStorage): Packed slot. This would cause dangerous overwriting and currently isn't supported.\""
                              },
                              "value": "stdStorage find(StdStorage): Packed slot. This would cause dangerous overwriting and currently isn't supported."
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_4bfa78e02b745efea2b29d358f6dc28382f5209b1d2b2dbeb8ef0862e74440b3",
                                "typeString": "literal_string \"stdStorage find(StdStorage): Packed slot. This would cause dangerous overwriting and currently isn't supported.\""
                              }
                            ],
                            "id": 6906,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "10054:7:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 6909,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10054:175:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6910,
                        "nodeType": "ExpressionStatement",
                        "src": "10054:175:9"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 6916,
                        "name": "who",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6802,
                        "src": "10258:3:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 6917,
                        "name": "slot",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6856,
                        "src": "10263:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "id": 6918,
                        "name": "set",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6798,
                        "src": "10269:3:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "id": 6913,
                        "name": "vm",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6582,
                        "src": "10249:2:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Vm_$8315",
                          "typeString": "contract Vm"
                        }
                      },
                      "id": 6915,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "10252:5:9",
                      "memberName": "store",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 8026,
                      "src": "10249:8:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_bytes32_$_t_bytes32_$returns$__$",
                        "typeString": "function (address,bytes32,bytes32) external"
                      }
                    },
                    "id": 6919,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10249:24:9",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6920,
                  "nodeType": "ExpressionStatement",
                  "src": "10249:24:9"
                },
                {
                  "expression": {
                    "id": 6923,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "delete",
                    "prefix": true,
                    "src": "10283:19:9",
                    "subExpression": {
                      "expression": {
                        "id": 6921,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6796,
                        "src": "10290:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                          "typeString": "struct StdStorage storage pointer"
                        }
                      },
                      "id": 6922,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberLocation": "10295:7:9",
                      "memberName": "_target",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5669,
                      "src": "10290:12:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6924,
                  "nodeType": "ExpressionStatement",
                  "src": "10283:19:9"
                },
                {
                  "expression": {
                    "id": 6927,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "delete",
                    "prefix": true,
                    "src": "10312:16:9",
                    "subExpression": {
                      "expression": {
                        "id": 6925,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6796,
                        "src": "10319:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                          "typeString": "struct StdStorage storage pointer"
                        }
                      },
                      "id": 6926,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberLocation": "10324:4:9",
                      "memberName": "_sig",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5665,
                      "src": "10319:9:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6928,
                  "nodeType": "ExpressionStatement",
                  "src": "10312:16:9"
                },
                {
                  "expression": {
                    "id": 6931,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "delete",
                    "prefix": true,
                    "src": "10338:17:9",
                    "subExpression": {
                      "expression": {
                        "id": 6929,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6796,
                        "src": "10345:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                          "typeString": "struct StdStorage storage pointer"
                        }
                      },
                      "id": 6930,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberLocation": "10350:5:9",
                      "memberName": "_keys",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5663,
                      "src": "10345:10:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                        "typeString": "bytes32[] storage ref"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6932,
                  "nodeType": "ExpressionStatement",
                  "src": "10338:17:9"
                },
                {
                  "expression": {
                    "id": 6935,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "delete",
                    "prefix": true,
                    "src": "10365:18:9",
                    "subExpression": {
                      "expression": {
                        "id": 6933,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6796,
                        "src": "10372:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                          "typeString": "struct StdStorage storage pointer"
                        }
                      },
                      "id": 6934,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberLocation": "10377:6:9",
                      "memberName": "_depth",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5667,
                      "src": "10372:11:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6936,
                  "nodeType": "ExpressionStatement",
                  "src": "10365:18:9"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "checked_write",
            "nameLocation": "9304:13:9",
            "parameters": {
              "id": 6799,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6796,
                  "mutability": "mutable",
                  "name": "self",
                  "nameLocation": "9337:4:9",
                  "nodeType": "VariableDeclaration",
                  "scope": 6938,
                  "src": "9318:23:9",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                    "typeString": "struct StdStorage"
                  },
                  "typeName": {
                    "id": 6795,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6794,
                      "name": "StdStorage",
                      "nameLocations": [
                        "9318:10:9"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 5672,
                      "src": "9318:10:9"
                    },
                    "referencedDeclaration": 5672,
                    "src": "9318:10:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                      "typeString": "struct StdStorage"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6798,
                  "mutability": "mutable",
                  "name": "set",
                  "nameLocation": "9351:3:9",
                  "nodeType": "VariableDeclaration",
                  "scope": 6938,
                  "src": "9343:11:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 6797,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "9343:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "9317:38:9"
            },
            "returnParameters": {
              "id": 6800,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "9365:0:9"
            },
            "scope": 7106,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 6952,
            "nodeType": "FunctionDefinition",
            "src": "10396:131:9",
            "body": {
              "id": 6951,
              "nodeType": "Block",
              "src": "10470:57:9",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 6948,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6941,
                        "src": "10515:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                          "typeString": "struct StdStorage storage pointer"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                          "typeString": "struct StdStorage storage pointer"
                        }
                      ],
                      "expression": {
                        "id": 6946,
                        "name": "stdStorageSafe",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6565,
                        "src": "10487:14:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_stdStorageSafe_$6565_$",
                          "typeString": "type(library stdStorageSafe)"
                        }
                      },
                      "id": 6947,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "10502:12:9",
                      "memberName": "read_bytes32",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6379,
                      "src": "10487:27:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StdStorage_$5672_storage_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (struct StdStorage storage pointer) returns (bytes32)"
                      }
                    },
                    "id": 6949,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10487:33:9",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 6945,
                  "id": 6950,
                  "nodeType": "Return",
                  "src": "10480:40:9"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "read_bytes32",
            "nameLocation": "10405:12:9",
            "parameters": {
              "id": 6942,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6941,
                  "mutability": "mutable",
                  "name": "self",
                  "nameLocation": "10437:4:9",
                  "nodeType": "VariableDeclaration",
                  "scope": 6952,
                  "src": "10418:23:9",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                    "typeString": "struct StdStorage"
                  },
                  "typeName": {
                    "id": 6940,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6939,
                      "name": "StdStorage",
                      "nameLocations": [
                        "10418:10:9"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 5672,
                      "src": "10418:10:9"
                    },
                    "referencedDeclaration": 5672,
                    "src": "10418:10:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                      "typeString": "struct StdStorage"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "10417:25:9"
            },
            "returnParameters": {
              "id": 6945,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6944,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 6952,
                  "src": "10461:7:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 6943,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "10461:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "10460:9:9"
            },
            "scope": 7106,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 6966,
            "nodeType": "FunctionDefinition",
            "src": "10533:122:9",
            "body": {
              "id": 6965,
              "nodeType": "Block",
              "src": "10601:54:9",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 6962,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6955,
                        "src": "10643:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                          "typeString": "struct StdStorage storage pointer"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                          "typeString": "struct StdStorage storage pointer"
                        }
                      ],
                      "expression": {
                        "id": 6960,
                        "name": "stdStorageSafe",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6565,
                        "src": "10618:14:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_stdStorageSafe_$6565_$",
                          "typeString": "type(library stdStorageSafe)"
                        }
                      },
                      "id": 6961,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "10633:9:9",
                      "memberName": "read_bool",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6410,
                      "src": "10618:24:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StdStorage_$5672_storage_ptr_$returns$_t_bool_$",
                        "typeString": "function (struct StdStorage storage pointer) returns (bool)"
                      }
                    },
                    "id": 6963,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10618:30:9",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 6959,
                  "id": 6964,
                  "nodeType": "Return",
                  "src": "10611:37:9"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "read_bool",
            "nameLocation": "10542:9:9",
            "parameters": {
              "id": 6956,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6955,
                  "mutability": "mutable",
                  "name": "self",
                  "nameLocation": "10571:4:9",
                  "nodeType": "VariableDeclaration",
                  "scope": 6966,
                  "src": "10552:23:9",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                    "typeString": "struct StdStorage"
                  },
                  "typeName": {
                    "id": 6954,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6953,
                      "name": "StdStorage",
                      "nameLocations": [
                        "10552:10:9"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 5672,
                      "src": "10552:10:9"
                    },
                    "referencedDeclaration": 5672,
                    "src": "10552:10:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                      "typeString": "struct StdStorage"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "10551:25:9"
            },
            "returnParameters": {
              "id": 6959,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6958,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 6966,
                  "src": "10595:4:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 6957,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "10595:4:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "10594:6:9"
            },
            "scope": 7106,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 6980,
            "nodeType": "FunctionDefinition",
            "src": "10661:131:9",
            "body": {
              "id": 6979,
              "nodeType": "Block",
              "src": "10735:57:9",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 6976,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6969,
                        "src": "10780:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                          "typeString": "struct StdStorage storage pointer"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                          "typeString": "struct StdStorage storage pointer"
                        }
                      ],
                      "expression": {
                        "id": 6974,
                        "name": "stdStorageSafe",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6565,
                        "src": "10752:14:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_stdStorageSafe_$6565_$",
                          "typeString": "type(library stdStorageSafe)"
                        }
                      },
                      "id": 6975,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "10767:12:9",
                      "memberName": "read_address",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6429,
                      "src": "10752:27:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StdStorage_$5672_storage_ptr_$returns$_t_address_$",
                        "typeString": "function (struct StdStorage storage pointer) returns (address)"
                      }
                    },
                    "id": 6977,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10752:33:9",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 6973,
                  "id": 6978,
                  "nodeType": "Return",
                  "src": "10745:40:9"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "read_address",
            "nameLocation": "10670:12:9",
            "parameters": {
              "id": 6970,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6969,
                  "mutability": "mutable",
                  "name": "self",
                  "nameLocation": "10702:4:9",
                  "nodeType": "VariableDeclaration",
                  "scope": 6980,
                  "src": "10683:23:9",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                    "typeString": "struct StdStorage"
                  },
                  "typeName": {
                    "id": 6968,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6967,
                      "name": "StdStorage",
                      "nameLocations": [
                        "10683:10:9"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 5672,
                      "src": "10683:10:9"
                    },
                    "referencedDeclaration": 5672,
                    "src": "10683:10:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                      "typeString": "struct StdStorage"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "10682:25:9"
            },
            "returnParameters": {
              "id": 6973,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6972,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 6980,
                  "src": "10726:7:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6971,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "10726:7:9",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "10725:9:9"
            },
            "scope": 7106,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 6994,
            "nodeType": "FunctionDefinition",
            "src": "10798:125:9",
            "body": {
              "id": 6993,
              "nodeType": "Block",
              "src": "10869:54:9",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 6990,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6983,
                        "src": "10911:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                          "typeString": "struct StdStorage storage pointer"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                          "typeString": "struct StdStorage storage pointer"
                        }
                      ],
                      "expression": {
                        "id": 6988,
                        "name": "stdStorageSafe",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6565,
                        "src": "10886:14:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_stdStorageSafe_$6565_$",
                          "typeString": "type(library stdStorageSafe)"
                        }
                      },
                      "id": 6989,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "10901:9:9",
                      "memberName": "read_uint",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6448,
                      "src": "10886:24:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StdStorage_$5672_storage_ptr_$returns$_t_uint256_$",
                        "typeString": "function (struct StdStorage storage pointer) returns (uint256)"
                      }
                    },
                    "id": 6991,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10886:30:9",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 6987,
                  "id": 6992,
                  "nodeType": "Return",
                  "src": "10879:37:9"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "read_uint",
            "nameLocation": "10807:9:9",
            "parameters": {
              "id": 6984,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6983,
                  "mutability": "mutable",
                  "name": "self",
                  "nameLocation": "10836:4:9",
                  "nodeType": "VariableDeclaration",
                  "scope": 6994,
                  "src": "10817:23:9",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                    "typeString": "struct StdStorage"
                  },
                  "typeName": {
                    "id": 6982,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6981,
                      "name": "StdStorage",
                      "nameLocations": [
                        "10817:10:9"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 5672,
                      "src": "10817:10:9"
                    },
                    "referencedDeclaration": 5672,
                    "src": "10817:10:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                      "typeString": "struct StdStorage"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "10816:25:9"
            },
            "returnParameters": {
              "id": 6987,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6986,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 6994,
                  "src": "10860:7:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6985,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10860:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "10859:9:9"
            },
            "scope": 7106,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 7008,
            "nodeType": "FunctionDefinition",
            "src": "10929:122:9",
            "body": {
              "id": 7007,
              "nodeType": "Block",
              "src": "10998:53:9",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 7004,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6997,
                        "src": "11039:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                          "typeString": "struct StdStorage storage pointer"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                          "typeString": "struct StdStorage storage pointer"
                        }
                      ],
                      "expression": {
                        "id": 7002,
                        "name": "stdStorageSafe",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6565,
                        "src": "11015:14:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_stdStorageSafe_$6565_$",
                          "typeString": "type(library stdStorageSafe)"
                        }
                      },
                      "id": 7003,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "11030:8:9",
                      "memberName": "read_int",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6467,
                      "src": "11015:23:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StdStorage_$5672_storage_ptr_$returns$_t_int256_$",
                        "typeString": "function (struct StdStorage storage pointer) returns (int256)"
                      }
                    },
                    "id": 7005,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11015:29:9",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "functionReturnParameters": 7001,
                  "id": 7006,
                  "nodeType": "Return",
                  "src": "11008:36:9"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "read_int",
            "nameLocation": "10938:8:9",
            "parameters": {
              "id": 6998,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6997,
                  "mutability": "mutable",
                  "name": "self",
                  "nameLocation": "10966:4:9",
                  "nodeType": "VariableDeclaration",
                  "scope": 7008,
                  "src": "10947:23:9",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                    "typeString": "struct StdStorage"
                  },
                  "typeName": {
                    "id": 6996,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6995,
                      "name": "StdStorage",
                      "nameLocations": [
                        "10947:10:9"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 5672,
                      "src": "10947:10:9"
                    },
                    "referencedDeclaration": 5672,
                    "src": "10947:10:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StdStorage_$5672_storage_ptr",
                      "typeString": "struct StdStorage"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "10946:25:9"
            },
            "returnParameters": {
              "id": 7001,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7000,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 7008,
                  "src": "10990:6:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 6999,
                    "name": "int256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10990:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "10989:8:9"
            },
            "scope": 7106,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 7064,
            "nodeType": "FunctionDefinition",
            "src": "11108:304:9",
            "body": {
              "id": 7063,
              "nodeType": "Block",
              "src": "11195:217:9",
              "statements": [
                {
                  "assignments": [
                    7018
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 7018,
                      "mutability": "mutable",
                      "name": "out",
                      "nameLocation": "11213:3:9",
                      "nodeType": "VariableDeclaration",
                      "scope": 7063,
                      "src": "11205:11:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 7017,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "11205:7:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 7019,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "11205:11:9"
                },
                {
                  "assignments": [
                    7021
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 7021,
                      "mutability": "mutable",
                      "name": "max",
                      "nameLocation": "11235:3:9",
                      "nodeType": "VariableDeclaration",
                      "scope": 7063,
                      "src": "11227:11:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7020,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "11227:7:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 7030,
                  "initialValue": {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 7025,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "expression": {
                          "id": 7022,
                          "name": "b",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7010,
                          "src": "11241:1:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "id": 7023,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "11243:6:9",
                        "memberName": "length",
                        "nodeType": "MemberAccess",
                        "src": "11241:8:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">",
                      "rightExpression": {
                        "hexValue": "3332",
                        "id": 7024,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "11252:2:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_32_by_1",
                          "typeString": "int_const 32"
                        },
                        "value": "32"
                      },
                      "src": "11241:13:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseExpression": {
                      "expression": {
                        "id": 7027,
                        "name": "b",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7010,
                        "src": "11262:1:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 7028,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "11264:6:9",
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "11262:8:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 7029,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "Conditional",
                    "src": "11241:29:9",
                    "trueExpression": {
                      "hexValue": "3332",
                      "id": 7026,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "11257:2:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_32_by_1",
                        "typeString": "int_const 32"
                      },
                      "value": "32"
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "11227:43:9"
                },
                {
                  "body": {
                    "id": 7059,
                    "nodeType": "Block",
                    "src": "11314:72:9",
                    "statements": [
                      {
                        "expression": {
                          "id": 7057,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 7041,
                            "name": "out",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7018,
                            "src": "11328:3:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "|=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "id": 7056,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "arguments": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_bytes1",
                                    "typeString": "bytes1"
                                  },
                                  "id": 7050,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "baseExpression": {
                                      "id": 7044,
                                      "name": "b",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7010,
                                      "src": "11343:1:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    },
                                    "id": 7048,
                                    "indexExpression": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 7047,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 7045,
                                        "name": "offset",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7012,
                                        "src": "11345:6:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "+",
                                      "rightExpression": {
                                        "id": 7046,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7032,
                                        "src": "11354:1:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "11345:10:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "11343:13:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes1",
                                      "typeString": "bytes1"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&",
                                  "rightExpression": {
                                    "hexValue": "30784646",
                                    "id": 7049,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "11359:4:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_255_by_1",
                                      "typeString": "int_const 255"
                                    },
                                    "value": "0xFF"
                                  },
                                  "src": "11343:20:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes1",
                                    "typeString": "bytes1"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes1",
                                    "typeString": "bytes1"
                                  }
                                ],
                                "id": 7043,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "11335:7:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes32_$",
                                  "typeString": "type(bytes32)"
                                },
                                "typeName": {
                                  "id": 7042,
                                  "name": "bytes32",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "11335:7:9",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 7051,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11335:29:9",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">>",
                            "rightExpression": {
                              "components": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 7054,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 7052,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7032,
                                    "src": "11369:1:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "*",
                                  "rightExpression": {
                                    "hexValue": "38",
                                    "id": 7053,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "11373:1:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_8_by_1",
                                      "typeString": "int_const 8"
                                    },
                                    "value": "8"
                                  },
                                  "src": "11369:5:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 7055,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "11368:7:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "11335:40:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "11328:47:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 7058,
                        "nodeType": "ExpressionStatement",
                        "src": "11328:47:9"
                      }
                    ]
                  },
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 7037,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 7035,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7032,
                      "src": "11300:1:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "id": 7036,
                      "name": "max",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7021,
                      "src": "11304:3:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "11300:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 7060,
                  "initializationExpression": {
                    "assignments": [
                      7032
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 7032,
                        "mutability": "mutable",
                        "name": "i",
                        "nameLocation": "11293:1:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 7060,
                        "src": "11285:9:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7031,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11285:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 7034,
                    "initialValue": {
                      "hexValue": "30",
                      "id": 7033,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "11297:1:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "11285:13:9"
                  },
                  "loopExpression": {
                    "expression": {
                      "id": 7039,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "11309:3:9",
                      "subExpression": {
                        "id": 7038,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7032,
                        "src": "11309:1:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 7040,
                    "nodeType": "ExpressionStatement",
                    "src": "11309:3:9"
                  },
                  "nodeType": "ForStatement",
                  "src": "11280:106:9"
                },
                {
                  "expression": {
                    "id": 7061,
                    "name": "out",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 7018,
                    "src": "11402:3:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 7016,
                  "id": 7062,
                  "nodeType": "Return",
                  "src": "11395:10:9"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "bytesToBytes32",
            "nameLocation": "11117:14:9",
            "parameters": {
              "id": 7013,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7010,
                  "mutability": "mutable",
                  "name": "b",
                  "nameLocation": "11145:1:9",
                  "nodeType": "VariableDeclaration",
                  "scope": 7064,
                  "src": "11132:14:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 7009,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "11132:5:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7012,
                  "mutability": "mutable",
                  "name": "offset",
                  "nameLocation": "11156:6:9",
                  "nodeType": "VariableDeclaration",
                  "scope": 7064,
                  "src": "11148:14:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7011,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "11148:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "11131:32:9"
            },
            "returnParameters": {
              "id": 7016,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7015,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 7064,
                  "src": "11186:7:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 7014,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "11186:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "11185:9:9"
            },
            "scope": 7106,
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "private"
          },
          {
            "id": 7105,
            "nodeType": "FunctionDefinition",
            "src": "11469:393:9",
            "body": {
              "id": 7104,
              "nodeType": "Block",
              "src": "11542:320:9",
              "statements": [
                {
                  "assignments": [
                    7073
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 7073,
                      "mutability": "mutable",
                      "name": "result",
                      "nameLocation": "11565:6:9",
                      "nodeType": "VariableDeclaration",
                      "scope": 7104,
                      "src": "11552:19:9",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 7072,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "11552:5:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 7081,
                  "initialValue": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 7079,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "expression": {
                            "id": 7076,
                            "name": "b",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7067,
                            "src": "11584:1:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                              "typeString": "bytes32[] memory"
                            }
                          },
                          "id": 7077,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "11586:6:9",
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "11584:8:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "*",
                        "rightExpression": {
                          "hexValue": "3332",
                          "id": 7078,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "11595:2:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_32_by_1",
                            "typeString": "int_const 32"
                          },
                          "value": "32"
                        },
                        "src": "11584:13:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 7075,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "11574:9:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                        "typeString": "function (uint256) pure returns (bytes memory)"
                      },
                      "typeName": {
                        "id": 7074,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "11578:5:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      }
                    },
                    "id": 7080,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11574:24:9",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "11552:46:9"
                },
                {
                  "body": {
                    "id": 7100,
                    "nodeType": "Block",
                    "src": "11647:185:9",
                    "statements": [
                      {
                        "assignments": [
                          7094
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7094,
                            "mutability": "mutable",
                            "name": "k",
                            "nameLocation": "11669:1:9",
                            "nodeType": "VariableDeclaration",
                            "scope": 7100,
                            "src": "11661:9:9",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 7093,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "11661:7:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 7098,
                        "initialValue": {
                          "baseExpression": {
                            "id": 7095,
                            "name": "b",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7067,
                            "src": "11673:1:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                              "typeString": "bytes32[] memory"
                            }
                          },
                          "id": 7097,
                          "indexExpression": {
                            "id": 7096,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7083,
                            "src": "11675:1:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "11673:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11661:16:9"
                      },
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "11747:75:9",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "result",
                                        "nodeType": "YulIdentifier",
                                        "src": "11776:6:9"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "11788:2:9",
                                            "type": "",
                                            "value": "32"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "11796:2:9",
                                                "type": "",
                                                "value": "32"
                                              },
                                              {
                                                "name": "i",
                                                "nodeType": "YulIdentifier",
                                                "src": "11800:1:9"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "mul",
                                              "nodeType": "YulIdentifier",
                                              "src": "11792:3:9"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "11792:10:9"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "11784:3:9"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "11784:19:9"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11772:3:9"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11772:32:9"
                                  },
                                  {
                                    "name": "k",
                                    "nodeType": "YulIdentifier",
                                    "src": "11806:1:9"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11765:6:9"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11765:43:9"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11765:43:9"
                            }
                          ]
                        },
                        "documentation": "@solidity memory-safe-assembly",
                        "evmVersion": "london",
                        "externalReferences": [
                          {
                            "declaration": 7083,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "11800:1:9",
                            "valueSize": 1
                          },
                          {
                            "declaration": 7094,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "11806:1:9",
                            "valueSize": 1
                          },
                          {
                            "declaration": 7073,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "11776:6:9",
                            "valueSize": 1
                          }
                        ],
                        "id": 7099,
                        "nodeType": "InlineAssembly",
                        "src": "11738:84:9"
                      }
                    ]
                  },
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 7089,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 7086,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7083,
                      "src": "11628:1:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "expression": {
                        "id": 7087,
                        "name": "b",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7067,
                        "src": "11632:1:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[] memory"
                        }
                      },
                      "id": 7088,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "11634:6:9",
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "11632:8:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "11628:12:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 7101,
                  "initializationExpression": {
                    "assignments": [
                      7083
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 7083,
                        "mutability": "mutable",
                        "name": "i",
                        "nameLocation": "11621:1:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 7101,
                        "src": "11613:9:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7082,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11613:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 7085,
                    "initialValue": {
                      "hexValue": "30",
                      "id": 7084,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "11625:1:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "11613:13:9"
                  },
                  "loopExpression": {
                    "expression": {
                      "id": 7091,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "11642:3:9",
                      "subExpression": {
                        "id": 7090,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7083,
                        "src": "11642:1:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 7092,
                    "nodeType": "ExpressionStatement",
                    "src": "11642:3:9"
                  },
                  "nodeType": "ForStatement",
                  "src": "11608:224:9"
                },
                {
                  "expression": {
                    "id": 7102,
                    "name": "result",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 7073,
                    "src": "11849:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "functionReturnParameters": 7071,
                  "id": 7103,
                  "nodeType": "Return",
                  "src": "11842:13:9"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "flatten",
            "nameLocation": "11478:7:9",
            "parameters": {
              "id": 7068,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7067,
                  "mutability": "mutable",
                  "name": "b",
                  "nameLocation": "11503:1:9",
                  "nodeType": "VariableDeclaration",
                  "scope": 7105,
                  "src": "11486:18:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                    "typeString": "bytes32[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 7065,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "11486:7:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "id": 7066,
                    "nodeType": "ArrayTypeName",
                    "src": "11486:9:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                      "typeString": "bytes32[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "11485:20:9"
            },
            "returnParameters": {
              "id": 7071,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7070,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 7105,
                  "src": "11528:12:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 7069,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "11528:5:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "11527:14:9"
            },
            "scope": 7106,
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "private"
          }
        ],
        "abstract": false,
        "baseContracts": [],
        "canonicalName": "stdStorage",
        "contractDependencies": [],
        "contractKind": "library",
        "fullyImplemented": true,
        "linearizedBaseContracts": [
          7106
        ],
        "name": "stdStorage",
        "nameLocation": "7345:10:9",
        "scope": 7107,
        "usedErrors": []
      }
    ],
    "license": "MIT"
  },
  "id": 9
}