{
  "contractName": "EnumerableSet",
  "abi": [],
  "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Library for managing https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive types. Sets have the following properties: - Elements are added, removed, and checked for existence in constant time (O(1)). - Elements are enumerated in O(n). No guarantees are made on the ordering. ``` contract Example {     // Add the library methods     using EnumerableSet for EnumerableSet.AddressSet;     // Declare a set state variable     EnumerableSet.AddressSet private mySet; } ``` As of v3.3.0, sets of type `bytes32` (`Bytes32Set`), `address` (`AddressSet`) and `uint256` (`UintSet`) are supported.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/EnumerableSet.sol\":\"EnumerableSet\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/EnumerableSet.sol\":{\"keccak256\":\"0x1562cd9922fbf739edfb979f506809e2743789cbde3177515542161c3d04b164\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4580d57781513d98870d9738c7d39094336e0a70cdb90d68dad549c6ced466ec\",\"dweb:/ipfs/Qmf9YZzzRFuvMnav9dgmeRUpdYMMECiZX8w25sHWVbA18V\"]}},\"version\":1}",
  "bytecode": "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220891a4d13d235b4848b426ddc7df9c0545fcd7927a94773117eb543b51a1c0b0364736f6c634300060c0033",
  "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220891a4d13d235b4848b426ddc7df9c0545fcd7927a94773117eb543b51a1c0b0364736f6c634300060c0033",
  "immutableReferences": {},
  "sourceMap": "753:8634:31:-:0;;;;;;;;;;;;;;;;;;;;;;;;;",
  "deployedSourceMap": "753:8634:31:-:0;;;;;;;;",
  "source": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.6.0 <0.8.0;\n\n/**\n * @dev Library for managing\n * https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive\n * types.\n *\n * Sets have the following properties:\n *\n * - Elements are added, removed, and checked for existence in constant time\n * (O(1)).\n * - Elements are enumerated in O(n). No guarantees are made on the ordering.\n *\n * ```\n * contract Example {\n *     // Add the library methods\n *     using EnumerableSet for EnumerableSet.AddressSet;\n *\n *     // Declare a set state variable\n *     EnumerableSet.AddressSet private mySet;\n * }\n * ```\n *\n * As of v3.3.0, sets of type `bytes32` (`Bytes32Set`), `address` (`AddressSet`)\n * and `uint256` (`UintSet`) are supported.\n */\nlibrary EnumerableSet {\n    // To implement this library for multiple types with as little code\n    // repetition as possible, we write it in terms of a generic Set type with\n    // bytes32 values.\n    // The Set implementation uses private functions, and user-facing\n    // implementations (such as AddressSet) are just wrappers around the\n    // underlying Set.\n    // This means that we can only create new EnumerableSets for types that fit\n    // in bytes32.\n\n    struct Set {\n        // Storage of set values\n        bytes32[] _values;\n\n        // Position of the value in the `values` array, plus 1 because index 0\n        // means a value is not in the set.\n        mapping (bytes32 => uint256) _indexes;\n    }\n\n    /**\n     * @dev Add a value to a set. O(1).\n     *\n     * Returns true if the value was added to the set, that is if it was not\n     * already present.\n     */\n    function _add(Set storage set, bytes32 value) private returns (bool) {\n        if (!_contains(set, value)) {\n            set._values.push(value);\n            // The value is stored at length-1, but we add 1 to all indexes\n            // and use 0 as a sentinel value\n            set._indexes[value] = set._values.length;\n            return true;\n        } else {\n            return false;\n        }\n    }\n\n    /**\n     * @dev Removes a value from a set. O(1).\n     *\n     * Returns true if the value was removed from the set, that is if it was\n     * present.\n     */\n    function _remove(Set storage set, bytes32 value) private returns (bool) {\n        // We read and store the value's index to prevent multiple reads from the same storage slot\n        uint256 valueIndex = set._indexes[value];\n\n        if (valueIndex != 0) { // Equivalent to contains(set, value)\n            // To delete an element from the _values array in O(1), we swap the element to delete with the last one in\n            // the array, and then remove the last element (sometimes called as 'swap and pop').\n            // This modifies the order of the array, as noted in {at}.\n\n            uint256 toDeleteIndex = valueIndex - 1;\n            uint256 lastIndex = set._values.length - 1;\n\n            // When the value to delete is the last one, the swap operation is unnecessary. However, since this occurs\n            // so rarely, we still do the swap anyway to avoid the gas cost of adding an 'if' statement.\n\n            bytes32 lastvalue = set._values[lastIndex];\n\n            // Move the last value to the index where the value to delete is\n            set._values[toDeleteIndex] = lastvalue;\n            // Update the index for the moved value\n            set._indexes[lastvalue] = toDeleteIndex + 1; // All indexes are 1-based\n\n            // Delete the slot where the moved value was stored\n            set._values.pop();\n\n            // Delete the index for the deleted slot\n            delete set._indexes[value];\n\n            return true;\n        } else {\n            return false;\n        }\n    }\n\n    /**\n     * @dev Returns true if the value is in the set. O(1).\n     */\n    function _contains(Set storage set, bytes32 value) private view returns (bool) {\n        return set._indexes[value] != 0;\n    }\n\n    /**\n     * @dev Returns the number of values on the set. O(1).\n     */\n    function _length(Set storage set) private view returns (uint256) {\n        return set._values.length;\n    }\n\n   /**\n    * @dev Returns the value stored at position `index` in the set. O(1).\n    *\n    * Note that there are no guarantees on the ordering of values inside the\n    * array, and it may change when more values are added or removed.\n    *\n    * Requirements:\n    *\n    * - `index` must be strictly less than {length}.\n    */\n    function _at(Set storage set, uint256 index) private view returns (bytes32) {\n        require(set._values.length > index, \"EnumerableSet: index out of bounds\");\n        return set._values[index];\n    }\n\n    // Bytes32Set\n\n    struct Bytes32Set {\n        Set _inner;\n    }\n\n    /**\n     * @dev Add a value to a set. O(1).\n     *\n     * Returns true if the value was added to the set, that is if it was not\n     * already present.\n     */\n    function add(Bytes32Set storage set, bytes32 value) internal returns (bool) {\n        return _add(set._inner, value);\n    }\n\n    /**\n     * @dev Removes a value from a set. O(1).\n     *\n     * Returns true if the value was removed from the set, that is if it was\n     * present.\n     */\n    function remove(Bytes32Set storage set, bytes32 value) internal returns (bool) {\n        return _remove(set._inner, value);\n    }\n\n    /**\n     * @dev Returns true if the value is in the set. O(1).\n     */\n    function contains(Bytes32Set storage set, bytes32 value) internal view returns (bool) {\n        return _contains(set._inner, value);\n    }\n\n    /**\n     * @dev Returns the number of values in the set. O(1).\n     */\n    function length(Bytes32Set storage set) internal view returns (uint256) {\n        return _length(set._inner);\n    }\n\n   /**\n    * @dev Returns the value stored at position `index` in the set. O(1).\n    *\n    * Note that there are no guarantees on the ordering of values inside the\n    * array, and it may change when more values are added or removed.\n    *\n    * Requirements:\n    *\n    * - `index` must be strictly less than {length}.\n    */\n    function at(Bytes32Set storage set, uint256 index) internal view returns (bytes32) {\n        return _at(set._inner, index);\n    }\n\n    // AddressSet\n\n    struct AddressSet {\n        Set _inner;\n    }\n\n    /**\n     * @dev Add a value to a set. O(1).\n     *\n     * Returns true if the value was added to the set, that is if it was not\n     * already present.\n     */\n    function add(AddressSet storage set, address value) internal returns (bool) {\n        return _add(set._inner, bytes32(uint256(uint160(value))));\n    }\n\n    /**\n     * @dev Removes a value from a set. O(1).\n     *\n     * Returns true if the value was removed from the set, that is if it was\n     * present.\n     */\n    function remove(AddressSet storage set, address value) internal returns (bool) {\n        return _remove(set._inner, bytes32(uint256(uint160(value))));\n    }\n\n    /**\n     * @dev Returns true if the value is in the set. O(1).\n     */\n    function contains(AddressSet storage set, address value) internal view returns (bool) {\n        return _contains(set._inner, bytes32(uint256(uint160(value))));\n    }\n\n    /**\n     * @dev Returns the number of values in the set. O(1).\n     */\n    function length(AddressSet storage set) internal view returns (uint256) {\n        return _length(set._inner);\n    }\n\n   /**\n    * @dev Returns the value stored at position `index` in the set. O(1).\n    *\n    * Note that there are no guarantees on the ordering of values inside the\n    * array, and it may change when more values are added or removed.\n    *\n    * Requirements:\n    *\n    * - `index` must be strictly less than {length}.\n    */\n    function at(AddressSet storage set, uint256 index) internal view returns (address) {\n        return address(uint160(uint256(_at(set._inner, index))));\n    }\n\n\n    // UintSet\n\n    struct UintSet {\n        Set _inner;\n    }\n\n    /**\n     * @dev Add a value to a set. O(1).\n     *\n     * Returns true if the value was added to the set, that is if it was not\n     * already present.\n     */\n    function add(UintSet storage set, uint256 value) internal returns (bool) {\n        return _add(set._inner, bytes32(value));\n    }\n\n    /**\n     * @dev Removes a value from a set. O(1).\n     *\n     * Returns true if the value was removed from the set, that is if it was\n     * present.\n     */\n    function remove(UintSet storage set, uint256 value) internal returns (bool) {\n        return _remove(set._inner, bytes32(value));\n    }\n\n    /**\n     * @dev Returns true if the value is in the set. O(1).\n     */\n    function contains(UintSet storage set, uint256 value) internal view returns (bool) {\n        return _contains(set._inner, bytes32(value));\n    }\n\n    /**\n     * @dev Returns the number of values on the set. O(1).\n     */\n    function length(UintSet storage set) internal view returns (uint256) {\n        return _length(set._inner);\n    }\n\n   /**\n    * @dev Returns the value stored at position `index` in the set. O(1).\n    *\n    * Note that there are no guarantees on the ordering of values inside the\n    * array, and it may change when more values are added or removed.\n    *\n    * Requirements:\n    *\n    * - `index` must be strictly less than {length}.\n    */\n    function at(UintSet storage set, uint256 index) internal view returns (uint256) {\n        return uint256(_at(set._inner, index));\n    }\n}\n",
  "sourcePath": "@openzeppelin/contracts/utils/EnumerableSet.sol",
  "ast": {
    "absolutePath": "@openzeppelin/contracts/utils/EnumerableSet.sol",
    "exportedSymbols": {
      "EnumerableSet": [
        5943
      ]
    },
    "id": 5944,
    "license": "MIT",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 5453,
        "literals": [
          "solidity",
          ">=",
          "0.6",
          ".0",
          "<",
          "0.8",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "33:31:31"
      },
      {
        "abstract": false,
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "library",
        "documentation": {
          "id": 5454,
          "nodeType": "StructuredDocumentation",
          "src": "66:686:31",
          "text": " @dev Library for managing\n https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive\n types.\n Sets have the following properties:\n - Elements are added, removed, and checked for existence in constant time\n (O(1)).\n - Elements are enumerated in O(n). No guarantees are made on the ordering.\n ```\n contract Example {\n     // Add the library methods\n     using EnumerableSet for EnumerableSet.AddressSet;\n     // Declare a set state variable\n     EnumerableSet.AddressSet private mySet;\n }\n ```\n As of v3.3.0, sets of type `bytes32` (`Bytes32Set`), `address` (`AddressSet`)\n and `uint256` (`UintSet`) are supported."
        },
        "fullyImplemented": true,
        "id": 5943,
        "linearizedBaseContracts": [
          5943
        ],
        "name": "EnumerableSet",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "canonicalName": "EnumerableSet.Set",
            "id": 5462,
            "members": [
              {
                "constant": false,
                "id": 5457,
                "mutability": "mutable",
                "name": "_values",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 5462,
                "src": "1275:17:31",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                  "typeString": "bytes32[]"
                },
                "typeName": {
                  "baseType": {
                    "id": 5455,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1275:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 5456,
                  "length": null,
                  "nodeType": "ArrayTypeName",
                  "src": "1275:9:31",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                    "typeString": "bytes32[]"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 5461,
                "mutability": "mutable",
                "name": "_indexes",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 5462,
                "src": "1426:37:31",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                  "typeString": "mapping(bytes32 => uint256)"
                },
                "typeName": {
                  "id": 5460,
                  "keyType": {
                    "id": 5458,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1435:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "1426:28:31",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                    "typeString": "mapping(bytes32 => uint256)"
                  },
                  "valueType": {
                    "id": 5459,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1446:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "Set",
            "nodeType": "StructDefinition",
            "scope": 5943,
            "src": "1221:249:31",
            "visibility": "public"
          },
          {
            "body": {
              "id": 5502,
              "nodeType": "Block",
              "src": "1709:335:31",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 5476,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "!",
                    "prefix": true,
                    "src": "1723:22:31",
                    "subExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 5473,
                          "name": "set",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5465,
                          "src": "1734:3:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Set_$5462_storage_ptr",
                            "typeString": "struct EnumerableSet.Set storage pointer"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 5474,
                          "name": "value",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5467,
                          "src": "1739:5:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_Set_$5462_storage_ptr",
                            "typeString": "struct EnumerableSet.Set storage pointer"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 5472,
                        "name": "_contains",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5601,
                        "src": "1724:9:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$5462_storage_ptr_$_t_bytes32_$returns$_t_bool_$",
                          "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) view returns (bool)"
                        }
                      },
                      "id": 5475,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1724:21:31",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 5500,
                    "nodeType": "Block",
                    "src": "2001:37:31",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 5498,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2022:5:31",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "functionReturnParameters": 5471,
                        "id": 5499,
                        "nodeType": "Return",
                        "src": "2015:12:31"
                      }
                    ]
                  },
                  "id": 5501,
                  "nodeType": "IfStatement",
                  "src": "1719:319:31",
                  "trueBody": {
                    "id": 5497,
                    "nodeType": "Block",
                    "src": "1747:248:31",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 5482,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5467,
                              "src": "1778:5:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 5477,
                                "name": "set",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5465,
                                "src": "1761:3:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Set_$5462_storage_ptr",
                                  "typeString": "struct EnumerableSet.Set storage pointer"
                                }
                              },
                              "id": 5480,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "_values",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 5457,
                              "src": "1761:11:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                                "typeString": "bytes32[] storage ref"
                              }
                            },
                            "id": 5481,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "push",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1761:16:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_arraypush_nonpayable$_t_bytes32_$returns$__$",
                              "typeString": "function (bytes32)"
                            }
                          },
                          "id": 5483,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1761:23:31",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5484,
                        "nodeType": "ExpressionStatement",
                        "src": "1761:23:31"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 5493,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 5485,
                                "name": "set",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5465,
                                "src": "1919:3:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Set_$5462_storage_ptr",
                                  "typeString": "struct EnumerableSet.Set storage pointer"
                                }
                              },
                              "id": 5488,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "_indexes",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 5461,
                              "src": "1919:12:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                "typeString": "mapping(bytes32 => uint256)"
                              }
                            },
                            "id": 5489,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 5487,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5467,
                              "src": "1932:5:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "1919:19:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 5490,
                                "name": "set",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5465,
                                "src": "1941:3:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Set_$5462_storage_ptr",
                                  "typeString": "struct EnumerableSet.Set storage pointer"
                                }
                              },
                              "id": 5491,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "_values",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 5457,
                              "src": "1941:11:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                                "typeString": "bytes32[] storage ref"
                              }
                            },
                            "id": 5492,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1941:18:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1919:40:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5494,
                        "nodeType": "ExpressionStatement",
                        "src": "1919:40:31"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 5495,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1980:4:31",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 5471,
                        "id": 5496,
                        "nodeType": "Return",
                        "src": "1973:11:31"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": {
              "id": 5463,
              "nodeType": "StructuredDocumentation",
              "src": "1476:159:31",
              "text": " @dev Add a value to a set. O(1).\n Returns true if the value was added to the set, that is if it was not\n already present."
            },
            "id": 5503,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_add",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 5468,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5465,
                  "mutability": "mutable",
                  "name": "set",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5503,
                  "src": "1654:15:31",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Set_$5462_storage_ptr",
                    "typeString": "struct EnumerableSet.Set"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 5464,
                    "name": "Set",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5462,
                    "src": "1654:3:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Set_$5462_storage_ptr",
                      "typeString": "struct EnumerableSet.Set"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5467,
                  "mutability": "mutable",
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5503,
                  "src": "1671:13:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5466,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1671:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1653:32:31"
            },
            "returnParameters": {
              "id": 5471,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5470,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5503,
                  "src": "1703:4:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 5469,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1703:4:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1702:6:31"
            },
            "scope": 5943,
            "src": "1640:404:31",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 5582,
              "nodeType": "Block",
              "src": "2284:1440:31",
              "statements": [
                {
                  "assignments": [
                    5514
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5514,
                      "mutability": "mutable",
                      "name": "valueIndex",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5582,
                      "src": "2394:18:31",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5513,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2394:7:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5519,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 5515,
                        "name": "set",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5506,
                        "src": "2415:3:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$5462_storage_ptr",
                          "typeString": "struct EnumerableSet.Set storage pointer"
                        }
                      },
                      "id": 5516,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "_indexes",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5461,
                      "src": "2415:12:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                        "typeString": "mapping(bytes32 => uint256)"
                      }
                    },
                    "id": 5518,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 5517,
                      "name": "value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5508,
                      "src": "2428:5:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "2415:19:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2394:40:31"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 5522,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 5520,
                      "name": "valueIndex",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5514,
                      "src": "2449:10:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 5521,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2463:1:31",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "2449:15:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 5580,
                    "nodeType": "Block",
                    "src": "3681:37:31",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 5578,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3702:5:31",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "functionReturnParameters": 5512,
                        "id": 5579,
                        "nodeType": "Return",
                        "src": "3695:12:31"
                      }
                    ]
                  },
                  "id": 5581,
                  "nodeType": "IfStatement",
                  "src": "2445:1273:31",
                  "trueBody": {
                    "id": 5577,
                    "nodeType": "Block",
                    "src": "2466:1209:31",
                    "statements": [
                      {
                        "assignments": [
                          5524
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5524,
                            "mutability": "mutable",
                            "name": "toDeleteIndex",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 5577,
                            "src": "2806:21:31",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 5523,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2806:7:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 5528,
                        "initialValue": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 5527,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 5525,
                            "name": "valueIndex",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5514,
                            "src": "2830:10:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 5526,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2843:1:31",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "2830:14:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2806:38:31"
                      },
                      {
                        "assignments": [
                          5530
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5530,
                            "mutability": "mutable",
                            "name": "lastIndex",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 5577,
                            "src": "2858:17:31",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 5529,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2858:7:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 5536,
                        "initialValue": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 5535,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 5531,
                                "name": "set",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5506,
                                "src": "2878:3:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Set_$5462_storage_ptr",
                                  "typeString": "struct EnumerableSet.Set storage pointer"
                                }
                              },
                              "id": 5532,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "_values",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 5457,
                              "src": "2878:11:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                                "typeString": "bytes32[] storage ref"
                              }
                            },
                            "id": 5533,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2878:18:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 5534,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2899:1:31",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "2878:22:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2858:42:31"
                      },
                      {
                        "assignments": [
                          5538
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5538,
                            "mutability": "mutable",
                            "name": "lastvalue",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 5577,
                            "src": "3140:17:31",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 5537,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "3140:7:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 5543,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 5539,
                              "name": "set",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5506,
                              "src": "3160:3:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Set_$5462_storage_ptr",
                                "typeString": "struct EnumerableSet.Set storage pointer"
                              }
                            },
                            "id": 5540,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "_values",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 5457,
                            "src": "3160:11:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                              "typeString": "bytes32[] storage ref"
                            }
                          },
                          "id": 5542,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 5541,
                            "name": "lastIndex",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5530,
                            "src": "3172:9:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "3160:22:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3140:42:31"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 5550,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 5544,
                                "name": "set",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5506,
                                "src": "3274:3:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Set_$5462_storage_ptr",
                                  "typeString": "struct EnumerableSet.Set storage pointer"
                                }
                              },
                              "id": 5547,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "_values",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 5457,
                              "src": "3274:11:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                                "typeString": "bytes32[] storage ref"
                              }
                            },
                            "id": 5548,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 5546,
                              "name": "toDeleteIndex",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5524,
                              "src": "3286:13:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "3274:26:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 5549,
                            "name": "lastvalue",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5538,
                            "src": "3303:9:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "3274:38:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 5551,
                        "nodeType": "ExpressionStatement",
                        "src": "3274:38:31"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 5560,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 5552,
                                "name": "set",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5506,
                                "src": "3378:3:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Set_$5462_storage_ptr",
                                  "typeString": "struct EnumerableSet.Set storage pointer"
                                }
                              },
                              "id": 5555,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "_indexes",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 5461,
                              "src": "3378:12:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                "typeString": "mapping(bytes32 => uint256)"
                              }
                            },
                            "id": 5556,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 5554,
                              "name": "lastvalue",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5538,
                              "src": "3391:9:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "3378:23:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 5559,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 5557,
                              "name": "toDeleteIndex",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5524,
                              "src": "3404:13:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "+",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 5558,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3420:1:31",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "src": "3404:17:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3378:43:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5561,
                        "nodeType": "ExpressionStatement",
                        "src": "3378:43:31"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 5562,
                                "name": "set",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5506,
                                "src": "3527:3:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Set_$5462_storage_ptr",
                                  "typeString": "struct EnumerableSet.Set storage pointer"
                                }
                              },
                              "id": 5565,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "_values",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 5457,
                              "src": "3527:11:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                                "typeString": "bytes32[] storage ref"
                              }
                            },
                            "id": 5566,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "pop",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "3527:15:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_arraypop_nonpayable$__$returns$__$",
                              "typeString": "function ()"
                            }
                          },
                          "id": 5567,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3527:17:31",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5568,
                        "nodeType": "ExpressionStatement",
                        "src": "3527:17:31"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 5573,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "delete",
                          "prefix": true,
                          "src": "3612:26:31",
                          "subExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 5569,
                                "name": "set",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5506,
                                "src": "3619:3:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Set_$5462_storage_ptr",
                                  "typeString": "struct EnumerableSet.Set storage pointer"
                                }
                              },
                              "id": 5570,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "_indexes",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 5461,
                              "src": "3619:12:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                "typeString": "mapping(bytes32 => uint256)"
                              }
                            },
                            "id": 5572,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 5571,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5508,
                              "src": "3632:5:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "3619:19:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5574,
                        "nodeType": "ExpressionStatement",
                        "src": "3612:26:31"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 5575,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3660:4:31",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 5512,
                        "id": 5576,
                        "nodeType": "Return",
                        "src": "3653:11:31"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": {
              "id": 5504,
              "nodeType": "StructuredDocumentation",
              "src": "2050:157:31",
              "text": " @dev Removes a value from a set. O(1).\n Returns true if the value was removed from the set, that is if it was\n present."
            },
            "id": 5583,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_remove",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 5509,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5506,
                  "mutability": "mutable",
                  "name": "set",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5583,
                  "src": "2229:15:31",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Set_$5462_storage_ptr",
                    "typeString": "struct EnumerableSet.Set"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 5505,
                    "name": "Set",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5462,
                    "src": "2229:3:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Set_$5462_storage_ptr",
                      "typeString": "struct EnumerableSet.Set"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5508,
                  "mutability": "mutable",
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5583,
                  "src": "2246:13:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5507,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2246:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2228:32:31"
            },
            "returnParameters": {
              "id": 5512,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5511,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5583,
                  "src": "2278:4:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 5510,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "2278:4:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2277:6:31"
            },
            "scope": 5943,
            "src": "2212:1512:31",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 5600,
              "nodeType": "Block",
              "src": "3884:48:31",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 5598,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5593,
                          "name": "set",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5586,
                          "src": "3901:3:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Set_$5462_storage_ptr",
                            "typeString": "struct EnumerableSet.Set storage pointer"
                          }
                        },
                        "id": 5594,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_indexes",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5461,
                        "src": "3901:12:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                          "typeString": "mapping(bytes32 => uint256)"
                        }
                      },
                      "id": 5596,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 5595,
                        "name": "value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5588,
                        "src": "3914:5:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "3901:19:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 5597,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3924:1:31",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "3901:24:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 5592,
                  "id": 5599,
                  "nodeType": "Return",
                  "src": "3894:31:31"
                }
              ]
            },
            "documentation": {
              "id": 5584,
              "nodeType": "StructuredDocumentation",
              "src": "3730:70:31",
              "text": " @dev Returns true if the value is in the set. O(1)."
            },
            "id": 5601,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_contains",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 5589,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5586,
                  "mutability": "mutable",
                  "name": "set",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5601,
                  "src": "3824:15:31",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Set_$5462_storage_ptr",
                    "typeString": "struct EnumerableSet.Set"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 5585,
                    "name": "Set",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5462,
                    "src": "3824:3:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Set_$5462_storage_ptr",
                      "typeString": "struct EnumerableSet.Set"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5588,
                  "mutability": "mutable",
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5601,
                  "src": "3841:13:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5587,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3841:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3823:32:31"
            },
            "returnParameters": {
              "id": 5592,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5591,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5601,
                  "src": "3878:4:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 5590,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "3878:4:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3877:6:31"
            },
            "scope": 5943,
            "src": "3805:127:31",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 5613,
              "nodeType": "Block",
              "src": "4078:42:31",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 5609,
                        "name": "set",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5604,
                        "src": "4095:3:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$5462_storage_ptr",
                          "typeString": "struct EnumerableSet.Set storage pointer"
                        }
                      },
                      "id": 5610,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "_values",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5457,
                      "src": "4095:11:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                        "typeString": "bytes32[] storage ref"
                      }
                    },
                    "id": 5611,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "4095:18:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 5608,
                  "id": 5612,
                  "nodeType": "Return",
                  "src": "4088:25:31"
                }
              ]
            },
            "documentation": {
              "id": 5602,
              "nodeType": "StructuredDocumentation",
              "src": "3938:70:31",
              "text": " @dev Returns the number of values on the set. O(1)."
            },
            "id": 5614,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_length",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 5605,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5604,
                  "mutability": "mutable",
                  "name": "set",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5614,
                  "src": "4030:15:31",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Set_$5462_storage_ptr",
                    "typeString": "struct EnumerableSet.Set"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 5603,
                    "name": "Set",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5462,
                    "src": "4030:3:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Set_$5462_storage_ptr",
                      "typeString": "struct EnumerableSet.Set"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4029:17:31"
            },
            "returnParameters": {
              "id": 5608,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5607,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5614,
                  "src": "4069:7:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5606,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4069:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4068:9:31"
            },
            "scope": 5943,
            "src": "4013:107:31",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 5638,
              "nodeType": "Block",
              "src": "4528:125:31",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 5629,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 5625,
                              "name": "set",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5617,
                              "src": "4546:3:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Set_$5462_storage_ptr",
                                "typeString": "struct EnumerableSet.Set storage pointer"
                              }
                            },
                            "id": 5626,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "_values",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 5457,
                            "src": "4546:11:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                              "typeString": "bytes32[] storage ref"
                            }
                          },
                          "id": 5627,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "4546:18:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 5628,
                          "name": "index",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5619,
                          "src": "4567:5:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "4546:26:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "456e756d657261626c655365743a20696e646578206f7574206f6620626f756e6473",
                        "id": 5630,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4574:36:31",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_045d6834e6193a687012a3ad777f612279e549b6945364d9d2324f48610d3cbb",
                          "typeString": "literal_string \"EnumerableSet: index out of bounds\""
                        },
                        "value": "EnumerableSet: index out of bounds"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_045d6834e6193a687012a3ad777f612279e549b6945364d9d2324f48610d3cbb",
                          "typeString": "literal_string \"EnumerableSet: index out of bounds\""
                        }
                      ],
                      "id": 5624,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "4538:7:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 5631,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4538:73:31",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5632,
                  "nodeType": "ExpressionStatement",
                  "src": "4538:73:31"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 5633,
                        "name": "set",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5617,
                        "src": "4628:3:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$5462_storage_ptr",
                          "typeString": "struct EnumerableSet.Set storage pointer"
                        }
                      },
                      "id": 5634,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "_values",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5457,
                      "src": "4628:11:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                        "typeString": "bytes32[] storage ref"
                      }
                    },
                    "id": 5636,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 5635,
                      "name": "index",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5619,
                      "src": "4640:5:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "4628:18:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 5623,
                  "id": 5637,
                  "nodeType": "Return",
                  "src": "4621:25:31"
                }
              ]
            },
            "documentation": {
              "id": 5615,
              "nodeType": "StructuredDocumentation",
              "src": "4125:322:31",
              "text": " @dev Returns the value stored at position `index` in the set. O(1).\n Note that there are no guarantees on the ordering of values inside the\n array, and it may change when more values are added or removed.\n Requirements:\n - `index` must be strictly less than {length}."
            },
            "id": 5639,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_at",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 5620,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5617,
                  "mutability": "mutable",
                  "name": "set",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5639,
                  "src": "4465:15:31",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Set_$5462_storage_ptr",
                    "typeString": "struct EnumerableSet.Set"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 5616,
                    "name": "Set",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5462,
                    "src": "4465:3:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Set_$5462_storage_ptr",
                      "typeString": "struct EnumerableSet.Set"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5619,
                  "mutability": "mutable",
                  "name": "index",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5639,
                  "src": "4482:13:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5618,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4482:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4464:32:31"
            },
            "returnParameters": {
              "id": 5623,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5622,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5639,
                  "src": "4519:7:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5621,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4519:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4518:9:31"
            },
            "scope": 5943,
            "src": "4452:201:31",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "private"
          },
          {
            "canonicalName": "EnumerableSet.Bytes32Set",
            "id": 5642,
            "members": [
              {
                "constant": false,
                "id": 5641,
                "mutability": "mutable",
                "name": "_inner",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 5642,
                "src": "4706:10:31",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Set_$5462_storage_ptr",
                  "typeString": "struct EnumerableSet.Set"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 5640,
                  "name": "Set",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 5462,
                  "src": "4706:3:31",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Set_$5462_storage_ptr",
                    "typeString": "struct EnumerableSet.Set"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "Bytes32Set",
            "nodeType": "StructDefinition",
            "scope": 5943,
            "src": "4678:45:31",
            "visibility": "public"
          },
          {
            "body": {
              "id": 5658,
              "nodeType": "Block",
              "src": "4969:47:31",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5653,
                          "name": "set",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5645,
                          "src": "4991:3:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Bytes32Set_$5642_storage_ptr",
                            "typeString": "struct EnumerableSet.Bytes32Set storage pointer"
                          }
                        },
                        "id": 5654,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_inner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5641,
                        "src": "4991:10:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$5462_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5655,
                        "name": "value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5647,
                        "src": "5003:5:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Set_$5462_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 5652,
                      "name": "_add",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5503,
                      "src": "4986:4:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Set_$5462_storage_ptr_$_t_bytes32_$returns$_t_bool_$",
                        "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)"
                      }
                    },
                    "id": 5656,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4986:23:31",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 5651,
                  "id": 5657,
                  "nodeType": "Return",
                  "src": "4979:30:31"
                }
              ]
            },
            "documentation": {
              "id": 5643,
              "nodeType": "StructuredDocumentation",
              "src": "4729:159:31",
              "text": " @dev Add a value to a set. O(1).\n Returns true if the value was added to the set, that is if it was not\n already present."
            },
            "id": 5659,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "add",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 5648,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5645,
                  "mutability": "mutable",
                  "name": "set",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5659,
                  "src": "4906:22:31",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Bytes32Set_$5642_storage_ptr",
                    "typeString": "struct EnumerableSet.Bytes32Set"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 5644,
                    "name": "Bytes32Set",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5642,
                    "src": "4906:10:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Bytes32Set_$5642_storage_ptr",
                      "typeString": "struct EnumerableSet.Bytes32Set"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5647,
                  "mutability": "mutable",
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5659,
                  "src": "4930:13:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5646,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4930:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4905:39:31"
            },
            "returnParameters": {
              "id": 5651,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5650,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5659,
                  "src": "4963:4:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 5649,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "4963:4:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4962:6:31"
            },
            "scope": 5943,
            "src": "4893:123:31",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 5675,
              "nodeType": "Block",
              "src": "5263:50:31",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5670,
                          "name": "set",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5662,
                          "src": "5288:3:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Bytes32Set_$5642_storage_ptr",
                            "typeString": "struct EnumerableSet.Bytes32Set storage pointer"
                          }
                        },
                        "id": 5671,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_inner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5641,
                        "src": "5288:10:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$5462_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5672,
                        "name": "value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5664,
                        "src": "5300:5:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Set_$5462_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 5669,
                      "name": "_remove",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5583,
                      "src": "5280:7:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Set_$5462_storage_ptr_$_t_bytes32_$returns$_t_bool_$",
                        "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)"
                      }
                    },
                    "id": 5673,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5280:26:31",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 5668,
                  "id": 5674,
                  "nodeType": "Return",
                  "src": "5273:33:31"
                }
              ]
            },
            "documentation": {
              "id": 5660,
              "nodeType": "StructuredDocumentation",
              "src": "5022:157:31",
              "text": " @dev Removes a value from a set. O(1).\n Returns true if the value was removed from the set, that is if it was\n present."
            },
            "id": 5676,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "remove",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 5665,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5662,
                  "mutability": "mutable",
                  "name": "set",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5676,
                  "src": "5200:22:31",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Bytes32Set_$5642_storage_ptr",
                    "typeString": "struct EnumerableSet.Bytes32Set"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 5661,
                    "name": "Bytes32Set",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5642,
                    "src": "5200:10:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Bytes32Set_$5642_storage_ptr",
                      "typeString": "struct EnumerableSet.Bytes32Set"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5664,
                  "mutability": "mutable",
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5676,
                  "src": "5224:13:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5663,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5224:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5199:39:31"
            },
            "returnParameters": {
              "id": 5668,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5667,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5676,
                  "src": "5257:4:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 5666,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "5257:4:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5256:6:31"
            },
            "scope": 5943,
            "src": "5184:129:31",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 5692,
              "nodeType": "Block",
              "src": "5480:52:31",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5687,
                          "name": "set",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5679,
                          "src": "5507:3:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Bytes32Set_$5642_storage_ptr",
                            "typeString": "struct EnumerableSet.Bytes32Set storage pointer"
                          }
                        },
                        "id": 5688,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_inner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5641,
                        "src": "5507:10:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$5462_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5689,
                        "name": "value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5681,
                        "src": "5519:5:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Set_$5462_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 5686,
                      "name": "_contains",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5601,
                      "src": "5497:9:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$5462_storage_ptr_$_t_bytes32_$returns$_t_bool_$",
                        "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) view returns (bool)"
                      }
                    },
                    "id": 5690,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5497:28:31",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 5685,
                  "id": 5691,
                  "nodeType": "Return",
                  "src": "5490:35:31"
                }
              ]
            },
            "documentation": {
              "id": 5677,
              "nodeType": "StructuredDocumentation",
              "src": "5319:70:31",
              "text": " @dev Returns true if the value is in the set. O(1)."
            },
            "id": 5693,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "contains",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 5682,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5679,
                  "mutability": "mutable",
                  "name": "set",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5693,
                  "src": "5412:22:31",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Bytes32Set_$5642_storage_ptr",
                    "typeString": "struct EnumerableSet.Bytes32Set"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 5678,
                    "name": "Bytes32Set",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5642,
                    "src": "5412:10:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Bytes32Set_$5642_storage_ptr",
                      "typeString": "struct EnumerableSet.Bytes32Set"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5681,
                  "mutability": "mutable",
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5693,
                  "src": "5436:13:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5680,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5436:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5411:39:31"
            },
            "returnParameters": {
              "id": 5685,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5684,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5693,
                  "src": "5474:4:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 5683,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "5474:4:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5473:6:31"
            },
            "scope": 5943,
            "src": "5394:138:31",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 5706,
              "nodeType": "Block",
              "src": "5685:43:31",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5702,
                          "name": "set",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5696,
                          "src": "5710:3:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Bytes32Set_$5642_storage_ptr",
                            "typeString": "struct EnumerableSet.Bytes32Set storage pointer"
                          }
                        },
                        "id": 5703,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_inner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5641,
                        "src": "5710:10:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$5462_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Set_$5462_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        }
                      ],
                      "id": 5701,
                      "name": "_length",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5614,
                      "src": "5702:7:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$5462_storage_ptr_$returns$_t_uint256_$",
                        "typeString": "function (struct EnumerableSet.Set storage pointer) view returns (uint256)"
                      }
                    },
                    "id": 5704,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5702:19:31",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 5700,
                  "id": 5705,
                  "nodeType": "Return",
                  "src": "5695:26:31"
                }
              ]
            },
            "documentation": {
              "id": 5694,
              "nodeType": "StructuredDocumentation",
              "src": "5538:70:31",
              "text": " @dev Returns the number of values in the set. O(1)."
            },
            "id": 5707,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "length",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 5697,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5696,
                  "mutability": "mutable",
                  "name": "set",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5707,
                  "src": "5629:22:31",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Bytes32Set_$5642_storage_ptr",
                    "typeString": "struct EnumerableSet.Bytes32Set"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 5695,
                    "name": "Bytes32Set",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5642,
                    "src": "5629:10:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Bytes32Set_$5642_storage_ptr",
                      "typeString": "struct EnumerableSet.Bytes32Set"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5628:24:31"
            },
            "returnParameters": {
              "id": 5700,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5699,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5707,
                  "src": "5676:7:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5698,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5676:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5675:9:31"
            },
            "scope": 5943,
            "src": "5613:115:31",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 5723,
              "nodeType": "Block",
              "src": "6143:46:31",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5718,
                          "name": "set",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5710,
                          "src": "6164:3:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Bytes32Set_$5642_storage_ptr",
                            "typeString": "struct EnumerableSet.Bytes32Set storage pointer"
                          }
                        },
                        "id": 5719,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_inner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5641,
                        "src": "6164:10:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$5462_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5720,
                        "name": "index",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5712,
                        "src": "6176:5:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Set_$5462_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 5717,
                      "name": "_at",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5639,
                      "src": "6160:3:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$5462_storage_ptr_$_t_uint256_$returns$_t_bytes32_$",
                        "typeString": "function (struct EnumerableSet.Set storage pointer,uint256) view returns (bytes32)"
                      }
                    },
                    "id": 5721,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6160:22:31",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 5716,
                  "id": 5722,
                  "nodeType": "Return",
                  "src": "6153:29:31"
                }
              ]
            },
            "documentation": {
              "id": 5708,
              "nodeType": "StructuredDocumentation",
              "src": "5733:322:31",
              "text": " @dev Returns the value stored at position `index` in the set. O(1).\n Note that there are no guarantees on the ordering of values inside the\n array, and it may change when more values are added or removed.\n Requirements:\n - `index` must be strictly less than {length}."
            },
            "id": 5724,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "at",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 5713,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5710,
                  "mutability": "mutable",
                  "name": "set",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5724,
                  "src": "6072:22:31",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Bytes32Set_$5642_storage_ptr",
                    "typeString": "struct EnumerableSet.Bytes32Set"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 5709,
                    "name": "Bytes32Set",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5642,
                    "src": "6072:10:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Bytes32Set_$5642_storage_ptr",
                      "typeString": "struct EnumerableSet.Bytes32Set"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5712,
                  "mutability": "mutable",
                  "name": "index",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5724,
                  "src": "6096:13:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5711,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6096:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6071:39:31"
            },
            "returnParameters": {
              "id": 5716,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5715,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5724,
                  "src": "6134:7:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5714,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6134:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6133:9:31"
            },
            "scope": 5943,
            "src": "6060:129:31",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "canonicalName": "EnumerableSet.AddressSet",
            "id": 5727,
            "members": [
              {
                "constant": false,
                "id": 5726,
                "mutability": "mutable",
                "name": "_inner",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 5727,
                "src": "6242:10:31",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Set_$5462_storage_ptr",
                  "typeString": "struct EnumerableSet.Set"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 5725,
                  "name": "Set",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 5462,
                  "src": "6242:3:31",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Set_$5462_storage_ptr",
                    "typeString": "struct EnumerableSet.Set"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "AddressSet",
            "nodeType": "StructDefinition",
            "scope": 5943,
            "src": "6214:45:31",
            "visibility": "public"
          },
          {
            "body": {
              "id": 5752,
              "nodeType": "Block",
              "src": "6505:74:31",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5738,
                          "name": "set",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5730,
                          "src": "6527:3:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_AddressSet_$5727_storage_ptr",
                            "typeString": "struct EnumerableSet.AddressSet storage pointer"
                          }
                        },
                        "id": 5739,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_inner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5726,
                        "src": "6527:10:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$5462_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 5746,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5732,
                                    "src": "6563:5:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 5745,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "6555:7:31",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint160_$",
                                    "typeString": "type(uint160)"
                                  },
                                  "typeName": {
                                    "id": 5744,
                                    "name": "uint160",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6555:7:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 5747,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6555:14:31",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                }
                              ],
                              "id": 5743,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "6547:7:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": {
                                "id": 5742,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "6547:7:31",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 5748,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6547:23:31",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 5741,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "6539:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes32_$",
                            "typeString": "type(bytes32)"
                          },
                          "typeName": {
                            "id": 5740,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "6539:7:31",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 5749,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6539:32:31",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Set_$5462_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 5737,
                      "name": "_add",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5503,
                      "src": "6522:4:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Set_$5462_storage_ptr_$_t_bytes32_$returns$_t_bool_$",
                        "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)"
                      }
                    },
                    "id": 5750,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6522:50:31",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 5736,
                  "id": 5751,
                  "nodeType": "Return",
                  "src": "6515:57:31"
                }
              ]
            },
            "documentation": {
              "id": 5728,
              "nodeType": "StructuredDocumentation",
              "src": "6265:159:31",
              "text": " @dev Add a value to a set. O(1).\n Returns true if the value was added to the set, that is if it was not\n already present."
            },
            "id": 5753,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "add",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 5733,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5730,
                  "mutability": "mutable",
                  "name": "set",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5753,
                  "src": "6442:22:31",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_AddressSet_$5727_storage_ptr",
                    "typeString": "struct EnumerableSet.AddressSet"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 5729,
                    "name": "AddressSet",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5727,
                    "src": "6442:10:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_AddressSet_$5727_storage_ptr",
                      "typeString": "struct EnumerableSet.AddressSet"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5732,
                  "mutability": "mutable",
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5753,
                  "src": "6466:13:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5731,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6466:7:31",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6441:39:31"
            },
            "returnParameters": {
              "id": 5736,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5735,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5753,
                  "src": "6499:4:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 5734,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "6499:4:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6498:6:31"
            },
            "scope": 5943,
            "src": "6429:150:31",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 5778,
              "nodeType": "Block",
              "src": "6826:77:31",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5764,
                          "name": "set",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5756,
                          "src": "6851:3:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_AddressSet_$5727_storage_ptr",
                            "typeString": "struct EnumerableSet.AddressSet storage pointer"
                          }
                        },
                        "id": 5765,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_inner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5726,
                        "src": "6851:10:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$5462_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 5772,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5758,
                                    "src": "6887:5:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 5771,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "6879:7:31",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint160_$",
                                    "typeString": "type(uint160)"
                                  },
                                  "typeName": {
                                    "id": 5770,
                                    "name": "uint160",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6879:7:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 5773,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6879:14:31",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                }
                              ],
                              "id": 5769,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "6871:7:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": {
                                "id": 5768,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "6871:7:31",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 5774,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6871:23:31",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 5767,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "6863:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes32_$",
                            "typeString": "type(bytes32)"
                          },
                          "typeName": {
                            "id": 5766,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "6863:7:31",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 5775,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6863:32:31",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Set_$5462_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 5763,
                      "name": "_remove",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5583,
                      "src": "6843:7:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Set_$5462_storage_ptr_$_t_bytes32_$returns$_t_bool_$",
                        "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)"
                      }
                    },
                    "id": 5776,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6843:53:31",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 5762,
                  "id": 5777,
                  "nodeType": "Return",
                  "src": "6836:60:31"
                }
              ]
            },
            "documentation": {
              "id": 5754,
              "nodeType": "StructuredDocumentation",
              "src": "6585:157:31",
              "text": " @dev Removes a value from a set. O(1).\n Returns true if the value was removed from the set, that is if it was\n present."
            },
            "id": 5779,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "remove",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 5759,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5756,
                  "mutability": "mutable",
                  "name": "set",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5779,
                  "src": "6763:22:31",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_AddressSet_$5727_storage_ptr",
                    "typeString": "struct EnumerableSet.AddressSet"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 5755,
                    "name": "AddressSet",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5727,
                    "src": "6763:10:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_AddressSet_$5727_storage_ptr",
                      "typeString": "struct EnumerableSet.AddressSet"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5758,
                  "mutability": "mutable",
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5779,
                  "src": "6787:13:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5757,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6787:7:31",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6762:39:31"
            },
            "returnParameters": {
              "id": 5762,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5761,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5779,
                  "src": "6820:4:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 5760,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "6820:4:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6819:6:31"
            },
            "scope": 5943,
            "src": "6747:156:31",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 5804,
              "nodeType": "Block",
              "src": "7070:79:31",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5790,
                          "name": "set",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5782,
                          "src": "7097:3:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_AddressSet_$5727_storage_ptr",
                            "typeString": "struct EnumerableSet.AddressSet storage pointer"
                          }
                        },
                        "id": 5791,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_inner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5726,
                        "src": "7097:10:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$5462_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 5798,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5784,
                                    "src": "7133:5:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 5797,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "7125:7:31",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint160_$",
                                    "typeString": "type(uint160)"
                                  },
                                  "typeName": {
                                    "id": 5796,
                                    "name": "uint160",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7125:7:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 5799,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7125:14:31",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                }
                              ],
                              "id": 5795,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "7117:7:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": {
                                "id": 5794,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "7117:7:31",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 5800,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7117:23:31",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 5793,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "7109:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes32_$",
                            "typeString": "type(bytes32)"
                          },
                          "typeName": {
                            "id": 5792,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "7109:7:31",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 5801,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7109:32:31",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Set_$5462_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 5789,
                      "name": "_contains",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5601,
                      "src": "7087:9:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$5462_storage_ptr_$_t_bytes32_$returns$_t_bool_$",
                        "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) view returns (bool)"
                      }
                    },
                    "id": 5802,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7087:55:31",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 5788,
                  "id": 5803,
                  "nodeType": "Return",
                  "src": "7080:62:31"
                }
              ]
            },
            "documentation": {
              "id": 5780,
              "nodeType": "StructuredDocumentation",
              "src": "6909:70:31",
              "text": " @dev Returns true if the value is in the set. O(1)."
            },
            "id": 5805,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "contains",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 5785,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5782,
                  "mutability": "mutable",
                  "name": "set",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5805,
                  "src": "7002:22:31",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_AddressSet_$5727_storage_ptr",
                    "typeString": "struct EnumerableSet.AddressSet"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 5781,
                    "name": "AddressSet",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5727,
                    "src": "7002:10:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_AddressSet_$5727_storage_ptr",
                      "typeString": "struct EnumerableSet.AddressSet"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5784,
                  "mutability": "mutable",
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5805,
                  "src": "7026:13:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5783,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7026:7:31",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7001:39:31"
            },
            "returnParameters": {
              "id": 5788,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5787,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5805,
                  "src": "7064:4:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 5786,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "7064:4:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7063:6:31"
            },
            "scope": 5943,
            "src": "6984:165:31",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 5818,
              "nodeType": "Block",
              "src": "7302:43:31",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5814,
                          "name": "set",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5808,
                          "src": "7327:3:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_AddressSet_$5727_storage_ptr",
                            "typeString": "struct EnumerableSet.AddressSet storage pointer"
                          }
                        },
                        "id": 5815,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_inner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5726,
                        "src": "7327:10:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$5462_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Set_$5462_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        }
                      ],
                      "id": 5813,
                      "name": "_length",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5614,
                      "src": "7319:7:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$5462_storage_ptr_$returns$_t_uint256_$",
                        "typeString": "function (struct EnumerableSet.Set storage pointer) view returns (uint256)"
                      }
                    },
                    "id": 5816,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7319:19:31",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 5812,
                  "id": 5817,
                  "nodeType": "Return",
                  "src": "7312:26:31"
                }
              ]
            },
            "documentation": {
              "id": 5806,
              "nodeType": "StructuredDocumentation",
              "src": "7155:70:31",
              "text": " @dev Returns the number of values in the set. O(1)."
            },
            "id": 5819,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "length",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 5809,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5808,
                  "mutability": "mutable",
                  "name": "set",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5819,
                  "src": "7246:22:31",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_AddressSet_$5727_storage_ptr",
                    "typeString": "struct EnumerableSet.AddressSet"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 5807,
                    "name": "AddressSet",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5727,
                    "src": "7246:10:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_AddressSet_$5727_storage_ptr",
                      "typeString": "struct EnumerableSet.AddressSet"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7245:24:31"
            },
            "returnParameters": {
              "id": 5812,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5811,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5819,
                  "src": "7293:7:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5810,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7293:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7292:9:31"
            },
            "scope": 5943,
            "src": "7230:115:31",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 5844,
              "nodeType": "Block",
              "src": "7760:73:31",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 5836,
                                      "name": "set",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5822,
                                      "src": "7805:3:31",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_AddressSet_$5727_storage_ptr",
                                        "typeString": "struct EnumerableSet.AddressSet storage pointer"
                                      }
                                    },
                                    "id": 5837,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "_inner",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 5726,
                                    "src": "7805:10:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Set_$5462_storage",
                                      "typeString": "struct EnumerableSet.Set storage ref"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 5838,
                                    "name": "index",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5824,
                                    "src": "7817:5:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_struct$_Set_$5462_storage",
                                      "typeString": "struct EnumerableSet.Set storage ref"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 5835,
                                  "name": "_at",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5639,
                                  "src": "7801:3:31",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$5462_storage_ptr_$_t_uint256_$returns$_t_bytes32_$",
                                    "typeString": "function (struct EnumerableSet.Set storage pointer,uint256) view returns (bytes32)"
                                  }
                                },
                                "id": 5839,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7801:22:31",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "id": 5834,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "7793:7:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": {
                                "id": 5833,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "7793:7:31",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 5840,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7793:31:31",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 5832,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "7785:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint160_$",
                            "typeString": "type(uint160)"
                          },
                          "typeName": {
                            "id": 5831,
                            "name": "uint160",
                            "nodeType": "ElementaryTypeName",
                            "src": "7785:7:31",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 5841,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7785:40:31",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint160",
                          "typeString": "uint160"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint160",
                          "typeString": "uint160"
                        }
                      ],
                      "id": 5830,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "7777:7:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_address_$",
                        "typeString": "type(address)"
                      },
                      "typeName": {
                        "id": 5829,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "7777:7:31",
                        "typeDescriptions": {
                          "typeIdentifier": null,
                          "typeString": null
                        }
                      }
                    },
                    "id": 5842,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7777:49:31",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    }
                  },
                  "functionReturnParameters": 5828,
                  "id": 5843,
                  "nodeType": "Return",
                  "src": "7770:56:31"
                }
              ]
            },
            "documentation": {
              "id": 5820,
              "nodeType": "StructuredDocumentation",
              "src": "7350:322:31",
              "text": " @dev Returns the value stored at position `index` in the set. O(1).\n Note that there are no guarantees on the ordering of values inside the\n array, and it may change when more values are added or removed.\n Requirements:\n - `index` must be strictly less than {length}."
            },
            "id": 5845,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "at",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 5825,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5822,
                  "mutability": "mutable",
                  "name": "set",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5845,
                  "src": "7689:22:31",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_AddressSet_$5727_storage_ptr",
                    "typeString": "struct EnumerableSet.AddressSet"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 5821,
                    "name": "AddressSet",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5727,
                    "src": "7689:10:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_AddressSet_$5727_storage_ptr",
                      "typeString": "struct EnumerableSet.AddressSet"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5824,
                  "mutability": "mutable",
                  "name": "index",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5845,
                  "src": "7713:13:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5823,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7713:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7688:39:31"
            },
            "returnParameters": {
              "id": 5828,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5827,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5845,
                  "src": "7751:7:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5826,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7751:7:31",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7750:9:31"
            },
            "scope": 5943,
            "src": "7677:156:31",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "canonicalName": "EnumerableSet.UintSet",
            "id": 5848,
            "members": [
              {
                "constant": false,
                "id": 5847,
                "mutability": "mutable",
                "name": "_inner",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 5848,
                "src": "7881:10:31",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Set_$5462_storage_ptr",
                  "typeString": "struct EnumerableSet.Set"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 5846,
                  "name": "Set",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 5462,
                  "src": "7881:3:31",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Set_$5462_storage_ptr",
                    "typeString": "struct EnumerableSet.Set"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "UintSet",
            "nodeType": "StructDefinition",
            "scope": 5943,
            "src": "7856:42:31",
            "visibility": "public"
          },
          {
            "body": {
              "id": 5867,
              "nodeType": "Block",
              "src": "8141:56:31",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5859,
                          "name": "set",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5851,
                          "src": "8163:3:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UintSet_$5848_storage_ptr",
                            "typeString": "struct EnumerableSet.UintSet storage pointer"
                          }
                        },
                        "id": 5860,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_inner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5847,
                        "src": "8163:10:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$5462_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 5863,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5853,
                            "src": "8183:5:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 5862,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "8175:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes32_$",
                            "typeString": "type(bytes32)"
                          },
                          "typeName": {
                            "id": 5861,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "8175:7:31",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 5864,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8175:14:31",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Set_$5462_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 5858,
                      "name": "_add",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5503,
                      "src": "8158:4:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Set_$5462_storage_ptr_$_t_bytes32_$returns$_t_bool_$",
                        "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)"
                      }
                    },
                    "id": 5865,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8158:32:31",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 5857,
                  "id": 5866,
                  "nodeType": "Return",
                  "src": "8151:39:31"
                }
              ]
            },
            "documentation": {
              "id": 5849,
              "nodeType": "StructuredDocumentation",
              "src": "7904:159:31",
              "text": " @dev Add a value to a set. O(1).\n Returns true if the value was added to the set, that is if it was not\n already present."
            },
            "id": 5868,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "add",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 5854,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5851,
                  "mutability": "mutable",
                  "name": "set",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5868,
                  "src": "8081:19:31",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_UintSet_$5848_storage_ptr",
                    "typeString": "struct EnumerableSet.UintSet"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 5850,
                    "name": "UintSet",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5848,
                    "src": "8081:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_UintSet_$5848_storage_ptr",
                      "typeString": "struct EnumerableSet.UintSet"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5853,
                  "mutability": "mutable",
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5868,
                  "src": "8102:13:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5852,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "8102:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8080:36:31"
            },
            "returnParameters": {
              "id": 5857,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5856,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5868,
                  "src": "8135:4:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 5855,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "8135:4:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8134:6:31"
            },
            "scope": 5943,
            "src": "8068:129:31",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 5887,
              "nodeType": "Block",
              "src": "8441:59:31",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5879,
                          "name": "set",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5871,
                          "src": "8466:3:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UintSet_$5848_storage_ptr",
                            "typeString": "struct EnumerableSet.UintSet storage pointer"
                          }
                        },
                        "id": 5880,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_inner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5847,
                        "src": "8466:10:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$5462_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 5883,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5873,
                            "src": "8486:5:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 5882,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "8478:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes32_$",
                            "typeString": "type(bytes32)"
                          },
                          "typeName": {
                            "id": 5881,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "8478:7:31",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 5884,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8478:14:31",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Set_$5462_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 5878,
                      "name": "_remove",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5583,
                      "src": "8458:7:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Set_$5462_storage_ptr_$_t_bytes32_$returns$_t_bool_$",
                        "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)"
                      }
                    },
                    "id": 5885,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8458:35:31",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 5877,
                  "id": 5886,
                  "nodeType": "Return",
                  "src": "8451:42:31"
                }
              ]
            },
            "documentation": {
              "id": 5869,
              "nodeType": "StructuredDocumentation",
              "src": "8203:157:31",
              "text": " @dev Removes a value from a set. O(1).\n Returns true if the value was removed from the set, that is if it was\n present."
            },
            "id": 5888,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "remove",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 5874,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5871,
                  "mutability": "mutable",
                  "name": "set",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5888,
                  "src": "8381:19:31",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_UintSet_$5848_storage_ptr",
                    "typeString": "struct EnumerableSet.UintSet"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 5870,
                    "name": "UintSet",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5848,
                    "src": "8381:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_UintSet_$5848_storage_ptr",
                      "typeString": "struct EnumerableSet.UintSet"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5873,
                  "mutability": "mutable",
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5888,
                  "src": "8402:13:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5872,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "8402:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8380:36:31"
            },
            "returnParameters": {
              "id": 5877,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5876,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5888,
                  "src": "8435:4:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 5875,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "8435:4:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8434:6:31"
            },
            "scope": 5943,
            "src": "8365:135:31",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 5907,
              "nodeType": "Block",
              "src": "8664:61:31",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5899,
                          "name": "set",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5891,
                          "src": "8691:3:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UintSet_$5848_storage_ptr",
                            "typeString": "struct EnumerableSet.UintSet storage pointer"
                          }
                        },
                        "id": 5900,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_inner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5847,
                        "src": "8691:10:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$5462_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 5903,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5893,
                            "src": "8711:5:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 5902,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "8703:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes32_$",
                            "typeString": "type(bytes32)"
                          },
                          "typeName": {
                            "id": 5901,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "8703:7:31",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 5904,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8703:14:31",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Set_$5462_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 5898,
                      "name": "_contains",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5601,
                      "src": "8681:9:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$5462_storage_ptr_$_t_bytes32_$returns$_t_bool_$",
                        "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) view returns (bool)"
                      }
                    },
                    "id": 5905,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8681:37:31",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 5897,
                  "id": 5906,
                  "nodeType": "Return",
                  "src": "8674:44:31"
                }
              ]
            },
            "documentation": {
              "id": 5889,
              "nodeType": "StructuredDocumentation",
              "src": "8506:70:31",
              "text": " @dev Returns true if the value is in the set. O(1)."
            },
            "id": 5908,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "contains",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 5894,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5891,
                  "mutability": "mutable",
                  "name": "set",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5908,
                  "src": "8599:19:31",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_UintSet_$5848_storage_ptr",
                    "typeString": "struct EnumerableSet.UintSet"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 5890,
                    "name": "UintSet",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5848,
                    "src": "8599:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_UintSet_$5848_storage_ptr",
                      "typeString": "struct EnumerableSet.UintSet"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5893,
                  "mutability": "mutable",
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5908,
                  "src": "8620:13:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5892,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "8620:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8598:36:31"
            },
            "returnParameters": {
              "id": 5897,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5896,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5908,
                  "src": "8658:4:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 5895,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "8658:4:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8657:6:31"
            },
            "scope": 5943,
            "src": "8581:144:31",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 5921,
              "nodeType": "Block",
              "src": "8875:43:31",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5917,
                          "name": "set",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5911,
                          "src": "8900:3:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UintSet_$5848_storage_ptr",
                            "typeString": "struct EnumerableSet.UintSet storage pointer"
                          }
                        },
                        "id": 5918,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_inner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5847,
                        "src": "8900:10:31",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$5462_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Set_$5462_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        }
                      ],
                      "id": 5916,
                      "name": "_length",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5614,
                      "src": "8892:7:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$5462_storage_ptr_$returns$_t_uint256_$",
                        "typeString": "function (struct EnumerableSet.Set storage pointer) view returns (uint256)"
                      }
                    },
                    "id": 5919,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8892:19:31",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 5915,
                  "id": 5920,
                  "nodeType": "Return",
                  "src": "8885:26:31"
                }
              ]
            },
            "documentation": {
              "id": 5909,
              "nodeType": "StructuredDocumentation",
              "src": "8731:70:31",
              "text": " @dev Returns the number of values on the set. O(1)."
            },
            "id": 5922,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "length",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 5912,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5911,
                  "mutability": "mutable",
                  "name": "set",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5922,
                  "src": "8822:19:31",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_UintSet_$5848_storage_ptr",
                    "typeString": "struct EnumerableSet.UintSet"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 5910,
                    "name": "UintSet",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5848,
                    "src": "8822:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_UintSet_$5848_storage_ptr",
                      "typeString": "struct EnumerableSet.UintSet"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8821:21:31"
            },
            "returnParameters": {
              "id": 5915,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5914,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5922,
                  "src": "8866:7:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5913,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "8866:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8865:9:31"
            },
            "scope": 5943,
            "src": "8806:112:31",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 5941,
              "nodeType": "Block",
              "src": "9330:55:31",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 5935,
                              "name": "set",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5925,
                              "src": "9359:3:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UintSet_$5848_storage_ptr",
                                "typeString": "struct EnumerableSet.UintSet storage pointer"
                              }
                            },
                            "id": 5936,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "_inner",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 5847,
                            "src": "9359:10:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Set_$5462_storage",
                              "typeString": "struct EnumerableSet.Set storage ref"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 5937,
                            "name": "index",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5927,
                            "src": "9371:5:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_struct$_Set_$5462_storage",
                              "typeString": "struct EnumerableSet.Set storage ref"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 5934,
                          "name": "_at",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5639,
                          "src": "9355:3:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$5462_storage_ptr_$_t_uint256_$returns$_t_bytes32_$",
                            "typeString": "function (struct EnumerableSet.Set storage pointer,uint256) view returns (bytes32)"
                          }
                        },
                        "id": 5938,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9355:22:31",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 5933,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "9347:7:31",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_uint256_$",
                        "typeString": "type(uint256)"
                      },
                      "typeName": {
                        "id": 5932,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "9347:7:31",
                        "typeDescriptions": {
                          "typeIdentifier": null,
                          "typeString": null
                        }
                      }
                    },
                    "id": 5939,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9347:31:31",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 5931,
                  "id": 5940,
                  "nodeType": "Return",
                  "src": "9340:38:31"
                }
              ]
            },
            "documentation": {
              "id": 5923,
              "nodeType": "StructuredDocumentation",
              "src": "8923:322:31",
              "text": " @dev Returns the value stored at position `index` in the set. O(1).\n Note that there are no guarantees on the ordering of values inside the\n array, and it may change when more values are added or removed.\n Requirements:\n - `index` must be strictly less than {length}."
            },
            "id": 5942,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "at",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 5928,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5925,
                  "mutability": "mutable",
                  "name": "set",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5942,
                  "src": "9262:19:31",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_UintSet_$5848_storage_ptr",
                    "typeString": "struct EnumerableSet.UintSet"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 5924,
                    "name": "UintSet",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5848,
                    "src": "9262:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_UintSet_$5848_storage_ptr",
                      "typeString": "struct EnumerableSet.UintSet"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5927,
                  "mutability": "mutable",
                  "name": "index",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5942,
                  "src": "9283:13:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5926,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "9283:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9261:36:31"
            },
            "returnParameters": {
              "id": 5931,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5930,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5942,
                  "src": "9321:7:31",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5929,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "9321:7:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9320:9:31"
            },
            "scope": 5943,
            "src": "9250:135:31",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          }
        ],
        "scope": 5944,
        "src": "753:8634:31"
      }
    ],
    "src": "33:9355:31"
  },
  "legacyAST": {
    "attributes": {
      "absolutePath": "@openzeppelin/contracts/utils/EnumerableSet.sol",
      "exportedSymbols": {
        "EnumerableSet": [
          5943
        ]
      },
      "license": "MIT"
    },
    "children": [
      {
        "attributes": {
          "literals": [
            "solidity",
            ">=",
            "0.6",
            ".0",
            "<",
            "0.8",
            ".0"
          ]
        },
        "id": 5453,
        "name": "PragmaDirective",
        "src": "33:31:31"
      },
      {
        "attributes": {
          "abstract": false,
          "baseContracts": [
            null
          ],
          "contractDependencies": [
            null
          ],
          "contractKind": "library",
          "fullyImplemented": true,
          "linearizedBaseContracts": [
            5943
          ],
          "name": "EnumerableSet",
          "scope": 5944
        },
        "children": [
          {
            "attributes": {
              "text": " @dev Library for managing\n https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive\n types.\n Sets have the following properties:\n - Elements are added, removed, and checked for existence in constant time\n (O(1)).\n - Elements are enumerated in O(n). No guarantees are made on the ordering.\n ```\n contract Example {\n     // Add the library methods\n     using EnumerableSet for EnumerableSet.AddressSet;\n     // Declare a set state variable\n     EnumerableSet.AddressSet private mySet;\n }\n ```\n As of v3.3.0, sets of type `bytes32` (`Bytes32Set`), `address` (`AddressSet`)\n and `uint256` (`UintSet`) are supported."
            },
            "id": 5454,
            "name": "StructuredDocumentation",
            "src": "66:686:31"
          },
          {
            "attributes": {
              "canonicalName": "EnumerableSet.Set",
              "name": "Set",
              "scope": 5943,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "constant": false,
                  "mutability": "mutable",
                  "name": "_values",
                  "overrides": null,
                  "scope": 5462,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "bytes32[]",
                  "value": null,
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "length": null,
                      "type": "bytes32[]"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 5455,
                        "name": "ElementaryTypeName",
                        "src": "1275:7:31"
                      }
                    ],
                    "id": 5456,
                    "name": "ArrayTypeName",
                    "src": "1275:9:31"
                  }
                ],
                "id": 5457,
                "name": "VariableDeclaration",
                "src": "1275:17:31"
              },
              {
                "attributes": {
                  "constant": false,
                  "mutability": "mutable",
                  "name": "_indexes",
                  "overrides": null,
                  "scope": 5462,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "mapping(bytes32 => uint256)",
                  "value": null,
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "type": "mapping(bytes32 => uint256)"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 5458,
                        "name": "ElementaryTypeName",
                        "src": "1435:7:31"
                      },
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 5459,
                        "name": "ElementaryTypeName",
                        "src": "1446:7:31"
                      }
                    ],
                    "id": 5460,
                    "name": "Mapping",
                    "src": "1426:28:31"
                  }
                ],
                "id": 5461,
                "name": "VariableDeclaration",
                "src": "1426:37:31"
              }
            ],
            "id": 5462,
            "name": "StructDefinition",
            "src": "1221:249:31"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "_add",
              "overrides": null,
              "scope": 5943,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "private"
            },
            "children": [
              {
                "attributes": {
                  "text": " @dev Add a value to a set. O(1).\n Returns true if the value was added to the set, that is if it was not\n already present."
                },
                "id": 5463,
                "name": "StructuredDocumentation",
                "src": "1476:159:31"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "set",
                      "overrides": null,
                      "scope": 5503,
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "type": "struct EnumerableSet.Set",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "Set",
                          "referencedDeclaration": 5462,
                          "type": "struct EnumerableSet.Set"
                        },
                        "id": 5464,
                        "name": "UserDefinedTypeName",
                        "src": "1654:3:31"
                      }
                    ],
                    "id": 5465,
                    "name": "VariableDeclaration",
                    "src": "1654:15:31"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "value",
                      "overrides": null,
                      "scope": 5503,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 5466,
                        "name": "ElementaryTypeName",
                        "src": "1671:7:31"
                      }
                    ],
                    "id": 5467,
                    "name": "VariableDeclaration",
                    "src": "1671:13:31"
                  }
                ],
                "id": 5468,
                "name": "ParameterList",
                "src": "1653:32:31"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "overrides": null,
                      "scope": 5503,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 5469,
                        "name": "ElementaryTypeName",
                        "src": "1703:4:31"
                      }
                    ],
                    "id": 5470,
                    "name": "VariableDeclaration",
                    "src": "1703:4:31"
                  }
                ],
                "id": 5471,
                "name": "ParameterList",
                "src": "1702:6:31"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "!",
                          "prefix": true,
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "bool",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_struct$_Set_$5462_storage_ptr",
                                      "typeString": "struct EnumerableSet.Set storage pointer"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 5601,
                                  "type": "function (struct EnumerableSet.Set storage pointer,bytes32) view returns (bool)",
                                  "value": "_contains"
                                },
                                "id": 5472,
                                "name": "Identifier",
                                "src": "1724:9:31"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 5465,
                                  "type": "struct EnumerableSet.Set storage pointer",
                                  "value": "set"
                                },
                                "id": 5473,
                                "name": "Identifier",
                                "src": "1734:3:31"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 5467,
                                  "type": "bytes32",
                                  "value": "value"
                                },
                                "id": 5474,
                                "name": "Identifier",
                                "src": "1739:5:31"
                              }
                            ],
                            "id": 5475,
                            "name": "FunctionCall",
                            "src": "1724:21:31"
                          }
                        ],
                        "id": 5476,
                        "name": "UnaryOperation",
                        "src": "1723:22:31"
                      },
                      {
                        "children": [
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "tuple()",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "push",
                                      "referencedDeclaration": null,
                                      "type": "function (bytes32)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "_values",
                                          "referencedDeclaration": 5457,
                                          "type": "bytes32[] storage ref"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 5465,
                                              "type": "struct EnumerableSet.Set storage pointer",
                                              "value": "set"
                                            },
                                            "id": 5477,
                                            "name": "Identifier",
                                            "src": "1761:3:31"
                                          }
                                        ],
                                        "id": 5480,
                                        "name": "MemberAccess",
                                        "src": "1761:11:31"
                                      }
                                    ],
                                    "id": 5481,
                                    "name": "MemberAccess",
                                    "src": "1761:16:31"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 5467,
                                      "type": "bytes32",
                                      "value": "value"
                                    },
                                    "id": 5482,
                                    "name": "Identifier",
                                    "src": "1778:5:31"
                                  }
                                ],
                                "id": 5483,
                                "name": "FunctionCall",
                                "src": "1761:23:31"
                              }
                            ],
                            "id": 5484,
                            "name": "ExpressionStatement",
                            "src": "1761:23:31"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "=",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "_indexes",
                                          "referencedDeclaration": 5461,
                                          "type": "mapping(bytes32 => uint256)"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 5465,
                                              "type": "struct EnumerableSet.Set storage pointer",
                                              "value": "set"
                                            },
                                            "id": 5485,
                                            "name": "Identifier",
                                            "src": "1919:3:31"
                                          }
                                        ],
                                        "id": 5488,
                                        "name": "MemberAccess",
                                        "src": "1919:12:31"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 5467,
                                          "type": "bytes32",
                                          "value": "value"
                                        },
                                        "id": 5487,
                                        "name": "Identifier",
                                        "src": "1932:5:31"
                                      }
                                    ],
                                    "id": 5489,
                                    "name": "IndexAccess",
                                    "src": "1919:19:31"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "length",
                                      "referencedDeclaration": null,
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "_values",
                                          "referencedDeclaration": 5457,
                                          "type": "bytes32[] storage ref"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 5465,
                                              "type": "struct EnumerableSet.Set storage pointer",
                                              "value": "set"
                                            },
                                            "id": 5490,
                                            "name": "Identifier",
                                            "src": "1941:3:31"
                                          }
                                        ],
                                        "id": 5491,
                                        "name": "MemberAccess",
                                        "src": "1941:11:31"
                                      }
                                    ],
                                    "id": 5492,
                                    "name": "MemberAccess",
                                    "src": "1941:18:31"
                                  }
                                ],
                                "id": 5493,
                                "name": "Assignment",
                                "src": "1919:40:31"
                              }
                            ],
                            "id": 5494,
                            "name": "ExpressionStatement",
                            "src": "1919:40:31"
                          },
                          {
                            "attributes": {
                              "functionReturnParameters": 5471
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "74727565",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "bool",
                                  "type": "bool",
                                  "value": "true"
                                },
                                "id": 5495,
                                "name": "Literal",
                                "src": "1980:4:31"
                              }
                            ],
                            "id": 5496,
                            "name": "Return",
                            "src": "1973:11:31"
                          }
                        ],
                        "id": 5497,
                        "name": "Block",
                        "src": "1747:248:31"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "functionReturnParameters": 5471
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "66616c7365",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "bool",
                                  "type": "bool",
                                  "value": "false"
                                },
                                "id": 5498,
                                "name": "Literal",
                                "src": "2022:5:31"
                              }
                            ],
                            "id": 5499,
                            "name": "Return",
                            "src": "2015:12:31"
                          }
                        ],
                        "id": 5500,
                        "name": "Block",
                        "src": "2001:37:31"
                      }
                    ],
                    "id": 5501,
                    "name": "IfStatement",
                    "src": "1719:319:31"
                  }
                ],
                "id": 5502,
                "name": "Block",
                "src": "1709:335:31"
              }
            ],
            "id": 5503,
            "name": "FunctionDefinition",
            "src": "1640:404:31"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "_remove",
              "overrides": null,
              "scope": 5943,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "private"
            },
            "children": [
              {
                "attributes": {
                  "text": " @dev Removes a value from a set. O(1).\n Returns true if the value was removed from the set, that is if it was\n present."
                },
                "id": 5504,
                "name": "StructuredDocumentation",
                "src": "2050:157:31"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "set",
                      "overrides": null,
                      "scope": 5583,
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "type": "struct EnumerableSet.Set",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "Set",
                          "referencedDeclaration": 5462,
                          "type": "struct EnumerableSet.Set"
                        },
                        "id": 5505,
                        "name": "UserDefinedTypeName",
                        "src": "2229:3:31"
                      }
                    ],
                    "id": 5506,
                    "name": "VariableDeclaration",
                    "src": "2229:15:31"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "value",
                      "overrides": null,
                      "scope": 5583,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 5507,
                        "name": "ElementaryTypeName",
                        "src": "2246:7:31"
                      }
                    ],
                    "id": 5508,
                    "name": "VariableDeclaration",
                    "src": "2246:13:31"
                  }
                ],
                "id": 5509,
                "name": "ParameterList",
                "src": "2228:32:31"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "overrides": null,
                      "scope": 5583,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 5510,
                        "name": "ElementaryTypeName",
                        "src": "2278:4:31"
                      }
                    ],
                    "id": 5511,
                    "name": "VariableDeclaration",
                    "src": "2278:4:31"
                  }
                ],
                "id": 5512,
                "name": "ParameterList",
                "src": "2277:6:31"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        5514
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "valueIndex",
                          "overrides": null,
                          "scope": 5582,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 5513,
                            "name": "ElementaryTypeName",
                            "src": "2394:7:31"
                          }
                        ],
                        "id": 5514,
                        "name": "VariableDeclaration",
                        "src": "2394:18:31"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "_indexes",
                              "referencedDeclaration": 5461,
                              "type": "mapping(bytes32 => uint256)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 5506,
                                  "type": "struct EnumerableSet.Set storage pointer",
                                  "value": "set"
                                },
                                "id": 5515,
                                "name": "Identifier",
                                "src": "2415:3:31"
                              }
                            ],
                            "id": 5516,
                            "name": "MemberAccess",
                            "src": "2415:12:31"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 5508,
                              "type": "bytes32",
                              "value": "value"
                            },
                            "id": 5517,
                            "name": "Identifier",
                            "src": "2428:5:31"
                          }
                        ],
                        "id": 5518,
                        "name": "IndexAccess",
                        "src": "2415:19:31"
                      }
                    ],
                    "id": 5519,
                    "name": "VariableDeclarationStatement",
                    "src": "2394:40:31"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "!=",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 5514,
                              "type": "uint256",
                              "value": "valueIndex"
                            },
                            "id": 5520,
                            "name": "Identifier",
                            "src": "2449:10:31"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 5521,
                            "name": "Literal",
                            "src": "2463:1:31"
                          }
                        ],
                        "id": 5522,
                        "name": "BinaryOperation",
                        "src": "2449:15:31"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "assignments": [
                                5524
                              ]
                            },
                            "children": [
                              {
                                "attributes": {
                                  "constant": false,
                                  "mutability": "mutable",
                                  "name": "toDeleteIndex",
                                  "overrides": null,
                                  "scope": 5577,
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "type": "uint256",
                                  "value": null,
                                  "visibility": "internal"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "uint256",
                                      "type": "uint256"
                                    },
                                    "id": 5523,
                                    "name": "ElementaryTypeName",
                                    "src": "2806:7:31"
                                  }
                                ],
                                "id": 5524,
                                "name": "VariableDeclaration",
                                "src": "2806:21:31"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "-",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 5514,
                                      "type": "uint256",
                                      "value": "valueIndex"
                                    },
                                    "id": 5525,
                                    "name": "Identifier",
                                    "src": "2830:10:31"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "31",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 1",
                                      "value": "1"
                                    },
                                    "id": 5526,
                                    "name": "Literal",
                                    "src": "2843:1:31"
                                  }
                                ],
                                "id": 5527,
                                "name": "BinaryOperation",
                                "src": "2830:14:31"
                              }
                            ],
                            "id": 5528,
                            "name": "VariableDeclarationStatement",
                            "src": "2806:38:31"
                          },
                          {
                            "attributes": {
                              "assignments": [
                                5530
                              ]
                            },
                            "children": [
                              {
                                "attributes": {
                                  "constant": false,
                                  "mutability": "mutable",
                                  "name": "lastIndex",
                                  "overrides": null,
                                  "scope": 5577,
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "type": "uint256",
                                  "value": null,
                                  "visibility": "internal"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "uint256",
                                      "type": "uint256"
                                    },
                                    "id": 5529,
                                    "name": "ElementaryTypeName",
                                    "src": "2858:7:31"
                                  }
                                ],
                                "id": 5530,
                                "name": "VariableDeclaration",
                                "src": "2858:17:31"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "-",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "length",
                                      "referencedDeclaration": null,
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "_values",
                                          "referencedDeclaration": 5457,
                                          "type": "bytes32[] storage ref"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 5506,
                                              "type": "struct EnumerableSet.Set storage pointer",
                                              "value": "set"
                                            },
                                            "id": 5531,
                                            "name": "Identifier",
                                            "src": "2878:3:31"
                                          }
                                        ],
                                        "id": 5532,
                                        "name": "MemberAccess",
                                        "src": "2878:11:31"
                                      }
                                    ],
                                    "id": 5533,
                                    "name": "MemberAccess",
                                    "src": "2878:18:31"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "31",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 1",
                                      "value": "1"
                                    },
                                    "id": 5534,
                                    "name": "Literal",
                                    "src": "2899:1:31"
                                  }
                                ],
                                "id": 5535,
                                "name": "BinaryOperation",
                                "src": "2878:22:31"
                              }
                            ],
                            "id": 5536,
                            "name": "VariableDeclarationStatement",
                            "src": "2858:42:31"
                          },
                          {
                            "attributes": {
                              "assignments": [
                                5538
                              ]
                            },
                            "children": [
                              {
                                "attributes": {
                                  "constant": false,
                                  "mutability": "mutable",
                                  "name": "lastvalue",
                                  "overrides": null,
                                  "scope": 5577,
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "type": "bytes32",
                                  "value": null,
                                  "visibility": "internal"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "bytes32",
                                      "type": "bytes32"
                                    },
                                    "id": 5537,
                                    "name": "ElementaryTypeName",
                                    "src": "3140:7:31"
                                  }
                                ],
                                "id": 5538,
                                "name": "VariableDeclaration",
                                "src": "3140:17:31"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "bytes32"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "_values",
                                      "referencedDeclaration": 5457,
                                      "type": "bytes32[] storage ref"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 5506,
                                          "type": "struct EnumerableSet.Set storage pointer",
                                          "value": "set"
                                        },
                                        "id": 5539,
                                        "name": "Identifier",
                                        "src": "3160:3:31"
                                      }
                                    ],
                                    "id": 5540,
                                    "name": "MemberAccess",
                                    "src": "3160:11:31"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 5530,
                                      "type": "uint256",
                                      "value": "lastIndex"
                                    },
                                    "id": 5541,
                                    "name": "Identifier",
                                    "src": "3172:9:31"
                                  }
                                ],
                                "id": 5542,
                                "name": "IndexAccess",
                                "src": "3160:22:31"
                              }
                            ],
                            "id": 5543,
                            "name": "VariableDeclarationStatement",
                            "src": "3140:42:31"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "=",
                                  "type": "bytes32"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "type": "bytes32"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "_values",
                                          "referencedDeclaration": 5457,
                                          "type": "bytes32[] storage ref"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 5506,
                                              "type": "struct EnumerableSet.Set storage pointer",
                                              "value": "set"
                                            },
                                            "id": 5544,
                                            "name": "Identifier",
                                            "src": "3274:3:31"
                                          }
                                        ],
                                        "id": 5547,
                                        "name": "MemberAccess",
                                        "src": "3274:11:31"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 5524,
                                          "type": "uint256",
                                          "value": "toDeleteIndex"
                                        },
                                        "id": 5546,
                                        "name": "Identifier",
                                        "src": "3286:13:31"
                                      }
                                    ],
                                    "id": 5548,
                                    "name": "IndexAccess",
                                    "src": "3274:26:31"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 5538,
                                      "type": "bytes32",
                                      "value": "lastvalue"
                                    },
                                    "id": 5549,
                                    "name": "Identifier",
                                    "src": "3303:9:31"
                                  }
                                ],
                                "id": 5550,
                                "name": "Assignment",
                                "src": "3274:38:31"
                              }
                            ],
                            "id": 5551,
                            "name": "ExpressionStatement",
                            "src": "3274:38:31"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "=",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "_indexes",
                                          "referencedDeclaration": 5461,
                                          "type": "mapping(bytes32 => uint256)"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 5506,
                                              "type": "struct EnumerableSet.Set storage pointer",
                                              "value": "set"
                                            },
                                            "id": 5552,
                                            "name": "Identifier",
                                            "src": "3378:3:31"
                                          }
                                        ],
                                        "id": 5555,
                                        "name": "MemberAccess",
                                        "src": "3378:12:31"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 5538,
                                          "type": "bytes32",
                                          "value": "lastvalue"
                                        },
                                        "id": 5554,
                                        "name": "Identifier",
                                        "src": "3391:9:31"
                                      }
                                    ],
                                    "id": 5556,
                                    "name": "IndexAccess",
                                    "src": "3378:23:31"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "operator": "+",
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 5524,
                                          "type": "uint256",
                                          "value": "toDeleteIndex"
                                        },
                                        "id": 5557,
                                        "name": "Identifier",
                                        "src": "3404:13:31"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "31",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "number",
                                          "type": "int_const 1",
                                          "value": "1"
                                        },
                                        "id": 5558,
                                        "name": "Literal",
                                        "src": "3420:1:31"
                                      }
                                    ],
                                    "id": 5559,
                                    "name": "BinaryOperation",
                                    "src": "3404:17:31"
                                  }
                                ],
                                "id": 5560,
                                "name": "Assignment",
                                "src": "3378:43:31"
                              }
                            ],
                            "id": 5561,
                            "name": "ExpressionStatement",
                            "src": "3378:43:31"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    null
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "tuple()",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        null
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "pop",
                                      "referencedDeclaration": null,
                                      "type": "function ()"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "_values",
                                          "referencedDeclaration": 5457,
                                          "type": "bytes32[] storage ref"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 5506,
                                              "type": "struct EnumerableSet.Set storage pointer",
                                              "value": "set"
                                            },
                                            "id": 5562,
                                            "name": "Identifier",
                                            "src": "3527:3:31"
                                          }
                                        ],
                                        "id": 5565,
                                        "name": "MemberAccess",
                                        "src": "3527:11:31"
                                      }
                                    ],
                                    "id": 5566,
                                    "name": "MemberAccess",
                                    "src": "3527:15:31"
                                  }
                                ],
                                "id": 5567,
                                "name": "FunctionCall",
                                "src": "3527:17:31"
                              }
                            ],
                            "id": 5568,
                            "name": "ExpressionStatement",
                            "src": "3527:17:31"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "delete",
                                  "prefix": true,
                                  "type": "tuple()"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "_indexes",
                                          "referencedDeclaration": 5461,
                                          "type": "mapping(bytes32 => uint256)"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 5506,
                                              "type": "struct EnumerableSet.Set storage pointer",
                                              "value": "set"
                                            },
                                            "id": 5569,
                                            "name": "Identifier",
                                            "src": "3619:3:31"
                                          }
                                        ],
                                        "id": 5570,
                                        "name": "MemberAccess",
                                        "src": "3619:12:31"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 5508,
                                          "type": "bytes32",
                                          "value": "value"
                                        },
                                        "id": 5571,
                                        "name": "Identifier",
                                        "src": "3632:5:31"
                                      }
                                    ],
                                    "id": 5572,
                                    "name": "IndexAccess",
                                    "src": "3619:19:31"
                                  }
                                ],
                                "id": 5573,
                                "name": "UnaryOperation",
                                "src": "3612:26:31"
                              }
                            ],
                            "id": 5574,
                            "name": "ExpressionStatement",
                            "src": "3612:26:31"
                          },
                          {
                            "attributes": {
                              "functionReturnParameters": 5512
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "74727565",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "bool",
                                  "type": "bool",
                                  "value": "true"
                                },
                                "id": 5575,
                                "name": "Literal",
                                "src": "3660:4:31"
                              }
                            ],
                            "id": 5576,
                            "name": "Return",
                            "src": "3653:11:31"
                          }
                        ],
                        "id": 5577,
                        "name": "Block",
                        "src": "2466:1209:31"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "functionReturnParameters": 5512
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "66616c7365",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "bool",
                                  "type": "bool",
                                  "value": "false"
                                },
                                "id": 5578,
                                "name": "Literal",
                                "src": "3702:5:31"
                              }
                            ],
                            "id": 5579,
                            "name": "Return",
                            "src": "3695:12:31"
                          }
                        ],
                        "id": 5580,
                        "name": "Block",
                        "src": "3681:37:31"
                      }
                    ],
                    "id": 5581,
                    "name": "IfStatement",
                    "src": "2445:1273:31"
                  }
                ],
                "id": 5582,
                "name": "Block",
                "src": "2284:1440:31"
              }
            ],
            "id": 5583,
            "name": "FunctionDefinition",
            "src": "2212:1512:31"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "_contains",
              "overrides": null,
              "scope": 5943,
              "stateMutability": "view",
              "virtual": false,
              "visibility": "private"
            },
            "children": [
              {
                "attributes": {
                  "text": " @dev Returns true if the value is in the set. O(1)."
                },
                "id": 5584,
                "name": "StructuredDocumentation",
                "src": "3730:70:31"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "set",
                      "overrides": null,
                      "scope": 5601,
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "type": "struct EnumerableSet.Set",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "Set",
                          "referencedDeclaration": 5462,
                          "type": "struct EnumerableSet.Set"
                        },
                        "id": 5585,
                        "name": "UserDefinedTypeName",
                        "src": "3824:3:31"
                      }
                    ],
                    "id": 5586,
                    "name": "VariableDeclaration",
                    "src": "3824:15:31"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "value",
                      "overrides": null,
                      "scope": 5601,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 5587,
                        "name": "ElementaryTypeName",
                        "src": "3841:7:31"
                      }
                    ],
                    "id": 5588,
                    "name": "VariableDeclaration",
                    "src": "3841:13:31"
                  }
                ],
                "id": 5589,
                "name": "ParameterList",
                "src": "3823:32:31"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "overrides": null,
                      "scope": 5601,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 5590,
                        "name": "ElementaryTypeName",
                        "src": "3878:4:31"
                      }
                    ],
                    "id": 5591,
                    "name": "VariableDeclaration",
                    "src": "3878:4:31"
                  }
                ],
                "id": 5592,
                "name": "ParameterList",
                "src": "3877:6:31"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 5592
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "!=",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "_indexes",
                                  "referencedDeclaration": 5461,
                                  "type": "mapping(bytes32 => uint256)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 5586,
                                      "type": "struct EnumerableSet.Set storage pointer",
                                      "value": "set"
                                    },
                                    "id": 5593,
                                    "name": "Identifier",
                                    "src": "3901:3:31"
                                  }
                                ],
                                "id": 5594,
                                "name": "MemberAccess",
                                "src": "3901:12:31"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 5588,
                                  "type": "bytes32",
                                  "value": "value"
                                },
                                "id": 5595,
                                "name": "Identifier",
                                "src": "3914:5:31"
                              }
                            ],
                            "id": 5596,
                            "name": "IndexAccess",
                            "src": "3901:19:31"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 5597,
                            "name": "Literal",
                            "src": "3924:1:31"
                          }
                        ],
                        "id": 5598,
                        "name": "BinaryOperation",
                        "src": "3901:24:31"
                      }
                    ],
                    "id": 5599,
                    "name": "Return",
                    "src": "3894:31:31"
                  }
                ],
                "id": 5600,
                "name": "Block",
                "src": "3884:48:31"
              }
            ],
            "id": 5601,
            "name": "FunctionDefinition",
            "src": "3805:127:31"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "_length",
              "overrides": null,
              "scope": 5943,
              "stateMutability": "view",
              "virtual": false,
              "visibility": "private"
            },
            "children": [
              {
                "attributes": {
                  "text": " @dev Returns the number of values on the set. O(1)."
                },
                "id": 5602,
                "name": "StructuredDocumentation",
                "src": "3938:70:31"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "set",
                      "overrides": null,
                      "scope": 5614,
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "type": "struct EnumerableSet.Set",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "Set",
                          "referencedDeclaration": 5462,
                          "type": "struct EnumerableSet.Set"
                        },
                        "id": 5603,
                        "name": "UserDefinedTypeName",
                        "src": "4030:3:31"
                      }
                    ],
                    "id": 5604,
                    "name": "VariableDeclaration",
                    "src": "4030:15:31"
                  }
                ],
                "id": 5605,
                "name": "ParameterList",
                "src": "4029:17:31"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "overrides": null,
                      "scope": 5614,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 5606,
                        "name": "ElementaryTypeName",
                        "src": "4069:7:31"
                      }
                    ],
                    "id": 5607,
                    "name": "VariableDeclaration",
                    "src": "4069:7:31"
                  }
                ],
                "id": 5608,
                "name": "ParameterList",
                "src": "4068:9:31"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 5608
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "member_name": "length",
                          "referencedDeclaration": null,
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "_values",
                              "referencedDeclaration": 5457,
                              "type": "bytes32[] storage ref"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 5604,
                                  "type": "struct EnumerableSet.Set storage pointer",
                                  "value": "set"
                                },
                                "id": 5609,
                                "name": "Identifier",
                                "src": "4095:3:31"
                              }
                            ],
                            "id": 5610,
                            "name": "MemberAccess",
                            "src": "4095:11:31"
                          }
                        ],
                        "id": 5611,
                        "name": "MemberAccess",
                        "src": "4095:18:31"
                      }
                    ],
                    "id": 5612,
                    "name": "Return",
                    "src": "4088:25:31"
                  }
                ],
                "id": 5613,
                "name": "Block",
                "src": "4078:42:31"
              }
            ],
            "id": 5614,
            "name": "FunctionDefinition",
            "src": "4013:107:31"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "_at",
              "overrides": null,
              "scope": 5943,
              "stateMutability": "view",
              "virtual": false,
              "visibility": "private"
            },
            "children": [
              {
                "attributes": {
                  "text": " @dev Returns the value stored at position `index` in the set. O(1).\n Note that there are no guarantees on the ordering of values inside the\n array, and it may change when more values are added or removed.\n Requirements:\n - `index` must be strictly less than {length}."
                },
                "id": 5615,
                "name": "StructuredDocumentation",
                "src": "4125:322:31"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "set",
                      "overrides": null,
                      "scope": 5639,
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "type": "struct EnumerableSet.Set",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "Set",
                          "referencedDeclaration": 5462,
                          "type": "struct EnumerableSet.Set"
                        },
                        "id": 5616,
                        "name": "UserDefinedTypeName",
                        "src": "4465:3:31"
                      }
                    ],
                    "id": 5617,
                    "name": "VariableDeclaration",
                    "src": "4465:15:31"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "index",
                      "overrides": null,
                      "scope": 5639,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 5618,
                        "name": "ElementaryTypeName",
                        "src": "4482:7:31"
                      }
                    ],
                    "id": 5619,
                    "name": "VariableDeclaration",
                    "src": "4482:13:31"
                  }
                ],
                "id": 5620,
                "name": "ParameterList",
                "src": "4464:32:31"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "overrides": null,
                      "scope": 5639,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 5621,
                        "name": "ElementaryTypeName",
                        "src": "4519:7:31"
                      }
                    ],
                    "id": 5622,
                    "name": "VariableDeclaration",
                    "src": "4519:7:31"
                  }
                ],
                "id": 5623,
                "name": "ParameterList",
                "src": "4518:9:31"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_045d6834e6193a687012a3ad777f612279e549b6945364d9d2324f48610d3cbb",
                                  "typeString": "literal_string \"EnumerableSet: index out of bounds\""
                                }
                              ],
                              "overloadedDeclarations": [
                                -18,
                                -18
                              ],
                              "referencedDeclaration": -18,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 5624,
                            "name": "Identifier",
                            "src": "4538:7:31"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": ">",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "length",
                                  "referencedDeclaration": null,
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "_values",
                                      "referencedDeclaration": 5457,
                                      "type": "bytes32[] storage ref"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 5617,
                                          "type": "struct EnumerableSet.Set storage pointer",
                                          "value": "set"
                                        },
                                        "id": 5625,
                                        "name": "Identifier",
                                        "src": "4546:3:31"
                                      }
                                    ],
                                    "id": 5626,
                                    "name": "MemberAccess",
                                    "src": "4546:11:31"
                                  }
                                ],
                                "id": 5627,
                                "name": "MemberAccess",
                                "src": "4546:18:31"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 5619,
                                  "type": "uint256",
                                  "value": "index"
                                },
                                "id": 5628,
                                "name": "Identifier",
                                "src": "4567:5:31"
                              }
                            ],
                            "id": 5629,
                            "name": "BinaryOperation",
                            "src": "4546:26:31"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "456e756d657261626c655365743a20696e646578206f7574206f6620626f756e6473",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "string",
                              "type": "literal_string \"EnumerableSet: index out of bounds\"",
                              "value": "EnumerableSet: index out of bounds"
                            },
                            "id": 5630,
                            "name": "Literal",
                            "src": "4574:36:31"
                          }
                        ],
                        "id": 5631,
                        "name": "FunctionCall",
                        "src": "4538:73:31"
                      }
                    ],
                    "id": 5632,
                    "name": "ExpressionStatement",
                    "src": "4538:73:31"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 5623
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "bytes32"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "_values",
                              "referencedDeclaration": 5457,
                              "type": "bytes32[] storage ref"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 5617,
                                  "type": "struct EnumerableSet.Set storage pointer",
                                  "value": "set"
                                },
                                "id": 5633,
                                "name": "Identifier",
                                "src": "4628:3:31"
                              }
                            ],
                            "id": 5634,
                            "name": "MemberAccess",
                            "src": "4628:11:31"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 5619,
                              "type": "uint256",
                              "value": "index"
                            },
                            "id": 5635,
                            "name": "Identifier",
                            "src": "4640:5:31"
                          }
                        ],
                        "id": 5636,
                        "name": "IndexAccess",
                        "src": "4628:18:31"
                      }
                    ],
                    "id": 5637,
                    "name": "Return",
                    "src": "4621:25:31"
                  }
                ],
                "id": 5638,
                "name": "Block",
                "src": "4528:125:31"
              }
            ],
            "id": 5639,
            "name": "FunctionDefinition",
            "src": "4452:201:31"
          },
          {
            "attributes": {
              "canonicalName": "EnumerableSet.Bytes32Set",
              "name": "Bytes32Set",
              "scope": 5943,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "constant": false,
                  "mutability": "mutable",
                  "name": "_inner",
                  "overrides": null,
                  "scope": 5642,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "struct EnumerableSet.Set",
                  "value": null,
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "contractScope": null,
                      "name": "Set",
                      "referencedDeclaration": 5462,
                      "type": "struct EnumerableSet.Set"
                    },
                    "id": 5640,
                    "name": "UserDefinedTypeName",
                    "src": "4706:3:31"
                  }
                ],
                "id": 5641,
                "name": "VariableDeclaration",
                "src": "4706:10:31"
              }
            ],
            "id": 5642,
            "name": "StructDefinition",
            "src": "4678:45:31"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "add",
              "overrides": null,
              "scope": 5943,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "text": " @dev Add a value to a set. O(1).\n Returns true if the value was added to the set, that is if it was not\n already present."
                },
                "id": 5643,
                "name": "StructuredDocumentation",
                "src": "4729:159:31"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "set",
                      "overrides": null,
                      "scope": 5659,
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "type": "struct EnumerableSet.Bytes32Set",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "Bytes32Set",
                          "referencedDeclaration": 5642,
                          "type": "struct EnumerableSet.Bytes32Set"
                        },
                        "id": 5644,
                        "name": "UserDefinedTypeName",
                        "src": "4906:10:31"
                      }
                    ],
                    "id": 5645,
                    "name": "VariableDeclaration",
                    "src": "4906:22:31"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "value",
                      "overrides": null,
                      "scope": 5659,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 5646,
                        "name": "ElementaryTypeName",
                        "src": "4930:7:31"
                      }
                    ],
                    "id": 5647,
                    "name": "VariableDeclaration",
                    "src": "4930:13:31"
                  }
                ],
                "id": 5648,
                "name": "ParameterList",
                "src": "4905:39:31"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "overrides": null,
                      "scope": 5659,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 5649,
                        "name": "ElementaryTypeName",
                        "src": "4963:4:31"
                      }
                    ],
                    "id": 5650,
                    "name": "VariableDeclaration",
                    "src": "4963:4:31"
                  }
                ],
                "id": 5651,
                "name": "ParameterList",
                "src": "4962:6:31"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 5651
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "bool",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_struct$_Set_$5462_storage",
                                  "typeString": "struct EnumerableSet.Set storage ref"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 5503,
                              "type": "function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)",
                              "value": "_add"
                            },
                            "id": 5652,
                            "name": "Identifier",
                            "src": "4986:4:31"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "_inner",
                              "referencedDeclaration": 5641,
                              "type": "struct EnumerableSet.Set storage ref"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 5645,
                                  "type": "struct EnumerableSet.Bytes32Set storage pointer",
                                  "value": "set"
                                },
                                "id": 5653,
                                "name": "Identifier",
                                "src": "4991:3:31"
                              }
                            ],
                            "id": 5654,
                            "name": "MemberAccess",
                            "src": "4991:10:31"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 5647,
                              "type": "bytes32",
                              "value": "value"
                            },
                            "id": 5655,
                            "name": "Identifier",
                            "src": "5003:5:31"
                          }
                        ],
                        "id": 5656,
                        "name": "FunctionCall",
                        "src": "4986:23:31"
                      }
                    ],
                    "id": 5657,
                    "name": "Return",
                    "src": "4979:30:31"
                  }
                ],
                "id": 5658,
                "name": "Block",
                "src": "4969:47:31"
              }
            ],
            "id": 5659,
            "name": "FunctionDefinition",
            "src": "4893:123:31"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "remove",
              "overrides": null,
              "scope": 5943,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "text": " @dev Removes a value from a set. O(1).\n Returns true if the value was removed from the set, that is if it was\n present."
                },
                "id": 5660,
                "name": "StructuredDocumentation",
                "src": "5022:157:31"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "set",
                      "overrides": null,
                      "scope": 5676,
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "type": "struct EnumerableSet.Bytes32Set",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "Bytes32Set",
                          "referencedDeclaration": 5642,
                          "type": "struct EnumerableSet.Bytes32Set"
                        },
                        "id": 5661,
                        "name": "UserDefinedTypeName",
                        "src": "5200:10:31"
                      }
                    ],
                    "id": 5662,
                    "name": "VariableDeclaration",
                    "src": "5200:22:31"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "value",
                      "overrides": null,
                      "scope": 5676,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 5663,
                        "name": "ElementaryTypeName",
                        "src": "5224:7:31"
                      }
                    ],
                    "id": 5664,
                    "name": "VariableDeclaration",
                    "src": "5224:13:31"
                  }
                ],
                "id": 5665,
                "name": "ParameterList",
                "src": "5199:39:31"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "overrides": null,
                      "scope": 5676,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 5666,
                        "name": "ElementaryTypeName",
                        "src": "5257:4:31"
                      }
                    ],
                    "id": 5667,
                    "name": "VariableDeclaration",
                    "src": "5257:4:31"
                  }
                ],
                "id": 5668,
                "name": "ParameterList",
                "src": "5256:6:31"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 5668
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "bool",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_struct$_Set_$5462_storage",
                                  "typeString": "struct EnumerableSet.Set storage ref"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 5583,
                              "type": "function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)",
                              "value": "_remove"
                            },
                            "id": 5669,
                            "name": "Identifier",
                            "src": "5280:7:31"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "_inner",
                              "referencedDeclaration": 5641,
                              "type": "struct EnumerableSet.Set storage ref"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 5662,
                                  "type": "struct EnumerableSet.Bytes32Set storage pointer",
                                  "value": "set"
                                },
                                "id": 5670,
                                "name": "Identifier",
                                "src": "5288:3:31"
                              }
                            ],
                            "id": 5671,
                            "name": "MemberAccess",
                            "src": "5288:10:31"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 5664,
                              "type": "bytes32",
                              "value": "value"
                            },
                            "id": 5672,
                            "name": "Identifier",
                            "src": "5300:5:31"
                          }
                        ],
                        "id": 5673,
                        "name": "FunctionCall",
                        "src": "5280:26:31"
                      }
                    ],
                    "id": 5674,
                    "name": "Return",
                    "src": "5273:33:31"
                  }
                ],
                "id": 5675,
                "name": "Block",
                "src": "5263:50:31"
              }
            ],
            "id": 5676,
            "name": "FunctionDefinition",
            "src": "5184:129:31"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "contains",
              "overrides": null,
              "scope": 5943,
              "stateMutability": "view",
              "virtual": false,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "text": " @dev Returns true if the value is in the set. O(1)."
                },
                "id": 5677,
                "name": "StructuredDocumentation",
                "src": "5319:70:31"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "set",
                      "overrides": null,
                      "scope": 5693,
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "type": "struct EnumerableSet.Bytes32Set",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "Bytes32Set",
                          "referencedDeclaration": 5642,
                          "type": "struct EnumerableSet.Bytes32Set"
                        },
                        "id": 5678,
                        "name": "UserDefinedTypeName",
                        "src": "5412:10:31"
                      }
                    ],
                    "id": 5679,
                    "name": "VariableDeclaration",
                    "src": "5412:22:31"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "value",
                      "overrides": null,
                      "scope": 5693,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 5680,
                        "name": "ElementaryTypeName",
                        "src": "5436:7:31"
                      }
                    ],
                    "id": 5681,
                    "name": "VariableDeclaration",
                    "src": "5436:13:31"
                  }
                ],
                "id": 5682,
                "name": "ParameterList",
                "src": "5411:39:31"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "overrides": null,
                      "scope": 5693,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 5683,
                        "name": "ElementaryTypeName",
                        "src": "5474:4:31"
                      }
                    ],
                    "id": 5684,
                    "name": "VariableDeclaration",
                    "src": "5474:4:31"
                  }
                ],
                "id": 5685,
                "name": "ParameterList",
                "src": "5473:6:31"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 5685
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "bool",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_struct$_Set_$5462_storage",
                                  "typeString": "struct EnumerableSet.Set storage ref"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 5601,
                              "type": "function (struct EnumerableSet.Set storage pointer,bytes32) view returns (bool)",
                              "value": "_contains"
                            },
                            "id": 5686,
                            "name": "Identifier",
                            "src": "5497:9:31"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "_inner",
                              "referencedDeclaration": 5641,
                              "type": "struct EnumerableSet.Set storage ref"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 5679,
                                  "type": "struct EnumerableSet.Bytes32Set storage pointer",
                                  "value": "set"
                                },
                                "id": 5687,
                                "name": "Identifier",
                                "src": "5507:3:31"
                              }
                            ],
                            "id": 5688,
                            "name": "MemberAccess",
                            "src": "5507:10:31"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 5681,
                              "type": "bytes32",
                              "value": "value"
                            },
                            "id": 5689,
                            "name": "Identifier",
                            "src": "5519:5:31"
                          }
                        ],
                        "id": 5690,
                        "name": "FunctionCall",
                        "src": "5497:28:31"
                      }
                    ],
                    "id": 5691,
                    "name": "Return",
                    "src": "5490:35:31"
                  }
                ],
                "id": 5692,
                "name": "Block",
                "src": "5480:52:31"
              }
            ],
            "id": 5693,
            "name": "FunctionDefinition",
            "src": "5394:138:31"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "length",
              "overrides": null,
              "scope": 5943,
              "stateMutability": "view",
              "virtual": false,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "text": " @dev Returns the number of values in the set. O(1)."
                },
                "id": 5694,
                "name": "StructuredDocumentation",
                "src": "5538:70:31"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "set",
                      "overrides": null,
                      "scope": 5707,
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "type": "struct EnumerableSet.Bytes32Set",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "Bytes32Set",
                          "referencedDeclaration": 5642,
                          "type": "struct EnumerableSet.Bytes32Set"
                        },
                        "id": 5695,
                        "name": "UserDefinedTypeName",
                        "src": "5629:10:31"
                      }
                    ],
                    "id": 5696,
                    "name": "VariableDeclaration",
                    "src": "5629:22:31"
                  }
                ],
                "id": 5697,
                "name": "ParameterList",
                "src": "5628:24:31"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "overrides": null,
                      "scope": 5707,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 5698,
                        "name": "ElementaryTypeName",
                        "src": "5676:7:31"
                      }
                    ],
                    "id": 5699,
                    "name": "VariableDeclaration",
                    "src": "5676:7:31"
                  }
                ],
                "id": 5700,
                "name": "ParameterList",
                "src": "5675:9:31"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 5700
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "uint256",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_struct$_Set_$5462_storage",
                                  "typeString": "struct EnumerableSet.Set storage ref"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 5614,
                              "type": "function (struct EnumerableSet.Set storage pointer) view returns (uint256)",
                              "value": "_length"
                            },
                            "id": 5701,
                            "name": "Identifier",
                            "src": "5702:7:31"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "_inner",
                              "referencedDeclaration": 5641,
                              "type": "struct EnumerableSet.Set storage ref"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 5696,
                                  "type": "struct EnumerableSet.Bytes32Set storage pointer",
                                  "value": "set"
                                },
                                "id": 5702,
                                "name": "Identifier",
                                "src": "5710:3:31"
                              }
                            ],
                            "id": 5703,
                            "name": "MemberAccess",
                            "src": "5710:10:31"
                          }
                        ],
                        "id": 5704,
                        "name": "FunctionCall",
                        "src": "5702:19:31"
                      }
                    ],
                    "id": 5705,
                    "name": "Return",
                    "src": "5695:26:31"
                  }
                ],
                "id": 5706,
                "name": "Block",
                "src": "5685:43:31"
              }
            ],
            "id": 5707,
            "name": "FunctionDefinition",
            "src": "5613:115:31"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "at",
              "overrides": null,
              "scope": 5943,
              "stateMutability": "view",
              "virtual": false,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "text": " @dev Returns the value stored at position `index` in the set. O(1).\n Note that there are no guarantees on the ordering of values inside the\n array, and it may change when more values are added or removed.\n Requirements:\n - `index` must be strictly less than {length}."
                },
                "id": 5708,
                "name": "StructuredDocumentation",
                "src": "5733:322:31"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "set",
                      "overrides": null,
                      "scope": 5724,
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "type": "struct EnumerableSet.Bytes32Set",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "Bytes32Set",
                          "referencedDeclaration": 5642,
                          "type": "struct EnumerableSet.Bytes32Set"
                        },
                        "id": 5709,
                        "name": "UserDefinedTypeName",
                        "src": "6072:10:31"
                      }
                    ],
                    "id": 5710,
                    "name": "VariableDeclaration",
                    "src": "6072:22:31"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "index",
                      "overrides": null,
                      "scope": 5724,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 5711,
                        "name": "ElementaryTypeName",
                        "src": "6096:7:31"
                      }
                    ],
                    "id": 5712,
                    "name": "VariableDeclaration",
                    "src": "6096:13:31"
                  }
                ],
                "id": 5713,
                "name": "ParameterList",
                "src": "6071:39:31"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "overrides": null,
                      "scope": 5724,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 5714,
                        "name": "ElementaryTypeName",
                        "src": "6134:7:31"
                      }
                    ],
                    "id": 5715,
                    "name": "VariableDeclaration",
                    "src": "6134:7:31"
                  }
                ],
                "id": 5716,
                "name": "ParameterList",
                "src": "6133:9:31"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 5716
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "bytes32",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_struct$_Set_$5462_storage",
                                  "typeString": "struct EnumerableSet.Set storage ref"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 5639,
                              "type": "function (struct EnumerableSet.Set storage pointer,uint256) view returns (bytes32)",
                              "value": "_at"
                            },
                            "id": 5717,
                            "name": "Identifier",
                            "src": "6160:3:31"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "_inner",
                              "referencedDeclaration": 5641,
                              "type": "struct EnumerableSet.Set storage ref"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 5710,
                                  "type": "struct EnumerableSet.Bytes32Set storage pointer",
                                  "value": "set"
                                },
                                "id": 5718,
                                "name": "Identifier",
                                "src": "6164:3:31"
                              }
                            ],
                            "id": 5719,
                            "name": "MemberAccess",
                            "src": "6164:10:31"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 5712,
                              "type": "uint256",
                              "value": "index"
                            },
                            "id": 5720,
                            "name": "Identifier",
                            "src": "6176:5:31"
                          }
                        ],
                        "id": 5721,
                        "name": "FunctionCall",
                        "src": "6160:22:31"
                      }
                    ],
                    "id": 5722,
                    "name": "Return",
                    "src": "6153:29:31"
                  }
                ],
                "id": 5723,
                "name": "Block",
                "src": "6143:46:31"
              }
            ],
            "id": 5724,
            "name": "FunctionDefinition",
            "src": "6060:129:31"
          },
          {
            "attributes": {
              "canonicalName": "EnumerableSet.AddressSet",
              "name": "AddressSet",
              "scope": 5943,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "constant": false,
                  "mutability": "mutable",
                  "name": "_inner",
                  "overrides": null,
                  "scope": 5727,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "struct EnumerableSet.Set",
                  "value": null,
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "contractScope": null,
                      "name": "Set",
                      "referencedDeclaration": 5462,
                      "type": "struct EnumerableSet.Set"
                    },
                    "id": 5725,
                    "name": "UserDefinedTypeName",
                    "src": "6242:3:31"
                  }
                ],
                "id": 5726,
                "name": "VariableDeclaration",
                "src": "6242:10:31"
              }
            ],
            "id": 5727,
            "name": "StructDefinition",
            "src": "6214:45:31"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "add",
              "overrides": null,
              "scope": 5943,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "text": " @dev Add a value to a set. O(1).\n Returns true if the value was added to the set, that is if it was not\n already present."
                },
                "id": 5728,
                "name": "StructuredDocumentation",
                "src": "6265:159:31"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "set",
                      "overrides": null,
                      "scope": 5753,
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "type": "struct EnumerableSet.AddressSet",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "AddressSet",
                          "referencedDeclaration": 5727,
                          "type": "struct EnumerableSet.AddressSet"
                        },
                        "id": 5729,
                        "name": "UserDefinedTypeName",
                        "src": "6442:10:31"
                      }
                    ],
                    "id": 5730,
                    "name": "VariableDeclaration",
                    "src": "6442:22:31"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "value",
                      "overrides": null,
                      "scope": 5753,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 5731,
                        "name": "ElementaryTypeName",
                        "src": "6466:7:31"
                      }
                    ],
                    "id": 5732,
                    "name": "VariableDeclaration",
                    "src": "6466:13:31"
                  }
                ],
                "id": 5733,
                "name": "ParameterList",
                "src": "6441:39:31"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "overrides": null,
                      "scope": 5753,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 5734,
                        "name": "ElementaryTypeName",
                        "src": "6499:4:31"
                      }
                    ],
                    "id": 5735,
                    "name": "VariableDeclaration",
                    "src": "6499:4:31"
                  }
                ],
                "id": 5736,
                "name": "ParameterList",
                "src": "6498:6:31"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 5736
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "bool",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_struct$_Set_$5462_storage",
                                  "typeString": "struct EnumerableSet.Set storage ref"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 5503,
                              "type": "function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)",
                              "value": "_add"
                            },
                            "id": 5737,
                            "name": "Identifier",
                            "src": "6522:4:31"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "_inner",
                              "referencedDeclaration": 5726,
                              "type": "struct EnumerableSet.Set storage ref"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 5730,
                                  "type": "struct EnumerableSet.AddressSet storage pointer",
                                  "value": "set"
                                },
                                "id": 5738,
                                "name": "Identifier",
                                "src": "6527:3:31"
                              }
                            ],
                            "id": 5739,
                            "name": "MemberAccess",
                            "src": "6527:10:31"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "bytes32",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(bytes32)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "bytes32",
                                      "type": null
                                    },
                                    "id": 5740,
                                    "name": "ElementaryTypeName",
                                    "src": "6539:7:31"
                                  }
                                ],
                                "id": 5741,
                                "name": "ElementaryTypeNameExpression",
                                "src": "6539:7:31"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "uint256",
                                  "type_conversion": true
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint160",
                                          "typeString": "uint160"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "type": "type(uint256)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "name": "uint256",
                                          "type": null
                                        },
                                        "id": 5742,
                                        "name": "ElementaryTypeName",
                                        "src": "6547:7:31"
                                      }
                                    ],
                                    "id": 5743,
                                    "name": "ElementaryTypeNameExpression",
                                    "src": "6547:7:31"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "tryCall": false,
                                      "type": "uint160",
                                      "type_conversion": true
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          ],
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "type": "type(uint160)"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "name": "uint160",
                                              "type": null
                                            },
                                            "id": 5744,
                                            "name": "ElementaryTypeName",
                                            "src": "6555:7:31"
                                          }
                                        ],
                                        "id": 5745,
                                        "name": "ElementaryTypeNameExpression",
                                        "src": "6555:7:31"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 5732,
                                          "type": "address",
                                          "value": "value"
                                        },
                                        "id": 5746,
                                        "name": "Identifier",
                                        "src": "6563:5:31"
                                      }
                                    ],
                                    "id": 5747,
                                    "name": "FunctionCall",
                                    "src": "6555:14:31"
                                  }
                                ],
                                "id": 5748,
                                "name": "FunctionCall",
                                "src": "6547:23:31"
                              }
                            ],
                            "id": 5749,
                            "name": "FunctionCall",
                            "src": "6539:32:31"
                          }
                        ],
                        "id": 5750,
                        "name": "FunctionCall",
                        "src": "6522:50:31"
                      }
                    ],
                    "id": 5751,
                    "name": "Return",
                    "src": "6515:57:31"
                  }
                ],
                "id": 5752,
                "name": "Block",
                "src": "6505:74:31"
              }
            ],
            "id": 5753,
            "name": "FunctionDefinition",
            "src": "6429:150:31"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "remove",
              "overrides": null,
              "scope": 5943,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "text": " @dev Removes a value from a set. O(1).\n Returns true if the value was removed from the set, that is if it was\n present."
                },
                "id": 5754,
                "name": "StructuredDocumentation",
                "src": "6585:157:31"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "set",
                      "overrides": null,
                      "scope": 5779,
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "type": "struct EnumerableSet.AddressSet",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "AddressSet",
                          "referencedDeclaration": 5727,
                          "type": "struct EnumerableSet.AddressSet"
                        },
                        "id": 5755,
                        "name": "UserDefinedTypeName",
                        "src": "6763:10:31"
                      }
                    ],
                    "id": 5756,
                    "name": "VariableDeclaration",
                    "src": "6763:22:31"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "value",
                      "overrides": null,
                      "scope": 5779,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 5757,
                        "name": "ElementaryTypeName",
                        "src": "6787:7:31"
                      }
                    ],
                    "id": 5758,
                    "name": "VariableDeclaration",
                    "src": "6787:13:31"
                  }
                ],
                "id": 5759,
                "name": "ParameterList",
                "src": "6762:39:31"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "overrides": null,
                      "scope": 5779,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 5760,
                        "name": "ElementaryTypeName",
                        "src": "6820:4:31"
                      }
                    ],
                    "id": 5761,
                    "name": "VariableDeclaration",
                    "src": "6820:4:31"
                  }
                ],
                "id": 5762,
                "name": "ParameterList",
                "src": "6819:6:31"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 5762
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "bool",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_struct$_Set_$5462_storage",
                                  "typeString": "struct EnumerableSet.Set storage ref"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 5583,
                              "type": "function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)",
                              "value": "_remove"
                            },
                            "id": 5763,
                            "name": "Identifier",
                            "src": "6843:7:31"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "_inner",
                              "referencedDeclaration": 5726,
                              "type": "struct EnumerableSet.Set storage ref"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 5756,
                                  "type": "struct EnumerableSet.AddressSet storage pointer",
                                  "value": "set"
                                },
                                "id": 5764,
                                "name": "Identifier",
                                "src": "6851:3:31"
                              }
                            ],
                            "id": 5765,
                            "name": "MemberAccess",
                            "src": "6851:10:31"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "bytes32",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(bytes32)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "bytes32",
                                      "type": null
                                    },
                                    "id": 5766,
                                    "name": "ElementaryTypeName",
                                    "src": "6863:7:31"
                                  }
                                ],
                                "id": 5767,
                                "name": "ElementaryTypeNameExpression",
                                "src": "6863:7:31"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "uint256",
                                  "type_conversion": true
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint160",
                                          "typeString": "uint160"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "type": "type(uint256)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "name": "uint256",
                                          "type": null
                                        },
                                        "id": 5768,
                                        "name": "ElementaryTypeName",
                                        "src": "6871:7:31"
                                      }
                                    ],
                                    "id": 5769,
                                    "name": "ElementaryTypeNameExpression",
                                    "src": "6871:7:31"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "tryCall": false,
                                      "type": "uint160",
                                      "type_conversion": true
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          ],
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "type": "type(uint160)"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "name": "uint160",
                                              "type": null
                                            },
                                            "id": 5770,
                                            "name": "ElementaryTypeName",
                                            "src": "6879:7:31"
                                          }
                                        ],
                                        "id": 5771,
                                        "name": "ElementaryTypeNameExpression",
                                        "src": "6879:7:31"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 5758,
                                          "type": "address",
                                          "value": "value"
                                        },
                                        "id": 5772,
                                        "name": "Identifier",
                                        "src": "6887:5:31"
                                      }
                                    ],
                                    "id": 5773,
                                    "name": "FunctionCall",
                                    "src": "6879:14:31"
                                  }
                                ],
                                "id": 5774,
                                "name": "FunctionCall",
                                "src": "6871:23:31"
                              }
                            ],
                            "id": 5775,
                            "name": "FunctionCall",
                            "src": "6863:32:31"
                          }
                        ],
                        "id": 5776,
                        "name": "FunctionCall",
                        "src": "6843:53:31"
                      }
                    ],
                    "id": 5777,
                    "name": "Return",
                    "src": "6836:60:31"
                  }
                ],
                "id": 5778,
                "name": "Block",
                "src": "6826:77:31"
              }
            ],
            "id": 5779,
            "name": "FunctionDefinition",
            "src": "6747:156:31"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "contains",
              "overrides": null,
              "scope": 5943,
              "stateMutability": "view",
              "virtual": false,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "text": " @dev Returns true if the value is in the set. O(1)."
                },
                "id": 5780,
                "name": "StructuredDocumentation",
                "src": "6909:70:31"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "set",
                      "overrides": null,
                      "scope": 5805,
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "type": "struct EnumerableSet.AddressSet",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "AddressSet",
                          "referencedDeclaration": 5727,
                          "type": "struct EnumerableSet.AddressSet"
                        },
                        "id": 5781,
                        "name": "UserDefinedTypeName",
                        "src": "7002:10:31"
                      }
                    ],
                    "id": 5782,
                    "name": "VariableDeclaration",
                    "src": "7002:22:31"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "value",
                      "overrides": null,
                      "scope": 5805,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 5783,
                        "name": "ElementaryTypeName",
                        "src": "7026:7:31"
                      }
                    ],
                    "id": 5784,
                    "name": "VariableDeclaration",
                    "src": "7026:13:31"
                  }
                ],
                "id": 5785,
                "name": "ParameterList",
                "src": "7001:39:31"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "overrides": null,
                      "scope": 5805,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 5786,
                        "name": "ElementaryTypeName",
                        "src": "7064:4:31"
                      }
                    ],
                    "id": 5787,
                    "name": "VariableDeclaration",
                    "src": "7064:4:31"
                  }
                ],
                "id": 5788,
                "name": "ParameterList",
                "src": "7063:6:31"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 5788
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "bool",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_struct$_Set_$5462_storage",
                                  "typeString": "struct EnumerableSet.Set storage ref"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 5601,
                              "type": "function (struct EnumerableSet.Set storage pointer,bytes32) view returns (bool)",
                              "value": "_contains"
                            },
                            "id": 5789,
                            "name": "Identifier",
                            "src": "7087:9:31"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "_inner",
                              "referencedDeclaration": 5726,
                              "type": "struct EnumerableSet.Set storage ref"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 5782,
                                  "type": "struct EnumerableSet.AddressSet storage pointer",
                                  "value": "set"
                                },
                                "id": 5790,
                                "name": "Identifier",
                                "src": "7097:3:31"
                              }
                            ],
                            "id": 5791,
                            "name": "MemberAccess",
                            "src": "7097:10:31"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "bytes32",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(bytes32)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "bytes32",
                                      "type": null
                                    },
                                    "id": 5792,
                                    "name": "ElementaryTypeName",
                                    "src": "7109:7:31"
                                  }
                                ],
                                "id": 5793,
                                "name": "ElementaryTypeNameExpression",
                                "src": "7109:7:31"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "uint256",
                                  "type_conversion": true
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint160",
                                          "typeString": "uint160"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "type": "type(uint256)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "name": "uint256",
                                          "type": null
                                        },
                                        "id": 5794,
                                        "name": "ElementaryTypeName",
                                        "src": "7117:7:31"
                                      }
                                    ],
                                    "id": 5795,
                                    "name": "ElementaryTypeNameExpression",
                                    "src": "7117:7:31"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "tryCall": false,
                                      "type": "uint160",
                                      "type_conversion": true
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          ],
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "type": "type(uint160)"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "name": "uint160",
                                              "type": null
                                            },
                                            "id": 5796,
                                            "name": "ElementaryTypeName",
                                            "src": "7125:7:31"
                                          }
                                        ],
                                        "id": 5797,
                                        "name": "ElementaryTypeNameExpression",
                                        "src": "7125:7:31"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 5784,
                                          "type": "address",
                                          "value": "value"
                                        },
                                        "id": 5798,
                                        "name": "Identifier",
                                        "src": "7133:5:31"
                                      }
                                    ],
                                    "id": 5799,
                                    "name": "FunctionCall",
                                    "src": "7125:14:31"
                                  }
                                ],
                                "id": 5800,
                                "name": "FunctionCall",
                                "src": "7117:23:31"
                              }
                            ],
                            "id": 5801,
                            "name": "FunctionCall",
                            "src": "7109:32:31"
                          }
                        ],
                        "id": 5802,
                        "name": "FunctionCall",
                        "src": "7087:55:31"
                      }
                    ],
                    "id": 5803,
                    "name": "Return",
                    "src": "7080:62:31"
                  }
                ],
                "id": 5804,
                "name": "Block",
                "src": "7070:79:31"
              }
            ],
            "id": 5805,
            "name": "FunctionDefinition",
            "src": "6984:165:31"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "length",
              "overrides": null,
              "scope": 5943,
              "stateMutability": "view",
              "virtual": false,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "text": " @dev Returns the number of values in the set. O(1)."
                },
                "id": 5806,
                "name": "StructuredDocumentation",
                "src": "7155:70:31"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "set",
                      "overrides": null,
                      "scope": 5819,
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "type": "struct EnumerableSet.AddressSet",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "AddressSet",
                          "referencedDeclaration": 5727,
                          "type": "struct EnumerableSet.AddressSet"
                        },
                        "id": 5807,
                        "name": "UserDefinedTypeName",
                        "src": "7246:10:31"
                      }
                    ],
                    "id": 5808,
                    "name": "VariableDeclaration",
                    "src": "7246:22:31"
                  }
                ],
                "id": 5809,
                "name": "ParameterList",
                "src": "7245:24:31"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "overrides": null,
                      "scope": 5819,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 5810,
                        "name": "ElementaryTypeName",
                        "src": "7293:7:31"
                      }
                    ],
                    "id": 5811,
                    "name": "VariableDeclaration",
                    "src": "7293:7:31"
                  }
                ],
                "id": 5812,
                "name": "ParameterList",
                "src": "7292:9:31"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 5812
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "uint256",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_struct$_Set_$5462_storage",
                                  "typeString": "struct EnumerableSet.Set storage ref"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 5614,
                              "type": "function (struct EnumerableSet.Set storage pointer) view returns (uint256)",
                              "value": "_length"
                            },
                            "id": 5813,
                            "name": "Identifier",
                            "src": "7319:7:31"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "_inner",
                              "referencedDeclaration": 5726,
                              "type": "struct EnumerableSet.Set storage ref"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 5808,
                                  "type": "struct EnumerableSet.AddressSet storage pointer",
                                  "value": "set"
                                },
                                "id": 5814,
                                "name": "Identifier",
                                "src": "7327:3:31"
                              }
                            ],
                            "id": 5815,
                            "name": "MemberAccess",
                            "src": "7327:10:31"
                          }
                        ],
                        "id": 5816,
                        "name": "FunctionCall",
                        "src": "7319:19:31"
                      }
                    ],
                    "id": 5817,
                    "name": "Return",
                    "src": "7312:26:31"
                  }
                ],
                "id": 5818,
                "name": "Block",
                "src": "7302:43:31"
              }
            ],
            "id": 5819,
            "name": "FunctionDefinition",
            "src": "7230:115:31"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "at",
              "overrides": null,
              "scope": 5943,
              "stateMutability": "view",
              "virtual": false,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "text": " @dev Returns the value stored at position `index` in the set. O(1).\n Note that there are no guarantees on the ordering of values inside the\n array, and it may change when more values are added or removed.\n Requirements:\n - `index` must be strictly less than {length}."
                },
                "id": 5820,
                "name": "StructuredDocumentation",
                "src": "7350:322:31"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "set",
                      "overrides": null,
                      "scope": 5845,
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "type": "struct EnumerableSet.AddressSet",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "AddressSet",
                          "referencedDeclaration": 5727,
                          "type": "struct EnumerableSet.AddressSet"
                        },
                        "id": 5821,
                        "name": "UserDefinedTypeName",
                        "src": "7689:10:31"
                      }
                    ],
                    "id": 5822,
                    "name": "VariableDeclaration",
                    "src": "7689:22:31"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "index",
                      "overrides": null,
                      "scope": 5845,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 5823,
                        "name": "ElementaryTypeName",
                        "src": "7713:7:31"
                      }
                    ],
                    "id": 5824,
                    "name": "VariableDeclaration",
                    "src": "7713:13:31"
                  }
                ],
                "id": 5825,
                "name": "ParameterList",
                "src": "7688:39:31"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "overrides": null,
                      "scope": 5845,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 5826,
                        "name": "ElementaryTypeName",
                        "src": "7751:7:31"
                      }
                    ],
                    "id": 5827,
                    "name": "VariableDeclaration",
                    "src": "7751:7:31"
                  }
                ],
                "id": 5828,
                "name": "ParameterList",
                "src": "7750:9:31"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 5828
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "address payable",
                          "type_conversion": true
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "type": "type(address)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "name": "address",
                                  "type": null
                                },
                                "id": 5829,
                                "name": "ElementaryTypeName",
                                "src": "7777:7:31"
                              }
                            ],
                            "id": 5830,
                            "name": "ElementaryTypeNameExpression",
                            "src": "7777:7:31"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "uint160",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(uint160)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "uint160",
                                      "type": null
                                    },
                                    "id": 5831,
                                    "name": "ElementaryTypeName",
                                    "src": "7785:7:31"
                                  }
                                ],
                                "id": 5832,
                                "name": "ElementaryTypeNameExpression",
                                "src": "7785:7:31"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "uint256",
                                  "type_conversion": true
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "type": "type(uint256)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "name": "uint256",
                                          "type": null
                                        },
                                        "id": 5833,
                                        "name": "ElementaryTypeName",
                                        "src": "7793:7:31"
                                      }
                                    ],
                                    "id": 5834,
                                    "name": "ElementaryTypeNameExpression",
                                    "src": "7793:7:31"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "tryCall": false,
                                      "type": "bytes32",
                                      "type_conversion": false
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_struct$_Set_$5462_storage",
                                              "typeString": "struct EnumerableSet.Set storage ref"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 5639,
                                          "type": "function (struct EnumerableSet.Set storage pointer,uint256) view returns (bytes32)",
                                          "value": "_at"
                                        },
                                        "id": 5835,
                                        "name": "Identifier",
                                        "src": "7801:3:31"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "_inner",
                                          "referencedDeclaration": 5726,
                                          "type": "struct EnumerableSet.Set storage ref"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 5822,
                                              "type": "struct EnumerableSet.AddressSet storage pointer",
                                              "value": "set"
                                            },
                                            "id": 5836,
                                            "name": "Identifier",
                                            "src": "7805:3:31"
                                          }
                                        ],
                                        "id": 5837,
                                        "name": "MemberAccess",
                                        "src": "7805:10:31"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 5824,
                                          "type": "uint256",
                                          "value": "index"
                                        },
                                        "id": 5838,
                                        "name": "Identifier",
                                        "src": "7817:5:31"
                                      }
                                    ],
                                    "id": 5839,
                                    "name": "FunctionCall",
                                    "src": "7801:22:31"
                                  }
                                ],
                                "id": 5840,
                                "name": "FunctionCall",
                                "src": "7793:31:31"
                              }
                            ],
                            "id": 5841,
                            "name": "FunctionCall",
                            "src": "7785:40:31"
                          }
                        ],
                        "id": 5842,
                        "name": "FunctionCall",
                        "src": "7777:49:31"
                      }
                    ],
                    "id": 5843,
                    "name": "Return",
                    "src": "7770:56:31"
                  }
                ],
                "id": 5844,
                "name": "Block",
                "src": "7760:73:31"
              }
            ],
            "id": 5845,
            "name": "FunctionDefinition",
            "src": "7677:156:31"
          },
          {
            "attributes": {
              "canonicalName": "EnumerableSet.UintSet",
              "name": "UintSet",
              "scope": 5943,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "constant": false,
                  "mutability": "mutable",
                  "name": "_inner",
                  "overrides": null,
                  "scope": 5848,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "struct EnumerableSet.Set",
                  "value": null,
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "contractScope": null,
                      "name": "Set",
                      "referencedDeclaration": 5462,
                      "type": "struct EnumerableSet.Set"
                    },
                    "id": 5846,
                    "name": "UserDefinedTypeName",
                    "src": "7881:3:31"
                  }
                ],
                "id": 5847,
                "name": "VariableDeclaration",
                "src": "7881:10:31"
              }
            ],
            "id": 5848,
            "name": "StructDefinition",
            "src": "7856:42:31"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "add",
              "overrides": null,
              "scope": 5943,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "text": " @dev Add a value to a set. O(1).\n Returns true if the value was added to the set, that is if it was not\n already present."
                },
                "id": 5849,
                "name": "StructuredDocumentation",
                "src": "7904:159:31"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "set",
                      "overrides": null,
                      "scope": 5868,
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "type": "struct EnumerableSet.UintSet",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "UintSet",
                          "referencedDeclaration": 5848,
                          "type": "struct EnumerableSet.UintSet"
                        },
                        "id": 5850,
                        "name": "UserDefinedTypeName",
                        "src": "8081:7:31"
                      }
                    ],
                    "id": 5851,
                    "name": "VariableDeclaration",
                    "src": "8081:19:31"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "value",
                      "overrides": null,
                      "scope": 5868,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 5852,
                        "name": "ElementaryTypeName",
                        "src": "8102:7:31"
                      }
                    ],
                    "id": 5853,
                    "name": "VariableDeclaration",
                    "src": "8102:13:31"
                  }
                ],
                "id": 5854,
                "name": "ParameterList",
                "src": "8080:36:31"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "overrides": null,
                      "scope": 5868,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 5855,
                        "name": "ElementaryTypeName",
                        "src": "8135:4:31"
                      }
                    ],
                    "id": 5856,
                    "name": "VariableDeclaration",
                    "src": "8135:4:31"
                  }
                ],
                "id": 5857,
                "name": "ParameterList",
                "src": "8134:6:31"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 5857
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "bool",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_struct$_Set_$5462_storage",
                                  "typeString": "struct EnumerableSet.Set storage ref"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 5503,
                              "type": "function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)",
                              "value": "_add"
                            },
                            "id": 5858,
                            "name": "Identifier",
                            "src": "8158:4:31"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "_inner",
                              "referencedDeclaration": 5847,
                              "type": "struct EnumerableSet.Set storage ref"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 5851,
                                  "type": "struct EnumerableSet.UintSet storage pointer",
                                  "value": "set"
                                },
                                "id": 5859,
                                "name": "Identifier",
                                "src": "8163:3:31"
                              }
                            ],
                            "id": 5860,
                            "name": "MemberAccess",
                            "src": "8163:10:31"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "bytes32",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(bytes32)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "bytes32",
                                      "type": null
                                    },
                                    "id": 5861,
                                    "name": "ElementaryTypeName",
                                    "src": "8175:7:31"
                                  }
                                ],
                                "id": 5862,
                                "name": "ElementaryTypeNameExpression",
                                "src": "8175:7:31"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 5853,
                                  "type": "uint256",
                                  "value": "value"
                                },
                                "id": 5863,
                                "name": "Identifier",
                                "src": "8183:5:31"
                              }
                            ],
                            "id": 5864,
                            "name": "FunctionCall",
                            "src": "8175:14:31"
                          }
                        ],
                        "id": 5865,
                        "name": "FunctionCall",
                        "src": "8158:32:31"
                      }
                    ],
                    "id": 5866,
                    "name": "Return",
                    "src": "8151:39:31"
                  }
                ],
                "id": 5867,
                "name": "Block",
                "src": "8141:56:31"
              }
            ],
            "id": 5868,
            "name": "FunctionDefinition",
            "src": "8068:129:31"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "remove",
              "overrides": null,
              "scope": 5943,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "text": " @dev Removes a value from a set. O(1).\n Returns true if the value was removed from the set, that is if it was\n present."
                },
                "id": 5869,
                "name": "StructuredDocumentation",
                "src": "8203:157:31"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "set",
                      "overrides": null,
                      "scope": 5888,
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "type": "struct EnumerableSet.UintSet",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "UintSet",
                          "referencedDeclaration": 5848,
                          "type": "struct EnumerableSet.UintSet"
                        },
                        "id": 5870,
                        "name": "UserDefinedTypeName",
                        "src": "8381:7:31"
                      }
                    ],
                    "id": 5871,
                    "name": "VariableDeclaration",
                    "src": "8381:19:31"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "value",
                      "overrides": null,
                      "scope": 5888,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 5872,
                        "name": "ElementaryTypeName",
                        "src": "8402:7:31"
                      }
                    ],
                    "id": 5873,
                    "name": "VariableDeclaration",
                    "src": "8402:13:31"
                  }
                ],
                "id": 5874,
                "name": "ParameterList",
                "src": "8380:36:31"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "overrides": null,
                      "scope": 5888,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 5875,
                        "name": "ElementaryTypeName",
                        "src": "8435:4:31"
                      }
                    ],
                    "id": 5876,
                    "name": "VariableDeclaration",
                    "src": "8435:4:31"
                  }
                ],
                "id": 5877,
                "name": "ParameterList",
                "src": "8434:6:31"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 5877
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "bool",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_struct$_Set_$5462_storage",
                                  "typeString": "struct EnumerableSet.Set storage ref"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 5583,
                              "type": "function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)",
                              "value": "_remove"
                            },
                            "id": 5878,
                            "name": "Identifier",
                            "src": "8458:7:31"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "_inner",
                              "referencedDeclaration": 5847,
                              "type": "struct EnumerableSet.Set storage ref"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 5871,
                                  "type": "struct EnumerableSet.UintSet storage pointer",
                                  "value": "set"
                                },
                                "id": 5879,
                                "name": "Identifier",
                                "src": "8466:3:31"
                              }
                            ],
                            "id": 5880,
                            "name": "MemberAccess",
                            "src": "8466:10:31"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "bytes32",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(bytes32)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "bytes32",
                                      "type": null
                                    },
                                    "id": 5881,
                                    "name": "ElementaryTypeName",
                                    "src": "8478:7:31"
                                  }
                                ],
                                "id": 5882,
                                "name": "ElementaryTypeNameExpression",
                                "src": "8478:7:31"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 5873,
                                  "type": "uint256",
                                  "value": "value"
                                },
                                "id": 5883,
                                "name": "Identifier",
                                "src": "8486:5:31"
                              }
                            ],
                            "id": 5884,
                            "name": "FunctionCall",
                            "src": "8478:14:31"
                          }
                        ],
                        "id": 5885,
                        "name": "FunctionCall",
                        "src": "8458:35:31"
                      }
                    ],
                    "id": 5886,
                    "name": "Return",
                    "src": "8451:42:31"
                  }
                ],
                "id": 5887,
                "name": "Block",
                "src": "8441:59:31"
              }
            ],
            "id": 5888,
            "name": "FunctionDefinition",
            "src": "8365:135:31"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "contains",
              "overrides": null,
              "scope": 5943,
              "stateMutability": "view",
              "virtual": false,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "text": " @dev Returns true if the value is in the set. O(1)."
                },
                "id": 5889,
                "name": "StructuredDocumentation",
                "src": "8506:70:31"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "set",
                      "overrides": null,
                      "scope": 5908,
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "type": "struct EnumerableSet.UintSet",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "UintSet",
                          "referencedDeclaration": 5848,
                          "type": "struct EnumerableSet.UintSet"
                        },
                        "id": 5890,
                        "name": "UserDefinedTypeName",
                        "src": "8599:7:31"
                      }
                    ],
                    "id": 5891,
                    "name": "VariableDeclaration",
                    "src": "8599:19:31"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "value",
                      "overrides": null,
                      "scope": 5908,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 5892,
                        "name": "ElementaryTypeName",
                        "src": "8620:7:31"
                      }
                    ],
                    "id": 5893,
                    "name": "VariableDeclaration",
                    "src": "8620:13:31"
                  }
                ],
                "id": 5894,
                "name": "ParameterList",
                "src": "8598:36:31"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "overrides": null,
                      "scope": 5908,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 5895,
                        "name": "ElementaryTypeName",
                        "src": "8658:4:31"
                      }
                    ],
                    "id": 5896,
                    "name": "VariableDeclaration",
                    "src": "8658:4:31"
                  }
                ],
                "id": 5897,
                "name": "ParameterList",
                "src": "8657:6:31"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 5897
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "bool",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_struct$_Set_$5462_storage",
                                  "typeString": "struct EnumerableSet.Set storage ref"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 5601,
                              "type": "function (struct EnumerableSet.Set storage pointer,bytes32) view returns (bool)",
                              "value": "_contains"
                            },
                            "id": 5898,
                            "name": "Identifier",
                            "src": "8681:9:31"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "_inner",
                              "referencedDeclaration": 5847,
                              "type": "struct EnumerableSet.Set storage ref"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 5891,
                                  "type": "struct EnumerableSet.UintSet storage pointer",
                                  "value": "set"
                                },
                                "id": 5899,
                                "name": "Identifier",
                                "src": "8691:3:31"
                              }
                            ],
                            "id": 5900,
                            "name": "MemberAccess",
                            "src": "8691:10:31"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "bytes32",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(bytes32)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "bytes32",
                                      "type": null
                                    },
                                    "id": 5901,
                                    "name": "ElementaryTypeName",
                                    "src": "8703:7:31"
                                  }
                                ],
                                "id": 5902,
                                "name": "ElementaryTypeNameExpression",
                                "src": "8703:7:31"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 5893,
                                  "type": "uint256",
                                  "value": "value"
                                },
                                "id": 5903,
                                "name": "Identifier",
                                "src": "8711:5:31"
                              }
                            ],
                            "id": 5904,
                            "name": "FunctionCall",
                            "src": "8703:14:31"
                          }
                        ],
                        "id": 5905,
                        "name": "FunctionCall",
                        "src": "8681:37:31"
                      }
                    ],
                    "id": 5906,
                    "name": "Return",
                    "src": "8674:44:31"
                  }
                ],
                "id": 5907,
                "name": "Block",
                "src": "8664:61:31"
              }
            ],
            "id": 5908,
            "name": "FunctionDefinition",
            "src": "8581:144:31"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "length",
              "overrides": null,
              "scope": 5943,
              "stateMutability": "view",
              "virtual": false,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "text": " @dev Returns the number of values on the set. O(1)."
                },
                "id": 5909,
                "name": "StructuredDocumentation",
                "src": "8731:70:31"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "set",
                      "overrides": null,
                      "scope": 5922,
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "type": "struct EnumerableSet.UintSet",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "UintSet",
                          "referencedDeclaration": 5848,
                          "type": "struct EnumerableSet.UintSet"
                        },
                        "id": 5910,
                        "name": "UserDefinedTypeName",
                        "src": "8822:7:31"
                      }
                    ],
                    "id": 5911,
                    "name": "VariableDeclaration",
                    "src": "8822:19:31"
                  }
                ],
                "id": 5912,
                "name": "ParameterList",
                "src": "8821:21:31"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "overrides": null,
                      "scope": 5922,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 5913,
                        "name": "ElementaryTypeName",
                        "src": "8866:7:31"
                      }
                    ],
                    "id": 5914,
                    "name": "VariableDeclaration",
                    "src": "8866:7:31"
                  }
                ],
                "id": 5915,
                "name": "ParameterList",
                "src": "8865:9:31"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 5915
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "uint256",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_struct$_Set_$5462_storage",
                                  "typeString": "struct EnumerableSet.Set storage ref"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 5614,
                              "type": "function (struct EnumerableSet.Set storage pointer) view returns (uint256)",
                              "value": "_length"
                            },
                            "id": 5916,
                            "name": "Identifier",
                            "src": "8892:7:31"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "_inner",
                              "referencedDeclaration": 5847,
                              "type": "struct EnumerableSet.Set storage ref"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 5911,
                                  "type": "struct EnumerableSet.UintSet storage pointer",
                                  "value": "set"
                                },
                                "id": 5917,
                                "name": "Identifier",
                                "src": "8900:3:31"
                              }
                            ],
                            "id": 5918,
                            "name": "MemberAccess",
                            "src": "8900:10:31"
                          }
                        ],
                        "id": 5919,
                        "name": "FunctionCall",
                        "src": "8892:19:31"
                      }
                    ],
                    "id": 5920,
                    "name": "Return",
                    "src": "8885:26:31"
                  }
                ],
                "id": 5921,
                "name": "Block",
                "src": "8875:43:31"
              }
            ],
            "id": 5922,
            "name": "FunctionDefinition",
            "src": "8806:112:31"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "at",
              "overrides": null,
              "scope": 5943,
              "stateMutability": "view",
              "virtual": false,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "text": " @dev Returns the value stored at position `index` in the set. O(1).\n Note that there are no guarantees on the ordering of values inside the\n array, and it may change when more values are added or removed.\n Requirements:\n - `index` must be strictly less than {length}."
                },
                "id": 5923,
                "name": "StructuredDocumentation",
                "src": "8923:322:31"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "set",
                      "overrides": null,
                      "scope": 5942,
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "type": "struct EnumerableSet.UintSet",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "UintSet",
                          "referencedDeclaration": 5848,
                          "type": "struct EnumerableSet.UintSet"
                        },
                        "id": 5924,
                        "name": "UserDefinedTypeName",
                        "src": "9262:7:31"
                      }
                    ],
                    "id": 5925,
                    "name": "VariableDeclaration",
                    "src": "9262:19:31"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "index",
                      "overrides": null,
                      "scope": 5942,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 5926,
                        "name": "ElementaryTypeName",
                        "src": "9283:7:31"
                      }
                    ],
                    "id": 5927,
                    "name": "VariableDeclaration",
                    "src": "9283:13:31"
                  }
                ],
                "id": 5928,
                "name": "ParameterList",
                "src": "9261:36:31"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "overrides": null,
                      "scope": 5942,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 5929,
                        "name": "ElementaryTypeName",
                        "src": "9321:7:31"
                      }
                    ],
                    "id": 5930,
                    "name": "VariableDeclaration",
                    "src": "9321:7:31"
                  }
                ],
                "id": 5931,
                "name": "ParameterList",
                "src": "9320:9:31"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 5931
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "uint256",
                          "type_conversion": true
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "type": "type(uint256)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "name": "uint256",
                                  "type": null
                                },
                                "id": 5932,
                                "name": "ElementaryTypeName",
                                "src": "9347:7:31"
                              }
                            ],
                            "id": 5933,
                            "name": "ElementaryTypeNameExpression",
                            "src": "9347:7:31"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "bytes32",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_struct$_Set_$5462_storage",
                                      "typeString": "struct EnumerableSet.Set storage ref"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 5639,
                                  "type": "function (struct EnumerableSet.Set storage pointer,uint256) view returns (bytes32)",
                                  "value": "_at"
                                },
                                "id": 5934,
                                "name": "Identifier",
                                "src": "9355:3:31"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "_inner",
                                  "referencedDeclaration": 5847,
                                  "type": "struct EnumerableSet.Set storage ref"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 5925,
                                      "type": "struct EnumerableSet.UintSet storage pointer",
                                      "value": "set"
                                    },
                                    "id": 5935,
                                    "name": "Identifier",
                                    "src": "9359:3:31"
                                  }
                                ],
                                "id": 5936,
                                "name": "MemberAccess",
                                "src": "9359:10:31"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 5927,
                                  "type": "uint256",
                                  "value": "index"
                                },
                                "id": 5937,
                                "name": "Identifier",
                                "src": "9371:5:31"
                              }
                            ],
                            "id": 5938,
                            "name": "FunctionCall",
                            "src": "9355:22:31"
                          }
                        ],
                        "id": 5939,
                        "name": "FunctionCall",
                        "src": "9347:31:31"
                      }
                    ],
                    "id": 5940,
                    "name": "Return",
                    "src": "9340:38:31"
                  }
                ],
                "id": 5941,
                "name": "Block",
                "src": "9330:55:31"
              }
            ],
            "id": 5942,
            "name": "FunctionDefinition",
            "src": "9250:135:31"
          }
        ],
        "id": 5943,
        "name": "ContractDefinition",
        "src": "753:8634:31"
      }
    ],
    "id": 5944,
    "name": "SourceUnit",
    "src": "33:9355:31"
  },
  "compiler": {
    "name": "solc",
    "version": "0.6.12+commit.27d51765.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.4.3",
  "updatedAt": "2021-11-29T02:07:34.222Z",
  "devdoc": {
    "details": "Library for managing https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive types. Sets have the following properties: - Elements are added, removed, and checked for existence in constant time (O(1)). - Elements are enumerated in O(n). No guarantees are made on the ordering. ``` contract Example {     // Add the library methods     using EnumerableSet for EnumerableSet.AddressSet;     // Declare a set state variable     EnumerableSet.AddressSet private mySet; } ``` As of v3.3.0, sets of type `bytes32` (`Bytes32Set`), `address` (`AddressSet`) and `uint256` (`UintSet`) are supported.",
    "kind": "dev",
    "methods": {},
    "version": 1
  },
  "userdoc": {
    "kind": "user",
    "methods": {},
    "version": 1
  }
}