We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
Drop contributor profile URL with email addresses
We should drop support for accessing contributor profiles by using user email addresses in the URLs. This feature, while not used internally in the app, leaks otherwise hidden user email addressed on sites like on web.archive.org index.

This is particularly problematic for users without any contributions.


--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `pontoon/contributors/urls.py`
Content:
```
1 from django.urls import path, register_converter
2 from django.urls.converters import StringConverter
3 from django.views.generic import RedirectView
4 
5 from . import views
6 
7 
8 class EmailConverter(StringConverter):
9     regex = r"[\w.%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}"
10 
11 
12 class UsernameConverter(StringConverter):
13     regex = r"[\w.@+-]+"
14 
15 
16 register_converter(EmailConverter, "email")
17 register_converter(UsernameConverter, "username")
18 
19 urlpatterns = [
20     # Legacy: Redirect to /contributors/email
21     path(
22         "contributor/<email:email>/",
23         RedirectView.as_view(url="/contributors/%(email)s/", permanent=True),
24     ),
25     # List contributors
26     path(
27         "contributors/",
28         views.ContributorsView.as_view(),
29         name="pontoon.contributors",
30     ),
31     # Contributor profile by email
32     path(
33         "contributors/<email:email>/",
34         views.contributor_email,
35         name="pontoon.contributors.contributor.email",
36     ),
37     # Contributor profile by username
38     path(
39         "contributors/<username:username>/",
40         views.contributor_username,
41         name="pontoon.contributors.contributor.username",
42     ),
43     # Verify email address
44     path(
45         "verify-email-address/<str:token>/",
46         views.verify_email_address,
47         name="pontoon.contributors.verify.email",
48     ),
49     # Current user's profile
50     path("profile/", views.profile, name="pontoon.contributors.profile"),
51     # Current user's settings
52     path("settings/", views.settings, name="pontoon.contributors.settings"),
53     # Current user's notifications
54     path(
55         "notifications/",
56         views.notifications,
57         name="pontoon.contributors.notifications",
58     ),
59     # Mark current user's notifications as read
60     path(
61         "notifications/mark-all-as-read/",
62         views.mark_all_notifications_as_read,
63         name="pontoon.contributors.notifications.mark.all.as.read",
64     ),
65     # API: Toggle user profile attribute
66     path(
67         "api/v1/user/<username:username>/",
68         views.toggle_user_profile_attribute,
69         name="pontoon.contributors.toggle_user_profile_attribute",
70     ),
71     # AJAX: Save custom homepage
72     path(
73         "save-custom-homepage/",
74         views.save_custom_homepage,
75         name="pontoon.contributors.save_custom_homepage",
76     ),
77     # AJAX: Save preferred source locale
78     path(
79         "save-preferred-source-locale/",
80         views.save_preferred_source_locale,
81         name="pontoon.contributors.save_preferred_source_locale",
82     ),
83     # AJAX: Dismiss Add-On Promotion
84     path(
85         "dismiss-addon-promotion/",
86         views.dismiss_addon_promotion,
87         name="pontoon.contributors.dismiss_addon_promotion",
88     ),
89     # AJAX: Update contribution graph
90     path(
91         "update-contribution-graph/",
92         views.update_contribution_graph,
93         name="pontoon.contributors.update_contribution_graph",
94     ),
95     # AJAX: Update contribution timeline
96     path(
97         "update-contribution-timeline/",
98         views.update_contribution_timeline,
99         name="pontoon.contributors.update_contribution_timeline",
100     ),
101 ]
102
```
--- 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/pontoon/contributors/urls.py b/pontoon/contributors/urls.py
--- a/pontoon/contributors/urls.py
+++ b/pontoon/contributors/urls.py
@@ -28,12 +28,6 @@
         views.ContributorsView.as_view(),
         name="pontoon.contributors",
     ),
-    # Contributor profile by email
-    path(
-        "contributors/<email:email>/",
-        views.contributor_email,
-        name="pontoon.contributors.contributor.email",
-    ),
     # Contributor profile by username
     path(
         "contributors/<username:username>/",

{"golden_diff": "diff --git a/pontoon/contributors/urls.py b/pontoon/contributors/urls.py\n--- a/pontoon/contributors/urls.py\n+++ b/pontoon/contributors/urls.py\n@@ -28,12 +28,6 @@\n         views.ContributorsView.as_view(),\n         name=\"pontoon.contributors\",\n     ),\n-    # Contributor profile by email\n-    path(\n-        \"contributors/<email:email>/\",\n-        views.contributor_email,\n-        name=\"pontoon.contributors.contributor.email\",\n-    ),\n     # Contributor profile by username\n     path(\n         \"contributors/<username:username>/\",\n", "issue": "Drop contributor profile URL with email addresses\nWe should drop support for accessing contributor profiles by using user email addresses in the URLs. This feature, while not used internally in the app, leaks otherwise hidden user email addressed on sites like on web.archive.org index.\r\n\r\nThis is particularly problematic for users without any contributions.\r\n\n", "before_files": [{"content": "from django.urls import path, register_converter\nfrom django.urls.converters import StringConverter\nfrom django.views.generic import RedirectView\n\nfrom . import views\n\n\nclass EmailConverter(StringConverter):\n    regex = r\"[\\w.%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}\"\n\n\nclass UsernameConverter(StringConverter):\n    regex = r\"[\\w.@+-]+\"\n\n\nregister_converter(EmailConverter, \"email\")\nregister_converter(UsernameConverter, \"username\")\n\nurlpatterns = [\n    # Legacy: Redirect to /contributors/email\n    path(\n        \"contributor/<email:email>/\",\n        RedirectView.as_view(url=\"/contributors/%(email)s/\", permanent=True),\n    ),\n    # List contributors\n    path(\n        \"contributors/\",\n        views.ContributorsView.as_view(),\n        name=\"pontoon.contributors\",\n    ),\n    # Contributor profile by email\n    path(\n        \"contributors/<email:email>/\",\n        views.contributor_email,\n        name=\"pontoon.contributors.contributor.email\",\n    ),\n    # Contributor profile by username\n    path(\n        \"contributors/<username:username>/\",\n        views.contributor_username,\n        name=\"pontoon.contributors.contributor.username\",\n    ),\n    # Verify email address\n    path(\n        \"verify-email-address/<str:token>/\",\n        views.verify_email_address,\n        name=\"pontoon.contributors.verify.email\",\n    ),\n    # Current user's profile\n    path(\"profile/\", views.profile, name=\"pontoon.contributors.profile\"),\n    # Current user's settings\n    path(\"settings/\", views.settings, name=\"pontoon.contributors.settings\"),\n    # Current user's notifications\n    path(\n        \"notifications/\",\n        views.notifications,\n        name=\"pontoon.contributors.notifications\",\n    ),\n    # Mark current user's notifications as read\n    path(\n        \"notifications/mark-all-as-read/\",\n        views.mark_all_notifications_as_read,\n        name=\"pontoon.contributors.notifications.mark.all.as.read\",\n    ),\n    # API: Toggle user profile attribute\n    path(\n        \"api/v1/user/<username:username>/\",\n        views.toggle_user_profile_attribute,\n        name=\"pontoon.contributors.toggle_user_profile_attribute\",\n    ),\n    # AJAX: Save custom homepage\n    path(\n        \"save-custom-homepage/\",\n        views.save_custom_homepage,\n        name=\"pontoon.contributors.save_custom_homepage\",\n    ),\n    # AJAX: Save preferred source locale\n    path(\n        \"save-preferred-source-locale/\",\n        views.save_preferred_source_locale,\n        name=\"pontoon.contributors.save_preferred_source_locale\",\n    ),\n    # AJAX: Dismiss Add-On Promotion\n    path(\n        \"dismiss-addon-promotion/\",\n        views.dismiss_addon_promotion,\n        name=\"pontoon.contributors.dismiss_addon_promotion\",\n    ),\n    # AJAX: Update contribution graph\n    path(\n        \"update-contribution-graph/\",\n        views.update_contribution_graph,\n        name=\"pontoon.contributors.update_contribution_graph\",\n    ),\n    # AJAX: Update contribution timeline\n    path(\n        \"update-contribution-timeline/\",\n        views.update_contribution_timeline,\n        name=\"pontoon.contributors.update_contribution_timeline\",\n    ),\n]\n", "path": "pontoon/contributors/urls.py"}], "after_files": [{"content": "from django.urls import path, register_converter\nfrom django.urls.converters import StringConverter\nfrom django.views.generic import RedirectView\n\nfrom . import views\n\n\nclass EmailConverter(StringConverter):\n    regex = r\"[\\w.%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}\"\n\n\nclass UsernameConverter(StringConverter):\n    regex = r\"[\\w.@+-]+\"\n\n\nregister_converter(EmailConverter, \"email\")\nregister_converter(UsernameConverter, \"username\")\n\nurlpatterns = [\n    # Legacy: Redirect to /contributors/email\n    path(\n        \"contributor/<email:email>/\",\n        RedirectView.as_view(url=\"/contributors/%(email)s/\", permanent=True),\n    ),\n    # List contributors\n    path(\n        \"contributors/\",\n        views.ContributorsView.as_view(),\n        name=\"pontoon.contributors\",\n    ),\n    # Contributor profile by username\n    path(\n        \"contributors/<username:username>/\",\n        views.contributor_username,\n        name=\"pontoon.contributors.contributor.username\",\n    ),\n    # Verify email address\n    path(\n        \"verify-email-address/<str:token>/\",\n        views.verify_email_address,\n        name=\"pontoon.contributors.verify.email\",\n    ),\n    # Current user's profile\n    path(\"profile/\", views.profile, name=\"pontoon.contributors.profile\"),\n    # Current user's settings\n    path(\"settings/\", views.settings, name=\"pontoon.contributors.settings\"),\n    # Current user's notifications\n    path(\n        \"notifications/\",\n        views.notifications,\n        name=\"pontoon.contributors.notifications\",\n    ),\n    # Mark current user's notifications as read\n    path(\n        \"notifications/mark-all-as-read/\",\n        views.mark_all_notifications_as_read,\n        name=\"pontoon.contributors.notifications.mark.all.as.read\",\n    ),\n    # API: Toggle user profile attribute\n    path(\n        \"api/v1/user/<username:username>/\",\n        views.toggle_user_profile_attribute,\n        name=\"pontoon.contributors.toggle_user_profile_attribute\",\n    ),\n    # AJAX: Save custom homepage\n    path(\n        \"save-custom-homepage/\",\n        views.save_custom_homepage,\n        name=\"pontoon.contributors.save_custom_homepage\",\n    ),\n    # AJAX: Save preferred source locale\n    path(\n        \"save-preferred-source-locale/\",\n        views.save_preferred_source_locale,\n        name=\"pontoon.contributors.save_preferred_source_locale\",\n    ),\n    # AJAX: Dismiss Add-On Promotion\n    path(\n        \"dismiss-addon-promotion/\",\n        views.dismiss_addon_promotion,\n        name=\"pontoon.contributors.dismiss_addon_promotion\",\n    ),\n    # AJAX: Update contribution graph\n    path(\n        \"update-contribution-graph/\",\n        views.update_contribution_graph,\n        name=\"pontoon.contributors.update_contribution_graph\",\n    ),\n    # AJAX: Update contribution timeline\n    path(\n        \"update-contribution-timeline/\",\n        views.update_contribution_timeline,\n        name=\"pontoon.contributors.update_contribution_timeline\",\n    ),\n]\n", "path": "pontoon/contributors/urls.py"}]}