prompt: We are currently solving the following issue within our repository. Here is the issue text:
  --- BEGIN ISSUE ---
  Appsync ApiKey Expires needs to be an int
  The expires prop on the appsync ApiKey class needs to be an int otherwise the decimal place causes cloudformation to throw a `Can not deserialize value of type java.lang.Long from String` error. 
  
  --- END ISSUE ---
  
  Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
  --- BEGIN FILES ---
  Path: `troposphere/appsync.py`
  Content:
  ```
  1 # Copyright (c) 2012-2017, Mark Peek <mark@peek.org>
  2 # All rights reserved.
  3 #
  4 # See LICENSE file for full license.
  5 
  6 from . import AWSObject, AWSProperty
  7 from .validators import boolean
  8 
  9 
  10 class ApiKey(AWSObject):
  11     resource_type = "AWS::AppSync::ApiKey"
  12 
  13     props = {
  14         'ApiId': (basestring, True),
  15         'Description': (basestring, False),
  16         'Expires': (float, False),
  17     }
  18 
  19 
  20 class DynamoDBConfig(AWSProperty):
  21     props = {
  22         'AwsRegion': (basestring, True),
  23         'TableName': (basestring, True),
  24         'UseCallerCredentials': (boolean, False),
  25     }
  26 
  27 
  28 class ElasticsearchConfig(AWSProperty):
  29     props = {
  30         'AwsRegion': (basestring, True),
  31         'Endpoint': (basestring, True),
  32     }
  33 
  34 
  35 class LambdaConfig(AWSProperty):
  36     props = {
  37         'LambdaFunctionArn': (basestring, True),
  38     }
  39 
  40 
  41 class DataSource(AWSObject):
  42     resource_type = "AWS::AppSync::DataSource"
  43 
  44     props = {
  45         'ApiId': (basestring, True),
  46         'Description': (basestring, False),
  47         'DynamoDBConfig': (DynamoDBConfig, False),
  48         'ElasticsearchConfig': (ElasticsearchConfig, False),
  49         'LambdaConfig': (LambdaConfig, False),
  50         'Name': (basestring, True),
  51         'ServiceRoleArn': (basestring, False),
  52         'Type': (basestring, True),
  53     }
  54 
  55 
  56 class LogConfig(AWSProperty):
  57     props = {
  58         'CloudWatchLogsRoleArn': (basestring, False),
  59         'FieldLogLevel': (basestring, False),
  60     }
  61 
  62 
  63 class OpenIDConnectConfig(AWSProperty):
  64     props = {
  65         'AuthTTL': (float, False),
  66         'ClientId': (basestring, False),
  67         'IatTTL': (float, False),
  68         'Issuer': (basestring, True),
  69     }
  70 
  71 
  72 class UserPoolConfig(AWSProperty):
  73     props = {
  74         'AppIdClientRegex': (basestring, False),
  75         'AwsRegion': (basestring, False),
  76         'DefaultAction': (basestring, False),
  77         'UserPoolId': (basestring, False),
  78     }
  79 
  80 
  81 class GraphQLApi(AWSObject):
  82     resource_type = "AWS::AppSync::GraphQLApi"
  83 
  84     props = {
  85         'AuthenticationType': (basestring, True),
  86         'LogConfig': (LogConfig, False),
  87         'Name': (basestring, True),
  88         'OpenIDConnectConfig': (OpenIDConnectConfig, False),
  89         'UserPoolConfig': (UserPoolConfig, False),
  90     }
  91 
  92 
  93 class GraphQLSchema(AWSObject):
  94     resource_type = "AWS::AppSync::GraphQLSchema"
  95 
  96     props = {
  97         'ApiId': (basestring, True),
  98         'Definition': (basestring, False),
  99         'DefinitionS3Location': (basestring, False),
  100     }
  101 
  102 
  103 class Resolver(AWSObject):
  104     resource_type = "AWS::AppSync::Resolver"
  105 
  106     props = {
  107         'ApiId': (basestring, True),
  108         'DataSourceName': (basestring, True),
  109         'FieldName': (basestring, True),
  110         'RequestMappingTemplate': (basestring, False),
  111         'RequestMappingTemplateS3Location': (basestring, False),
  112         'ResponseMappingTemplate': (basestring, False),
  113         'ResponseMappingTemplateS3Location': (basestring, False),
  114         'TypeName': (basestring, True),
  115     }
  116
  ```
  --- 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()
  
  ```
  
golden_diff: diff --git a/troposphere/appsync.py b/troposphere/appsync.py
  --- a/troposphere/appsync.py
  +++ b/troposphere/appsync.py
  @@ -4,7 +4,7 @@
   # See LICENSE file for full license.
   
   from . import AWSObject, AWSProperty
  -from .validators import boolean
  +from .validators import boolean, integer
   
   
   class ApiKey(AWSObject):
  @@ -13,7 +13,7 @@
       props = {
           'ApiId': (basestring, True),
           'Description': (basestring, False),
  -        'Expires': (float, False),
  +        'Expires': (integer, False),
       }
  
verification_info: {"golden_diff": "diff --git a/troposphere/appsync.py b/troposphere/appsync.py\n--- a/troposphere/appsync.py\n+++ b/troposphere/appsync.py\n@@ -4,7 +4,7 @@\n # See LICENSE file for full license.\n \n from . import AWSObject, AWSProperty\n-from .validators import boolean\n+from .validators import boolean, integer\n \n \n class ApiKey(AWSObject):\n@@ -13,7 +13,7 @@\n     props = {\n         'ApiId': (basestring, True),\n         'Description': (basestring, False),\n-        'Expires': (float, False),\n+        'Expires': (integer, False),\n     }\n", "issue": "Appsync ApiKey Expires needs to be an int\nThe expires prop on the appsync ApiKey class needs to be an int otherwise the decimal place causes cloudformation to throw a `Can not deserialize value of type java.lang.Long from String` error. \n", "before_files": [{"content": "# Copyright (c) 2012-2017, Mark Peek <mark@peek.org>\n# All rights reserved.\n#\n# See LICENSE file for full license.\n\nfrom . import AWSObject, AWSProperty\nfrom .validators import boolean\n\n\nclass ApiKey(AWSObject):\n    resource_type = \"AWS::AppSync::ApiKey\"\n\n    props = {\n        'ApiId': (basestring, True),\n        'Description': (basestring, False),\n        'Expires': (float, False),\n    }\n\n\nclass DynamoDBConfig(AWSProperty):\n    props = {\n        'AwsRegion': (basestring, True),\n        'TableName': (basestring, True),\n        'UseCallerCredentials': (boolean, False),\n    }\n\n\nclass ElasticsearchConfig(AWSProperty):\n    props = {\n        'AwsRegion': (basestring, True),\n        'Endpoint': (basestring, True),\n    }\n\n\nclass LambdaConfig(AWSProperty):\n    props = {\n        'LambdaFunctionArn': (basestring, True),\n    }\n\n\nclass DataSource(AWSObject):\n    resource_type = \"AWS::AppSync::DataSource\"\n\n    props = {\n        'ApiId': (basestring, True),\n        'Description': (basestring, False),\n        'DynamoDBConfig': (DynamoDBConfig, False),\n        'ElasticsearchConfig': (ElasticsearchConfig, False),\n        'LambdaConfig': (LambdaConfig, False),\n        'Name': (basestring, True),\n        'ServiceRoleArn': (basestring, False),\n        'Type': (basestring, True),\n    }\n\n\nclass LogConfig(AWSProperty):\n    props = {\n        'CloudWatchLogsRoleArn': (basestring, False),\n        'FieldLogLevel': (basestring, False),\n    }\n\n\nclass OpenIDConnectConfig(AWSProperty):\n    props = {\n        'AuthTTL': (float, False),\n        'ClientId': (basestring, False),\n        'IatTTL': (float, False),\n        'Issuer': (basestring, True),\n    }\n\n\nclass UserPoolConfig(AWSProperty):\n    props = {\n        'AppIdClientRegex': (basestring, False),\n        'AwsRegion': (basestring, False),\n        'DefaultAction': (basestring, False),\n        'UserPoolId': (basestring, False),\n    }\n\n\nclass GraphQLApi(AWSObject):\n    resource_type = \"AWS::AppSync::GraphQLApi\"\n\n    props = {\n        'AuthenticationType': (basestring, True),\n        'LogConfig': (LogConfig, False),\n        'Name': (basestring, True),\n        'OpenIDConnectConfig': (OpenIDConnectConfig, False),\n        'UserPoolConfig': (UserPoolConfig, False),\n    }\n\n\nclass GraphQLSchema(AWSObject):\n    resource_type = \"AWS::AppSync::GraphQLSchema\"\n\n    props = {\n        'ApiId': (basestring, True),\n        'Definition': (basestring, False),\n        'DefinitionS3Location': (basestring, False),\n    }\n\n\nclass Resolver(AWSObject):\n    resource_type = \"AWS::AppSync::Resolver\"\n\n    props = {\n        'ApiId': (basestring, True),\n        'DataSourceName': (basestring, True),\n        'FieldName': (basestring, True),\n        'RequestMappingTemplate': (basestring, False),\n        'RequestMappingTemplateS3Location': (basestring, False),\n        'ResponseMappingTemplate': (basestring, False),\n        'ResponseMappingTemplateS3Location': (basestring, False),\n        'TypeName': (basestring, True),\n    }\n", "path": "troposphere/appsync.py"}], "after_files": [{"content": "# Copyright (c) 2012-2017, Mark Peek <mark@peek.org>\n# All rights reserved.\n#\n# See LICENSE file for full license.\n\nfrom . import AWSObject, AWSProperty\nfrom .validators import boolean, integer\n\n\nclass ApiKey(AWSObject):\n    resource_type = \"AWS::AppSync::ApiKey\"\n\n    props = {\n        'ApiId': (basestring, True),\n        'Description': (basestring, False),\n        'Expires': (integer, False),\n    }\n\n\nclass DynamoDBConfig(AWSProperty):\n    props = {\n        'AwsRegion': (basestring, True),\n        'TableName': (basestring, True),\n        'UseCallerCredentials': (boolean, False),\n    }\n\n\nclass ElasticsearchConfig(AWSProperty):\n    props = {\n        'AwsRegion': (basestring, True),\n        'Endpoint': (basestring, True),\n    }\n\n\nclass LambdaConfig(AWSProperty):\n    props = {\n        'LambdaFunctionArn': (basestring, True),\n    }\n\n\nclass DataSource(AWSObject):\n    resource_type = \"AWS::AppSync::DataSource\"\n\n    props = {\n        'ApiId': (basestring, True),\n        'Description': (basestring, False),\n        'DynamoDBConfig': (DynamoDBConfig, False),\n        'ElasticsearchConfig': (ElasticsearchConfig, False),\n        'LambdaConfig': (LambdaConfig, False),\n        'Name': (basestring, True),\n        'ServiceRoleArn': (basestring, False),\n        'Type': (basestring, True),\n    }\n\n\nclass LogConfig(AWSProperty):\n    props = {\n        'CloudWatchLogsRoleArn': (basestring, False),\n        'FieldLogLevel': (basestring, False),\n    }\n\n\nclass OpenIDConnectConfig(AWSProperty):\n    props = {\n        'AuthTTL': (float, False),\n        'ClientId': (basestring, False),\n        'IatTTL': (float, False),\n        'Issuer': (basestring, True),\n    }\n\n\nclass UserPoolConfig(AWSProperty):\n    props = {\n        'AppIdClientRegex': (basestring, False),\n        'AwsRegion': (basestring, False),\n        'DefaultAction': (basestring, False),\n        'UserPoolId': (basestring, False),\n    }\n\n\nclass GraphQLApi(AWSObject):\n    resource_type = \"AWS::AppSync::GraphQLApi\"\n\n    props = {\n        'AuthenticationType': (basestring, True),\n        'LogConfig': (LogConfig, False),\n        'Name': (basestring, True),\n        'OpenIDConnectConfig': (OpenIDConnectConfig, False),\n        'UserPoolConfig': (UserPoolConfig, False),\n    }\n\n\nclass GraphQLSchema(AWSObject):\n    resource_type = \"AWS::AppSync::GraphQLSchema\"\n\n    props = {\n        'ApiId': (basestring, True),\n        'Definition': (basestring, False),\n        'DefinitionS3Location': (basestring, False),\n    }\n\n\nclass Resolver(AWSObject):\n    resource_type = \"AWS::AppSync::Resolver\"\n\n    props = {\n        'ApiId': (basestring, True),\n        'DataSourceName': (basestring, True),\n        'FieldName': (basestring, True),\n        'RequestMappingTemplate': (basestring, False),\n        'RequestMappingTemplateS3Location': (basestring, False),\n        'ResponseMappingTemplate': (basestring, False),\n        'ResponseMappingTemplateS3Location': (basestring, False),\n        'TypeName': (basestring, True),\n    }\n", "path": "troposphere/appsync.py"}]}