prompt: You will be provided with a partial code base and an issue statement explaining a problem to resolve.
  <issue>
  Capital O missing an umlaut
  Hello, I noticed in faker/Providers/De_de/internet.py in the _to_ascii method, the capital O is missing an umlaut. 
  
  It should be: ('Ö', 'Oe') 
  
  Currently:
  replacements = (
              ('ä', 'ae'), ('Ä', 'Ae'),
              ('ö', 'oe'), ('O', 'Oe'),
              ('ü', 'ue'), ('Ü', 'Ue'),
              ('ß', 'ss')
  
  
  </issue>
  <code>
  [start of faker/providers/de_DE/internet.py]
  1 # coding=utf-8
  2 from __future__ import unicode_literals
  3 from ..internet import Provider as InternetProvider
  4 
  5 import re
  6 
  7 
  8 class Provider(InternetProvider):
  9 
  10     free_email_domains = (
  11         'web.de', 'gmail.com', 'hotmail.de', 'yahoo.de', 'googlemail.com',
  12         'aol.de', 'gmx.de'
  13     )
  14     tlds = ('com', 'com', 'com', 'net', 'org', 'de', 'de', 'de')
  15 
  16     @staticmethod
  17     def _to_ascii(string):
  18         replacements = (
  19             ('ä', 'ae'), ('Ä', 'Ae'),
  20             ('ö', 'oe'), ('O', 'Oe'),
  21             ('ü', 'ue'), ('Ü', 'Ue'),
  22             ('ß', 'ss')
  23         )
  24         for search, replace in replacements:
  25             string = string.replace(search, replace)
  26 
  27         return string
  28 
  29     def user_name(self):
  30         pattern = self.random_element(self.user_name_formats)
  31         return self._to_ascii(
  32             self.bothify(self.generator.parse(pattern)
  33         ).lower())
  34 
  35     def domain_word(self):
  36         company = self.generator.format('company')
  37         company_elements = company.split(' ')
  38         company = self._to_ascii(company_elements.pop(0))
  39         return re.sub(r'\W', '', company).lower()
  40
  [end of faker/providers/de_DE/internet.py]
  </code>
  
  I need you to solve this issue by generating a single patch file that I can apply directly to this repository using git apply. Please respond with a single patch file in the following format.
  <patch>
  diff --git a/file.py b/file.py
  --- a/file.py
  +++ b/file.py
  @@ -1,27 +1,35 @@
   def euclidean(a, b):
  -    while b:
  -        a, b = b, a % b
  -    return a
  +    if b == 0:
  +        return a
  +    return euclidean(b, a % b)
   
   
   def bresenham(x0, y0, x1, y1):
       points = []
       dx = abs(x1 - x0)
       dy = abs(y1 - y0)
  -    sx = 1 if x0 < x1 else -1
  -    sy = 1 if y0 < y1 else -1
  -    err = dx - dy
  +    x, y = x0, y0
  +    sx = -1 if x0 > x1 else 1
  +    sy = -1 if y0 > y1 else 1
   
  -    while True:
  -        points.append((x0, y0))
  -        if x0 == x1 and y0 == y1:
  -            break
  -        e2 = 2 * err
  -        if e2 > -dy:
  -            err -= dy
  -            x0 += sx
  -        if e2 < dx:
  -            err += dx
  -            y0 += sy
  +    if dx > dy:
  +        err = dx / 2.0
  +        while x != x1:
  +            points.append((x, y))
  +            err -= dy
  +            if err < 0:
  +                y += sy
  +                err += dx
  +            x += sx
  +    else:
  +        err = dy / 2.0
  +        while y != y1:
  +            points.append((x, y))
  +            err -= dx
  +            if err < 0:
  +                x += sx
  +                err += dy
  +            y += sy
  +
  +    points.append((x, y))
       return points
  
  </patch>
golden_diff: diff --git a/faker/providers/de_DE/internet.py b/faker/providers/de_DE/internet.py
  --- a/faker/providers/de_DE/internet.py
  +++ b/faker/providers/de_DE/internet.py
  @@ -17,7 +17,7 @@
       def _to_ascii(string):
           replacements = (
               ('ä', 'ae'), ('Ä', 'Ae'),
  -            ('ö', 'oe'), ('O', 'Oe'),
  +            ('ö', 'oe'), ('Ö', 'Oe'),
               ('ü', 'ue'), ('Ü', 'Ue'),
               ('ß', 'ss')
           )
  
verification_info: {"golden_diff": "diff --git a/faker/providers/de_DE/internet.py b/faker/providers/de_DE/internet.py\n--- a/faker/providers/de_DE/internet.py\n+++ b/faker/providers/de_DE/internet.py\n@@ -17,7 +17,7 @@\n     def _to_ascii(string):\n         replacements = (\n             ('\u00e4', 'ae'), ('\u00c4', 'Ae'),\n-            ('\u00f6', 'oe'), ('O', 'Oe'),\n+            ('\u00f6', 'oe'), ('\u00d6', 'Oe'),\n             ('\u00fc', 'ue'), ('\u00dc', 'Ue'),\n             ('\u00df', 'ss')\n         )\n", "issue": "Capital O missing an umlaut\nHello, I noticed in faker/Providers/De_de/internet.py in the _to_ascii method, the capital O is missing an umlaut. \n\nIt should be: ('\u00d6', 'Oe') \n\nCurrently:\nreplacements = (\n            ('\u00e4', 'ae'), ('\u00c4', 'Ae'),\n            ('\u00f6', 'oe'), ('O', 'Oe'),\n            ('\u00fc', 'ue'), ('\u00dc', 'Ue'),\n            ('\u00df', 'ss')\n\n", "before_files": [{"content": "# coding=utf-8\nfrom __future__ import unicode_literals\nfrom ..internet import Provider as InternetProvider\n\nimport re\n\n\nclass Provider(InternetProvider):\n\n    free_email_domains = (\n        'web.de', 'gmail.com', 'hotmail.de', 'yahoo.de', 'googlemail.com',\n        'aol.de', 'gmx.de'\n    )\n    tlds = ('com', 'com', 'com', 'net', 'org', 'de', 'de', 'de')\n\n    @staticmethod\n    def _to_ascii(string):\n        replacements = (\n            ('\u00e4', 'ae'), ('\u00c4', 'Ae'),\n            ('\u00f6', 'oe'), ('O', 'Oe'),\n            ('\u00fc', 'ue'), ('\u00dc', 'Ue'),\n            ('\u00df', 'ss')\n        )\n        for search, replace in replacements:\n            string = string.replace(search, replace)\n\n        return string\n\n    def user_name(self):\n        pattern = self.random_element(self.user_name_formats)\n        return self._to_ascii(\n            self.bothify(self.generator.parse(pattern)\n        ).lower())\n\n    def domain_word(self):\n        company = self.generator.format('company')\n        company_elements = company.split(' ')\n        company = self._to_ascii(company_elements.pop(0))\n        return re.sub(r'\\W', '', company).lower()\n", "path": "faker/providers/de_DE/internet.py"}]}