xtr-security-oauth2-server 4.0.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (178) hide show
  1. xtr_security_oauth2_server-4.0.2/LICENSE +24 -0
  2. xtr_security_oauth2_server-4.0.2/PKG-INFO +667 -0
  3. xtr_security_oauth2_server-4.0.2/README.md +626 -0
  4. xtr_security_oauth2_server-4.0.2/pyproject.toml +185 -0
  5. xtr_security_oauth2_server-4.0.2/pyproject.toml.orig +184 -0
  6. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/.agents/skills/xtr-security-oauth2-server/SKILL.md +373 -0
  7. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/.agents/skills/xtr-security-oauth2-server/references/configuration.md +104 -0
  8. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/.agents/skills/xtr-security-oauth2-server/references/events.md +105 -0
  9. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/.agents/skills/xtr-security-oauth2-server/references/extending.md +199 -0
  10. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/.agents/skills/xtr-security-oauth2-server/references/persistence.md +122 -0
  11. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/__init__.py +14 -0
  12. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/_endpoint_paths.py +82 -0
  13. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/_service_qualifier.py +18 -0
  14. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/authorization_server_metadata.py +174 -0
  15. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/bundle/__init__.py +43 -0
  16. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/bundle/_application_stores.py +82 -0
  17. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/bundle/_command_wiring.py +74 -0
  18. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/bundle/_endpoint_wiring.py +79 -0
  19. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/bundle/_grant_factories.py +210 -0
  20. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/bundle/_metadata_factories.py +163 -0
  21. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/bundle/_no_persistence.py +68 -0
  22. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/bundle/_parameters.py +42 -0
  23. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/bundle/_persistence_factories.py +168 -0
  24. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/bundle/_persistence_wiring.py +272 -0
  25. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/bundle/_required_settings.py +87 -0
  26. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/bundle/_server_factories.py +226 -0
  27. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/bundle/_service_factories.py +219 -0
  28. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/bundle/_service_wiring.py +230 -0
  29. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/bundle/_signing_factories.py +151 -0
  30. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/bundle/authorization_server_config.py +205 -0
  31. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/bundle/client_config.py +63 -0
  32. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/bundle/encryption_key_pass.py +79 -0
  33. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/bundle/grant_type_pass.py +149 -0
  34. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/bundle/metadata_pass.py +104 -0
  35. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/bundle/oauth2_authenticator_config.py +27 -0
  36. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/bundle/oauth2_server_bundle.py +191 -0
  37. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/bundle/oauth2_server_config.py +85 -0
  38. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/bundle/persistence_configs.py +99 -0
  39. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/bundle/resource_server_config.py +50 -0
  40. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/bundle/scopes_config.py +68 -0
  41. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/command/__init__.py +19 -0
  42. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/command/_key_files.py +85 -0
  43. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/command/_key_paths.py +73 -0
  44. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/command/_registry.py +16 -0
  45. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/command/clear_expired_tokens_command.py +122 -0
  46. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/command/create_client_command.py +220 -0
  47. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/command/delete_client_command.py +49 -0
  48. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/command/generate_key_pair_command.py +230 -0
  49. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/command/list_clients_command.py +133 -0
  50. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/command/update_client_command.py +178 -0
  51. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/controller/__init__.py +28 -0
  52. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/controller/_served_response.py +53 -0
  53. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/controller/authorization_controller.py +264 -0
  54. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/controller/device_code_controller.py +67 -0
  55. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/controller/introspection_controller.py +70 -0
  56. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/controller/jwks_controller.py +66 -0
  57. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/controller/metadata_controller.py +111 -0
  58. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/controller/revocation_controller.py +71 -0
  59. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/controller/token_controller.py +74 -0
  60. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/converter/__init__.py +22 -0
  61. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/converter/scope_converter.py +55 -0
  62. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/converter/scope_converter_interface.py +47 -0
  63. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/converter/user_converter.py +43 -0
  64. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/converter/user_converter_interface.py +30 -0
  65. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/entity/__init__.py +33 -0
  66. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/entity/access_token.py +35 -0
  67. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/entity/auth_code.py +27 -0
  68. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/entity/client.py +76 -0
  69. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/entity/device_code.py +27 -0
  70. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/entity/refresh_token.py +26 -0
  71. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/entity/scope.py +24 -0
  72. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/entity/user.py +23 -0
  73. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/event/__init__.py +28 -0
  74. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/event/access_token_extra_claims_resolve_event.py +86 -0
  75. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/event/authorization_request_resolve_event.py +153 -0
  76. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/event/authorization_request_resolve_event_factory.py +89 -0
  77. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/event/pre_save_client_event.py +47 -0
  78. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/event/scope_resolve_event.py +80 -0
  79. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/event/token_request_resolve_event.py +51 -0
  80. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/event/user_resolve_event.py +82 -0
  81. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/event_listener/__init__.py +16 -0
  82. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/event_listener/add_client_default_scopes_listener.py +60 -0
  83. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/exception/__init__.py +21 -0
  84. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/exception/client_already_registered_error.py +29 -0
  85. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/exception/invalid_configuration_error.py +32 -0
  86. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/factory/__init__.py +12 -0
  87. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/factory/oauth2_factory.py +130 -0
  88. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/manager/__init__.py +41 -0
  89. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/manager/access_token_manager_interface.py +36 -0
  90. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/manager/authorization_code_manager_interface.py +35 -0
  91. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/manager/client_filter.py +79 -0
  92. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/manager/client_manager_interface.py +51 -0
  93. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/manager/device_code_manager_interface.py +38 -0
  94. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/manager/in_memory/__init__.py +29 -0
  95. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/manager/in_memory/access_token_manager.py +82 -0
  96. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/manager/in_memory/authorization_code_manager.py +68 -0
  97. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/manager/in_memory/client_manager.py +95 -0
  98. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/manager/in_memory/device_code_manager.py +73 -0
  99. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/manager/in_memory/refresh_token_manager.py +80 -0
  100. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/manager/in_memory/scope_manager.py +45 -0
  101. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/manager/null/__init__.py +12 -0
  102. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/manager/null/access_token_manager.py +56 -0
  103. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/manager/orm/__init__.py +31 -0
  104. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/manager/orm/_changed_rows.py +20 -0
  105. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/manager/orm/access_token_manager.py +133 -0
  106. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/manager/orm/authorization_code_manager.py +83 -0
  107. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/manager/orm/client_manager.py +195 -0
  108. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/manager/orm/device_code_manager.py +91 -0
  109. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/manager/orm/refresh_token_manager.py +114 -0
  110. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/manager/refresh_token_manager_interface.py +48 -0
  111. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/manager/scope_manager_interface.py +28 -0
  112. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/metadata_contributor_interface.py +44 -0
  113. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/model/__init__.py +49 -0
  114. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/model/_short_identifier.py +19 -0
  115. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/model/abstract_client.py +152 -0
  116. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/model/access_token.py +92 -0
  117. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/model/access_token_interface.py +65 -0
  118. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/model/authorization_code.py +91 -0
  119. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/model/authorization_code_interface.py +65 -0
  120. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/model/client.py +18 -0
  121. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/model/client_interface.py +103 -0
  122. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/model/device_code.py +167 -0
  123. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/model/device_code_interface.py +100 -0
  124. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/model/refresh_token.py +79 -0
  125. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/model/refresh_token_interface.py +55 -0
  126. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/null_metadata_contributor.py +45 -0
  127. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/oauth2_events.py +69 -0
  128. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/persistence/__init__.py +15 -0
  129. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/persistence/mapping/__init__.py +20 -0
  130. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/persistence/mapping/_fields.py +85 -0
  131. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/persistence/mapping/_tables.py +259 -0
  132. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/persistence/mapping/client_mapping_mixin.py +72 -0
  133. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/persistence/mapping/driver.py +280 -0
  134. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/persistence/mapping/mapped_table.py +28 -0
  135. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/persistence/type/__init__.py +26 -0
  136. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/persistence/type/grant.py +30 -0
  137. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/persistence/type/imploded_array.py +81 -0
  138. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/persistence/type/redirect_uri.py +34 -0
  139. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/persistence/type/scope.py +34 -0
  140. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/persistence/type/utc_datetime.py +65 -0
  141. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/py.typed +0 -0
  142. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/recipe/__init__.py +19 -0
  143. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/recipe/files/config/oauth2_server.py.tmpl +63 -0
  144. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/recipe/files/config/routes/oauth2_server.py.tmpl +27 -0
  145. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/recipe/manifest.toml +53 -0
  146. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/repository/__init__.py +39 -0
  147. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/repository/_stored_client.py +47 -0
  148. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/repository/access_token_repository.py +165 -0
  149. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/repository/auth_code_repository.py +116 -0
  150. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/repository/client_repository.py +150 -0
  151. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/repository/device_code_repository.py +207 -0
  152. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/repository/null_access_token_repository.py +90 -0
  153. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/repository/refresh_token_repository.py +114 -0
  154. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/repository/scope_repository.py +148 -0
  155. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/repository/user_repository.py +92 -0
  156. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/routing/__init__.py +14 -0
  157. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/routing/_endpoints.py +118 -0
  158. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/routing/oauth2_server_route_loader.py +52 -0
  159. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/routing/well_known_route_loader.py +32 -0
  160. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/security/__init__.py +22 -0
  161. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/security/authentication/__init__.py +7 -0
  162. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/security/authentication/token/__init__.py +7 -0
  163. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/security/authentication/token/oauth2_token.py +117 -0
  164. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/security/authenticator/__init__.py +7 -0
  165. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/security/authenticator/oauth2_authenticator.py +277 -0
  166. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/security/exception/__init__.py +16 -0
  167. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/security/exception/oauth2_authentication_error.py +93 -0
  168. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/security/exception/oauth2_authentication_failed_error.py +44 -0
  169. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/security/user/__init__.py +7 -0
  170. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/security/user/client_credentials_user.py +53 -0
  171. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/service/__init__.py +16 -0
  172. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/service/credentials_revoker/__init__.py +12 -0
  173. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/service/credentials_revoker/orm_credentials_revoker.py +152 -0
  174. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/service/credentials_revoker_interface.py +41 -0
  175. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/value_object/__init__.py +21 -0
  176. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/value_object/grant.py +45 -0
  177. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/value_object/redirect_uri.py +54 -0
  178. xtr_security_oauth2_server-4.0.2/src/xtr_security_oauth2_server/value_object/scope.py +46 -0
@@ -0,0 +1,24 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 xterr
4
+ Copyright (C) Alex Bilbie
5
+ Copyright (c) 2020 Robin Chalas
6
+ Portions Copyright (c) 2018-2020 Trikoder
7
+
8
+ Permission is hereby granted, free of charge, to any person obtaining a copy
9
+ of this software and associated documentation files (the "Software"), to deal
10
+ in the Software without restriction, including without limitation the rights
11
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
12
+ copies of the Software, and to permit persons to whom the Software is
13
+ furnished to do so, subject to the following conditions:
14
+
15
+ The above copyright notice and this permission notice shall be included in all
16
+ copies or substantial portions of the Software.
17
+
18
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
21
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
23
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
24
+ SOFTWARE.