Cohee
bc1d745209
Rewrite getstatus_openai using fetch
2023-08-31 22:46:13 +03:00
rbmj
deeedad19e
Make jsdoc/type-checker happy Pt 3 ( #1070 )
...
* png-chunks-extract.extract has no create_date
* `new Buffer.from` is not a thing
* handle failed character read
* stop lying about your return value
* what we get for mixing booleans and strings
* localeCompare makes more sense and fixes types
* uhh wtf, there is no callback in readFileSync
* no subtracting Dates, only Numbers (timestamps)
* handle if no file in request
* changing types makes typechecker mad
* handle false or undefined character read
* default param does not exist
* can't have same property assigned twice
* json5.parse expects a string, not buffer
* handle invalid thumbnail type
* handle invalid thumbnail type case
* ignore bad axios typing
* fix ambiguous typing
* types is incorrect? no .destroy(). use type guard
* include intended error handling of refactor
* Make API urls const
---------
Co-authored-by: Cohee <18619528+Cohee1207@users.noreply.github.com>
2023-08-31 19:44:58 +03:00
Cohee
c19eb3146f
Force set create date string
2023-08-31 19:30:27 +03:00
kingbri
4e553cf6ab
Server: Allow appending of additional headers for local backends
...
This is a useful feature for those who want to utilize APIs with
proxy middleware for adding extra features or security. For cloud
API safety and abiding by rate limits, this feature only applies to
local backends such as ooba or kobold.
Signed-off-by: kingbri <bdashore3@proton.me>
2023-08-31 00:15:07 -04:00
Cohee
218cfb43d8
Fix gallery files caching, filter by mime type. Use fetch instead of Jquery Ajax
2023-08-31 00:55:17 +03:00
Cohee
194278d171
Merge branch 'staging' into feature/exorcism
2023-08-31 00:42:34 +03:00
Cohee
7cb896ddd7
Fix first run initialization
2023-08-31 00:40:03 +03:00
Cohee
7f99ae5705
Revert unnecessary string cast
2023-08-31 00:21:29 +03:00
RealBeepMcJeep
326c7d8841
input not an arr, it is an arr or string or other
2023-08-30 13:28:08 -07:00
RealBeepMcJeep
9dfe42a7c3
convert to async and fix types
2023-08-30 13:28:08 -07:00
RealBeepMcJeep
2e3ddd16d5
fix ambiguous args for typechecker
2023-08-30 13:28:08 -07:00
RealBeepMcJeep
77c9744878
make more readable & make types happy
2023-08-30 13:28:08 -07:00
RealBeepMcJeep
49aff85472
handle bad read of raw data
2023-08-30 13:28:08 -07:00
RealBeepMcJeep
c1b76b5f48
resolve can only return one thing at a time
2023-08-30 13:28:08 -07:00
RealBeepMcJeep
f7576750fc
handle undefined X-Streaming-URL
2023-08-30 13:28:08 -07:00
RealBeepMcJeep
691e9ee754
this default param does not exist
2023-08-30 13:28:08 -07:00
RealBeepMcJeep
ab9594fe62
handle missing user agent case
2023-08-30 13:28:08 -07:00
RealBeepMcJeep
8211e67ed7
generateToken requires req to set cookie
2023-08-30 13:28:08 -07:00
RealBeepMcJeep
aa901883d2
node v18 type-checker hates this, ignore it
2023-08-30 13:28:08 -07:00
RealBeepMcJeep
cd8027aeea
fixes 7 errs. see yargs typescript docs. test plz
2023-08-30 13:28:08 -07:00
RealBeepMcJeep
3feeaaa09f
listen requires a number, `URL` port is string wtf
2023-08-30 13:28:08 -07:00
RealBeepMcJeep
113ea1d0ec
JSON.parse wants a string
2023-08-30 13:28:08 -07:00
city-unit
86c0974a6e
More image support
2023-08-30 15:33:39 -04:00
Cohee
220d19d3ec
Remove useless assignments
2023-08-30 22:09:09 +03:00
Cohee
f5e52eab05
Specify read encoding
2023-08-30 22:04:11 +03:00
Cohee
ce46e1a4ca
Replace restClient in getstatus_novelai
2023-08-30 21:58:46 +03:00
Cohee
a757532c3e
Fix local fetch import for Kobold
2023-08-30 21:46:09 +03:00
Cohee
02f7c9ab64
Merge branch 'staging' into cleanup-imports
2023-08-30 21:19:14 +03:00
Cohee
27b6fe1f76
Fix sendFile usage
2023-08-30 21:14:53 +03:00
Cohee
52dbb916c0
Specify file read encoding where possible
2023-08-30 20:57:19 +03:00
Cohee
938e244987
Change file buffer read handling
2023-08-30 20:55:00 +03:00
RealBeepMcJeep
8b38015fab
stop polluting my global namespace
2023-08-30 10:28:58 -07:00
RealBeepMcJeep
271a429a62
default param value does not exist
2023-08-30 10:28:58 -07:00
RealBeepMcJeep
f3f9efb163
check the docs, there is no such option sirs
2023-08-30 10:28:58 -07:00
RealBeepMcJeep
398544407d
type checker no trust functions as type guards
2023-08-30 10:28:58 -07:00
RealBeepMcJeep
b648d9bd87
JSON.parse wants a string
2023-08-30 10:28:58 -07:00
RealBeepMcJeep
79e6d4c297
outdated local ai_horde library, bad
2023-08-30 10:28:58 -07:00
RealBeepMcJeep
94c6b453c0
workaround: pkg does not exist on type Process
2023-08-30 10:28:58 -07:00
RealBeepMcJeep
11cef1b234
type checker wants a string
2023-08-30 10:28:58 -07:00
RealBeepMcJeep
6ca678e137
sanitize only accepts strings
2023-08-30 10:28:58 -07:00
RealBeepMcJeep
e1df933368
plz no pollute global namespace
2023-08-30 10:28:58 -07:00
RealBeepMcJeep
b91bc21d60
fixes readableStream fuckery, needs testing
2023-08-30 10:28:58 -07:00
RealBeepMcJeep
baac38f888
types demands we handle null case
2023-08-30 10:28:58 -07:00
RealBeepMcJeep
3422b3e963
inline function immediately called lolwtf
2023-08-30 10:28:58 -07:00
RealBeepMcJeep
4e78c3ec79
should be a string according to types
2023-08-30 10:28:58 -07:00
RealBeepMcJeep
2928c79446
simple-git needs to get their shit together
2023-08-30 10:28:58 -07:00
RealBeepMcJeep
20f807c5c9
async functions return promises silly
2023-08-30 10:28:58 -07:00
RealBeepMcJeep
37e20f6fc5
type-guard vs possible null
2023-08-30 10:28:58 -07:00
RealBeepMcJeep
6bd77bac7a
checker thinks this could be undefined, handle it
2023-08-30 10:28:57 -07:00
RealBeepMcJeep
c703b0b25e
'Buffer' is not assignable to param 'string'
2023-08-30 10:28:57 -07:00
RealBeepMcJeep
274b2e5009
fix ambiguous typing
2023-08-30 10:28:57 -07:00
city-unit
165d4b3b75
Merge branch 'staging' of https://github.com/city-unit/SillyTavern into feature/exorcism
2023-08-30 00:12:00 -04:00
RealBeepMcJeep
403546e514
finish moving and organizing require statements
2023-08-29 14:34:41 -07:00
RealBeepMcJeep
7bf72beed7
move AIHorde import to top
2023-08-29 14:29:02 -07:00
RealBeepMcJeep
d07779e5da
refactor ambiguous "Client" from node-rest-client
2023-08-29 14:28:13 -07:00
RealBeepMcJeep
26e008e907
move and organize more imports
2023-08-29 14:26:59 -07:00
RealBeepMcJeep
9087736835
move and organize additional imports
2023-08-29 14:23:53 -07:00
RealBeepMcJeep
c0b1ea5f4c
grouping native node imports
2023-08-29 14:20:37 -07:00
RealBeepMcJeep
fc59b20f36
cli/fs related library import grouping
2023-08-29 14:16:39 -07:00
RealBeepMcJeep
918aba3eb6
group image processing imports at top
2023-08-29 14:12:47 -07:00
RealBeepMcJeep
288378919a
move express imports to top
2023-08-29 14:10:40 -07:00
RealBeepMcJeep
8d5eb062e6
move fs and path imports to top
2023-08-29 14:06:37 -07:00
RealBeepMcJeep
2bd645e271
move child_process import to top
2023-08-29 14:05:18 -07:00
Cohee
01ff9604bd
Merge pull request #1043 from RealBeepMcJeep/patch-1
...
remove unused symbols
2023-08-29 23:37:46 +03:00
Cohee
9dc908c9aa
Merge branch 'staging' of http://github.com/cohee1207/SillyTavern into staging
2023-08-29 23:28:53 +03:00
Cohee
8d2c84c6ef
Limit max backups to settings only
2023-08-29 23:28:44 +03:00
rbmj
e820245fcf
importing process unneeded, native to node runtime
...
process is native to node runtime, no need to import
2023-08-29 10:56:24 -07:00
rbmj
3d8761f077
remove unused symbols
...
these do nothing
2023-08-29 10:00:31 -07:00
Cohee
f1b91620b6
Merge pull request #1021 from ouoertheo/ouoertheo/tts-ui-voicemap
...
TTS Voice map UI and Coqui UI improvements
2023-08-28 23:57:22 +03:00
Cohee
9ac2281a8f
Remove spammy server log
2023-08-28 23:56:26 +03:00
city-unit
39eae80f6e
Merge branch 'staging' of https://github.com/city-unit/SillyTavern into feature/exorcism
2023-08-27 12:47:05 -04:00
Cohee
9660aaa2c2
Add NovelAI hypebot plugin
2023-08-27 18:27:34 +03:00
Cohee
109ea4008b
Improve Horde request error detection
2023-08-27 13:31:14 +03:00
Cohee
8cb194da0f
Fix sending empty array as OAI stop strings
2023-08-27 13:17:20 +03:00
city-unit
3737f58072
Merge branch 'staging' of https://github.com/city-unit/SillyTavern into feature/exorcism
2023-08-26 20:56:38 -04:00
Cohee
4998c3acc8
Merge branch 'release' into staging
2023-08-26 22:07:06 +03:00
Cohee
3b7ca5e379
Add fallback option for OpenRouter
2023-08-26 21:59:56 +03:00
Cohee
b8531ee75c
#1022 Rewrite getstatus endpoint
2023-08-26 21:56:41 +03:00
Bahamut
de905875c4
LibreTranslate
2023-08-26 20:47:25 +03:00
Bahamut
6ab1435f49
LibreTranslate
2023-08-26 19:53:57 +03:00
Cohee
464644e8a5
Fix console log string
2023-08-26 16:05:42 +03:00
Cohee
4d6d82ffcc
Merge pull request #1023 from StefanDanielSchwarz/Context-Template-Preset-Manager
...
context template preset manager
2023-08-26 16:04:35 +03:00
Cohee
7e506db105
Server fix for context template manager
2023-08-26 14:38:30 +03:00
Cohee
4fd0a055e2
Notify about listen mode connections
2023-08-26 14:17:57 +03:00
Cohee
42e6da4a36
Add support of stop strings to OpenAI / Claude
2023-08-26 00:12:11 +03:00
Tony Ribeiro
74a6e79df6
Added delete asset api route, factorise asset filename sanitizer to use in both asset download/delete. Added delete function to asset UI download button.
2023-08-25 00:45:15 +02:00
Tony Ribeiro
47a35076db
Merge branch 'staging' of https://github.com/Tony-sama/SillyTavern into staging
2023-08-24 22:18:01 +02:00
Tony Ribeiro
1014d592f7
Added a refresh assets button to audio UI to detect audio asset again. Usefull after download an asset or putting a file manually.
2023-08-24 22:17:54 +02:00
Cohee
48924d3696
Improve asset downloader
2023-08-24 22:47:07 +03:00
Tony Ribeiro
3b6978010f
Merge branch 'SillyTavern:staging' into staging
2023-08-24 21:05:12 +02:00
Cohee
cd24de3c2e
Reformat code.
2023-08-24 21:59:26 +03:00
Cohee
ab52af4fb5
Add support for Koboldcpp tokenization endpoint
2023-08-24 20:19:57 +03:00
Tony Ribeiro
43e70c9df1
Merge branch 'SillyTavern:staging' into staging
2023-08-24 15:18:02 +02:00
Mike Weldon
1d1109e43b
Set generate_until_sentence for NovelAI
...
* Set generate_until_sentence true for NovelAI
* Add a Story String file for NovelAI with persona before character
which works better
* Remove hardcoded dinkus for chat_start since it is in the Story String
2023-08-23 18:04:56 -07:00
Tony Ribeiro
46964b1b99
Add temp folder into assets, file are download into this temp file and moved only when complete. Allow to handle fail download.
2023-08-24 02:34:06 +02:00
Cohee
4aa31fcba9
Add fallback option for OpenRouter
2023-08-24 03:21:17 +03:00
Tony Ribeiro
017df860e5
Sanitized character bgm request.
2023-08-24 01:42:52 +02:00
Tony Ribeiro
a5f66bda63
Added sanitization of request input for assets_download function. Changed assets download UI for button with little animation while downloading.
2023-08-24 00:17:07 +02:00
Tony Ribeiro
f23115f6b3
- Added assets folder to .gitignore
...
- disabled audio extension by default
- turned get request into post
- avoid background that are data url
- changed UI name to Dynamic Audio
- Changed Assets/Audio ui load to use $.get
- added assets json url as field in ui, with connect button require confirm from popup.
2023-08-23 18:51:41 +02:00
Tony Ribeiro
d070336e9c
Merge branch 'staging' of https://github.com/Tony-sama/SillyTavern into staging
2023-08-23 05:11:07 +02:00
Tony Ribeiro
13dac1f4d3
Assets extension, factorised using the received json type to organise the assets in the UI/folders.
2023-08-23 05:10:55 +02:00
Tony Ribeiro
8e38229ed4
Audio extension, handle custome background. Factorised bgm/ambient file listing into one assets listing function on server.js.
2023-08-23 03:47:13 +02:00
Tony Ribeiro
5009416f94
Merge branch 'SillyTavern:staging' into staging
2023-08-23 01:44:52 +02:00
Cohee
41cc86af9f
Add example extension for chat variables. Allow registering custom text processing functions for extensions
2023-08-22 17:46:37 +03:00
based
ba925f388c
added more options to the scale request
2023-08-22 21:29:18 +10:00
based
06902279a9
merge
2023-08-22 21:17:18 +10:00
Tony Ribeiro
589631c154
prototype of assets list/download extension
2023-08-22 04:51:00 +02:00
Tony Ribeiro
4cf2b73eb1
Reorganised to handle different kind of assets, starting with audio bgm/ambient.
2023-08-22 01:49:45 +02:00
Tony Ribeiro
b176a1ed12
Adapted audio extension to empty bgm/ambient folder
2023-08-22 00:46:49 +02:00
Tony Ribeiro
84e397c429
- Audio
...
- refactored dynamic bgm to handle solo and group chat
- added bgm cooldown variable, user can custom in the ui
2023-08-21 23:33:31 +02:00
Tony Ribeiro
25daa61e83
Audio module proper extension code. Dedicated Audio extension scripts. Simple UI to adjust bgm/ambient. Load bgm per character from character folder and switch audio dynamically w.r.t. expression. Ambient sound updated when background change.
2023-08-21 23:33:30 +02:00
Cohee
cf796af950
Fix 500 error on fetching an empty folder
2023-08-21 23:06:27 +03:00
city-unit
c7d9eb39f5
Remove img filter, move file loader to utils
2023-08-21 11:21:32 -04:00
city-unit
3f04a5bfa0
Merge branch 'staging' of https://github.com/city-unit/SillyTavern into feature/exorcism
2023-08-21 00:47:35 -04:00
city-unit
82adc4c780
Merge branch 'feature/exorcism' of https://github.com/city-unit/SillyTavern into feature/exorcism
2023-08-21 00:46:47 -04:00
city-unit
e31c87c471
Add a way to see images in an image folder safely.
2023-08-21 00:43:04 -04:00
Cohee
897ad28477
Apply preset manager for instruct presets
2023-08-21 00:56:53 +03:00
Cohee
a27bef8b12
Merge branch 'staging' into qolfeatures
2023-08-20 18:47:43 +03:00
Cohee
efa0f12349
Fix prompt manager issues
2023-08-20 16:25:16 +03:00
based
7ecc0295dc
scale cookie method
2023-08-20 20:55:37 +10:00
Cohee
6fb278266b
Merge pull request #977 from city-unit/feature/exorcism
...
Feature/exorcism
2023-08-20 12:37:56 +03:00
Cohee
94754af013
Reformat code
2023-08-20 12:37:38 +03:00
city-unit
e8c996ff61
Move to char+timestamp for img naming.
2023-08-20 01:41:58 -04:00
50h100a
83eb3449f3
localhost -> 127.0.0.1.
...
Thank you websockets, very cool.
2023-08-20 00:30:34 -04:00
city-unit
3ce8343016
Add comments and stuff
2023-08-20 00:15:57 -04:00
city-unit
e76001a600
Merge branch 'staging' of https://github.com/city-unit/SillyTavern into feature/exorcism
2023-08-19 23:58:11 -04:00
city-unit
2f09efcd7f
Exorcised base64 image stuff
2023-08-19 23:01:09 -04:00
Cohee
bab368e3d2
Fix auto-load not triggering from hotswaps
2023-08-19 22:22:24 +03:00
based
ce40780ed1
Added option to exclude assistant prefix to Claude prompt (for jailbreaks already appending Assistant:)
2023-08-20 03:09:50 +10:00
Cohee1207
5a68cd61a1
Remove unnecessary log
2023-08-19 18:58:37 +03:00
Cohee1207
2cd2318298
Code clean-up
2023-08-19 18:52:06 +03:00
Cohee
438c78574f
Merge pull request #971 from kingbased/jurassic
...
AI21 Adapter
2023-08-19 18:48:15 +03:00
based
0f21eabb6e
AI21 Adapter + Tokenization implementation
2023-08-20 01:20:42 +10:00
Cohee1207
a9849d1883
More uploads cleanup
2023-08-19 17:50:16 +03:00
Cohee1207
6471ce2074
Clean-up uploads folder when possible
2023-08-19 17:43:56 +03:00
Cohee1207
991ff98eaa
Performance optimizations for character edit / chat opening
2023-08-19 15:58:17 +03:00
deffcolony
9839ea5b07
adds green color for url line
...
This will make sure the link is more visible in console
2023-08-18 16:48:23 +02:00
Cohee
f4dcd89ef6
Merge branch 'staging' of http://github.com/SillyTavern/SillyTavern into staging
2023-08-18 12:11:32 +03:00
Cohee
52431e246a
Make file write operations sync
2023-08-18 12:11:18 +03:00
50h100a
8c191c4115
groundwork for WebUI-like streaming with mancer
2023-08-17 18:29:40 -04:00
Cohee
e502354cec
Merge pull request #956 from 50h100a/streaming-fix
...
Fix (some) websocket shenanigans in WebUI streaming
2023-08-17 19:42:55 +03:00
Cohee
9c614529ca
Make all file write operations atomic
2023-08-17 15:20:02 +03:00
Cohee
0b412033ba
Streamline and simply Novel logit bias. Make it a part of preset
2023-08-17 13:05:22 +03:00
50h100a
13299e5c39
deal with websocket shenanigans
...
(and also clarify what's being printed out sometimes)
2023-08-17 05:52:32 -04:00
Mike Weldon
722801bb50
Add logit biases for NovelAI
2023-08-16 22:14:04 -07:00
Mike Weldon
feb523bd01
NovelAI Kayra 1.1 update
...
* Updated some presets and added Cosmic Cube
* Change defaults for NovelAI to select Clio on cold start
* Automatically change the preset to an appropriate default whenever you change the model
* Removed deprecated Top G sampler
2023-08-15 18:52:29 -07:00
Cohee
ea7268febd
Replace tokenizer packages with agnai versions (not crash dumping to console)
2023-08-15 18:08:34 +03:00
Cohee
57b9a94c17
Add banned tokens for Novel
2023-08-15 15:51:14 +03:00
Mike Weldon
41ec7e5600
Many NovelAI fixes from dev guidance
...
* Remove AI Module "Autoselect" and make the auto-instruct work for all modules. This is how NAI is supposed to work.
* Log the response from the API.
* Move the AI Module setting up to the top of the settings window since it isn't part of the preset.
* Refactor phrase_rep_pen to use the actual API strings.
* Clamp the maximum token length to 150 before we call the API.
* Clamp the minimum token length in the UX from 1 to 150.
* Fix bug where the preamble was not initialized on cold start.
* Get rid of extra newline before dinkus.
* Make always_force_name2 default true.
2023-08-14 19:35:21 -07:00
Mike Weldon
a0573413b2
Add new NAI samplers and update presets
2023-08-11 17:58:40 -07:00
spacegeek69
4b48861d13
[OpenRouter] Switch to token per dollar for prices
2023-08-10 21:13:24 +02:00
Cohee
23e869f56a
Implicit variables to explicit
2023-08-10 20:06:18 +03:00
spacegeek69
0ede3894e2
[OpenRouter] Show API prices on connect in console
2023-08-10 11:21:58 +02:00
Cohee
25bd2541f7
Fix server crash in error handler
2023-08-08 23:11:27 +03:00
Cohee
c94eae6eb6
Improve OpenAI/OpenRouter error parsing
2023-08-08 20:07:41 +03:00
Cohee
9a7654598e
Don't crash the server on trying to display corrupted past chat
2023-08-08 17:56:13 +03:00
Cohee
5f97a52d58
#895 Move AI Horde connection to related endpoints
2023-08-07 19:34:10 +03:00
Cohee
151f4d322c
#883 Add option to disable CSRF tokens
2023-08-06 16:42:15 +03:00
Cohee
74b973c571
Fix Novel error handling
2023-08-05 21:15:49 +03:00
Cohee
cd8a24a712
Fix bulk edit
2023-08-04 14:41:00 +03:00
50h100a
9cf4056b28
Do backflips trying to get error information from endpoints.
...
Then present it nicely.
2023-08-03 07:32:53 -04:00
50h100a
61c0e3b08b
Merge branch 'staging' of https://github.com/SillyTavern/SillyTavern into mancer-api
2023-08-02 23:46:03 -04:00
50h100a
d4278388f7
remove non-changes
2023-08-02 23:38:50 -04:00
50h100a
2fdec7eb03
Added authentication variant to WebUI API.
2023-08-02 23:25:24 -04:00
Cohee1207
65a16970f4
Extend cases for OAI status code message pulling
2023-08-02 23:02:29 +03:00
gd1551
ea800d1550
Add stop sequences support to NovelAI generations
2023-08-02 22:42:11 +03:00
Cohee
af8c21fea2
Send middle-out transform strategy to OpenRouter
2023-08-01 18:49:03 +03:00
Cohee
7596d78322
#844 Properly handle KoboldAI errors
2023-08-01 15:22:51 +03:00
Mike Weldon
73ea029acd
Fix rep penalty parameter name
2023-07-30 14:14:17 -07:00
Mike Weldon
27c6e5ecff
Fix some presets, bad words, rep allowlist, and banned tokens
2023-07-30 14:03:28 -07:00
Cohee
dddc49c235
#798 Claude assistant prefill
2023-07-30 01:51:59 +03:00
RossAscends
a646aaa125
Merge branch 'staging' of https://github.com/Cohee1207/SillyTavern into staging
2023-07-30 06:22:05 +09:00
RossAscends
80a0cb2bc4
MPV of QuickReply Presets
2023-07-30 06:22:03 +09:00
Cohee
df8d7075a8
Handle 451 from OpenRouter
2023-07-29 22:50:07 +03:00
Mike Weldon
732707ae2b
Turn on instruct mode for NAI
2023-07-28 22:56:31 -07:00
Mike Weldon
b107848ccb
Add Kayra presets
2023-07-28 17:23:28 -07:00
Cohee
3fb4756c03
#803 Add a separate field for proxy password
2023-07-28 21:33:29 +03:00
Cohee1207
3eea8a714c
#789 Add sorting by char.data strings size ("tokens")
2023-07-27 23:45:25 +03:00
Cohee
0df8c4b6a2
Merge pull request #774 from city-unit/feature/delete
...
More general/functionalized char delete methods
2023-07-24 22:45:41 +03:00
city-unit
8fdea22379
Move delete calls to functions, generalize delete endpoint.
2023-07-24 15:05:27 -04:00
Cohee
130559d499
#746 Add preset manager for ooba/kobold
2023-07-23 23:52:31 +03:00
Cohee1207
f28e7cf47c
Redirect to OpenAI site to view usage
2023-07-21 23:35:54 +03:00
Cohee
b05d501f82
Add default content by contest winners
2023-07-21 15:28:32 +03:00
Cohee
edd41989fd
Initial commit
2023-07-20 20:32:15 +03:00