prompt: You will be provided with a partial code base and an issue statement explaining a problem to resolve.
  <issue>
  Security Hub tags not formatted correctly
  Using the following code for a Security Hub resource results in tags that don't follow the structure of Security Hub Cloudformation:
  
  ```
  hub = tpl.add_resource(Hub(
          title="ExampleHub",
          Tags=Tags(
              Tag("Test", "Test value")
          )
      ))
  ```
  
  The resulting CF template is as follows:
  ```
      "AWSTemplateFormatVersion": "2010-09-09",
      "Description": "Security Hub configuration",
      "Resources": {
          "ExampleHub": {
              "Properties": {
                  "Tags": [
                      {
                          "Key": "Test",
                          "Value": "Test value"
                      }
                  ]
              },
              "Type": "AWS::SecurityHub::Hub"
          }
      }
  }
  ```
  
  Looking into the CF documentation for security hub, it looks as though the tag JSON is different:
  ```
  {
      "Description": "Example Hub with Tags",
      "Resources": {
          "ExampleHubWithTags": {
              "Type": "AWS::SecurityHub::Hub",
              "Properties": {
                  "Tags": {
                      "key1": "value1",
                      "key2": "value2"
                  }
              }
          }
      }
  }
  ```
  
  Trying to apply the changeset from the generated TF template results in error `Property validation failure: [Value of property {/Tags} does not match type {Map}]`.
  
  </issue>
  <code>
  [start of troposphere/securityhub.py]
  1 # Copyright (c) 2012-2019, Mark Peek <mark@peek.org>
  2 # All rights reserved.
  3 #
  4 # See LICENSE file for full license.
  5 #
  6 # *** Do not modify - this file is autogenerated ***
  7 # Resource specification version: 4.1.0
  8 
  9 
  10 from . import AWSObject
  11 from troposphere import Tags
  12 
  13 
  14 class Hub(AWSObject):
  15     resource_type = "AWS::SecurityHub::Hub"
  16 
  17     props = {
  18         'Tags': (Tags, False),
  19     }
  20
  [end of troposphere/securityhub.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/troposphere/securityhub.py b/troposphere/securityhub.py
  --- a/troposphere/securityhub.py
  +++ b/troposphere/securityhub.py
  @@ -8,12 +8,12 @@
   
   
   from . import AWSObject
  -from troposphere import Tags
  +from .validators import json_checker
   
   
   class Hub(AWSObject):
       resource_type = "AWS::SecurityHub::Hub"
   
       props = {
  -        'Tags': (Tags, False),
  +        'Tags': (json_checker, False),
       }
  
verification_info: {"golden_diff": "diff --git a/troposphere/securityhub.py b/troposphere/securityhub.py\n--- a/troposphere/securityhub.py\n+++ b/troposphere/securityhub.py\n@@ -8,12 +8,12 @@\n \n \n from . import AWSObject\n-from troposphere import Tags\n+from .validators import json_checker\n \n \n class Hub(AWSObject):\n     resource_type = \"AWS::SecurityHub::Hub\"\n \n     props = {\n-        'Tags': (Tags, False),\n+        'Tags': (json_checker, False),\n     }\n", "issue": "Security Hub tags not formatted correctly\nUsing the following code for a Security Hub resource results in tags that don't follow the structure of Security Hub Cloudformation:\r\n\r\n```\r\nhub = tpl.add_resource(Hub(\r\n        title=\"ExampleHub\",\r\n        Tags=Tags(\r\n            Tag(\"Test\", \"Test value\")\r\n        )\r\n    ))\r\n```\r\n\r\nThe resulting CF template is as follows:\r\n```\r\n    \"AWSTemplateFormatVersion\": \"2010-09-09\",\r\n    \"Description\": \"Security Hub configuration\",\r\n    \"Resources\": {\r\n        \"ExampleHub\": {\r\n            \"Properties\": {\r\n                \"Tags\": [\r\n                    {\r\n                        \"Key\": \"Test\",\r\n                        \"Value\": \"Test value\"\r\n                    }\r\n                ]\r\n            },\r\n            \"Type\": \"AWS::SecurityHub::Hub\"\r\n        }\r\n    }\r\n}\r\n```\r\n\r\nLooking into the CF documentation for security hub, it looks as though the tag JSON is different:\r\n```\r\n{\r\n    \"Description\": \"Example Hub with Tags\",\r\n    \"Resources\": {\r\n        \"ExampleHubWithTags\": {\r\n            \"Type\": \"AWS::SecurityHub::Hub\",\r\n            \"Properties\": {\r\n                \"Tags\": {\r\n                    \"key1\": \"value1\",\r\n                    \"key2\": \"value2\"\r\n                }\r\n            }\r\n        }\r\n    }\r\n}\r\n```\r\n\r\nTrying to apply the changeset from the generated TF template results in error `Property validation failure: [Value of property {/Tags} does not match type {Map}]`.\n", "before_files": [{"content": "# Copyright (c) 2012-2019, Mark Peek <mark@peek.org>\n# All rights reserved.\n#\n# See LICENSE file for full license.\n#\n# *** Do not modify - this file is autogenerated ***\n# Resource specification version: 4.1.0\n\n\nfrom . import AWSObject\nfrom troposphere import Tags\n\n\nclass Hub(AWSObject):\n    resource_type = \"AWS::SecurityHub::Hub\"\n\n    props = {\n        'Tags': (Tags, False),\n    }\n", "path": "troposphere/securityhub.py"}]}