Repository navigation
Expand file tree
/
Copy pathio-package.json
More file actions
338 lines (338 loc) · 25.2 KB
/
Copy pathio-package.json
File metadata and controls
338 lines (338 loc) · 25.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
{
"common": {
"name": "ai-usage",
"version": "0.16.0",
"news": {
"0.16.0": {
"en": "ChatGPT model limits and OpenRouter daily costs appear, OpenRouter limits and Claude euro costs count correctly, and alarms no longer stick when a key is removed.",
"de": "ChatGPT-Modell-Limits und OpenRouter-Tageskosten erscheinen, OpenRouter-Limits und Claude-Euro-Kosten zählen richtig, und Alarme bleiben nicht mehr stehen, wenn ein Schlüssel fehlt.",
"ru": "Появились лимиты моделей ChatGPT и дневные расходы OpenRouter, лимиты OpenRouter и расходы Claude в евро считаются верно, а тревоги не зависают при удалении ключа.",
"pt": "Aparecem os limites de modelos do ChatGPT e os custos diários do OpenRouter, os limites do OpenRouter e os custos do Claude em euros contam certo e os alarmes já não ficam presos.",
"nl": "ChatGPT-modellimieten en dagkosten van OpenRouter verschijnen, OpenRouter-limieten en Claude-kosten in euro tellen juist, en alarmen blijven niet meer hangen zonder sleutel.",
"fr": "Les limites par modèle de ChatGPT et les coûts du jour d'OpenRouter apparaissent, les limites OpenRouter et les coûts Claude en euros sont justes, les alertes ne restent plus bloquées.",
"it": "Compaiono i limiti per modello di ChatGPT e i costi giornalieri di OpenRouter, limiti OpenRouter e costi Claude in euro sono corretti e gli allarmi non restano più attivi.",
"es": "Aparecen los límites por modelo de ChatGPT y los costes diarios de OpenRouter, los límites de OpenRouter y los costes de Claude en euros cuentan bien y las alarmas ya no se quedan.",
"pl": "Pojawiają się limity modeli ChatGPT i dzienne koszty OpenRouter, limity OpenRouter i koszty Claude w euro liczą się poprawnie, a alarmy nie zostają po usunięciu klucza.",
"uk": "З'явилися ліміти моделей ChatGPT і денні витрати OpenRouter, ліміти OpenRouter і витрати Claude в євро рахуються правильно, а тривоги не зависають після видалення ключа.",
"zh-cn": "现在显示 ChatGPT 单模型限额和 OpenRouter 每日费用,OpenRouter 限额与 Claude 欧元费用计算正确,删除密钥后告警不再一直保留。"
},
"0.15.0": {
"en": "Model channels survive the turn of a month, a shutdown during startup no longer deletes objects afterwards, and error texts name the actual failure.",
"de": "Modell-Kanäle überstehen den Monatswechsel, ein Abschalten während des Starts löscht danach keine Objekte mehr, und Fehlertexte nennen den echten Fehler.",
"ru": "Каналы моделей переживают смену месяца, остановка во время запуска больше не удаляет объекты после неё, а тексты ошибок называют настоящую причину.",
"pt": "Os canais de modelo sobrevivem à mudança de mês, uma paragem durante o arranque já não apaga objetos depois disso, e os textos de erro nomeiam a falha real.",
"nl": "Modelkanalen overleven de maandwisseling, een afsluiting tijdens het opstarten verwijdert daarna geen objecten meer, en foutteksten noemen de echte fout.",
"fr": "Les canaux de modèle survivent au changement de mois, un arrêt pendant le démarrage ne supprime plus d'objets ensuite, et les textes d'erreur nomment la panne réelle.",
"it": "I canali dei modelli sopravvivono al cambio di mese, un arresto durante l'avvio non elimina più oggetti in seguito e i testi di errore indicano il guasto reale.",
"es": "Los canales de modelo sobreviven al cambio de mes, una parada durante el arranque ya no borra objetos después, y los textos de error nombran el fallo real.",
"pl": "Kanały modeli przetrwają zmianę miesiąca, zatrzymanie podczas uruchamiania nie usuwa już potem obiektów, a teksty błędów nazywają rzeczywistą awarię.",
"uk": "Канали моделей переживають зміну місяця, зупинка під час запуску більше не видаляє об'єкти після неї, а тексти помилок називають справжню причину.",
"zh-cn": "模型通道可跨月保留,启动期间的停止不再在之后删除对象,错误文本会说明真正的故障。"
},
"0.14.0": {
"en": "A failed write of the token file no longer costs the sign-in, signing out clears that account's alarms, and window reset times are written only when they change.",
"de": "Ein fehlgeschlagener Schreibvorgang der Token-Datei kostet nicht mehr die Anmeldung, ein Abmelden löscht die Alarme des Kontos, und Fenster-Enden werden nur bei Änderung geschrieben.",
"ru": "Неудачная запись файла токенов больше не стоит входа, выход из аккаунта сбрасывает его оповещения, а время сброса окон записывается только при изменении.",
"pt": "Uma escrita falhada do ficheiro de tokens já não custa a sessão, terminar sessão limpa os alarmes dessa conta, e os tempos de reposição só são escritos quando mudam.",
"nl": "Een mislukte schrijfactie van het tokenbestand kost de aanmelding niet meer, afmelden wist de alarmen van dat account, en resettijden worden alleen bij wijziging geschreven.",
"fr": "Une écriture échouée du fichier de jetons ne coûte plus la connexion, se déconnecter efface les alarmes du compte, et les heures de réinitialisation ne sont écrites qu'en cas de changement.",
"it": "Una scrittura fallita del file dei token non costa più l'accesso, disconnettersi azzera gli allarmi dell'account e gli orari di reset vengono scritti solo se cambiano.",
"es": "Un error al escribir el archivo de tokens ya no cuesta el inicio de sesión, cerrar sesión borra las alarmas de esa cuenta y los tiempos de reinicio solo se escriben al cambiar.",
"pl": "Nieudany zapis pliku tokenów nie kosztuje już logowania, wylogowanie kasuje alarmy tego konta, a czasy resetu są zapisywane tylko przy zmianie.",
"uk": "Невдалий запис файлу токенів більше не коштує входу, вихід з облікового запису очищає його сповіщення, а час скидання записується лише при зміні.",
"zh-cn": "令牌文件写入失败不再导致登录丢失,退出登录会清除该账户的告警,窗口重置时间仅在变化时写入。"
},
"0.13.0": {
"en": "Costs of an Anthropic organisation account were a hundred times too high, an account whose values cannot be stored no longer claims to deliver, and an empty answer no longer deletes datapoints.",
"de": "Anthropic-Organisationskosten waren hundertfach zu hoch, ein Konto ohne speicherbare Werte meldet sich nicht mehr als liefernd, und eine leere Antwort löscht keine Datenpunkte mehr.",
"ru": "Расходы организации Anthropic были завышены в сто раз, аккаунт без сохраняемых значений больше не считается работающим, а пустой ответ больше не удаляет точки данных.",
"pt": "Os custos de uma organização Anthropic eram cem vezes maiores, uma conta sem valores guardáveis deixa de se declarar operacional, e uma resposta vazia já não apaga pontos de dados.",
"nl": "Kosten van een Anthropic-organisatie waren honderd keer te hoog, een account zonder opslagbare waarden meldt zich niet meer als leverend, en een leeg antwoord verwijdert geen datapunten meer.",
"fr": "Les coûts d'une organisation Anthropic étaient cent fois trop élevés, un compte sans valeurs enregistrables ne se déclare plus fonctionnel, et une réponse vide ne supprime plus de points de donnée.",
"it": "I costi di un'organizzazione Anthropic erano cento volte troppo alti, un account senza valori salvabili non si dichiara più operativo, e una risposta vuota non cancella più datapoint.",
"es": "Los costes de una organización de Anthropic eran cien veces mayores, una cuenta sin valores guardables ya no se declara operativa, y una respuesta vacía ya no borra puntos de datos.",
"pl": "Koszty organizacji Anthropic były stukrotnie zawyżone, konto bez zapisywalnych wartości nie zgłasza się już jako działające, a pusta odpowiedź nie usuwa już punktów danych.",
"uk": "Витрати організації Anthropic були завищені в сто разів, обліковий запис без збережуваних значень більше не вважається робочим, а порожня відповідь більше не видаляє точки даних.",
"zh-cn": "Anthropic 组织账户费用曾高出一百倍;数值无法写入的账户不再自称正常供数;空响应也不再删除数据点。"
},
"0.12.1": {
"en": "The last-update stamp no longer moves forward while the provider is only throttling, and twenty-five more datapoints explain themselves in the object tree.",
"de": "Der Stempel der letzten Aktualisierung rückt nicht mehr vor, solange der Anbieter nur drosselt, und fünfundzwanzig weitere Datenpunkte erklären sich im Objektbaum selbst.",
"ru": "Метка последнего обновления больше не сдвигается, пока провайдер лишь ограничивает запросы, а ещё двадцать пять точек данных объясняют себя в дереве объектов.",
"pt": "A marca da última atualização deixa de avançar enquanto o fornecedor apenas limita os pedidos, e mais vinte e cinco pontos de dados explicam-se na árvore de objetos.",
"nl": "Het stempel van de laatste update loopt niet meer door zolang de aanbieder alleen beperkt, en vijfentwintig extra datapunten leggen zichzelf uit in de objectboom.",
"fr": "L'horodatage de la dernière mise à jour n'avance plus tant que le fournisseur ne fait que limiter, et vingt-cinq points de donnée de plus s'expliquent dans l'arbre d'objets.",
"it": "Il timestamp dell'ultimo aggiornamento non avanza più finché il provider si limita a rallentare, e altri venticinque datapoint si spiegano da soli nell'albero degli oggetti.",
"es": "La marca de la última actualización ya no avanza mientras el proveedor solo limita las peticiones, y veinticinco puntos de datos más se explican en el árbol de objetos.",
"pl": "Znacznik ostatniej aktualizacji nie przesuwa się już, gdy dostawca jedynie ogranicza zapytania, a kolejne dwadzieścia pięć punktów danych objaśnia się w drzewie obiektów.",
"uk": "Позначка останнього оновлення більше не зсувається, поки провайдер лише обмежує запити, а ще двадцять п'ять точок даних пояснюють себе в дереві об'єктів.",
"zh-cn": "在供应商仅限流期间,最近一次更新的时间戳不再向前推进;另有二十五个数据点会在对象树中自行说明其含义。"
},
"0.12.0": {
"en": "An account that is not signed in yet no longer reports a rejected sign-in, every limit window shows whether it is the one in force, and reset times stop flooding a recording.",
"de": "Ein noch nicht angemeldetes Konto meldet keine abgelehnte Anmeldung mehr, jedes Limit-Fenster zeigt, ob es gerade das gültige ist, und Reset-Zeiten fluten keine Aufzeichnung mehr.",
"ru": "Ещё не подключённый аккаунт больше не сообщает об отклонённом входе, каждое окно лимита показывает, действует ли оно сейчас, а время сброса больше не засоряет запись.",
"pt": "Uma conta ainda sem sessão iniciada deixa de indicar um início de sessão recusado, cada janela de limite mostra se está em vigor e as horas de reposição já não inundam um registo.",
"nl": "Een account zonder aanmelding meldt geen geweigerde aanmelding meer, elk limietvenster laat zien of het de geldende is, en resettijden overspoelen een registratie niet langer.",
"fr": "Un compte pas encore connecté ne signale plus une connexion refusée, chaque fenêtre de limite indique si elle est en vigueur, et les heures de réinitialisation n'inondent plus un enregistrement.",
"it": "Un account non ancora collegato non segnala più un accesso rifiutato, ogni finestra di limite mostra se è quella in vigore e gli orari di reset non inondano più una registrazione.",
"es": "Una cuenta aún sin sesión ya no informa de un inicio de sesión rechazado, cada ventana de límite muestra si es la vigente y las horas de reinicio ya no inundan un registro.",
"pl": "Konto bez logowania nie zgłasza już odrzuconego logowania, każde okno limitu pokazuje, czy właśnie obowiązuje, a czasy resetu nie zalewają już zapisu historii.",
"uk": "Акаунт без входу більше не повідомляє про відхилений вхід, кожне вікно ліміту показує, чи воно чинне, а час скидання більше не засмічує запис історії.",
"zh-cn": "尚未登录的账户不再报告登录被拒绝,每个限额窗口都会显示它是否为当前生效的限额,重置时间也不再刷屏历史记录。"
},
"0.11.0": {
"en": "Signing in from the instance settings works again — a leftover setting had closed the adapter's message channel. Object names now come in eleven languages.",
"de": "Die Anmeldung aus den Instanz-Einstellungen funktioniert wieder — eine Alt-Einstellung hatte den Nachrichtenkanal geschlossen. Objektnamen gibt es jetzt in elf Sprachen.",
"ru": "Вход из настроек экземпляра снова работает — старая настройка закрывала канал сообщений адаптера. Имена объектов теперь доступны на одиннадцати языках.",
"pt": "O início de sessão a partir das definições voltou a funcionar — uma definição antiga tinha fechado o canal de mensagens. Os nomes dos objetos existem agora em onze idiomas.",
"nl": "Aanmelden vanuit de instantie-instellingen werkt weer — een oude instelling had het berichtenkanaal gesloten. Objectnamen zijn nu in elf talen beschikbaar.",
"fr": "La connexion depuis les paramètres de l'instance fonctionne à nouveau — un ancien réglage avait fermé le canal de messages. Les noms d'objets existent maintenant en onze langues.",
"it": "L'accesso dalle impostazioni dell'istanza funziona di nuovo — una vecchia impostazione aveva chiuso il canale messaggi. I nomi degli oggetti sono ora in undici lingue.",
"es": "El inicio de sesión desde los ajustes de la instancia vuelve a funcionar — un ajuste antiguo había cerrado el canal de mensajes. Los nombres de objetos están ahora en once idiomas.",
"pl": "Logowanie z ustawień instancji znowu działa — stare ustawienie zamknęło kanał wiadomości adaptera. Nazwy obiektów są teraz dostępne w jedenastu językach.",
"uk": "Вхід із налаштувань екземпляра знову працює — стара настройка закрила канал повідомлень адаптера. Назви обʼєктів тепер доступні одинадцятьма мовами.",
"zh-cn": "实例设置中的登录再次可用——旧设置曾关闭了适配器的消息通道。对象名称现在提供十一种语言。"
}
},
"plugins": {
"sentry": {
"dsn": "https://66f27ceff38c1ce1e6cdcc3095ba06d3@o4511524771266560.ingest.de.sentry.io/4511524773560400"
}
},
"titleLang": {
"en": "AI Usage",
"de": "AI Usage",
"ru": "AI Usage",
"pt": "AI Usage",
"nl": "AI Usage",
"fr": "AI Usage",
"it": "AI Usage",
"es": "AI Usage",
"pl": "AI Usage",
"uk": "AI Usage",
"zh-cn": "AI Usage"
},
"desc": {
"en": "Monitors usage, limits and costs of AI accounts (Claude, ChatGPT, Gemini, OpenAI, Anthropic, OpenRouter, DeepSeek)",
"de": "Überwacht Verbrauch, Limits und Kosten von KI-Konten (Claude, ChatGPT, Gemini, OpenAI, Anthropic, OpenRouter, DeepSeek)",
"ru": "Отслеживает использование, лимиты и расходы аккаунтов ИИ (Claude, ChatGPT, Gemini, OpenAI, Anthropic, OpenRouter, DeepSeek)",
"pt": "Monitora uso, limites e custos de contas de IA (Claude, ChatGPT, Gemini, OpenAI, Anthropic, OpenRouter, DeepSeek)",
"nl": "Bewaakt verbruik, limieten en kosten van AI-accounts (Claude, ChatGPT, Gemini, OpenAI, Anthropic, OpenRouter, DeepSeek)",
"fr": "Surveille l'utilisation, les limites et les coûts des comptes IA (Claude, ChatGPT, Gemini, OpenAI, Anthropic, OpenRouter, DeepSeek)",
"it": "Monitora utilizzo, limiti e costi degli account IA (Claude, ChatGPT, Gemini, OpenAI, Anthropic, OpenRouter, DeepSeek)",
"es": "Supervisa el uso, los límites y los costes de las cuentas de IA (Claude, ChatGPT, Gemini, OpenAI, Anthropic, OpenRouter, DeepSeek)",
"pl": "Monitoruje zużycie, limity i koszty kont AI (Claude, ChatGPT, Gemini, OpenAI, Anthropic, OpenRouter, DeepSeek)",
"uk": "Відстежує використання, ліміти та витрати акаунтів ШІ (Claude, ChatGPT, Gemini, OpenAI, Anthropic, OpenRouter, DeepSeek)",
"zh-cn": "监控 AI 账户的使用量、限额和费用(Claude、ChatGPT、Gemini、OpenAI、Anthropic、OpenRouter、DeepSeek)"
},
"keywords": [
"ai",
"usage",
"limits",
"costs",
"claude",
"chatgpt",
"gemini",
"openai",
"anthropic",
"openrouter",
"deepseek",
"monitoring"
],
"authors": [
"krobi <krobi@power-dreams.com>"
],
"licenseInformation": {
"license": "MIT",
"type": "free"
},
"platform": "Javascript/Node.js",
"icon": "ai-usage.svg",
"extIcon": "https://raw.githubusercontent.com/krobipd/ioBroker.ai-usage/main/admin/ai-usage.svg",
"readme": "https://github.com/krobipd/ioBroker.ai-usage/blob/main/README.md",
"enabled": true,
"tier": 3,
"loglevel": "info",
"mode": "daemon",
"type": "infrastructure",
"compact": true,
"connectionType": "cloud",
"dataSource": "poll",
"adminUI": {
"config": "json"
},
"docs": {
"en": [
"docs/en/README.md"
],
"de": [
"docs/de/README.md"
]
},
"messagebox": true,
"dependencies": [
{
"js-controller": ">=7.2.2"
}
],
"globalDependencies": [
{
"admin": ">=8.0.11"
}
],
"nogit": true
},
"encryptedNative": [],
"protectedNative": [],
"native": {
"accounts": [],
"pollInterval": 300,
"notifications": true
},
"instanceObjects": [
{
"_id": "info",
"type": "channel",
"common": {
"name": {
"en": "Adapter Information",
"de": "Adapter-Informationen",
"ru": "Информация об адаптере",
"pt": "Informações do adaptador",
"nl": "Adapterinformatie",
"fr": "Informations sur l'adaptateur",
"it": "Informazioni sull'adattatore",
"es": "Información del adaptador",
"pl": "Informacje o adapterze",
"uk": "Інформація про адаптер",
"zh-cn": "适配器信息"
}
},
"native": {}
},
{
"_id": "info.connection",
"type": "state",
"common": {
"name": {
"en": "At least one account reachable",
"de": "Mindestens ein Konto erreichbar",
"ru": "Хотя бы один аккаунт доступен",
"pt": "Pelo menos uma conta acessível",
"nl": "Ten minste één account bereikbaar",
"fr": "Au moins un compte joignable",
"it": "Almeno un account raggiungibile",
"es": "Al menos una cuenta accesible",
"pl": "Co najmniej jedno konto osiągalne",
"uk": "Щонайменше один акаунт доступний",
"zh-cn": "至少一个账户可访问"
},
"type": "boolean",
"role": "indicator.connected",
"read": true,
"write": false,
"def": false,
"desc": {
"en": "True as soon as at least one AI account is delivering data.",
"de": "Wahr, sobald mindestens ein KI-Konto Daten liefert.",
"ru": "Истина, как только хотя бы один аккаунт ИИ передаёт данные.",
"pt": "Verdadeiro assim que pelo menos uma conta de IA fornece dados.",
"nl": "Waar zodra ten minste één AI-account gegevens levert.",
"fr": "Vrai dès qu'au moins un compte IA fournit des données.",
"it": "Vero non appena almeno un account IA fornisce dati.",
"es": "Verdadero en cuanto al menos una cuenta de IA entrega datos.",
"pl": "Prawda, gdy co najmniej jedno konto AI dostarcza dane.",
"uk": "Істина, щойно принаймні один акаунт ШІ надає дані.",
"zh-cn": "只要至少一个 AI 账户正在提供数据即为真。"
}
},
"native": {}
},
{
"_id": "total",
"type": "folder",
"common": {
"name": {
"en": "Totals across all accounts",
"de": "Gesamtwerte über alle Konten",
"ru": "Итоги по всем аккаунтам",
"pt": "Totais de todas as contas",
"nl": "Totalen over alle accounts",
"fr": "Totaux de tous les comptes",
"it": "Totali di tutti gli account",
"es": "Totales de todas las cuentas",
"pl": "Sumy dla wszystkich kont",
"uk": "Підсумки за всіма акаунтами",
"zh-cn": "所有账户的总计"
}
},
"native": {}
}
],
"notifications": [
{
"scope": "ai-usage",
"name": {
"en": "AI Usage",
"de": "AI Usage",
"ru": "AI Usage",
"pt": "AI Usage",
"nl": "AI Usage",
"fr": "AI Usage",
"it": "AI Usage",
"es": "AI Usage",
"pl": "AI Usage",
"uk": "AI Usage",
"zh-cn": "AI Usage"
},
"description": {
"en": "AI Usage adapter",
"de": "AI-Usage-Adapter",
"ru": "Адаптер AI Usage",
"pt": "Adaptador AI Usage",
"nl": "AI Usage-adapter",
"fr": "Adaptateur AI Usage",
"it": "Adattatore AI Usage",
"es": "Adaptador AI Usage",
"pl": "Adapter AI Usage",
"uk": "Адаптер AI Usage",
"zh-cn": "AI Usage 适配器"
},
"categories": [
{
"category": "userActionRequired",
"name": {
"en": "Action required",
"de": "Aktion erforderlich",
"ru": "Требуется действие",
"pt": "Ação necessária",
"nl": "Actie vereist",
"fr": "Action requise",
"it": "Azione richiesta",
"es": "Acción requerida",
"pl": "Wymagane działanie",
"uk": "Потрібна дія",
"zh-cn": "需要操作"
},
"description": {
"en": "An AI account crossed its warn threshold or its credentials stopped working.",
"de": "Ein KI-Konto hat seine Warnschwelle überschritten oder die Zugangsdaten funktionieren nicht mehr.",
"ru": "Аккаунт ИИ превысил порог предупреждения или его учётные данные перестали работать.",
"pt": "Uma conta de IA ultrapassou o limite de aviso ou as credenciais deixaram de funcionar.",
"nl": "Een AI-account heeft de waarschuwingsdrempel overschreden of de inloggegevens werken niet meer.",
"fr": "Un compte IA a dépassé son seuil d'alerte ou ses identifiants ne fonctionnent plus.",
"it": "Un account IA ha superato la soglia di avviso o le credenziali non funzionano più.",
"es": "Una cuenta de IA superó su umbral de aviso o sus credenciales dejaron de funcionar.",
"pl": "Konto AI przekroczyło próg ostrzegawczy lub jego dane dostępowe przestały działać.",
"uk": "Акаунт ШІ перевищив поріг попередження або його облікові дані перестали працювати.",
"zh-cn": "某个 AI 账户超过了警告阈值,或其凭据已失效。"
},
"severity": "notify",
"regex": [],
"limit": 10
}
]
}
]
}