aider-ce 0.87.2.dev9__py3-none-any.whl

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.

Potentially problematic release.


This version of aider-ce might be problematic. Click here for more details.

Files changed (264) hide show
  1. aider/__init__.py +20 -0
  2. aider/__main__.py +4 -0
  3. aider/_version.py +34 -0
  4. aider/analytics.py +258 -0
  5. aider/args.py +1014 -0
  6. aider/args_formatter.py +228 -0
  7. aider/change_tracker.py +133 -0
  8. aider/coders/__init__.py +36 -0
  9. aider/coders/architect_coder.py +48 -0
  10. aider/coders/architect_prompts.py +40 -0
  11. aider/coders/ask_coder.py +9 -0
  12. aider/coders/ask_prompts.py +35 -0
  13. aider/coders/base_coder.py +3013 -0
  14. aider/coders/base_prompts.py +87 -0
  15. aider/coders/chat_chunks.py +64 -0
  16. aider/coders/context_coder.py +53 -0
  17. aider/coders/context_prompts.py +75 -0
  18. aider/coders/editblock_coder.py +657 -0
  19. aider/coders/editblock_fenced_coder.py +10 -0
  20. aider/coders/editblock_fenced_prompts.py +143 -0
  21. aider/coders/editblock_func_coder.py +141 -0
  22. aider/coders/editblock_func_prompts.py +27 -0
  23. aider/coders/editblock_prompts.py +177 -0
  24. aider/coders/editor_diff_fenced_coder.py +9 -0
  25. aider/coders/editor_diff_fenced_prompts.py +11 -0
  26. aider/coders/editor_editblock_coder.py +9 -0
  27. aider/coders/editor_editblock_prompts.py +21 -0
  28. aider/coders/editor_whole_coder.py +9 -0
  29. aider/coders/editor_whole_prompts.py +12 -0
  30. aider/coders/help_coder.py +16 -0
  31. aider/coders/help_prompts.py +46 -0
  32. aider/coders/navigator_coder.py +2711 -0
  33. aider/coders/navigator_legacy_prompts.py +338 -0
  34. aider/coders/navigator_prompts.py +530 -0
  35. aider/coders/patch_coder.py +706 -0
  36. aider/coders/patch_prompts.py +161 -0
  37. aider/coders/search_replace.py +757 -0
  38. aider/coders/shell.py +37 -0
  39. aider/coders/single_wholefile_func_coder.py +102 -0
  40. aider/coders/single_wholefile_func_prompts.py +27 -0
  41. aider/coders/udiff_coder.py +429 -0
  42. aider/coders/udiff_prompts.py +117 -0
  43. aider/coders/udiff_simple.py +14 -0
  44. aider/coders/udiff_simple_prompts.py +25 -0
  45. aider/coders/wholefile_coder.py +144 -0
  46. aider/coders/wholefile_func_coder.py +134 -0
  47. aider/coders/wholefile_func_prompts.py +27 -0
  48. aider/coders/wholefile_prompts.py +70 -0
  49. aider/commands.py +1946 -0
  50. aider/copypaste.py +72 -0
  51. aider/deprecated.py +126 -0
  52. aider/diffs.py +128 -0
  53. aider/dump.py +29 -0
  54. aider/editor.py +147 -0
  55. aider/exceptions.py +107 -0
  56. aider/format_settings.py +26 -0
  57. aider/gui.py +545 -0
  58. aider/help.py +163 -0
  59. aider/help_pats.py +19 -0
  60. aider/history.py +178 -0
  61. aider/io.py +1257 -0
  62. aider/linter.py +304 -0
  63. aider/llm.py +47 -0
  64. aider/main.py +1297 -0
  65. aider/mcp/__init__.py +94 -0
  66. aider/mcp/server.py +119 -0
  67. aider/mdstream.py +243 -0
  68. aider/models.py +1344 -0
  69. aider/onboarding.py +428 -0
  70. aider/openrouter.py +129 -0
  71. aider/prompts.py +56 -0
  72. aider/queries/tree-sitter-language-pack/README.md +7 -0
  73. aider/queries/tree-sitter-language-pack/arduino-tags.scm +5 -0
  74. aider/queries/tree-sitter-language-pack/c-tags.scm +9 -0
  75. aider/queries/tree-sitter-language-pack/chatito-tags.scm +16 -0
  76. aider/queries/tree-sitter-language-pack/clojure-tags.scm +7 -0
  77. aider/queries/tree-sitter-language-pack/commonlisp-tags.scm +122 -0
  78. aider/queries/tree-sitter-language-pack/cpp-tags.scm +15 -0
  79. aider/queries/tree-sitter-language-pack/csharp-tags.scm +26 -0
  80. aider/queries/tree-sitter-language-pack/d-tags.scm +26 -0
  81. aider/queries/tree-sitter-language-pack/dart-tags.scm +92 -0
  82. aider/queries/tree-sitter-language-pack/elisp-tags.scm +5 -0
  83. aider/queries/tree-sitter-language-pack/elixir-tags.scm +54 -0
  84. aider/queries/tree-sitter-language-pack/elm-tags.scm +19 -0
  85. aider/queries/tree-sitter-language-pack/gleam-tags.scm +41 -0
  86. aider/queries/tree-sitter-language-pack/go-tags.scm +42 -0
  87. aider/queries/tree-sitter-language-pack/java-tags.scm +20 -0
  88. aider/queries/tree-sitter-language-pack/javascript-tags.scm +88 -0
  89. aider/queries/tree-sitter-language-pack/lua-tags.scm +34 -0
  90. aider/queries/tree-sitter-language-pack/matlab-tags.scm +10 -0
  91. aider/queries/tree-sitter-language-pack/ocaml-tags.scm +115 -0
  92. aider/queries/tree-sitter-language-pack/ocaml_interface-tags.scm +98 -0
  93. aider/queries/tree-sitter-language-pack/pony-tags.scm +39 -0
  94. aider/queries/tree-sitter-language-pack/properties-tags.scm +5 -0
  95. aider/queries/tree-sitter-language-pack/python-tags.scm +14 -0
  96. aider/queries/tree-sitter-language-pack/r-tags.scm +21 -0
  97. aider/queries/tree-sitter-language-pack/racket-tags.scm +12 -0
  98. aider/queries/tree-sitter-language-pack/ruby-tags.scm +64 -0
  99. aider/queries/tree-sitter-language-pack/rust-tags.scm +60 -0
  100. aider/queries/tree-sitter-language-pack/solidity-tags.scm +43 -0
  101. aider/queries/tree-sitter-language-pack/swift-tags.scm +51 -0
  102. aider/queries/tree-sitter-language-pack/udev-tags.scm +20 -0
  103. aider/queries/tree-sitter-languages/README.md +23 -0
  104. aider/queries/tree-sitter-languages/c-tags.scm +9 -0
  105. aider/queries/tree-sitter-languages/c_sharp-tags.scm +46 -0
  106. aider/queries/tree-sitter-languages/cpp-tags.scm +15 -0
  107. aider/queries/tree-sitter-languages/dart-tags.scm +91 -0
  108. aider/queries/tree-sitter-languages/elisp-tags.scm +8 -0
  109. aider/queries/tree-sitter-languages/elixir-tags.scm +54 -0
  110. aider/queries/tree-sitter-languages/elm-tags.scm +19 -0
  111. aider/queries/tree-sitter-languages/go-tags.scm +30 -0
  112. aider/queries/tree-sitter-languages/hcl-tags.scm +77 -0
  113. aider/queries/tree-sitter-languages/java-tags.scm +20 -0
  114. aider/queries/tree-sitter-languages/javascript-tags.scm +88 -0
  115. aider/queries/tree-sitter-languages/kotlin-tags.scm +27 -0
  116. aider/queries/tree-sitter-languages/matlab-tags.scm +10 -0
  117. aider/queries/tree-sitter-languages/ocaml-tags.scm +115 -0
  118. aider/queries/tree-sitter-languages/ocaml_interface-tags.scm +98 -0
  119. aider/queries/tree-sitter-languages/php-tags.scm +26 -0
  120. aider/queries/tree-sitter-languages/python-tags.scm +12 -0
  121. aider/queries/tree-sitter-languages/ql-tags.scm +26 -0
  122. aider/queries/tree-sitter-languages/ruby-tags.scm +64 -0
  123. aider/queries/tree-sitter-languages/rust-tags.scm +60 -0
  124. aider/queries/tree-sitter-languages/scala-tags.scm +65 -0
  125. aider/queries/tree-sitter-languages/typescript-tags.scm +41 -0
  126. aider/reasoning_tags.py +82 -0
  127. aider/repo.py +621 -0
  128. aider/repomap.py +988 -0
  129. aider/report.py +200 -0
  130. aider/resources/__init__.py +3 -0
  131. aider/resources/model-metadata.json +699 -0
  132. aider/resources/model-settings.yml +2046 -0
  133. aider/run_cmd.py +132 -0
  134. aider/scrape.py +284 -0
  135. aider/sendchat.py +61 -0
  136. aider/special.py +203 -0
  137. aider/tools/__init__.py +26 -0
  138. aider/tools/command.py +58 -0
  139. aider/tools/command_interactive.py +53 -0
  140. aider/tools/delete_block.py +120 -0
  141. aider/tools/delete_line.py +112 -0
  142. aider/tools/delete_lines.py +137 -0
  143. aider/tools/extract_lines.py +276 -0
  144. aider/tools/grep.py +171 -0
  145. aider/tools/indent_lines.py +155 -0
  146. aider/tools/insert_block.py +211 -0
  147. aider/tools/list_changes.py +51 -0
  148. aider/tools/ls.py +49 -0
  149. aider/tools/make_editable.py +46 -0
  150. aider/tools/make_readonly.py +29 -0
  151. aider/tools/remove.py +48 -0
  152. aider/tools/replace_all.py +77 -0
  153. aider/tools/replace_line.py +125 -0
  154. aider/tools/replace_lines.py +160 -0
  155. aider/tools/replace_text.py +125 -0
  156. aider/tools/show_numbered_context.py +101 -0
  157. aider/tools/tool_utils.py +313 -0
  158. aider/tools/undo_change.py +60 -0
  159. aider/tools/view.py +13 -0
  160. aider/tools/view_files_at_glob.py +65 -0
  161. aider/tools/view_files_matching.py +103 -0
  162. aider/tools/view_files_with_symbol.py +121 -0
  163. aider/urls.py +17 -0
  164. aider/utils.py +454 -0
  165. aider/versioncheck.py +113 -0
  166. aider/voice.py +187 -0
  167. aider/waiting.py +221 -0
  168. aider/watch.py +318 -0
  169. aider/watch_prompts.py +12 -0
  170. aider/website/Gemfile +8 -0
  171. aider/website/_includes/blame.md +162 -0
  172. aider/website/_includes/get-started.md +22 -0
  173. aider/website/_includes/help-tip.md +5 -0
  174. aider/website/_includes/help.md +24 -0
  175. aider/website/_includes/install.md +5 -0
  176. aider/website/_includes/keys.md +4 -0
  177. aider/website/_includes/model-warnings.md +67 -0
  178. aider/website/_includes/multi-line.md +22 -0
  179. aider/website/_includes/python-m-aider.md +5 -0
  180. aider/website/_includes/recording.css +228 -0
  181. aider/website/_includes/recording.md +34 -0
  182. aider/website/_includes/replit-pipx.md +9 -0
  183. aider/website/_includes/works-best.md +1 -0
  184. aider/website/_sass/custom/custom.scss +103 -0
  185. aider/website/docs/config/adv-model-settings.md +2260 -0
  186. aider/website/docs/config/aider_conf.md +548 -0
  187. aider/website/docs/config/api-keys.md +90 -0
  188. aider/website/docs/config/dotenv.md +493 -0
  189. aider/website/docs/config/editor.md +127 -0
  190. aider/website/docs/config/mcp.md +95 -0
  191. aider/website/docs/config/model-aliases.md +104 -0
  192. aider/website/docs/config/options.md +890 -0
  193. aider/website/docs/config/reasoning.md +210 -0
  194. aider/website/docs/config.md +44 -0
  195. aider/website/docs/faq.md +384 -0
  196. aider/website/docs/git.md +76 -0
  197. aider/website/docs/index.md +47 -0
  198. aider/website/docs/install/codespaces.md +39 -0
  199. aider/website/docs/install/docker.md +57 -0
  200. aider/website/docs/install/optional.md +100 -0
  201. aider/website/docs/install/replit.md +8 -0
  202. aider/website/docs/install.md +115 -0
  203. aider/website/docs/languages.md +264 -0
  204. aider/website/docs/legal/contributor-agreement.md +111 -0
  205. aider/website/docs/legal/privacy.md +104 -0
  206. aider/website/docs/llms/anthropic.md +77 -0
  207. aider/website/docs/llms/azure.md +48 -0
  208. aider/website/docs/llms/bedrock.md +132 -0
  209. aider/website/docs/llms/cohere.md +34 -0
  210. aider/website/docs/llms/deepseek.md +32 -0
  211. aider/website/docs/llms/gemini.md +49 -0
  212. aider/website/docs/llms/github.md +111 -0
  213. aider/website/docs/llms/groq.md +36 -0
  214. aider/website/docs/llms/lm-studio.md +39 -0
  215. aider/website/docs/llms/ollama.md +75 -0
  216. aider/website/docs/llms/openai-compat.md +39 -0
  217. aider/website/docs/llms/openai.md +58 -0
  218. aider/website/docs/llms/openrouter.md +78 -0
  219. aider/website/docs/llms/other.md +111 -0
  220. aider/website/docs/llms/vertex.md +50 -0
  221. aider/website/docs/llms/warnings.md +10 -0
  222. aider/website/docs/llms/xai.md +53 -0
  223. aider/website/docs/llms.md +54 -0
  224. aider/website/docs/more/analytics.md +127 -0
  225. aider/website/docs/more/edit-formats.md +116 -0
  226. aider/website/docs/more/infinite-output.md +159 -0
  227. aider/website/docs/more-info.md +8 -0
  228. aider/website/docs/recordings/auto-accept-architect.md +31 -0
  229. aider/website/docs/recordings/dont-drop-original-read-files.md +35 -0
  230. aider/website/docs/recordings/index.md +21 -0
  231. aider/website/docs/recordings/model-accepts-settings.md +69 -0
  232. aider/website/docs/recordings/tree-sitter-language-pack.md +80 -0
  233. aider/website/docs/repomap.md +112 -0
  234. aider/website/docs/scripting.md +100 -0
  235. aider/website/docs/troubleshooting/aider-not-found.md +24 -0
  236. aider/website/docs/troubleshooting/edit-errors.md +76 -0
  237. aider/website/docs/troubleshooting/imports.md +62 -0
  238. aider/website/docs/troubleshooting/models-and-keys.md +54 -0
  239. aider/website/docs/troubleshooting/support.md +79 -0
  240. aider/website/docs/troubleshooting/token-limits.md +96 -0
  241. aider/website/docs/troubleshooting/warnings.md +12 -0
  242. aider/website/docs/troubleshooting.md +11 -0
  243. aider/website/docs/usage/browser.md +57 -0
  244. aider/website/docs/usage/caching.md +49 -0
  245. aider/website/docs/usage/commands.md +133 -0
  246. aider/website/docs/usage/conventions.md +119 -0
  247. aider/website/docs/usage/copypaste.md +121 -0
  248. aider/website/docs/usage/images-urls.md +48 -0
  249. aider/website/docs/usage/lint-test.md +118 -0
  250. aider/website/docs/usage/modes.md +211 -0
  251. aider/website/docs/usage/not-code.md +179 -0
  252. aider/website/docs/usage/notifications.md +87 -0
  253. aider/website/docs/usage/tips.md +79 -0
  254. aider/website/docs/usage/tutorials.md +30 -0
  255. aider/website/docs/usage/voice.md +121 -0
  256. aider/website/docs/usage/watch.md +294 -0
  257. aider/website/docs/usage.md +102 -0
  258. aider/website/share/index.md +101 -0
  259. aider_ce-0.87.2.dev9.dist-info/METADATA +543 -0
  260. aider_ce-0.87.2.dev9.dist-info/RECORD +264 -0
  261. aider_ce-0.87.2.dev9.dist-info/WHEEL +5 -0
  262. aider_ce-0.87.2.dev9.dist-info/entry_points.txt +3 -0
  263. aider_ce-0.87.2.dev9.dist-info/licenses/LICENSE.txt +202 -0
  264. aider_ce-0.87.2.dev9.dist-info/top_level.txt +1 -0
@@ -0,0 +1,699 @@
1
+ {
2
+ "deepseek-reasoner": {
3
+ "max_tokens": 8192,
4
+ "max_input_tokens": 64000,
5
+ "max_output_tokens": 8192,
6
+ "input_cost_per_token": 0.00000055,
7
+ "input_cost_per_token_cache_hit": 0.00000014,
8
+ "cache_read_input_token_cost": 0.00000014,
9
+ "cache_creation_input_token_cost": 0.0,
10
+ "output_cost_per_token": 0.00000219,
11
+ "litellm_provider": "deepseek",
12
+ "mode": "chat",
13
+ //"supports_function_calling": true,
14
+ "supports_assistant_prefill": true,
15
+ //"supports_tool_choice": true,
16
+ "supports_prompt_caching": true
17
+ },
18
+ "openrouter/deepseek/deepseek-r1:free": {
19
+ "max_tokens": 8192,
20
+ "max_input_tokens": 64000,
21
+ "max_output_tokens": 8192,
22
+ "input_cost_per_token": 0.0,
23
+ "input_cost_per_token_cache_hit": 0.0,
24
+ "cache_read_input_token_cost": 0.00,
25
+ "cache_creation_input_token_cost": 0.0,
26
+ "output_cost_per_token": 0.0,
27
+ "litellm_provider": "openrouter",
28
+ "mode": "chat",
29
+ //"supports_function_calling": true,
30
+ "supports_assistant_prefill": true,
31
+ //"supports_tool_choice": true,
32
+ "supports_prompt_caching": true
33
+ },
34
+ "openrouter/deepseek/deepseek-chat:free": {
35
+ "max_tokens": 8192,
36
+ "max_input_tokens": 64000,
37
+ "max_output_tokens": 8192,
38
+ "input_cost_per_token": 0.0,
39
+ "input_cost_per_token_cache_hit": 0.0,
40
+ "cache_read_input_token_cost": 0.00,
41
+ "cache_creation_input_token_cost": 0.0,
42
+ "output_cost_per_token": 0.0,
43
+ "litellm_provider": "openrouter",
44
+ "mode": "chat",
45
+ //"supports_function_calling": true,
46
+ "supports_assistant_prefill": true,
47
+ //"supports_tool_choice": true,
48
+ "supports_prompt_caching": true
49
+ },
50
+ "openrouter/deepseek/deepseek-chat-v3-0324": {
51
+ "max_tokens": 8192,
52
+ "max_input_tokens": 131072,
53
+ "max_output_tokens": 8192,
54
+ "input_cost_per_token": 0.00000055,
55
+ "input_cost_per_token_cache_hit": 0.00000014,
56
+ "cache_read_input_token_cost": 0.00000014,
57
+ "cache_creation_input_token_cost": 0.0,
58
+ "output_cost_per_token": 0.00000219,
59
+ "litellm_provider": "openrouter",
60
+ "mode": "chat",
61
+ //"supports_function_calling": true,
62
+ "supports_assistant_prefill": true,
63
+ //"supports_tool_choice": true,
64
+ "supports_prompt_caching": true
65
+ },
66
+ "openrouter/deepseek/deepseek-chat-v3-0324:free": {
67
+ "max_tokens": 131072,
68
+ "max_input_tokens": 131072,
69
+ "max_output_tokens": 131072,
70
+ "input_cost_per_token": 0,
71
+ "output_cost_per_token": 0,
72
+ "litellm_provider": "openrouter",
73
+ "supports_prompt_caching": true,
74
+ "mode": "chat",
75
+ "supports_tool_choice": true
76
+ },
77
+ "fireworks_ai/accounts/fireworks/models/deepseek-r1": {
78
+ "max_tokens": 160000,
79
+ "max_input_tokens": 128000,
80
+ "max_output_tokens": 20480,
81
+ "litellm_provider": "fireworks_ai",
82
+ "input_cost_per_token": 0.000008,
83
+ "output_cost_per_token": 0.000008,
84
+ "mode": "chat",
85
+ },
86
+ "fireworks_ai/accounts/fireworks/models/deepseek-v3-0324": {
87
+ "max_tokens": 160000,
88
+ "max_input_tokens": 100000,
89
+ "max_output_tokens": 8192,
90
+ "litellm_provider": "fireworks_ai",
91
+ "input_cost_per_token": 0.0000009,
92
+ "output_cost_per_token": 0.0000009,
93
+ "mode": "chat",
94
+ },
95
+ "openrouter/openrouter/quasar-alpha": {
96
+ "max_input_tokens": 1000000,
97
+ "max_output_tokens": 32000,
98
+ "input_cost_per_token": 0.0,
99
+ "output_cost_per_token": 0.0,
100
+ "litellm_provider": "openrouter",
101
+ "mode": "chat",
102
+ "supports_vision": true,
103
+ "supports_function_calling": true,
104
+ "supports_system_messages": true,
105
+ "supports_prompt_caching": true
106
+ },
107
+ "openrouter/openrouter/optimus-alpha": {
108
+ "max_input_tokens": 1000000,
109
+ "max_output_tokens": 32000,
110
+ "input_cost_per_token": 0.0,
111
+ "output_cost_per_token": 0.0,
112
+ "litellm_provider": "openrouter",
113
+ "mode": "chat"
114
+ },
115
+ "openrouter/openai/gpt-4o-mini": {
116
+ "max_tokens": 16384,
117
+ "max_input_tokens": 128000,
118
+ "max_output_tokens": 16384,
119
+ "input_cost_per_token": 0.00000015,
120
+ "output_cost_per_token": 0.00000060,
121
+ "input_cost_per_token_batches": 0.000000075,
122
+ "output_cost_per_token_batches": 0.00000030,
123
+ "cache_read_input_token_cost": 0.000000075,
124
+ "litellm_provider": "openrouter",
125
+ "mode": "chat",
126
+ "supports_function_calling": true,
127
+ "supports_parallel_function_calling": true,
128
+ "supports_response_schema": true,
129
+ "supports_vision": true,
130
+ "supports_prompt_caching": true,
131
+ "supports_system_messages": true
132
+ },
133
+ "anthropic/claude-3-7-sonnet-20250219": {
134
+ "max_tokens": 8192,
135
+ "max_input_tokens": 200000,
136
+ "max_output_tokens": 8192,
137
+ "input_cost_per_token": 0.000003,
138
+ "output_cost_per_token": 0.000015,
139
+ "cache_creation_input_token_cost": 0.00000375,
140
+ "cache_read_input_token_cost": 0.0000003,
141
+ "litellm_provider": "anthropic",
142
+ "mode": "chat",
143
+ "supports_function_calling": true,
144
+ "supports_vision": true,
145
+ "tool_use_system_prompt_tokens": 159,
146
+ "supports_assistant_prefill": true,
147
+ "supports_pdf_input": true,
148
+ "supports_prompt_caching": true,
149
+ "supports_response_schema": true,
150
+ "deprecation_date": "2025-10-01",
151
+ "supports_tool_choice": true
152
+ },
153
+ "openai/gpt-4.5-preview": {
154
+ "max_tokens": 16384,
155
+ "max_input_tokens": 128000,
156
+ "max_output_tokens": 16384,
157
+ "input_cost_per_token": 0.000075,
158
+ "output_cost_per_token": 0.00015,
159
+ "cache_read_input_token_cost": 0.0000375,
160
+ "litellm_provider": "openai",
161
+ "mode": "chat",
162
+ "supports_function_calling": true,
163
+ "supports_parallel_function_calling": true,
164
+ "supports_response_schema": true,
165
+ "supports_vision": true,
166
+ "supports_prompt_caching": true,
167
+ "supports_system_messages": true,
168
+ "supports_tool_choice": true
169
+ },
170
+ "gemini/gemini-2.5-pro-exp-03-25": {
171
+ "max_tokens": 8192,
172
+ "max_input_tokens": 1048576,
173
+ "max_output_tokens": 64000,
174
+ "max_images_per_prompt": 3000,
175
+ "max_videos_per_prompt": 10,
176
+ "max_video_length": 1,
177
+ "max_audio_length_hours": 8.4,
178
+ "max_audio_per_prompt": 1,
179
+ "max_pdf_size_mb": 30,
180
+ "input_cost_per_image": 0,
181
+ "input_cost_per_video_per_second": 0,
182
+ "input_cost_per_audio_per_second": 0,
183
+ "input_cost_per_token": 0,
184
+ "input_cost_per_character": 0,
185
+ "input_cost_per_token_above_128k_tokens": 0,
186
+ "input_cost_per_character_above_128k_tokens": 0,
187
+ "input_cost_per_image_above_128k_tokens": 0,
188
+ "input_cost_per_video_per_second_above_128k_tokens": 0,
189
+ "input_cost_per_audio_per_second_above_128k_tokens": 0,
190
+ "output_cost_per_token": 0,
191
+ "output_cost_per_character": 0,
192
+ "output_cost_per_token_above_128k_tokens": 0,
193
+ "output_cost_per_character_above_128k_tokens": 0,
194
+ //"litellm_provider": "vertex_ai-language-models",
195
+ "litellm_provider": "gemini",
196
+ "mode": "chat",
197
+ "supports_system_messages": true,
198
+ "supports_function_calling": true,
199
+ "supports_vision": true,
200
+ "supports_audio_input": true,
201
+ "supports_video_input": true,
202
+ "supports_pdf_input": true,
203
+ "supports_response_schema": true,
204
+ "supports_tool_choice": true,
205
+ "source": "https://cloud.google.com/vertex-ai/generative-ai/pricing"
206
+ },
207
+ "vertex_ai/gemini-2.5-pro-exp-03-25": {
208
+ "max_tokens": 8192,
209
+ "max_input_tokens": 1048576,
210
+ "max_output_tokens": 64000,
211
+ "max_images_per_prompt": 3000,
212
+ "max_videos_per_prompt": 10,
213
+ "max_video_length": 1,
214
+ "max_audio_length_hours": 8.4,
215
+ "max_audio_per_prompt": 1,
216
+ "max_pdf_size_mb": 30,
217
+ "input_cost_per_image": 0,
218
+ "input_cost_per_video_per_second": 0,
219
+ "input_cost_per_audio_per_second": 0,
220
+ "input_cost_per_token": 0,
221
+ "input_cost_per_character": 0,
222
+ "input_cost_per_token_above_128k_tokens": 0,
223
+ "input_cost_per_character_above_128k_tokens": 0,
224
+ "input_cost_per_image_above_128k_tokens": 0,
225
+ "input_cost_per_video_per_second_above_128k_tokens": 0,
226
+ "input_cost_per_audio_per_second_above_128k_tokens": 0,
227
+ "output_cost_per_token": 0,
228
+ "output_cost_per_character": 0,
229
+ "output_cost_per_token_above_128k_tokens": 0,
230
+ "output_cost_per_character_above_128k_tokens": 0,
231
+ "litellm_provider": "vertex_ai-language-models",
232
+ "mode": "chat",
233
+ "supports_system_messages": true,
234
+ "supports_function_calling": true,
235
+ "supports_vision": true,
236
+ "supports_audio_input": true,
237
+ "supports_video_input": true,
238
+ "supports_pdf_input": true,
239
+ "supports_response_schema": true,
240
+ "supports_tool_choice": true,
241
+ "source": "https://cloud.google.com/vertex-ai/generative-ai/pricing"
242
+ },
243
+ "vertex_ai/gemini-2.5-pro-preview-03-25": {
244
+ "max_tokens": 8192,
245
+ "max_input_tokens": 1048576,
246
+ "max_output_tokens": 64000,
247
+ "max_images_per_prompt": 3000,
248
+ "max_videos_per_prompt": 10,
249
+ "max_video_length": 1,
250
+ "max_audio_length_hours": 8.4,
251
+ "max_audio_per_prompt": 1,
252
+ "max_pdf_size_mb": 30,
253
+ "input_cost_per_image": 0,
254
+ "input_cost_per_video_per_second": 0,
255
+ "input_cost_per_audio_per_second": 0,
256
+ "input_cost_per_token": 0.00000125,
257
+ "input_cost_per_character": 0,
258
+ "input_cost_per_token_above_128k_tokens": 0,
259
+ "input_cost_per_character_above_128k_tokens": 0,
260
+ "input_cost_per_image_above_128k_tokens": 0,
261
+ "input_cost_per_video_per_second_above_128k_tokens": 0,
262
+ "input_cost_per_audio_per_second_above_128k_tokens": 0,
263
+ "output_cost_per_token": 0.000010,
264
+ "output_cost_per_character": 0,
265
+ "output_cost_per_token_above_128k_tokens": 0,
266
+ "output_cost_per_character_above_128k_tokens": 0,
267
+ "litellm_provider": "vertex_ai-language-models",
268
+ "mode": "chat",
269
+ "supports_system_messages": true,
270
+ "supports_function_calling": true,
271
+ "supports_vision": true,
272
+ "supports_audio_input": true,
273
+ "supports_video_input": true,
274
+ "supports_pdf_input": true,
275
+ "supports_response_schema": true,
276
+ "supports_tool_choice": true,
277
+ "source": "https://cloud.google.com/vertex-ai/generative-ai/pricing"
278
+ },
279
+ "vertex_ai/gemini-2.5-pro": {
280
+ "max_tokens": 65536,
281
+ "max_input_tokens": 1048576,
282
+ "max_output_tokens": 65536,
283
+ "max_images_per_prompt": 3000,
284
+ "max_videos_per_prompt": 10,
285
+ "max_video_length": 1,
286
+ "max_audio_length_hours": 8.4,
287
+ "max_audio_per_prompt": 1,
288
+ "max_pdf_size_mb": 20,
289
+ "input_cost_per_token": 0.00000125,
290
+ "input_cost_per_token_above_200k_tokens": 0.0000025,
291
+ "output_cost_per_token": 0.00001,
292
+ "output_cost_per_token_above_200k_tokens": 0.000015,
293
+ "litellm_provider": "vertex_ai-language-models",
294
+ "mode": "chat",
295
+ "rpm": 2000,
296
+ "tpm": 8000000,
297
+ "supports_system_messages": true,
298
+ "supports_function_calling": true,
299
+ "supports_vision": true,
300
+ "supports_response_schema": true,
301
+ "supports_audio_output": false,
302
+ "supports_tool_choice": true,
303
+ "supported_modalities": ["text", "image", "audio", "video"],
304
+ "supported_output_modalities": ["text"],
305
+ "source": "https://cloud.google.com/vertex-ai/generative-ai/pricing"
306
+ },
307
+ "vertex_ai/gemini-2.5-flash": {
308
+ "max_tokens": 65536,
309
+ "max_input_tokens": 1048576,
310
+ "max_output_tokens": 65536,
311
+ "max_images_per_prompt": 3000,
312
+ "max_videos_per_prompt": 10,
313
+ "max_video_length": 1,
314
+ "max_audio_length_hours": 8.4,
315
+ "max_audio_per_prompt": 1,
316
+ "max_pdf_size_mb": 20,
317
+ "input_cost_per_token": 0.0000003,
318
+ "input_cost_per_audio_token": 0.000001,
319
+ "output_cost_per_token": 0.0000025,
320
+ "litellm_provider": "vertex_ai-language-models",
321
+ "mode": "chat",
322
+ "rpm": 10000,
323
+ "tpm": 8000000,
324
+ "supports_system_messages": true,
325
+ "supports_function_calling": true,
326
+ "supports_vision": true,
327
+ "supports_response_schema": true,
328
+ "supports_audio_output": false,
329
+ "supports_tool_choice": true,
330
+ "supported_modalities": ["text", "image", "audio", "video"],
331
+ "supported_output_modalities": ["text"],
332
+ "source": "https://cloud.google.com/vertex-ai/generative-ai/pricing"
333
+ },
334
+ "openrouter/google/gemini-2.5-pro-preview-03-25": {
335
+ "max_tokens": 8192,
336
+ "max_input_tokens": 1048576,
337
+ "max_output_tokens": 64000,
338
+ "max_images_per_prompt": 3000,
339
+ "max_videos_per_prompt": 10,
340
+ "max_video_length": 1,
341
+ "max_audio_length_hours": 8.4,
342
+ "max_audio_per_prompt": 1,
343
+ "max_pdf_size_mb": 30,
344
+ "input_cost_per_image": 0,
345
+ "input_cost_per_video_per_second": 0,
346
+ "input_cost_per_audio_per_second": 0,
347
+ "input_cost_per_token": 0.00000125,
348
+ "input_cost_per_character": 0,
349
+ "input_cost_per_token_above_128k_tokens": 0,
350
+ "input_cost_per_character_above_128k_tokens": 0,
351
+ "input_cost_per_image_above_128k_tokens": 0,
352
+ "input_cost_per_video_per_second_above_128k_tokens": 0,
353
+ "input_cost_per_audio_per_second_above_128k_tokens": 0,
354
+ "output_cost_per_token": 0.000010,
355
+ "output_cost_per_character": 0,
356
+ "output_cost_per_token_above_128k_tokens": 0,
357
+ "output_cost_per_character_above_128k_tokens": 0,
358
+ "litellm_provider": "vertex_ai-language-models",
359
+ "mode": "chat",
360
+ "supports_system_messages": true,
361
+ "supports_function_calling": true,
362
+ "supports_vision": true,
363
+ "supports_audio_input": true,
364
+ "supports_video_input": true,
365
+ "supports_pdf_input": true,
366
+ "supports_response_schema": true,
367
+ "supports_tool_choice": true,
368
+ "source": "https://cloud.google.com/vertex-ai/generative-ai/pricing"
369
+ },
370
+ "openrouter/google/gemini-2.5-pro-exp-03-25": {
371
+ "max_tokens": 8192,
372
+ "max_input_tokens": 1048576,
373
+ "max_output_tokens": 64000,
374
+ "max_images_per_prompt": 3000,
375
+ "max_videos_per_prompt": 10,
376
+ "max_video_length": 1,
377
+ "max_audio_length_hours": 8.4,
378
+ "max_audio_per_prompt": 1,
379
+ "max_pdf_size_mb": 30,
380
+ "input_cost_per_image": 0,
381
+ "input_cost_per_video_per_second": 0,
382
+ "input_cost_per_audio_per_second": 0,
383
+ "input_cost_per_token": 0,
384
+ "input_cost_per_character": 0,
385
+ "input_cost_per_token_above_128k_tokens": 0,
386
+ "input_cost_per_character_above_128k_tokens": 0,
387
+ "input_cost_per_image_above_128k_tokens": 0,
388
+ "input_cost_per_video_per_second_above_128k_tokens": 0,
389
+ "input_cost_per_audio_per_second_above_128k_tokens": 0,
390
+ "output_cost_per_token": 0,
391
+ "output_cost_per_character": 0,
392
+ "output_cost_per_token_above_128k_tokens": 0,
393
+ "output_cost_per_character_above_128k_tokens": 0,
394
+ "litellm_provider": "openrouter",
395
+ "mode": "chat",
396
+ "supports_system_messages": true,
397
+ "supports_function_calling": true,
398
+ "supports_vision": true,
399
+ "supports_audio_input": true,
400
+ "supports_video_input": true,
401
+ "supports_pdf_input": true,
402
+ "supports_response_schema": true,
403
+ "supports_tool_choice": true,
404
+ "source": "https://cloud.google.com/vertex-ai/generative-ai/pricing"
405
+ },
406
+ "openrouter/google/gemini-2.5": {
407
+ "max_tokens": 8192,
408
+ "max_input_tokens": 1048576,
409
+ "max_output_tokens": 64000,
410
+ "max_images_per_prompt": 3000,
411
+ "max_videos_per_prompt": 10,
412
+ "max_video_length": 1,
413
+ "max_audio_length_hours": 8.4,
414
+ "max_audio_per_prompt": 1,
415
+ "max_pdf_size_mb": 30,
416
+ "input_cost_per_image": 0,
417
+ "input_cost_per_video_per_second": 0,
418
+ "input_cost_per_audio_per_second": 0,
419
+ "input_cost_per_token": 0,
420
+ "input_cost_per_character": 0,
421
+ "input_cost_per_token_above_128k_tokens": 0,
422
+ "input_cost_per_character_above_128k_tokens": 0,
423
+ "input_cost_per_image_above_128k_tokens": 0,
424
+ "input_cost_per_video_per_second_above_128k_tokens": 0,
425
+ "input_cost_per_audio_per_second_above_128k_tokens": 0,
426
+ "output_cost_per_token": 0,
427
+ "output_cost_per_character": 0,
428
+ "output_cost_per_token_above_128k_tokens": 0,
429
+ "output_cost_per_character_above_128k_tokens": 0,
430
+ "litellm_provider": "openrouter",
431
+ "mode": "chat",
432
+ "supports_system_messages": true,
433
+ "supports_function_calling": true,
434
+ "supports_vision": true,
435
+ "supports_audio_input": true,
436
+ "supports_video_input": true,
437
+ "supports_pdf_input": true,
438
+ "supports_response_schema": true,
439
+ "supports_tool_choice": true,
440
+ "source": "https://cloud.google.com/vertex-ai/generative-ai/pricing"
441
+ },
442
+ "openrouter/x-ai/grok-3-beta": {
443
+ "max_tokens": 131072,
444
+ "max_input_tokens": 131072,
445
+ "max_output_tokens": 131072,
446
+ "input_cost_per_token": 0.000003,
447
+ "output_cost_per_token": 0.000015,
448
+ "litellm_provider": "openrouter",
449
+ "mode": "chat"
450
+ },
451
+ "openrouter/x-ai/grok-3-mini-beta": {
452
+ "max_tokens": 131072,
453
+ "max_input_tokens": 131072,
454
+ "max_output_tokens": 131072,
455
+ "input_cost_per_token": 0.0000003,
456
+ "output_cost_per_token": 0.0000005,
457
+ "litellm_provider": "openrouter",
458
+ "mode": "chat"
459
+ },
460
+ "openrouter/x-ai/grok-3-fast-beta": {
461
+ "max_tokens": 131072,
462
+ "max_input_tokens": 131072,
463
+ "max_output_tokens": 131072,
464
+ "input_cost_per_token": 0.000005,
465
+ "output_cost_per_token": 0.000025,
466
+ "litellm_provider": "openrouter",
467
+ "mode": "chat"
468
+ },
469
+ "openrouter/x-ai/grok-3-mini-fast-beta": {
470
+ "max_tokens": 131072,
471
+ "max_input_tokens": 131072,
472
+ "max_output_tokens": 131072,
473
+ "input_cost_per_token": 0.0000006,
474
+ "output_cost_per_token": 0.000004,
475
+ "litellm_provider": "openrouter",
476
+ "mode": "chat"
477
+ },
478
+ "openrouter/google/gemini-2.0-flash-exp:free": {
479
+ "max_tokens": 8192,
480
+ "max_input_tokens": 1048576,
481
+ "max_output_tokens": 8192,
482
+ "max_images_per_prompt": 3000,
483
+ "max_videos_per_prompt": 10,
484
+ "max_video_length": 1,
485
+ "max_audio_length_hours": 8.4,
486
+ "max_audio_per_prompt": 1,
487
+ "max_pdf_size_mb": 30,
488
+ "litellm_provider": "openrouter",
489
+ "mode": "chat",
490
+ "supports_system_messages": true,
491
+ "supports_function_calling": true,
492
+ "supports_vision": true,
493
+ "supports_response_schema": true,
494
+ "supports_audio_output": true,
495
+ "supports_tool_choice": true
496
+ },
497
+ "gemini-2.5-pro-preview-05-06": {
498
+ "max_tokens": 65536,
499
+ "max_input_tokens": 1048576,
500
+ "max_output_tokens": 65536,
501
+ "max_images_per_prompt": 3000,
502
+ "max_videos_per_prompt": 10,
503
+ "max_video_length": 1,
504
+ "max_audio_length_hours": 8.4,
505
+ "max_audio_per_prompt": 1,
506
+ "max_pdf_size_mb": 30,
507
+ "input_cost_per_audio_token": 0.00000125,
508
+ "input_cost_per_token": 0.00000125,
509
+ "input_cost_per_token_above_200k_tokens": 0.0000025,
510
+ "output_cost_per_token": 0.00001,
511
+ "output_cost_per_token_above_200k_tokens": 0.000015,
512
+ "litellm_provider": "vertex_ai-language-models",
513
+ "mode": "chat",
514
+ "supports_reasoning": true,
515
+ "supports_system_messages": true,
516
+ "supports_function_calling": true,
517
+ "supports_vision": true,
518
+ "supports_response_schema": true,
519
+ "supports_audio_output": false,
520
+ "supports_tool_choice": true,
521
+ "supported_endpoints": ["/v1/chat/completions", "/v1/completions", "/v1/batch"],
522
+ "supported_modalities": ["text", "image", "audio", "video"],
523
+ "supported_output_modalities": ["text"],
524
+ "source": "https://ai.google.dev/gemini-api/docs/models#gemini-2.5-flash-preview"
525
+ },
526
+ "gemini-2.5-pro-preview-06-05": {
527
+ "max_tokens": 65536,
528
+ "max_input_tokens": 1048576,
529
+ "max_output_tokens": 65536,
530
+ "max_images_per_prompt": 3000,
531
+ "max_videos_per_prompt": 10,
532
+ "max_video_length": 1,
533
+ "max_audio_length_hours": 8.4,
534
+ "max_audio_per_prompt": 1,
535
+ "max_pdf_size_mb": 30,
536
+ "input_cost_per_audio_token": 0.00000125,
537
+ "input_cost_per_token": 0.00000125,
538
+ "input_cost_per_token_above_200k_tokens": 0.0000025,
539
+ "output_cost_per_token": 0.00001,
540
+ "output_cost_per_token_above_200k_tokens": 0.000015,
541
+ "litellm_provider": "vertex_ai-language-models",
542
+ "mode": "chat",
543
+ "supports_reasoning": true,
544
+ "supports_system_messages": true,
545
+ "supports_function_calling": true,
546
+ "supports_vision": true,
547
+ "supports_response_schema": true,
548
+ "supports_audio_output": false,
549
+ "supports_tool_choice": true,
550
+ "supported_endpoints": ["/v1/chat/completions", "/v1/completions", "/v1/batch"],
551
+ "supported_modalities": ["text", "image", "audio", "video"],
552
+ "supported_output_modalities": ["text"],
553
+ "source": "https://ai.google.dev/gemini-api/docs/models#gemini-2.5-flash-preview"
554
+ },
555
+ "gemini/gemini-2.5-pro-preview-05-06": {
556
+ "max_tokens": 65536,
557
+ "max_input_tokens": 1048576,
558
+ "max_output_tokens": 65536,
559
+ "max_images_per_prompt": 3000,
560
+ "max_videos_per_prompt": 10,
561
+ "max_video_length": 1,
562
+ "max_audio_length_hours": 8.4,
563
+ "max_audio_per_prompt": 1,
564
+ "max_pdf_size_mb": 30,
565
+ "input_cost_per_audio_token": 0.0000007,
566
+ "input_cost_per_token": 0.00000125,
567
+ "input_cost_per_token_above_200k_tokens": 0.0000025,
568
+ "output_cost_per_token": 0.00001,
569
+ "output_cost_per_token_above_200k_tokens": 0.000015,
570
+ "litellm_provider": "gemini",
571
+ "mode": "chat",
572
+ "rpm": 10000,
573
+ "tpm": 10000000,
574
+ "supports_system_messages": true,
575
+ "supports_function_calling": true,
576
+ "supports_vision": true,
577
+ "supports_response_schema": true,
578
+ "supports_audio_output": false,
579
+ "supports_tool_choice": true,
580
+ "supported_modalities": ["text", "image", "audio", "video"],
581
+ "supported_output_modalities": ["text"],
582
+ "source": "https://ai.google.dev/gemini-api/docs/pricing#gemini-2.5-pro-preview"
583
+ },
584
+ "gemini/gemini-2.5-pro-preview-06-05": {
585
+ "max_tokens": 65536,
586
+ "max_input_tokens": 1048576,
587
+ "max_output_tokens": 65536,
588
+ "max_images_per_prompt": 3000,
589
+ "max_videos_per_prompt": 10,
590
+ "max_video_length": 1,
591
+ "max_audio_length_hours": 8.4,
592
+ "max_audio_per_prompt": 1,
593
+ "max_pdf_size_mb": 30,
594
+ "input_cost_per_audio_token": 0.0000007,
595
+ "input_cost_per_token": 0.00000125,
596
+ "input_cost_per_token_above_200k_tokens": 0.0000025,
597
+ "output_cost_per_token": 0.00001,
598
+ "output_cost_per_token_above_200k_tokens": 0.000015,
599
+ "litellm_provider": "gemini",
600
+ "mode": "chat",
601
+ "rpm": 10000,
602
+ "tpm": 10000000,
603
+ "supports_system_messages": true,
604
+ "supports_function_calling": true,
605
+ "supports_vision": true,
606
+ "supports_response_schema": true,
607
+ "supports_audio_output": false,
608
+ "supports_tool_choice": true,
609
+ "supported_modalities": ["text", "image", "audio", "video"],
610
+ "supported_output_modalities": ["text"],
611
+ "source": "https://ai.google.dev/gemini-api/docs/pricing#gemini-2.5-pro-preview"
612
+ },
613
+ "gemini/gemini-2.5-pro": {
614
+ "max_tokens": 65536,
615
+ "max_input_tokens": 1048576,
616
+ "max_output_tokens": 65536,
617
+ "max_images_per_prompt": 3000,
618
+ "max_videos_per_prompt": 10,
619
+ "max_video_length": 1,
620
+ "max_audio_length_hours": 8.4,
621
+ "max_audio_per_prompt": 1,
622
+ "max_pdf_size_mb": 20,
623
+ "input_cost_per_token": 0.00000125,
624
+ "input_cost_per_token_above_200k_tokens": 0.0000025,
625
+ "output_cost_per_token": 0.00001,
626
+ "output_cost_per_token_above_200k_tokens": 0.000015,
627
+ "litellm_provider": "gemini",
628
+ "mode": "chat",
629
+ "rpm": 2000,
630
+ "tpm": 8000000,
631
+ "supports_system_messages": true,
632
+ "supports_function_calling": true,
633
+ "supports_vision": true,
634
+ "supports_response_schema": true,
635
+ "supports_audio_output": false,
636
+ "supports_tool_choice": true,
637
+ "supported_modalities": ["text", "image", "audio", "video"],
638
+ "supported_output_modalities": ["text"],
639
+ "source": "https://ai.google.dev/gemini-api/docs/pricing#gemini-2.5-pro"
640
+ },
641
+ "gemini/gemini-2.5-flash": {
642
+ "max_tokens": 65536,
643
+ "max_input_tokens": 1048576,
644
+ "max_output_tokens": 65536,
645
+ "max_images_per_prompt": 3000,
646
+ "max_videos_per_prompt": 10,
647
+ "max_video_length": 1,
648
+ "max_audio_length_hours": 8.4,
649
+ "max_audio_per_prompt": 1,
650
+ "max_pdf_size_mb": 20,
651
+ "input_cost_per_token": 0.00000035,
652
+ "input_cost_per_audio_token": 0.000001,
653
+ "output_cost_per_token": 0.0000025,
654
+ "litellm_provider": "gemini",
655
+ "mode": "chat",
656
+ "rpm": 10000,
657
+ "tpm": 8000000,
658
+ "supports_system_messages": true,
659
+ "supports_function_calling": true,
660
+ "supports_vision": true,
661
+ "supports_response_schema": true,
662
+ "supports_audio_output": false,
663
+ "supports_tool_choice": true,
664
+ "supported_modalities": ["text", "image", "audio", "video"],
665
+ "supported_output_modalities": ["text"],
666
+ "source": "https://ai.google.dev/gemini-api/docs/pricing#gemini-2.5-flash"
667
+ },
668
+ "gemini/gemini-2.5-flash-lite-preview-06-17": {
669
+ "max_tokens": 64000,
670
+ "max_input_tokens": 1000000,
671
+ "max_output_tokens": 64000,
672
+ "max_images_per_prompt": 3000,
673
+ "max_videos_per_prompt": 10,
674
+ "max_video_length": 1,
675
+ "max_audio_length_hours": 8.4,
676
+ "max_audio_per_prompt": 1,
677
+ "max_pdf_size_mb": 20,
678
+ "input_cost_per_token": 0.00000001,
679
+ "input_cost_per_audio_token": 0.0000005,
680
+ "output_cost_per_token": 0.0000004,
681
+ "litellm_provider": "gemini",
682
+ "mode": "chat",
683
+ "rpm": 30000,
684
+ "tpm": 30000000,
685
+ "supports_system_messages": true,
686
+ "supports_function_calling": true,
687
+ "supports_vision": true,
688
+ "supports_response_schema": true,
689
+ "supports_audio_output": false,
690
+ "supports_tool_choice": true,
691
+ "supported_modalities": ["text", "image", "audio", "video"],
692
+ "supported_output_modalities": ["text"],
693
+ "source": "https://ai.google.dev/gemini-api/docs/pricing#gemini-2.5-flash-lite"
694
+ },
695
+ "together_ai/Qwen/Qwen3-235B-A22B-fp8-tput": {
696
+ "input_cost_per_token": 0.0000002,
697
+ "output_cost_per_token": 0.0000006,
698
+ }
699
+ }