We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
Broken link in Slither recommendation due to typo in Wiki
Hi, there is a typo (oarameters instead of parameters) in the first-level header "Unindexed ERC20 event oarameters" of the wiki: 
https://github.com/crytic/slither/wiki/Detector-Documentation#unindexed-erc20-event-oarameters

On [L. 19](https://github.com/crytic/slither/blob/3bc22a9b143828edec956f170bdef7234d6707d6/slither/detectors/erc/unindexed_event_parameters.py#L19) of the detector there is also the same typo on `WIKI_TITLE`.


--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `slither/detectors/erc/unindexed_event_parameters.py`
Content:
```
1 """
2 Detect mistakenly un-indexed ERC20 event parameters
3 """
4 from slither.detectors.abstract_detector import AbstractDetector, DetectorClassification
5 
6 
7 class UnindexedERC20EventParameters(AbstractDetector):
8     """
9     Un-indexed ERC20 event parameters
10     """
11 
12     ARGUMENT = "erc20-indexed"
13     HELP = "Un-indexed ERC20 event parameters"
14     IMPACT = DetectorClassification.INFORMATIONAL
15     CONFIDENCE = DetectorClassification.HIGH
16 
17     WIKI = "https://github.com/crytic/slither/wiki/Detector-Documentation#unindexed-erc20-event-parameters"
18 
19     WIKI_TITLE = "Unindexed ERC20 event oarameters"
20     WIKI_DESCRIPTION = "Detects whether events defined by the `ERC20` specification that should have some parameters as `indexed` are missing the `indexed` keyword."
21 
22     # region wiki_exploit_scenario
23     WIKI_EXPLOIT_SCENARIO = """
24 ```solidity
25 contract ERC20Bad {
26     // ...
27     event Transfer(address from, address to, uint value);
28     event Approval(address owner, address spender, uint value);
29 
30     // ...
31 }
32 ```
33 `Transfer` and `Approval` events should have the 'indexed' keyword on their two first parameters, as defined by the `ERC20` specification.
34 Failure to include these keywords will exclude the parameter data in the transaction/block's bloom filter, so external tooling searching for these parameters may overlook them and fail to index logs from this token contract."""
35     # endregion wiki_exploit_scenario
36 
37     WIKI_RECOMMENDATION = "Add the `indexed` keyword to event parameters that should include it, according to the `ERC20` specification."
38 
39     STANDARD_JSON = False
40 
41     @staticmethod
42     def detect_erc20_unindexed_event_params(contract):
43         """
44         Detect un-indexed ERC20 event parameters in a given contract.
45         :param contract: The contract to check ERC20 events for un-indexed parameters in.
46         :return: A list of tuple(event, parameter) of parameters which should be indexed.
47         """
48         # Create our result array
49         results = []
50 
51         # If this contract isn't an ERC20 token, we return our empty results.
52         if not contract.is_erc20():
53             return results
54 
55         # Loop through all events to look for poor form.
56         for event in contract.events_declared:
57 
58             # If this is transfer/approval events, expect the first two parameters to be indexed.
59             if event.full_name in [
60                 "Transfer(address,address,uint256)",
61                 "Approval(address,address,uint256)",
62             ]:
63                 if not event.elems[0].indexed:
64                     results.append((event, event.elems[0]))
65                 if not event.elems[1].indexed:
66                     results.append((event, event.elems[1]))
67 
68         # Return the results.
69         return results
70 
71     def _detect(self):
72         """
73         Detect un-indexed ERC20 event parameters in all contracts.
74         """
75         results = []
76         for c in self.contracts:
77             unindexed_params = self.detect_erc20_unindexed_event_params(c)
78             if unindexed_params:
79                 # Add each problematic event definition to our result list
80                 for (event, parameter) in unindexed_params:
81 
82                     info = [
83                         "ERC20 event ",
84                         event,
85                         f"does not index parameter {parameter}\n",
86                     ]
87 
88                     # Add the events to the JSON (note: we do not add the params/vars as they have no source mapping).
89                     res = self.generate_result(info)
90 
91                     res.add(event, {"parameter_name": parameter.name})
92                     results.append(res)
93 
94         return results
95
```
--- END FILES ---

Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.

Here is an example:

```diff
diff --git a/examples/server_async.py b/examples/server_async.py
--- a/examples/server_async.py
+++ b/examples/server_async.py
@@ -313,4 +313,4 @@
 
 
 if __name__ == "__main__":
-    asyncio.run(run_async_server("."), debug=True)
+    asyncio.run(run_async_server(), debug=True)
diff --git a/examples/server_sync.py b/examples/server_sync.py
--- a/examples/server_sync.py
+++ b/examples/server_sync.py
@@ -313,5 +313,5 @@
 
 
 if __name__ == "__main__":
-    server = run_sync_server(".")
+    server = run_sync_server()
     server.shutdown()

```

diff --git a/slither/detectors/erc/unindexed_event_parameters.py b/slither/detectors/erc/unindexed_event_parameters.py
--- a/slither/detectors/erc/unindexed_event_parameters.py
+++ b/slither/detectors/erc/unindexed_event_parameters.py
@@ -16,7 +16,7 @@
 
     WIKI = "https://github.com/crytic/slither/wiki/Detector-Documentation#unindexed-erc20-event-parameters"
 
-    WIKI_TITLE = "Unindexed ERC20 event oarameters"
+    WIKI_TITLE = "Unindexed ERC20 event parameters"
     WIKI_DESCRIPTION = "Detects whether events defined by the `ERC20` specification that should have some parameters as `indexed` are missing the `indexed` keyword."
 
     # region wiki_exploit_scenario

{"golden_diff": "diff --git a/slither/detectors/erc/unindexed_event_parameters.py b/slither/detectors/erc/unindexed_event_parameters.py\n--- a/slither/detectors/erc/unindexed_event_parameters.py\n+++ b/slither/detectors/erc/unindexed_event_parameters.py\n@@ -16,7 +16,7 @@\n \n     WIKI = \"https://github.com/crytic/slither/wiki/Detector-Documentation#unindexed-erc20-event-parameters\"\n \n-    WIKI_TITLE = \"Unindexed ERC20 event oarameters\"\n+    WIKI_TITLE = \"Unindexed ERC20 event parameters\"\n     WIKI_DESCRIPTION = \"Detects whether events defined by the `ERC20` specification that should have some parameters as `indexed` are missing the `indexed` keyword.\"\n \n     # region wiki_exploit_scenario\n", "issue": "Broken link in Slither recommendation due to typo in Wiki\nHi, there is a typo (oarameters instead of parameters) in the first-level header \"Unindexed ERC20 event oarameters\" of the wiki: \r\nhttps://github.com/crytic/slither/wiki/Detector-Documentation#unindexed-erc20-event-oarameters\r\n\r\nOn [L. 19](https://github.com/crytic/slither/blob/3bc22a9b143828edec956f170bdef7234d6707d6/slither/detectors/erc/unindexed_event_parameters.py#L19) of the detector there is also the same typo on `WIKI_TITLE`.\r\n\n", "before_files": [{"content": "\"\"\"\nDetect mistakenly un-indexed ERC20 event parameters\n\"\"\"\nfrom slither.detectors.abstract_detector import AbstractDetector, DetectorClassification\n\n\nclass UnindexedERC20EventParameters(AbstractDetector):\n    \"\"\"\n    Un-indexed ERC20 event parameters\n    \"\"\"\n\n    ARGUMENT = \"erc20-indexed\"\n    HELP = \"Un-indexed ERC20 event parameters\"\n    IMPACT = DetectorClassification.INFORMATIONAL\n    CONFIDENCE = DetectorClassification.HIGH\n\n    WIKI = \"https://github.com/crytic/slither/wiki/Detector-Documentation#unindexed-erc20-event-parameters\"\n\n    WIKI_TITLE = \"Unindexed ERC20 event oarameters\"\n    WIKI_DESCRIPTION = \"Detects whether events defined by the `ERC20` specification that should have some parameters as `indexed` are missing the `indexed` keyword.\"\n\n    # region wiki_exploit_scenario\n    WIKI_EXPLOIT_SCENARIO = \"\"\"\n```solidity\ncontract ERC20Bad {\n    // ...\n    event Transfer(address from, address to, uint value);\n    event Approval(address owner, address spender, uint value);\n\n    // ...\n}\n```\n`Transfer` and `Approval` events should have the 'indexed' keyword on their two first parameters, as defined by the `ERC20` specification.\nFailure to include these keywords will exclude the parameter data in the transaction/block's bloom filter, so external tooling searching for these parameters may overlook them and fail to index logs from this token contract.\"\"\"\n    # endregion wiki_exploit_scenario\n\n    WIKI_RECOMMENDATION = \"Add the `indexed` keyword to event parameters that should include it, according to the `ERC20` specification.\"\n\n    STANDARD_JSON = False\n\n    @staticmethod\n    def detect_erc20_unindexed_event_params(contract):\n        \"\"\"\n        Detect un-indexed ERC20 event parameters in a given contract.\n        :param contract: The contract to check ERC20 events for un-indexed parameters in.\n        :return: A list of tuple(event, parameter) of parameters which should be indexed.\n        \"\"\"\n        # Create our result array\n        results = []\n\n        # If this contract isn't an ERC20 token, we return our empty results.\n        if not contract.is_erc20():\n            return results\n\n        # Loop through all events to look for poor form.\n        for event in contract.events_declared:\n\n            # If this is transfer/approval events, expect the first two parameters to be indexed.\n            if event.full_name in [\n                \"Transfer(address,address,uint256)\",\n                \"Approval(address,address,uint256)\",\n            ]:\n                if not event.elems[0].indexed:\n                    results.append((event, event.elems[0]))\n                if not event.elems[1].indexed:\n                    results.append((event, event.elems[1]))\n\n        # Return the results.\n        return results\n\n    def _detect(self):\n        \"\"\"\n        Detect un-indexed ERC20 event parameters in all contracts.\n        \"\"\"\n        results = []\n        for c in self.contracts:\n            unindexed_params = self.detect_erc20_unindexed_event_params(c)\n            if unindexed_params:\n                # Add each problematic event definition to our result list\n                for (event, parameter) in unindexed_params:\n\n                    info = [\n                        \"ERC20 event \",\n                        event,\n                        f\"does not index parameter {parameter}\\n\",\n                    ]\n\n                    # Add the events to the JSON (note: we do not add the params/vars as they have no source mapping).\n                    res = self.generate_result(info)\n\n                    res.add(event, {\"parameter_name\": parameter.name})\n                    results.append(res)\n\n        return results\n", "path": "slither/detectors/erc/unindexed_event_parameters.py"}], "after_files": [{"content": "\"\"\"\nDetect mistakenly un-indexed ERC20 event parameters\n\"\"\"\nfrom slither.detectors.abstract_detector import AbstractDetector, DetectorClassification\n\n\nclass UnindexedERC20EventParameters(AbstractDetector):\n    \"\"\"\n    Un-indexed ERC20 event parameters\n    \"\"\"\n\n    ARGUMENT = \"erc20-indexed\"\n    HELP = \"Un-indexed ERC20 event parameters\"\n    IMPACT = DetectorClassification.INFORMATIONAL\n    CONFIDENCE = DetectorClassification.HIGH\n\n    WIKI = \"https://github.com/crytic/slither/wiki/Detector-Documentation#unindexed-erc20-event-parameters\"\n\n    WIKI_TITLE = \"Unindexed ERC20 event parameters\"\n    WIKI_DESCRIPTION = \"Detects whether events defined by the `ERC20` specification that should have some parameters as `indexed` are missing the `indexed` keyword.\"\n\n    # region wiki_exploit_scenario\n    WIKI_EXPLOIT_SCENARIO = \"\"\"\n```solidity\ncontract ERC20Bad {\n    // ...\n    event Transfer(address from, address to, uint value);\n    event Approval(address owner, address spender, uint value);\n\n    // ...\n}\n```\n`Transfer` and `Approval` events should have the 'indexed' keyword on their two first parameters, as defined by the `ERC20` specification.\nFailure to include these keywords will exclude the parameter data in the transaction/block's bloom filter, so external tooling searching for these parameters may overlook them and fail to index logs from this token contract.\"\"\"\n    # endregion wiki_exploit_scenario\n\n    WIKI_RECOMMENDATION = \"Add the `indexed` keyword to event parameters that should include it, according to the `ERC20` specification.\"\n\n    STANDARD_JSON = False\n\n    @staticmethod\n    def detect_erc20_unindexed_event_params(contract):\n        \"\"\"\n        Detect un-indexed ERC20 event parameters in a given contract.\n        :param contract: The contract to check ERC20 events for un-indexed parameters in.\n        :return: A list of tuple(event, parameter) of parameters which should be indexed.\n        \"\"\"\n        # Create our result array\n        results = []\n\n        # If this contract isn't an ERC20 token, we return our empty results.\n        if not contract.is_erc20():\n            return results\n\n        # Loop through all events to look for poor form.\n        for event in contract.events_declared:\n\n            # If this is transfer/approval events, expect the first two parameters to be indexed.\n            if event.full_name in [\n                \"Transfer(address,address,uint256)\",\n                \"Approval(address,address,uint256)\",\n            ]:\n                if not event.elems[0].indexed:\n                    results.append((event, event.elems[0]))\n                if not event.elems[1].indexed:\n                    results.append((event, event.elems[1]))\n\n        # Return the results.\n        return results\n\n    def _detect(self):\n        \"\"\"\n        Detect un-indexed ERC20 event parameters in all contracts.\n        \"\"\"\n        results = []\n        for c in self.contracts:\n            unindexed_params = self.detect_erc20_unindexed_event_params(c)\n            if unindexed_params:\n                # Add each problematic event definition to our result list\n                for (event, parameter) in unindexed_params:\n\n                    info = [\n                        \"ERC20 event \",\n                        event,\n                        f\"does not index parameter {parameter}\\n\",\n                    ]\n\n                    # Add the events to the JSON (note: we do not add the params/vars as they have no source mapping).\n                    res = self.generate_result(info)\n\n                    res.add(event, {\"parameter_name\": parameter.name})\n                    results.append(res)\n\n        return results\n", "path": "slither/detectors/erc/unindexed_event_parameters.py"}]}