{
  "contractName": "LibMap2_bytes4_address_bytes",
  "abi": [],
  "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"solstruct/contracts/libs/LibMap2.bytes4.address.bytes.sol\":\"LibMap2_bytes4_address_bytes\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"solstruct/contracts/libs/LibMap2.bytes4.address.bytes.sol\":{\"keccak256\":\"0xde4da3fc60926f373ab427e6a07f837b773cd220554c1d895e45ec89b3ac069f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0dc8d9235bd4795815ec0e2ccea2dc7847a88c04d01af06e67a081ea269b9943\",\"dweb:/ipfs/QmbPrKGJsZcPXXSpZqJPuiFNjVwjbvtgrMpdY6asA1BouT\"]},\"solstruct/contracts/libs/LibSet.bytes4.sol\":{\"keccak256\":\"0xbb3001b2c52c250106497a5567454442c021e575c696da948a472d4390e63920\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c639b4d68cf6152560d1826bb38fb162c6ee0d2a6fb4a56d0888d7a41efc58c5\",\"dweb:/ipfs/QmaKLDhS5BJPiobaktgMg5dYEML7JKRi2pkkvAmDQLJAXs\"]}},\"version\":1}",
  "bytecode": "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122006523f774a9959a364dba2f6059dfcd7fb5a63d3718b28cf7e5412d8b8fe324564736f6c634300060c0033",
  "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122006523f774a9959a364dba2f6059dfcd7fb5a63d3718b28cf7e5412d8b8fe324564736f6c634300060c0033",
  "immutableReferences": {},
  "sourceMap": "96:1908:31:-:0;;;;;;;;;;;;;;;;;;;;;;;;;",
  "deployedSourceMap": "96:1908:31:-:0;;;;;;;;",
  "source": "// SPDX-License-Identifier: MIT\n\npragma solidity >0.5.0 <0.8.0;\n\nimport './LibSet.bytes4.sol';\n\nlibrary LibMap2_bytes4_address_bytes\n{\n\tusing LibSet_bytes4 for LibSet_bytes4.set;\n\n\tstruct map\n\t{\n\t\tLibSet_bytes4.set keyset;\n\t\tmapping(bytes4 => address) values1;\n\t\tmapping(bytes4 => bytes) values2;\n\t}\n\n\tfunction length(map storage _map)\n\tinternal view returns (uint256)\n\t{\n\t\treturn _map.keyset.length();\n\t}\n\n\tfunction value1(map storage _map, bytes4  _key)\n\tinternal view returns (address )\n\t{\n\t\treturn _map.values1[_key];\n\t}\n\n\tfunction value2(map storage _map, bytes4  _key)\n\tinternal view returns (bytes memory)\n\t{\n\t\treturn _map.values2[_key];\n\t}\n\n\tfunction keyAt(map storage _map, uint256 _index)\n\tinternal view returns (bytes4 )\n\t{\n\t\treturn _map.keyset.at(_index);\n\t}\n\n\tfunction at(map storage _map, uint256 _index)\n\tinternal view returns (bytes4 , address , bytes memory)\n\t{\n\t\tbytes4  key = keyAt(_map, _index);\n\t\treturn (key, value1(_map, key), value2(_map, key));\n\t}\n\n\tfunction indexOf(map storage _map, bytes4  _key)\n\tinternal view returns (uint256)\n\t{\n\t\treturn _map.keyset.indexOf(_key);\n\t}\n\n\tfunction contains(map storage _map, bytes4  _key)\n\tinternal view returns (bool)\n\t{\n\t\treturn _map.keyset.contains(_key);\n\t}\n\n\tfunction keys(map storage _map)\n\tinternal view returns (bytes4[] memory)\n\t{\n\t\treturn _map.keyset.content();\n\t}\n\n\tfunction set(\n\t\tmap storage _map,\n\t\tbytes4  _key,\n\t\taddress  _value1,\n\t\tbytes memory _value2)\n\tinternal returns (bool)\n\t{\n\t\t_map.keyset.add(_key);\n\t\t_map.values1[_key] = _value1;\n\t\t_map.values2[_key] = _value2;\n\t\treturn true;\n\t}\n\n\tfunction del(map storage _map, bytes4  _key)\n\tinternal returns (bool)\n\t{\n\t\t_map.keyset.remove(_key);\n\t\tdelete _map.values1[_key];\n\t\tdelete _map.values2[_key];\n\t\treturn true;\n\t}\n\n\tfunction clear(map storage _map)\n\tinternal returns (bool)\n\t{\n\t\tfor (uint256 i = _map.keyset.length(); i > 0; --i)\n\t\t{\n\t\t\tbytes4  key = keyAt(_map, i);\n\t\t\tdelete _map.values1[key];\n\t\t\tdelete _map.values2[key];\n\t\t}\n\t\t_map.keyset.clear();\n\t\treturn true;\n\t}\n}\n",
  "sourcePath": "solstruct/contracts/libs/LibMap2.bytes4.address.bytes.sol",
  "ast": {
    "absolutePath": "solstruct/contracts/libs/LibMap2.bytes4.address.bytes.sol",
    "exportedSymbols": {
      "LibMap2_bytes4_address_bytes": [
        3057
      ]
    },
    "id": 3058,
    "license": "MIT",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 2781,
        "literals": [
          "solidity",
          ">",
          "0.5",
          ".0",
          "<",
          "0.8",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "33:30:31"
      },
      {
        "absolutePath": "solstruct/contracts/libs/LibSet.bytes4.sol",
        "file": "./LibSet.bytes4.sol",
        "id": 2782,
        "nodeType": "ImportDirective",
        "scope": 3058,
        "sourceUnit": 3304,
        "src": "65:29:31",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "library",
        "documentation": null,
        "fullyImplemented": true,
        "id": 3057,
        "linearizedBaseContracts": [
          3057
        ],
        "name": "LibMap2_bytes4_address_bytes",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 2785,
            "libraryName": {
              "contractScope": null,
              "id": 2783,
              "name": "LibSet_bytes4",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 3303,
              "src": "142:13:31",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_LibSet_bytes4_$3303",
                "typeString": "library LibSet_bytes4"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "136:42:31",
            "typeName": {
              "contractScope": null,
              "id": 2784,
              "name": "LibSet_bytes4.set",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 3067,
              "src": "160:17:31",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_set_$3067_storage_ptr",
                "typeString": "struct LibSet_bytes4.set"
              }
            }
          },
          {
            "canonicalName": "LibMap2_bytes4_address_bytes.map",
            "id": 2796,
            "members": [
              {
                "constant": false,
                "id": 2787,
                "mutability": "mutable",
                "name": "keyset",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 2796,
                "src": "197:24:31",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_set_$3067_storage_ptr",
                  "typeString": "struct LibSet_bytes4.set"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 2786,
                  "name": "LibSet_bytes4.set",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 3067,
                  "src": "197:17:31",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_set_$3067_storage_ptr",
                    "typeString": "struct LibSet_bytes4.set"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2791,
                "mutability": "mutable",
                "name": "values1",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 2796,
                "src": "225:34:31",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_bytes4_$_t_address_$",
                  "typeString": "mapping(bytes4 => address)"
                },
                "typeName": {
                  "id": 2790,
                  "keyType": {
                    "id": 2788,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "233:6:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "225:26:31",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_bytes4_$_t_address_$",
                    "typeString": "mapping(bytes4 => address)"
                  },
                  "valueType": {
                    "id": 2789,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "243:7:31",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2795,
                "mutability": "mutable",
                "name": "values2",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 2796,
                "src": "263:32:31",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_bytes4_$_t_bytes_storage_$",
                  "typeString": "mapping(bytes4 => bytes)"
                },
                "typeName": {
                  "id": 2794,
                  "keyType": {
                    "id": 2792,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "271:6:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "263:24:31",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_bytes4_$_t_bytes_storage_$",
                    "typeString": "mapping(bytes4 => bytes)"
                  },
                  "valueType": {
                    "id": 2793,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "281:5:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "map",
            "nodeType": "StructDefinition",
            "scope": 3057,
            "src": "181:118:31",
            "visibility": "public"
          },
          {
            "body": {
              "id": 2808,
              "nodeType": "Block",
              "src": "370:35:31",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2803,
                          "name": "_map",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2798,
                          "src": "381:4:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_map_$2796_storage_ptr",
                            "typeString": "struct LibMap2_bytes4_address_bytes.map storage pointer"
                          }
                        },
                        "id": 2804,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "keyset",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2787,
                        "src": "381:11:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_set_$3067_storage",
                          "typeString": "struct LibSet_bytes4.set storage ref"
                        }
                      },
                      "id": 2805,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3079,
                      "src": "381:18:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_set_$3067_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_set_$3067_storage_ptr_$",
                        "typeString": "function (struct LibSet_bytes4.set storage pointer) view returns (uint256)"
                      }
                    },
                    "id": 2806,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "381:20:31",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 2802,
                  "id": 2807,
                  "nodeType": "Return",
                  "src": "374:27:31"
                }
              ]
            },
            "documentation": null,
            "id": 2809,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "length",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 2799,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2798,
                  "mutability": "mutable",
                  "name": "_map",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2809,
                  "src": "318:16:31",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_map_$2796_storage_ptr",
                    "typeString": "struct LibMap2_bytes4_address_bytes.map"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2797,
                    "name": "map",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2796,
                    "src": "318:3:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_map_$2796_storage_ptr",
                      "typeString": "struct LibMap2_bytes4_address_bytes.map"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "317:18:31"
            },
            "returnParameters": {
              "id": 2802,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2801,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2809,
                  "src": "360:7:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2800,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "360:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "359:9:31"
            },
            "scope": 3057,
            "src": "302:103:31",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2823,
              "nodeType": "Block",
              "src": "491:33:31",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2818,
                        "name": "_map",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2811,
                        "src": "502:4:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_map_$2796_storage_ptr",
                          "typeString": "struct LibMap2_bytes4_address_bytes.map storage pointer"
                        }
                      },
                      "id": 2819,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "values1",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2791,
                      "src": "502:12:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes4_$_t_address_$",
                        "typeString": "mapping(bytes4 => address)"
                      }
                    },
                    "id": 2821,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 2820,
                      "name": "_key",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2813,
                      "src": "515:4:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "502:18:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 2817,
                  "id": 2822,
                  "nodeType": "Return",
                  "src": "495:25:31"
                }
              ]
            },
            "documentation": null,
            "id": 2824,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "value1",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 2814,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2811,
                  "mutability": "mutable",
                  "name": "_map",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2824,
                  "src": "424:16:31",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_map_$2796_storage_ptr",
                    "typeString": "struct LibMap2_bytes4_address_bytes.map"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2810,
                    "name": "map",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2796,
                    "src": "424:3:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_map_$2796_storage_ptr",
                      "typeString": "struct LibMap2_bytes4_address_bytes.map"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2813,
                  "mutability": "mutable",
                  "name": "_key",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2824,
                  "src": "442:12:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 2812,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "442:6:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "423:32:31"
            },
            "returnParameters": {
              "id": 2817,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2816,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2824,
                  "src": "480:7:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2815,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "480:7:31",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "479:10:31"
            },
            "scope": 3057,
            "src": "408:116:31",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2838,
              "nodeType": "Block",
              "src": "614:33:31",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2833,
                        "name": "_map",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2826,
                        "src": "625:4:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_map_$2796_storage_ptr",
                          "typeString": "struct LibMap2_bytes4_address_bytes.map storage pointer"
                        }
                      },
                      "id": 2834,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "values2",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2795,
                      "src": "625:12:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes4_$_t_bytes_storage_$",
                        "typeString": "mapping(bytes4 => bytes storage ref)"
                      }
                    },
                    "id": 2836,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 2835,
                      "name": "_key",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2828,
                      "src": "638:4:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "625:18:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage",
                      "typeString": "bytes storage ref"
                    }
                  },
                  "functionReturnParameters": 2832,
                  "id": 2837,
                  "nodeType": "Return",
                  "src": "618:25:31"
                }
              ]
            },
            "documentation": null,
            "id": 2839,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "value2",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 2829,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2826,
                  "mutability": "mutable",
                  "name": "_map",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2839,
                  "src": "543:16:31",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_map_$2796_storage_ptr",
                    "typeString": "struct LibMap2_bytes4_address_bytes.map"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2825,
                    "name": "map",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2796,
                    "src": "543:3:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_map_$2796_storage_ptr",
                      "typeString": "struct LibMap2_bytes4_address_bytes.map"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2828,
                  "mutability": "mutable",
                  "name": "_key",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2839,
                  "src": "561:12:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 2827,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "561:6:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "542:32:31"
            },
            "returnParameters": {
              "id": 2832,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2831,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2839,
                  "src": "599:12:31",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 2830,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "599:5:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "598:14:31"
            },
            "scope": 3057,
            "src": "527:120:31",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2854,
              "nodeType": "Block",
              "src": "733:37:31",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2851,
                        "name": "_index",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2843,
                        "src": "759:6:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2848,
                          "name": "_map",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2841,
                          "src": "744:4:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_map_$2796_storage_ptr",
                            "typeString": "struct LibMap2_bytes4_address_bytes.map storage pointer"
                          }
                        },
                        "id": 2849,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "keyset",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2787,
                        "src": "744:11:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_set_$3067_storage",
                          "typeString": "struct LibSet_bytes4.set storage ref"
                        }
                      },
                      "id": 2850,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "at",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3096,
                      "src": "744:14:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_set_$3067_storage_ptr_$_t_uint256_$returns$_t_bytes4_$bound_to$_t_struct$_set_$3067_storage_ptr_$",
                        "typeString": "function (struct LibSet_bytes4.set storage pointer,uint256) view returns (bytes4)"
                      }
                    },
                    "id": 2852,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "744:22:31",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "functionReturnParameters": 2847,
                  "id": 2853,
                  "nodeType": "Return",
                  "src": "737:29:31"
                }
              ]
            },
            "documentation": null,
            "id": 2855,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "keyAt",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 2844,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2841,
                  "mutability": "mutable",
                  "name": "_map",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2855,
                  "src": "665:16:31",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_map_$2796_storage_ptr",
                    "typeString": "struct LibMap2_bytes4_address_bytes.map"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2840,
                    "name": "map",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2796,
                    "src": "665:3:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_map_$2796_storage_ptr",
                      "typeString": "struct LibMap2_bytes4_address_bytes.map"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2843,
                  "mutability": "mutable",
                  "name": "_index",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2855,
                  "src": "683:14:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2842,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "683:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "664:34:31"
            },
            "returnParameters": {
              "id": 2847,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2846,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2855,
                  "src": "723:6:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 2845,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "723:6:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "722:9:31"
            },
            "scope": 3057,
            "src": "650:120:31",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2886,
              "nodeType": "Block",
              "src": "877:95:31",
              "statements": [
                {
                  "assignments": [
                    2869
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2869,
                      "mutability": "mutable",
                      "name": "key",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2886,
                      "src": "881:11:31",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      },
                      "typeName": {
                        "id": 2868,
                        "name": "bytes4",
                        "nodeType": "ElementaryTypeName",
                        "src": "881:6:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2874,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2871,
                        "name": "_map",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2857,
                        "src": "901:4:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_map_$2796_storage_ptr",
                          "typeString": "struct LibMap2_bytes4_address_bytes.map storage pointer"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2872,
                        "name": "_index",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2859,
                        "src": "907:6:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_map_$2796_storage_ptr",
                          "typeString": "struct LibMap2_bytes4_address_bytes.map storage pointer"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 2870,
                      "name": "keyAt",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2855,
                      "src": "895:5:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_map_$2796_storage_ptr_$_t_uint256_$returns$_t_bytes4_$",
                        "typeString": "function (struct LibMap2_bytes4_address_bytes.map storage pointer,uint256) view returns (bytes4)"
                      }
                    },
                    "id": 2873,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "895:19:31",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "881:33:31"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "id": 2875,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2869,
                        "src": "926:3:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2877,
                            "name": "_map",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2857,
                            "src": "938:4:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_map_$2796_storage_ptr",
                              "typeString": "struct LibMap2_bytes4_address_bytes.map storage pointer"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2878,
                            "name": "key",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2869,
                            "src": "944:3:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_struct$_map_$2796_storage_ptr",
                              "typeString": "struct LibMap2_bytes4_address_bytes.map storage pointer"
                            },
                            {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          ],
                          "id": 2876,
                          "name": "value1",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2824,
                          "src": "931:6:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_struct$_map_$2796_storage_ptr_$_t_bytes4_$returns$_t_address_$",
                            "typeString": "function (struct LibMap2_bytes4_address_bytes.map storage pointer,bytes4) view returns (address)"
                          }
                        },
                        "id": 2879,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "931:17:31",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2881,
                            "name": "_map",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2857,
                            "src": "957:4:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_map_$2796_storage_ptr",
                              "typeString": "struct LibMap2_bytes4_address_bytes.map storage pointer"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2882,
                            "name": "key",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2869,
                            "src": "963:3:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_struct$_map_$2796_storage_ptr",
                              "typeString": "struct LibMap2_bytes4_address_bytes.map storage pointer"
                            },
                            {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          ],
                          "id": 2880,
                          "name": "value2",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2839,
                          "src": "950:6:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_struct$_map_$2796_storage_ptr_$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (struct LibMap2_bytes4_address_bytes.map storage pointer,bytes4) view returns (bytes memory)"
                          }
                        },
                        "id": 2883,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "950:17:31",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "id": 2884,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "925:43:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bytes4_$_t_address_$_t_bytes_memory_ptr_$",
                      "typeString": "tuple(bytes4,address,bytes memory)"
                    }
                  },
                  "functionReturnParameters": 2867,
                  "id": 2885,
                  "nodeType": "Return",
                  "src": "918:50:31"
                }
              ]
            },
            "documentation": null,
            "id": 2887,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "at",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 2860,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2857,
                  "mutability": "mutable",
                  "name": "_map",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2887,
                  "src": "785:16:31",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_map_$2796_storage_ptr",
                    "typeString": "struct LibMap2_bytes4_address_bytes.map"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2856,
                    "name": "map",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2796,
                    "src": "785:3:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_map_$2796_storage_ptr",
                      "typeString": "struct LibMap2_bytes4_address_bytes.map"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2859,
                  "mutability": "mutable",
                  "name": "_index",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2887,
                  "src": "803:14:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2858,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "803:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "784:34:31"
            },
            "returnParameters": {
              "id": 2867,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2862,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2887,
                  "src": "843:6:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 2861,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "843:6:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2864,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2887,
                  "src": "852:7:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2863,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "852:7:31",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2866,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2887,
                  "src": "862:12:31",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 2865,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "862:5:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "842:33:31"
            },
            "scope": 3057,
            "src": "773:199:31",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2902,
              "nodeType": "Block",
              "src": "1058:40:31",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2899,
                        "name": "_key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2891,
                        "src": "1089:4:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2896,
                          "name": "_map",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2889,
                          "src": "1069:4:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_map_$2796_storage_ptr",
                            "typeString": "struct LibMap2_bytes4_address_bytes.map storage pointer"
                          }
                        },
                        "id": 2897,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "keyset",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2787,
                        "src": "1069:11:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_set_$3067_storage",
                          "typeString": "struct LibSet_bytes4.set storage ref"
                        }
                      },
                      "id": 2898,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "indexOf",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3111,
                      "src": "1069:19:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_set_$3067_storage_ptr_$_t_bytes4_$returns$_t_uint256_$bound_to$_t_struct$_set_$3067_storage_ptr_$",
                        "typeString": "function (struct LibSet_bytes4.set storage pointer,bytes4) view returns (uint256)"
                      }
                    },
                    "id": 2900,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1069:25:31",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 2895,
                  "id": 2901,
                  "nodeType": "Return",
                  "src": "1062:32:31"
                }
              ]
            },
            "documentation": null,
            "id": 2903,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "indexOf",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 2892,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2889,
                  "mutability": "mutable",
                  "name": "_map",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2903,
                  "src": "992:16:31",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_map_$2796_storage_ptr",
                    "typeString": "struct LibMap2_bytes4_address_bytes.map"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2888,
                    "name": "map",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2796,
                    "src": "992:3:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_map_$2796_storage_ptr",
                      "typeString": "struct LibMap2_bytes4_address_bytes.map"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2891,
                  "mutability": "mutable",
                  "name": "_key",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2903,
                  "src": "1010:12:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 2890,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "1010:6:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "991:32:31"
            },
            "returnParameters": {
              "id": 2895,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2894,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2903,
                  "src": "1048:7:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2893,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1048:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1047:9:31"
            },
            "scope": 3057,
            "src": "975:123:31",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2918,
              "nodeType": "Block",
              "src": "1182:41:31",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2915,
                        "name": "_key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2907,
                        "src": "1214:4:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2912,
                          "name": "_map",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2905,
                          "src": "1193:4:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_map_$2796_storage_ptr",
                            "typeString": "struct LibMap2_bytes4_address_bytes.map storage pointer"
                          }
                        },
                        "id": 2913,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "keyset",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2787,
                        "src": "1193:11:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_set_$3067_storage",
                          "typeString": "struct LibSet_bytes4.set storage ref"
                        }
                      },
                      "id": 2914,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "contains",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3128,
                      "src": "1193:20:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_set_$3067_storage_ptr_$_t_bytes4_$returns$_t_bool_$bound_to$_t_struct$_set_$3067_storage_ptr_$",
                        "typeString": "function (struct LibSet_bytes4.set storage pointer,bytes4) view returns (bool)"
                      }
                    },
                    "id": 2916,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1193:26:31",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 2911,
                  "id": 2917,
                  "nodeType": "Return",
                  "src": "1186:33:31"
                }
              ]
            },
            "documentation": null,
            "id": 2919,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "contains",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 2908,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2905,
                  "mutability": "mutable",
                  "name": "_map",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2919,
                  "src": "1119:16:31",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_map_$2796_storage_ptr",
                    "typeString": "struct LibMap2_bytes4_address_bytes.map"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2904,
                    "name": "map",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2796,
                    "src": "1119:3:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_map_$2796_storage_ptr",
                      "typeString": "struct LibMap2_bytes4_address_bytes.map"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2907,
                  "mutability": "mutable",
                  "name": "_key",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2919,
                  "src": "1137:12:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 2906,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "1137:6:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1118:32:31"
            },
            "returnParameters": {
              "id": 2911,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2910,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2919,
                  "src": "1175:4:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 2909,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1175:4:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1174:6:31"
            },
            "scope": 3057,
            "src": "1101:122:31",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2932,
              "nodeType": "Block",
              "src": "1300:36:31",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2927,
                          "name": "_map",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2921,
                          "src": "1311:4:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_map_$2796_storage_ptr",
                            "typeString": "struct LibMap2_bytes4_address_bytes.map storage pointer"
                          }
                        },
                        "id": 2928,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "keyset",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2787,
                        "src": "1311:11:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_set_$3067_storage",
                          "typeString": "struct LibSet_bytes4.set storage ref"
                        }
                      },
                      "id": 2929,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "content",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3140,
                      "src": "1311:19:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_set_$3067_storage_ptr_$returns$_t_array$_t_bytes4_$dyn_memory_ptr_$bound_to$_t_struct$_set_$3067_storage_ptr_$",
                        "typeString": "function (struct LibSet_bytes4.set storage pointer) view returns (bytes4[] memory)"
                      }
                    },
                    "id": 2930,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1311:21:31",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                      "typeString": "bytes4[] memory"
                    }
                  },
                  "functionReturnParameters": 2926,
                  "id": 2931,
                  "nodeType": "Return",
                  "src": "1304:28:31"
                }
              ]
            },
            "documentation": null,
            "id": 2933,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "keys",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 2922,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2921,
                  "mutability": "mutable",
                  "name": "_map",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2933,
                  "src": "1240:16:31",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_map_$2796_storage_ptr",
                    "typeString": "struct LibMap2_bytes4_address_bytes.map"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2920,
                    "name": "map",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2796,
                    "src": "1240:3:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_map_$2796_storage_ptr",
                      "typeString": "struct LibMap2_bytes4_address_bytes.map"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1239:18:31"
            },
            "returnParameters": {
              "id": 2926,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2925,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2933,
                  "src": "1282:15:31",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                    "typeString": "bytes4[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2923,
                      "name": "bytes4",
                      "nodeType": "ElementaryTypeName",
                      "src": "1282:6:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      }
                    },
                    "id": 2924,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "1282:8:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes4_$dyn_storage_ptr",
                      "typeString": "bytes4[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1281:17:31"
            },
            "scope": 3057,
            "src": "1226:110:31",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2972,
              "nodeType": "Block",
              "src": "1459:108:31",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2951,
                        "name": "_key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2937,
                        "src": "1479:4:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2946,
                          "name": "_map",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2935,
                          "src": "1463:4:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_map_$2796_storage_ptr",
                            "typeString": "struct LibMap2_bytes4_address_bytes.map storage pointer"
                          }
                        },
                        "id": 2949,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "keyset",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2787,
                        "src": "1463:11:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_set_$3067_storage",
                          "typeString": "struct LibSet_bytes4.set storage ref"
                        }
                      },
                      "id": 2950,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "add",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3178,
                      "src": "1463:15:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_set_$3067_storage_ptr_$_t_bytes4_$returns$_t_bool_$bound_to$_t_struct$_set_$3067_storage_ptr_$",
                        "typeString": "function (struct LibSet_bytes4.set storage pointer,bytes4) returns (bool)"
                      }
                    },
                    "id": 2952,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1463:21:31",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2953,
                  "nodeType": "ExpressionStatement",
                  "src": "1463:21:31"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2960,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2954,
                          "name": "_map",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2935,
                          "src": "1488:4:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_map_$2796_storage_ptr",
                            "typeString": "struct LibMap2_bytes4_address_bytes.map storage pointer"
                          }
                        },
                        "id": 2957,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "values1",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2791,
                        "src": "1488:12:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes4_$_t_address_$",
                          "typeString": "mapping(bytes4 => address)"
                        }
                      },
                      "id": 2958,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 2956,
                        "name": "_key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2937,
                        "src": "1501:4:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "1488:18:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2959,
                      "name": "_value1",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2939,
                      "src": "1509:7:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "1488:28:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 2961,
                  "nodeType": "ExpressionStatement",
                  "src": "1488:28:31"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2968,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2962,
                          "name": "_map",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2935,
                          "src": "1520:4:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_map_$2796_storage_ptr",
                            "typeString": "struct LibMap2_bytes4_address_bytes.map storage pointer"
                          }
                        },
                        "id": 2965,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "values2",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2795,
                        "src": "1520:12:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes4_$_t_bytes_storage_$",
                          "typeString": "mapping(bytes4 => bytes storage ref)"
                        }
                      },
                      "id": 2966,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 2964,
                        "name": "_key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2937,
                        "src": "1533:4:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "1520:18:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage",
                        "typeString": "bytes storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2967,
                      "name": "_value2",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2941,
                      "src": "1541:7:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes memory"
                      }
                    },
                    "src": "1520:28:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage",
                      "typeString": "bytes storage ref"
                    }
                  },
                  "id": 2969,
                  "nodeType": "ExpressionStatement",
                  "src": "1520:28:31"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "74727565",
                    "id": 2970,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1559:4:31",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "true"
                  },
                  "functionReturnParameters": 2945,
                  "id": 2971,
                  "nodeType": "Return",
                  "src": "1552:11:31"
                }
              ]
            },
            "documentation": null,
            "id": 2973,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "set",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 2942,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2935,
                  "mutability": "mutable",
                  "name": "_map",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2973,
                  "src": "1355:16:31",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_map_$2796_storage_ptr",
                    "typeString": "struct LibMap2_bytes4_address_bytes.map"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2934,
                    "name": "map",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2796,
                    "src": "1355:3:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_map_$2796_storage_ptr",
                      "typeString": "struct LibMap2_bytes4_address_bytes.map"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2937,
                  "mutability": "mutable",
                  "name": "_key",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2973,
                  "src": "1375:12:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 2936,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "1375:6:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2939,
                  "mutability": "mutable",
                  "name": "_value1",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2973,
                  "src": "1391:16:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2938,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1391:7:31",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2941,
                  "mutability": "mutable",
                  "name": "_value2",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2973,
                  "src": "1411:20:31",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 2940,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1411:5:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1351:81:31"
            },
            "returnParameters": {
              "id": 2945,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2944,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2973,
                  "src": "1452:4:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 2943,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1452:4:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1451:6:31"
            },
            "scope": 3057,
            "src": "1339:228:31",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3004,
              "nodeType": "Block",
              "src": "1641:105:31",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2987,
                        "name": "_key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2977,
                        "src": "1664:4:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2982,
                          "name": "_map",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2975,
                          "src": "1645:4:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_map_$2796_storage_ptr",
                            "typeString": "struct LibMap2_bytes4_address_bytes.map storage pointer"
                          }
                        },
                        "id": 2985,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "keyset",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2787,
                        "src": "1645:11:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_set_$3067_storage",
                          "typeString": "struct LibSet_bytes4.set storage ref"
                        }
                      },
                      "id": 2986,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "remove",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3257,
                      "src": "1645:18:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_set_$3067_storage_ptr_$_t_bytes4_$returns$_t_bool_$bound_to$_t_struct$_set_$3067_storage_ptr_$",
                        "typeString": "function (struct LibSet_bytes4.set storage pointer,bytes4) returns (bool)"
                      }
                    },
                    "id": 2988,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1645:24:31",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2989,
                  "nodeType": "ExpressionStatement",
                  "src": "1645:24:31"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2994,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "delete",
                    "prefix": true,
                    "src": "1673:25:31",
                    "subExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2990,
                          "name": "_map",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2975,
                          "src": "1680:4:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_map_$2796_storage_ptr",
                            "typeString": "struct LibMap2_bytes4_address_bytes.map storage pointer"
                          }
                        },
                        "id": 2991,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "values1",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2791,
                        "src": "1680:12:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes4_$_t_address_$",
                          "typeString": "mapping(bytes4 => address)"
                        }
                      },
                      "id": 2993,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 2992,
                        "name": "_key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2977,
                        "src": "1693:4:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "1680:18:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2995,
                  "nodeType": "ExpressionStatement",
                  "src": "1673:25:31"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3000,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "delete",
                    "prefix": true,
                    "src": "1702:25:31",
                    "subExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2996,
                          "name": "_map",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2975,
                          "src": "1709:4:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_map_$2796_storage_ptr",
                            "typeString": "struct LibMap2_bytes4_address_bytes.map storage pointer"
                          }
                        },
                        "id": 2997,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "values2",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2795,
                        "src": "1709:12:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes4_$_t_bytes_storage_$",
                          "typeString": "mapping(bytes4 => bytes storage ref)"
                        }
                      },
                      "id": 2999,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 2998,
                        "name": "_key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2977,
                        "src": "1722:4:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "1709:18:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage",
                        "typeString": "bytes storage ref"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3001,
                  "nodeType": "ExpressionStatement",
                  "src": "1702:25:31"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "74727565",
                    "id": 3002,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1738:4:31",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "true"
                  },
                  "functionReturnParameters": 2981,
                  "id": 3003,
                  "nodeType": "Return",
                  "src": "1731:11:31"
                }
              ]
            },
            "documentation": null,
            "id": 3005,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "del",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 2978,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2975,
                  "mutability": "mutable",
                  "name": "_map",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3005,
                  "src": "1583:16:31",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_map_$2796_storage_ptr",
                    "typeString": "struct LibMap2_bytes4_address_bytes.map"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2974,
                    "name": "map",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2796,
                    "src": "1583:3:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_map_$2796_storage_ptr",
                      "typeString": "struct LibMap2_bytes4_address_bytes.map"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2977,
                  "mutability": "mutable",
                  "name": "_key",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3005,
                  "src": "1601:12:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 2976,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "1601:6:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1582:32:31"
            },
            "returnParameters": {
              "id": 2981,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2980,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3005,
                  "src": "1634:4:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 2979,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1634:4:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1633:6:31"
            },
            "scope": 3057,
            "src": "1570:176:31",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3055,
              "nodeType": "Block",
              "src": "1808:194:31",
              "statements": [
                {
                  "body": {
                    "id": 3044,
                    "nodeType": "Block",
                    "src": "1865:96:31",
                    "statements": [
                      {
                        "assignments": [
                          3026
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3026,
                            "mutability": "mutable",
                            "name": "key",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 3044,
                            "src": "1870:11:31",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            },
                            "typeName": {
                              "id": 3025,
                              "name": "bytes4",
                              "nodeType": "ElementaryTypeName",
                              "src": "1870:6:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3031,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3028,
                              "name": "_map",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3007,
                              "src": "1890:4:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_map_$2796_storage_ptr",
                                "typeString": "struct LibMap2_bytes4_address_bytes.map storage pointer"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3029,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3013,
                              "src": "1896:1:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_map_$2796_storage_ptr",
                                "typeString": "struct LibMap2_bytes4_address_bytes.map storage pointer"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3027,
                            "name": "keyAt",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2855,
                            "src": "1884:5:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_struct$_map_$2796_storage_ptr_$_t_uint256_$returns$_t_bytes4_$",
                              "typeString": "function (struct LibMap2_bytes4_address_bytes.map storage pointer,uint256) view returns (bytes4)"
                            }
                          },
                          "id": 3030,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1884:14:31",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1870:28:31"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3036,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "delete",
                          "prefix": true,
                          "src": "1903:24:31",
                          "subExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 3032,
                                "name": "_map",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3007,
                                "src": "1910:4:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_map_$2796_storage_ptr",
                                  "typeString": "struct LibMap2_bytes4_address_bytes.map storage pointer"
                                }
                              },
                              "id": 3033,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "values1",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2791,
                              "src": "1910:12:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes4_$_t_address_$",
                                "typeString": "mapping(bytes4 => address)"
                              }
                            },
                            "id": 3035,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 3034,
                              "name": "key",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3026,
                              "src": "1923:3:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "1910:17:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3037,
                        "nodeType": "ExpressionStatement",
                        "src": "1903:24:31"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3042,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "delete",
                          "prefix": true,
                          "src": "1932:24:31",
                          "subExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 3038,
                                "name": "_map",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3007,
                                "src": "1939:4:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_map_$2796_storage_ptr",
                                  "typeString": "struct LibMap2_bytes4_address_bytes.map storage pointer"
                                }
                              },
                              "id": 3039,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "values2",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2795,
                              "src": "1939:12:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes4_$_t_bytes_storage_$",
                                "typeString": "mapping(bytes4 => bytes storage ref)"
                              }
                            },
                            "id": 3041,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 3040,
                              "name": "key",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3026,
                              "src": "1952:3:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "1939:17:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage",
                              "typeString": "bytes storage ref"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3043,
                        "nodeType": "ExpressionStatement",
                        "src": "1932:24:31"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3021,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 3019,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3013,
                      "src": "1851:1:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 3020,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1855:1:31",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "1851:5:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3045,
                  "initializationExpression": {
                    "assignments": [
                      3013
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 3013,
                        "mutability": "mutable",
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3045,
                        "src": "1817:9:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3012,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1817:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 3018,
                    "initialValue": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3014,
                            "name": "_map",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3007,
                            "src": "1829:4:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_map_$2796_storage_ptr",
                              "typeString": "struct LibMap2_bytes4_address_bytes.map storage pointer"
                            }
                          },
                          "id": 3015,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "keyset",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2787,
                          "src": "1829:11:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_set_$3067_storage",
                            "typeString": "struct LibSet_bytes4.set storage ref"
                          }
                        },
                        "id": 3016,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "length",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3079,
                        "src": "1829:18:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_struct$_set_$3067_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_set_$3067_storage_ptr_$",
                          "typeString": "function (struct LibSet_bytes4.set storage pointer) view returns (uint256)"
                        }
                      },
                      "id": 3017,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1829:20:31",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "1817:32:31"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 3023,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "--",
                      "prefix": true,
                      "src": "1858:3:31",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 3022,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3013,
                        "src": "1860:1:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 3024,
                    "nodeType": "ExpressionStatement",
                    "src": "1858:3:31"
                  },
                  "nodeType": "ForStatement",
                  "src": "1812:149:31"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3046,
                          "name": "_map",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3007,
                          "src": "1964:4:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_map_$2796_storage_ptr",
                            "typeString": "struct LibMap2_bytes4_address_bytes.map storage pointer"
                          }
                        },
                        "id": 3049,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "keyset",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2787,
                        "src": "1964:11:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_set_$3067_storage",
                          "typeString": "struct LibSet_bytes4.set storage ref"
                        }
                      },
                      "id": 3050,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "clear",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3302,
                      "src": "1964:17:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_set_$3067_storage_ptr_$returns$_t_bool_$bound_to$_t_struct$_set_$3067_storage_ptr_$",
                        "typeString": "function (struct LibSet_bytes4.set storage pointer) returns (bool)"
                      }
                    },
                    "id": 3051,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1964:19:31",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3052,
                  "nodeType": "ExpressionStatement",
                  "src": "1964:19:31"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "74727565",
                    "id": 3053,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1994:4:31",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "true"
                  },
                  "functionReturnParameters": 3011,
                  "id": 3054,
                  "nodeType": "Return",
                  "src": "1987:11:31"
                }
              ]
            },
            "documentation": null,
            "id": 3056,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "clear",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 3008,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3007,
                  "mutability": "mutable",
                  "name": "_map",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3056,
                  "src": "1764:16:31",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_map_$2796_storage_ptr",
                    "typeString": "struct LibMap2_bytes4_address_bytes.map"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 3006,
                    "name": "map",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2796,
                    "src": "1764:3:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_map_$2796_storage_ptr",
                      "typeString": "struct LibMap2_bytes4_address_bytes.map"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1763:18:31"
            },
            "returnParameters": {
              "id": 3011,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3010,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3056,
                  "src": "1801:4:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 3009,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1801:4:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1800:6:31"
            },
            "scope": 3057,
            "src": "1749:253:31",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          }
        ],
        "scope": 3058,
        "src": "96:1908:31"
      }
    ],
    "src": "33:1972:31"
  },
  "legacyAST": {
    "absolutePath": "solstruct/contracts/libs/LibMap2.bytes4.address.bytes.sol",
    "exportedSymbols": {
      "LibMap2_bytes4_address_bytes": [
        3057
      ]
    },
    "id": 3058,
    "license": "MIT",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 2781,
        "literals": [
          "solidity",
          ">",
          "0.5",
          ".0",
          "<",
          "0.8",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "33:30:31"
      },
      {
        "absolutePath": "solstruct/contracts/libs/LibSet.bytes4.sol",
        "file": "./LibSet.bytes4.sol",
        "id": 2782,
        "nodeType": "ImportDirective",
        "scope": 3058,
        "sourceUnit": 3304,
        "src": "65:29:31",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "library",
        "documentation": null,
        "fullyImplemented": true,
        "id": 3057,
        "linearizedBaseContracts": [
          3057
        ],
        "name": "LibMap2_bytes4_address_bytes",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 2785,
            "libraryName": {
              "contractScope": null,
              "id": 2783,
              "name": "LibSet_bytes4",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 3303,
              "src": "142:13:31",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_LibSet_bytes4_$3303",
                "typeString": "library LibSet_bytes4"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "136:42:31",
            "typeName": {
              "contractScope": null,
              "id": 2784,
              "name": "LibSet_bytes4.set",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 3067,
              "src": "160:17:31",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_set_$3067_storage_ptr",
                "typeString": "struct LibSet_bytes4.set"
              }
            }
          },
          {
            "canonicalName": "LibMap2_bytes4_address_bytes.map",
            "id": 2796,
            "members": [
              {
                "constant": false,
                "id": 2787,
                "mutability": "mutable",
                "name": "keyset",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 2796,
                "src": "197:24:31",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_set_$3067_storage_ptr",
                  "typeString": "struct LibSet_bytes4.set"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 2786,
                  "name": "LibSet_bytes4.set",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 3067,
                  "src": "197:17:31",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_set_$3067_storage_ptr",
                    "typeString": "struct LibSet_bytes4.set"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2791,
                "mutability": "mutable",
                "name": "values1",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 2796,
                "src": "225:34:31",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_bytes4_$_t_address_$",
                  "typeString": "mapping(bytes4 => address)"
                },
                "typeName": {
                  "id": 2790,
                  "keyType": {
                    "id": 2788,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "233:6:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "225:26:31",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_bytes4_$_t_address_$",
                    "typeString": "mapping(bytes4 => address)"
                  },
                  "valueType": {
                    "id": 2789,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "243:7:31",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2795,
                "mutability": "mutable",
                "name": "values2",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 2796,
                "src": "263:32:31",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_bytes4_$_t_bytes_storage_$",
                  "typeString": "mapping(bytes4 => bytes)"
                },
                "typeName": {
                  "id": 2794,
                  "keyType": {
                    "id": 2792,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "271:6:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "263:24:31",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_bytes4_$_t_bytes_storage_$",
                    "typeString": "mapping(bytes4 => bytes)"
                  },
                  "valueType": {
                    "id": 2793,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "281:5:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "map",
            "nodeType": "StructDefinition",
            "scope": 3057,
            "src": "181:118:31",
            "visibility": "public"
          },
          {
            "body": {
              "id": 2808,
              "nodeType": "Block",
              "src": "370:35:31",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2803,
                          "name": "_map",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2798,
                          "src": "381:4:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_map_$2796_storage_ptr",
                            "typeString": "struct LibMap2_bytes4_address_bytes.map storage pointer"
                          }
                        },
                        "id": 2804,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "keyset",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2787,
                        "src": "381:11:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_set_$3067_storage",
                          "typeString": "struct LibSet_bytes4.set storage ref"
                        }
                      },
                      "id": 2805,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3079,
                      "src": "381:18:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_set_$3067_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_set_$3067_storage_ptr_$",
                        "typeString": "function (struct LibSet_bytes4.set storage pointer) view returns (uint256)"
                      }
                    },
                    "id": 2806,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "381:20:31",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 2802,
                  "id": 2807,
                  "nodeType": "Return",
                  "src": "374:27:31"
                }
              ]
            },
            "documentation": null,
            "id": 2809,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "length",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 2799,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2798,
                  "mutability": "mutable",
                  "name": "_map",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2809,
                  "src": "318:16:31",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_map_$2796_storage_ptr",
                    "typeString": "struct LibMap2_bytes4_address_bytes.map"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2797,
                    "name": "map",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2796,
                    "src": "318:3:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_map_$2796_storage_ptr",
                      "typeString": "struct LibMap2_bytes4_address_bytes.map"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "317:18:31"
            },
            "returnParameters": {
              "id": 2802,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2801,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2809,
                  "src": "360:7:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2800,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "360:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "359:9:31"
            },
            "scope": 3057,
            "src": "302:103:31",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2823,
              "nodeType": "Block",
              "src": "491:33:31",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2818,
                        "name": "_map",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2811,
                        "src": "502:4:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_map_$2796_storage_ptr",
                          "typeString": "struct LibMap2_bytes4_address_bytes.map storage pointer"
                        }
                      },
                      "id": 2819,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "values1",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2791,
                      "src": "502:12:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes4_$_t_address_$",
                        "typeString": "mapping(bytes4 => address)"
                      }
                    },
                    "id": 2821,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 2820,
                      "name": "_key",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2813,
                      "src": "515:4:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "502:18:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 2817,
                  "id": 2822,
                  "nodeType": "Return",
                  "src": "495:25:31"
                }
              ]
            },
            "documentation": null,
            "id": 2824,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "value1",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 2814,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2811,
                  "mutability": "mutable",
                  "name": "_map",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2824,
                  "src": "424:16:31",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_map_$2796_storage_ptr",
                    "typeString": "struct LibMap2_bytes4_address_bytes.map"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2810,
                    "name": "map",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2796,
                    "src": "424:3:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_map_$2796_storage_ptr",
                      "typeString": "struct LibMap2_bytes4_address_bytes.map"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2813,
                  "mutability": "mutable",
                  "name": "_key",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2824,
                  "src": "442:12:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 2812,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "442:6:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "423:32:31"
            },
            "returnParameters": {
              "id": 2817,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2816,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2824,
                  "src": "480:7:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2815,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "480:7:31",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "479:10:31"
            },
            "scope": 3057,
            "src": "408:116:31",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2838,
              "nodeType": "Block",
              "src": "614:33:31",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2833,
                        "name": "_map",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2826,
                        "src": "625:4:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_map_$2796_storage_ptr",
                          "typeString": "struct LibMap2_bytes4_address_bytes.map storage pointer"
                        }
                      },
                      "id": 2834,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "values2",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2795,
                      "src": "625:12:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes4_$_t_bytes_storage_$",
                        "typeString": "mapping(bytes4 => bytes storage ref)"
                      }
                    },
                    "id": 2836,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 2835,
                      "name": "_key",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2828,
                      "src": "638:4:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "625:18:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage",
                      "typeString": "bytes storage ref"
                    }
                  },
                  "functionReturnParameters": 2832,
                  "id": 2837,
                  "nodeType": "Return",
                  "src": "618:25:31"
                }
              ]
            },
            "documentation": null,
            "id": 2839,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "value2",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 2829,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2826,
                  "mutability": "mutable",
                  "name": "_map",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2839,
                  "src": "543:16:31",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_map_$2796_storage_ptr",
                    "typeString": "struct LibMap2_bytes4_address_bytes.map"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2825,
                    "name": "map",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2796,
                    "src": "543:3:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_map_$2796_storage_ptr",
                      "typeString": "struct LibMap2_bytes4_address_bytes.map"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2828,
                  "mutability": "mutable",
                  "name": "_key",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2839,
                  "src": "561:12:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 2827,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "561:6:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "542:32:31"
            },
            "returnParameters": {
              "id": 2832,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2831,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2839,
                  "src": "599:12:31",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 2830,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "599:5:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "598:14:31"
            },
            "scope": 3057,
            "src": "527:120:31",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2854,
              "nodeType": "Block",
              "src": "733:37:31",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2851,
                        "name": "_index",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2843,
                        "src": "759:6:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2848,
                          "name": "_map",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2841,
                          "src": "744:4:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_map_$2796_storage_ptr",
                            "typeString": "struct LibMap2_bytes4_address_bytes.map storage pointer"
                          }
                        },
                        "id": 2849,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "keyset",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2787,
                        "src": "744:11:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_set_$3067_storage",
                          "typeString": "struct LibSet_bytes4.set storage ref"
                        }
                      },
                      "id": 2850,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "at",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3096,
                      "src": "744:14:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_set_$3067_storage_ptr_$_t_uint256_$returns$_t_bytes4_$bound_to$_t_struct$_set_$3067_storage_ptr_$",
                        "typeString": "function (struct LibSet_bytes4.set storage pointer,uint256) view returns (bytes4)"
                      }
                    },
                    "id": 2852,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "744:22:31",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "functionReturnParameters": 2847,
                  "id": 2853,
                  "nodeType": "Return",
                  "src": "737:29:31"
                }
              ]
            },
            "documentation": null,
            "id": 2855,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "keyAt",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 2844,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2841,
                  "mutability": "mutable",
                  "name": "_map",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2855,
                  "src": "665:16:31",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_map_$2796_storage_ptr",
                    "typeString": "struct LibMap2_bytes4_address_bytes.map"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2840,
                    "name": "map",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2796,
                    "src": "665:3:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_map_$2796_storage_ptr",
                      "typeString": "struct LibMap2_bytes4_address_bytes.map"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2843,
                  "mutability": "mutable",
                  "name": "_index",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2855,
                  "src": "683:14:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2842,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "683:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "664:34:31"
            },
            "returnParameters": {
              "id": 2847,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2846,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2855,
                  "src": "723:6:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 2845,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "723:6:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "722:9:31"
            },
            "scope": 3057,
            "src": "650:120:31",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2886,
              "nodeType": "Block",
              "src": "877:95:31",
              "statements": [
                {
                  "assignments": [
                    2869
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2869,
                      "mutability": "mutable",
                      "name": "key",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2886,
                      "src": "881:11:31",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      },
                      "typeName": {
                        "id": 2868,
                        "name": "bytes4",
                        "nodeType": "ElementaryTypeName",
                        "src": "881:6:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2874,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2871,
                        "name": "_map",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2857,
                        "src": "901:4:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_map_$2796_storage_ptr",
                          "typeString": "struct LibMap2_bytes4_address_bytes.map storage pointer"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2872,
                        "name": "_index",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2859,
                        "src": "907:6:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_map_$2796_storage_ptr",
                          "typeString": "struct LibMap2_bytes4_address_bytes.map storage pointer"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 2870,
                      "name": "keyAt",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2855,
                      "src": "895:5:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_map_$2796_storage_ptr_$_t_uint256_$returns$_t_bytes4_$",
                        "typeString": "function (struct LibMap2_bytes4_address_bytes.map storage pointer,uint256) view returns (bytes4)"
                      }
                    },
                    "id": 2873,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "895:19:31",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "881:33:31"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "id": 2875,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2869,
                        "src": "926:3:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2877,
                            "name": "_map",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2857,
                            "src": "938:4:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_map_$2796_storage_ptr",
                              "typeString": "struct LibMap2_bytes4_address_bytes.map storage pointer"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2878,
                            "name": "key",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2869,
                            "src": "944:3:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_struct$_map_$2796_storage_ptr",
                              "typeString": "struct LibMap2_bytes4_address_bytes.map storage pointer"
                            },
                            {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          ],
                          "id": 2876,
                          "name": "value1",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2824,
                          "src": "931:6:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_struct$_map_$2796_storage_ptr_$_t_bytes4_$returns$_t_address_$",
                            "typeString": "function (struct LibMap2_bytes4_address_bytes.map storage pointer,bytes4) view returns (address)"
                          }
                        },
                        "id": 2879,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "931:17:31",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2881,
                            "name": "_map",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2857,
                            "src": "957:4:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_map_$2796_storage_ptr",
                              "typeString": "struct LibMap2_bytes4_address_bytes.map storage pointer"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2882,
                            "name": "key",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2869,
                            "src": "963:3:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_struct$_map_$2796_storage_ptr",
                              "typeString": "struct LibMap2_bytes4_address_bytes.map storage pointer"
                            },
                            {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          ],
                          "id": 2880,
                          "name": "value2",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2839,
                          "src": "950:6:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_struct$_map_$2796_storage_ptr_$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (struct LibMap2_bytes4_address_bytes.map storage pointer,bytes4) view returns (bytes memory)"
                          }
                        },
                        "id": 2883,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "950:17:31",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "id": 2884,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "925:43:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bytes4_$_t_address_$_t_bytes_memory_ptr_$",
                      "typeString": "tuple(bytes4,address,bytes memory)"
                    }
                  },
                  "functionReturnParameters": 2867,
                  "id": 2885,
                  "nodeType": "Return",
                  "src": "918:50:31"
                }
              ]
            },
            "documentation": null,
            "id": 2887,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "at",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 2860,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2857,
                  "mutability": "mutable",
                  "name": "_map",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2887,
                  "src": "785:16:31",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_map_$2796_storage_ptr",
                    "typeString": "struct LibMap2_bytes4_address_bytes.map"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2856,
                    "name": "map",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2796,
                    "src": "785:3:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_map_$2796_storage_ptr",
                      "typeString": "struct LibMap2_bytes4_address_bytes.map"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2859,
                  "mutability": "mutable",
                  "name": "_index",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2887,
                  "src": "803:14:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2858,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "803:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "784:34:31"
            },
            "returnParameters": {
              "id": 2867,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2862,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2887,
                  "src": "843:6:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 2861,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "843:6:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2864,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2887,
                  "src": "852:7:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2863,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "852:7:31",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2866,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2887,
                  "src": "862:12:31",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 2865,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "862:5:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "842:33:31"
            },
            "scope": 3057,
            "src": "773:199:31",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2902,
              "nodeType": "Block",
              "src": "1058:40:31",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2899,
                        "name": "_key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2891,
                        "src": "1089:4:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2896,
                          "name": "_map",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2889,
                          "src": "1069:4:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_map_$2796_storage_ptr",
                            "typeString": "struct LibMap2_bytes4_address_bytes.map storage pointer"
                          }
                        },
                        "id": 2897,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "keyset",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2787,
                        "src": "1069:11:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_set_$3067_storage",
                          "typeString": "struct LibSet_bytes4.set storage ref"
                        }
                      },
                      "id": 2898,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "indexOf",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3111,
                      "src": "1069:19:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_set_$3067_storage_ptr_$_t_bytes4_$returns$_t_uint256_$bound_to$_t_struct$_set_$3067_storage_ptr_$",
                        "typeString": "function (struct LibSet_bytes4.set storage pointer,bytes4) view returns (uint256)"
                      }
                    },
                    "id": 2900,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1069:25:31",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 2895,
                  "id": 2901,
                  "nodeType": "Return",
                  "src": "1062:32:31"
                }
              ]
            },
            "documentation": null,
            "id": 2903,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "indexOf",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 2892,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2889,
                  "mutability": "mutable",
                  "name": "_map",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2903,
                  "src": "992:16:31",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_map_$2796_storage_ptr",
                    "typeString": "struct LibMap2_bytes4_address_bytes.map"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2888,
                    "name": "map",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2796,
                    "src": "992:3:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_map_$2796_storage_ptr",
                      "typeString": "struct LibMap2_bytes4_address_bytes.map"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2891,
                  "mutability": "mutable",
                  "name": "_key",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2903,
                  "src": "1010:12:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 2890,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "1010:6:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "991:32:31"
            },
            "returnParameters": {
              "id": 2895,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2894,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2903,
                  "src": "1048:7:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2893,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1048:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1047:9:31"
            },
            "scope": 3057,
            "src": "975:123:31",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2918,
              "nodeType": "Block",
              "src": "1182:41:31",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2915,
                        "name": "_key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2907,
                        "src": "1214:4:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2912,
                          "name": "_map",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2905,
                          "src": "1193:4:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_map_$2796_storage_ptr",
                            "typeString": "struct LibMap2_bytes4_address_bytes.map storage pointer"
                          }
                        },
                        "id": 2913,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "keyset",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2787,
                        "src": "1193:11:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_set_$3067_storage",
                          "typeString": "struct LibSet_bytes4.set storage ref"
                        }
                      },
                      "id": 2914,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "contains",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3128,
                      "src": "1193:20:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_set_$3067_storage_ptr_$_t_bytes4_$returns$_t_bool_$bound_to$_t_struct$_set_$3067_storage_ptr_$",
                        "typeString": "function (struct LibSet_bytes4.set storage pointer,bytes4) view returns (bool)"
                      }
                    },
                    "id": 2916,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1193:26:31",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 2911,
                  "id": 2917,
                  "nodeType": "Return",
                  "src": "1186:33:31"
                }
              ]
            },
            "documentation": null,
            "id": 2919,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "contains",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 2908,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2905,
                  "mutability": "mutable",
                  "name": "_map",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2919,
                  "src": "1119:16:31",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_map_$2796_storage_ptr",
                    "typeString": "struct LibMap2_bytes4_address_bytes.map"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2904,
                    "name": "map",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2796,
                    "src": "1119:3:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_map_$2796_storage_ptr",
                      "typeString": "struct LibMap2_bytes4_address_bytes.map"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2907,
                  "mutability": "mutable",
                  "name": "_key",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2919,
                  "src": "1137:12:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 2906,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "1137:6:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1118:32:31"
            },
            "returnParameters": {
              "id": 2911,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2910,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2919,
                  "src": "1175:4:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 2909,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1175:4:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1174:6:31"
            },
            "scope": 3057,
            "src": "1101:122:31",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2932,
              "nodeType": "Block",
              "src": "1300:36:31",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2927,
                          "name": "_map",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2921,
                          "src": "1311:4:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_map_$2796_storage_ptr",
                            "typeString": "struct LibMap2_bytes4_address_bytes.map storage pointer"
                          }
                        },
                        "id": 2928,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "keyset",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2787,
                        "src": "1311:11:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_set_$3067_storage",
                          "typeString": "struct LibSet_bytes4.set storage ref"
                        }
                      },
                      "id": 2929,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "content",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3140,
                      "src": "1311:19:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_set_$3067_storage_ptr_$returns$_t_array$_t_bytes4_$dyn_memory_ptr_$bound_to$_t_struct$_set_$3067_storage_ptr_$",
                        "typeString": "function (struct LibSet_bytes4.set storage pointer) view returns (bytes4[] memory)"
                      }
                    },
                    "id": 2930,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1311:21:31",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                      "typeString": "bytes4[] memory"
                    }
                  },
                  "functionReturnParameters": 2926,
                  "id": 2931,
                  "nodeType": "Return",
                  "src": "1304:28:31"
                }
              ]
            },
            "documentation": null,
            "id": 2933,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "keys",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 2922,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2921,
                  "mutability": "mutable",
                  "name": "_map",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2933,
                  "src": "1240:16:31",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_map_$2796_storage_ptr",
                    "typeString": "struct LibMap2_bytes4_address_bytes.map"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2920,
                    "name": "map",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2796,
                    "src": "1240:3:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_map_$2796_storage_ptr",
                      "typeString": "struct LibMap2_bytes4_address_bytes.map"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1239:18:31"
            },
            "returnParameters": {
              "id": 2926,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2925,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2933,
                  "src": "1282:15:31",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                    "typeString": "bytes4[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2923,
                      "name": "bytes4",
                      "nodeType": "ElementaryTypeName",
                      "src": "1282:6:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      }
                    },
                    "id": 2924,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "1282:8:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes4_$dyn_storage_ptr",
                      "typeString": "bytes4[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1281:17:31"
            },
            "scope": 3057,
            "src": "1226:110:31",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2972,
              "nodeType": "Block",
              "src": "1459:108:31",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2951,
                        "name": "_key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2937,
                        "src": "1479:4:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2946,
                          "name": "_map",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2935,
                          "src": "1463:4:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_map_$2796_storage_ptr",
                            "typeString": "struct LibMap2_bytes4_address_bytes.map storage pointer"
                          }
                        },
                        "id": 2949,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "keyset",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2787,
                        "src": "1463:11:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_set_$3067_storage",
                          "typeString": "struct LibSet_bytes4.set storage ref"
                        }
                      },
                      "id": 2950,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "add",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3178,
                      "src": "1463:15:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_set_$3067_storage_ptr_$_t_bytes4_$returns$_t_bool_$bound_to$_t_struct$_set_$3067_storage_ptr_$",
                        "typeString": "function (struct LibSet_bytes4.set storage pointer,bytes4) returns (bool)"
                      }
                    },
                    "id": 2952,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1463:21:31",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2953,
                  "nodeType": "ExpressionStatement",
                  "src": "1463:21:31"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2960,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2954,
                          "name": "_map",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2935,
                          "src": "1488:4:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_map_$2796_storage_ptr",
                            "typeString": "struct LibMap2_bytes4_address_bytes.map storage pointer"
                          }
                        },
                        "id": 2957,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "values1",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2791,
                        "src": "1488:12:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes4_$_t_address_$",
                          "typeString": "mapping(bytes4 => address)"
                        }
                      },
                      "id": 2958,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 2956,
                        "name": "_key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2937,
                        "src": "1501:4:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "1488:18:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2959,
                      "name": "_value1",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2939,
                      "src": "1509:7:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "1488:28:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 2961,
                  "nodeType": "ExpressionStatement",
                  "src": "1488:28:31"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2968,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2962,
                          "name": "_map",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2935,
                          "src": "1520:4:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_map_$2796_storage_ptr",
                            "typeString": "struct LibMap2_bytes4_address_bytes.map storage pointer"
                          }
                        },
                        "id": 2965,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "values2",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2795,
                        "src": "1520:12:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes4_$_t_bytes_storage_$",
                          "typeString": "mapping(bytes4 => bytes storage ref)"
                        }
                      },
                      "id": 2966,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 2964,
                        "name": "_key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2937,
                        "src": "1533:4:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "1520:18:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage",
                        "typeString": "bytes storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2967,
                      "name": "_value2",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2941,
                      "src": "1541:7:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes memory"
                      }
                    },
                    "src": "1520:28:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage",
                      "typeString": "bytes storage ref"
                    }
                  },
                  "id": 2969,
                  "nodeType": "ExpressionStatement",
                  "src": "1520:28:31"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "74727565",
                    "id": 2970,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1559:4:31",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "true"
                  },
                  "functionReturnParameters": 2945,
                  "id": 2971,
                  "nodeType": "Return",
                  "src": "1552:11:31"
                }
              ]
            },
            "documentation": null,
            "id": 2973,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "set",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 2942,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2935,
                  "mutability": "mutable",
                  "name": "_map",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2973,
                  "src": "1355:16:31",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_map_$2796_storage_ptr",
                    "typeString": "struct LibMap2_bytes4_address_bytes.map"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2934,
                    "name": "map",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2796,
                    "src": "1355:3:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_map_$2796_storage_ptr",
                      "typeString": "struct LibMap2_bytes4_address_bytes.map"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2937,
                  "mutability": "mutable",
                  "name": "_key",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2973,
                  "src": "1375:12:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 2936,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "1375:6:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2939,
                  "mutability": "mutable",
                  "name": "_value1",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2973,
                  "src": "1391:16:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2938,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1391:7:31",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2941,
                  "mutability": "mutable",
                  "name": "_value2",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2973,
                  "src": "1411:20:31",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 2940,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1411:5:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1351:81:31"
            },
            "returnParameters": {
              "id": 2945,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2944,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2973,
                  "src": "1452:4:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 2943,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1452:4:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1451:6:31"
            },
            "scope": 3057,
            "src": "1339:228:31",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3004,
              "nodeType": "Block",
              "src": "1641:105:31",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2987,
                        "name": "_key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2977,
                        "src": "1664:4:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2982,
                          "name": "_map",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2975,
                          "src": "1645:4:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_map_$2796_storage_ptr",
                            "typeString": "struct LibMap2_bytes4_address_bytes.map storage pointer"
                          }
                        },
                        "id": 2985,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "keyset",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2787,
                        "src": "1645:11:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_set_$3067_storage",
                          "typeString": "struct LibSet_bytes4.set storage ref"
                        }
                      },
                      "id": 2986,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "remove",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3257,
                      "src": "1645:18:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_set_$3067_storage_ptr_$_t_bytes4_$returns$_t_bool_$bound_to$_t_struct$_set_$3067_storage_ptr_$",
                        "typeString": "function (struct LibSet_bytes4.set storage pointer,bytes4) returns (bool)"
                      }
                    },
                    "id": 2988,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1645:24:31",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2989,
                  "nodeType": "ExpressionStatement",
                  "src": "1645:24:31"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2994,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "delete",
                    "prefix": true,
                    "src": "1673:25:31",
                    "subExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2990,
                          "name": "_map",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2975,
                          "src": "1680:4:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_map_$2796_storage_ptr",
                            "typeString": "struct LibMap2_bytes4_address_bytes.map storage pointer"
                          }
                        },
                        "id": 2991,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "values1",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2791,
                        "src": "1680:12:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes4_$_t_address_$",
                          "typeString": "mapping(bytes4 => address)"
                        }
                      },
                      "id": 2993,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 2992,
                        "name": "_key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2977,
                        "src": "1693:4:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "1680:18:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2995,
                  "nodeType": "ExpressionStatement",
                  "src": "1673:25:31"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3000,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "delete",
                    "prefix": true,
                    "src": "1702:25:31",
                    "subExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2996,
                          "name": "_map",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2975,
                          "src": "1709:4:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_map_$2796_storage_ptr",
                            "typeString": "struct LibMap2_bytes4_address_bytes.map storage pointer"
                          }
                        },
                        "id": 2997,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "values2",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2795,
                        "src": "1709:12:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes4_$_t_bytes_storage_$",
                          "typeString": "mapping(bytes4 => bytes storage ref)"
                        }
                      },
                      "id": 2999,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 2998,
                        "name": "_key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2977,
                        "src": "1722:4:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "1709:18:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage",
                        "typeString": "bytes storage ref"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3001,
                  "nodeType": "ExpressionStatement",
                  "src": "1702:25:31"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "74727565",
                    "id": 3002,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1738:4:31",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "true"
                  },
                  "functionReturnParameters": 2981,
                  "id": 3003,
                  "nodeType": "Return",
                  "src": "1731:11:31"
                }
              ]
            },
            "documentation": null,
            "id": 3005,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "del",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 2978,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2975,
                  "mutability": "mutable",
                  "name": "_map",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3005,
                  "src": "1583:16:31",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_map_$2796_storage_ptr",
                    "typeString": "struct LibMap2_bytes4_address_bytes.map"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2974,
                    "name": "map",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2796,
                    "src": "1583:3:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_map_$2796_storage_ptr",
                      "typeString": "struct LibMap2_bytes4_address_bytes.map"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2977,
                  "mutability": "mutable",
                  "name": "_key",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3005,
                  "src": "1601:12:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 2976,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "1601:6:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1582:32:31"
            },
            "returnParameters": {
              "id": 2981,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2980,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3005,
                  "src": "1634:4:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 2979,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1634:4:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1633:6:31"
            },
            "scope": 3057,
            "src": "1570:176:31",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3055,
              "nodeType": "Block",
              "src": "1808:194:31",
              "statements": [
                {
                  "body": {
                    "id": 3044,
                    "nodeType": "Block",
                    "src": "1865:96:31",
                    "statements": [
                      {
                        "assignments": [
                          3026
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3026,
                            "mutability": "mutable",
                            "name": "key",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 3044,
                            "src": "1870:11:31",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            },
                            "typeName": {
                              "id": 3025,
                              "name": "bytes4",
                              "nodeType": "ElementaryTypeName",
                              "src": "1870:6:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3031,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3028,
                              "name": "_map",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3007,
                              "src": "1890:4:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_map_$2796_storage_ptr",
                                "typeString": "struct LibMap2_bytes4_address_bytes.map storage pointer"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3029,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3013,
                              "src": "1896:1:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_map_$2796_storage_ptr",
                                "typeString": "struct LibMap2_bytes4_address_bytes.map storage pointer"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3027,
                            "name": "keyAt",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2855,
                            "src": "1884:5:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_struct$_map_$2796_storage_ptr_$_t_uint256_$returns$_t_bytes4_$",
                              "typeString": "function (struct LibMap2_bytes4_address_bytes.map storage pointer,uint256) view returns (bytes4)"
                            }
                          },
                          "id": 3030,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1884:14:31",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1870:28:31"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3036,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "delete",
                          "prefix": true,
                          "src": "1903:24:31",
                          "subExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 3032,
                                "name": "_map",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3007,
                                "src": "1910:4:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_map_$2796_storage_ptr",
                                  "typeString": "struct LibMap2_bytes4_address_bytes.map storage pointer"
                                }
                              },
                              "id": 3033,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "values1",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2791,
                              "src": "1910:12:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes4_$_t_address_$",
                                "typeString": "mapping(bytes4 => address)"
                              }
                            },
                            "id": 3035,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 3034,
                              "name": "key",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3026,
                              "src": "1923:3:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "1910:17:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3037,
                        "nodeType": "ExpressionStatement",
                        "src": "1903:24:31"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3042,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "delete",
                          "prefix": true,
                          "src": "1932:24:31",
                          "subExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 3038,
                                "name": "_map",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3007,
                                "src": "1939:4:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_map_$2796_storage_ptr",
                                  "typeString": "struct LibMap2_bytes4_address_bytes.map storage pointer"
                                }
                              },
                              "id": 3039,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "values2",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2795,
                              "src": "1939:12:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes4_$_t_bytes_storage_$",
                                "typeString": "mapping(bytes4 => bytes storage ref)"
                              }
                            },
                            "id": 3041,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 3040,
                              "name": "key",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3026,
                              "src": "1952:3:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "1939:17:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage",
                              "typeString": "bytes storage ref"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3043,
                        "nodeType": "ExpressionStatement",
                        "src": "1932:24:31"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3021,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 3019,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3013,
                      "src": "1851:1:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 3020,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1855:1:31",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "1851:5:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3045,
                  "initializationExpression": {
                    "assignments": [
                      3013
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 3013,
                        "mutability": "mutable",
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3045,
                        "src": "1817:9:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3012,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1817:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 3018,
                    "initialValue": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3014,
                            "name": "_map",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3007,
                            "src": "1829:4:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_map_$2796_storage_ptr",
                              "typeString": "struct LibMap2_bytes4_address_bytes.map storage pointer"
                            }
                          },
                          "id": 3015,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "keyset",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2787,
                          "src": "1829:11:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_set_$3067_storage",
                            "typeString": "struct LibSet_bytes4.set storage ref"
                          }
                        },
                        "id": 3016,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "length",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3079,
                        "src": "1829:18:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_struct$_set_$3067_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_set_$3067_storage_ptr_$",
                          "typeString": "function (struct LibSet_bytes4.set storage pointer) view returns (uint256)"
                        }
                      },
                      "id": 3017,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1829:20:31",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "1817:32:31"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 3023,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "--",
                      "prefix": true,
                      "src": "1858:3:31",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 3022,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3013,
                        "src": "1860:1:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 3024,
                    "nodeType": "ExpressionStatement",
                    "src": "1858:3:31"
                  },
                  "nodeType": "ForStatement",
                  "src": "1812:149:31"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3046,
                          "name": "_map",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3007,
                          "src": "1964:4:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_map_$2796_storage_ptr",
                            "typeString": "struct LibMap2_bytes4_address_bytes.map storage pointer"
                          }
                        },
                        "id": 3049,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "keyset",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2787,
                        "src": "1964:11:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_set_$3067_storage",
                          "typeString": "struct LibSet_bytes4.set storage ref"
                        }
                      },
                      "id": 3050,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "clear",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3302,
                      "src": "1964:17:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_set_$3067_storage_ptr_$returns$_t_bool_$bound_to$_t_struct$_set_$3067_storage_ptr_$",
                        "typeString": "function (struct LibSet_bytes4.set storage pointer) returns (bool)"
                      }
                    },
                    "id": 3051,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1964:19:31",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3052,
                  "nodeType": "ExpressionStatement",
                  "src": "1964:19:31"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "74727565",
                    "id": 3053,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1994:4:31",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "true"
                  },
                  "functionReturnParameters": 3011,
                  "id": 3054,
                  "nodeType": "Return",
                  "src": "1987:11:31"
                }
              ]
            },
            "documentation": null,
            "id": 3056,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "clear",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 3008,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3007,
                  "mutability": "mutable",
                  "name": "_map",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3056,
                  "src": "1764:16:31",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_map_$2796_storage_ptr",
                    "typeString": "struct LibMap2_bytes4_address_bytes.map"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 3006,
                    "name": "map",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2796,
                    "src": "1764:3:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_map_$2796_storage_ptr",
                      "typeString": "struct LibMap2_bytes4_address_bytes.map"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1763:18:31"
            },
            "returnParameters": {
              "id": 3011,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3010,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3056,
                  "src": "1801:4:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 3009,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1801:4:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1800:6:31"
            },
            "scope": 3057,
            "src": "1749:253:31",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          }
        ],
        "scope": 3058,
        "src": "96:1908:31"
      }
    ],
    "src": "33:1972:31"
  },
  "compiler": {
    "name": "solc",
    "version": "0.6.12+commit.27d51765.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.2.5",
  "updatedAt": "2023-05-04T08:29:47.220Z",
  "devdoc": {
    "kind": "dev",
    "methods": {},
    "version": 1
  },
  "userdoc": {
    "kind": "user",
    "methods": {},
    "version": 1
  }
}