Barista: [Быстрый Ρ„ΠΈΠ»ΡŒΡ‚Ρ€] ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… [Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ²] Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ ExpressionChangedAfterItHasBeenCheckedError ΠΈ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ запуск ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°

Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΉ Π½Π° 16 июл. 2020  Β·  12ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ  Β·  Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: dynatrace-oss/barista

Π‘ΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ ΠΎΠ± ошибкС

ΠŸΡ€ΠΈ использовании ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° DtQuickFilter ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ массива Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ² Π²ΠΎ Π²Ρ…ΠΎΠ΄ [filters] ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Π½Π΅ Ρ€Π΅Π°Π³ΠΈΡ€ΡƒΠ΅Ρ‚ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΊΠ°ΠΊ DtFilterField.

Π§Ρ‚ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΡ‚ΠΈ

ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ DtQuickFilter Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Ρ€Π΅Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Ρ‹, ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹Π΅ Π½Π° Π²Ρ…ΠΎΠ΄ [filter]. Π—Π°Ρ‚Π΅ΠΌ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Π·Π°ΠΏΡƒΡ‰Π΅Π½ΠΎ событиС (filterChanges).

Π§Ρ‚ΠΎ происходит Π² настоящСС врСмя

ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ DtQuickFilter ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Ρ‹, ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹Π΅ Π² [filters], Π½ΠΎ Π½Π΅ запускаСт ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ событий, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π½Π° консоли отобраТаСтся ошибка ExpressionChangedAfterItHasBeenCheckedError.

Π”Π΅ΠΌΠΎ

https://stackblitz.com/edit/github-mpgcfd?file=src%2Fquick-filter%2Fquick-filter-default-example%2Fquick-filter-default-example.ts

  1. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° массив "fakeFilters", ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ пСрСдаСтся Π½Π° Π²Ρ…ΠΎΠ΄ [filters]
  2. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΆΡƒΡ€Π½Π°Π» консоли Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ handle (event), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΈΠΊΡ€Π΅ΠΏΠ»Π΅Π½ ΠΊ ΡΠΎΠ±Ρ‹Ρ‚ΠΈΡŽ (filterChanges).
  3. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ консоль Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ событиС Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π·Π°ΠΏΡƒΡΠΊΠ°Π»ΠΎΡΡŒ, хотя Π½Π° самом Π΄Π΅Π»Π΅ ΠΊ ΠΏΠ°Π½Π΅Π»ΠΈ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ² Π±Ρ‹Π»ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ ΠΏΠΎΠ΄Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Ρ‹.
  4. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΎ ΠΎΡˆΠΈΠ±ΠΊΡƒ Π² ΠΆΡƒΡ€Π½Π°Π»Π΅ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°

Бпасибо!
Арно

bug cannot reproduce has-pr

ВсС 12 ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

ΠŸΡ€ΠΈΠ²Π΅Ρ‚, @areknow, спасибо, Ρ‡Ρ‚ΠΎ прСдоставили ΠΏΡ€ΠΈΠΌΠ΅Ρ€ воспроизвСдСния ΠΈ подняли вопрос.
Π― ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°ΡŽ, Ρ‡Ρ‚ΠΎ событиС Π½Π΅ запускаСтся Π½Π°ΠΌΠ΅Ρ€Π΅Π½Π½ΠΎ - ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π²Ρ‹ ΡƒΠΆΠ΅ установили Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Ρ‹, Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ измСнились, поэтому ΠΌΡ‹ Π½Π΅ запускаСм события сразу послС установки Π²Ρ…ΠΎΠ΄ΠΎΠ². ΠœΡ‹ запускаСм события Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ взаимодСйствуСт с ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠΌ. Но я ΠΌΠΎΠ³Ρƒ ΠΎΡˆΠΈΠ±Π°Ρ‚ΡŒΡΡ Π² этом случаС @lukasholzer, Ρ‚Ρ‹ Ρ‚ΠΎΡ‡Π½ΠΎ знаСшь большС :)

Π§Ρ‚ΠΎ касаСтся ошибки ExpressionChangedAfterChecked - это ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ.

На Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΌΡ‹ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ это ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ Π²ΠΎ viewEngine.
ΠœΡ‹ ΠΏΡ‹Ρ‚Π°Π»ΠΈΡΡŒ воспроизвСсти Π΅Π³ΠΎ Π² Π½Π°ΡˆΠΈΡ… прилоТСниях для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ дСмонстрации, Π½ΠΎ Π±Π΅Π·ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ. Нам Π½Π΅ ΡƒΠ΄Π°Π»ΠΎΡΡŒ воспроизвСсти ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ Π²Π½Π΅ stackblitz.

@areknow, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π»ΠΈ Π²Ρ‹ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€Π΄ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π²Ρ‹ Π·Π°ΠΌΠ΅Ρ‚ΠΈΠ»ΠΈ эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² viewEngine (ΠΌΡ‹ Π·Π½Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ stackblitz Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с viewEngine)?

@ ffriedl89 ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, это ΠΈΠΌΠ΅Π΅Ρ‚ смысл, спасибо Π·Π° объяснСниС ΠΎΠ± ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ΅ событий!

@gselltho Π― ΠΌΠΎΠ³Ρƒ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€Π΄ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ viewEngine.

Бпасибо, ΠΏΠ°Ρ€Π½ΠΈ!

@tomheller Π― Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ Π²ΠΊΠ»ΡŽΡ‡ΠΈΠ» Ivy Π² своСм ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, Π½ΠΎ всС Π΅Ρ‰Π΅ Π²ΠΈΠΆΡƒ ΠΎΡˆΠΈΠ±ΠΊΡƒ ExpressionChangedAfterChecked. ΠœΠΎΠΆΠ΅Ρ‚, здСсь Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π΅Ρ‰Π΅ происходит?

Π•Ρ‰Π΅ ΠΎΠ΄Π½ΠΎ интСрСсноС ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅: ошибка Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρƒ мСня локально. ПослС сборки Π² dev Ρ‡Π΅Ρ€Π΅Π· наш ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€ (jenkins) ошибка Π½Π΅ Π²ΠΈΠ΄Π½Π° Π² dev env.

Π›ΠΎΠΊΠ°Π»ΡŒΠ½ΠΎ я Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ» ΠΏΠΎΠ»Π½Ρ‹ΠΉ npm ci Π½ΠΎ всС Π΅Ρ‰Π΅ Π²ΠΈΠΆΡƒ ΠΎΡˆΠΈΠ±ΠΊΡƒ. Π•ΡΡ‚ΡŒ Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ кСш, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ?

Бпасибо!

@areknow, ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ aot Π² angular.json Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ true ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π² --aot ΠΊΠΎΠΌΠ°Π½Π΄Π΅ ng serve ... .

Π― Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ это ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° компиляции JIT (ΠΊΠ°ΠΊ Ρ€Π°Π· воврСмя) - это Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΎΠΉ, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π²Ρ‹ Π½Π΅ Π²ΠΈΠ΄ΠΈΡ‚Π΅ Π΅Π΅ Π² своСй срСдС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.

Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, начиная с вСрсии 9 Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ AOT для компиляции:
https://angular.io/guide/aot-compiler#choosing -a-compiler

К свСдСнию, Ρ‚Π°ΠΊΠΆΠ΅ Π·Π°ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½Π° синхронизация Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² для дальнСйшСго изучСния этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹. Бпасибо @areknow Π·Π° настройку.

@areknow, ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ aot Π² angular.json Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ true ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π² --aot ΠΊΠΎΠΌΠ°Π½Π΄Π΅ ng serve ... .

Π― Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ это ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° компиляции JIT (ΠΊΠ°ΠΊ Ρ€Π°Π· воврСмя) - это Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΎΠΉ, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π²Ρ‹ Π½Π΅ Π²ΠΈΠ΄ΠΈΡ‚Π΅ Π΅Π΅ Π² своСй срСдС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.

Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, начиная с вСрсии 9 Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ AOT для компиляции:
https://angular.io/guide/aot-compiler#choosing -a-compiler

@lukasholzer спасибо Π·Π° ΠΎΡ‚Π²Π΅Ρ‚!
Π― попытался Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ aot: true Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ сборки serve Π² angular.json, Π° Ρ‚Π°ΠΊΠΆΠ΅ попытался Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ„Π»Π°Π³ --aot Π² ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ serve. Π― ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ Π²ΠΈΠΆΡƒ ΠΎΡˆΠΈΠ±ΠΊΡƒ локально πŸ˜…

Π­Ρ‚ΠΎ становится Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ странным. ΠœΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Π»ΠΈ это Π² нашСм ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ со всСми Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌΠΈ пСрСстановками ivy: on|off ΠΈ viewEngine: on|off , Π½ΠΎ Π½Π°ΠΌ всС Ρ€Π°Π²Π½ΠΎ Π½Π΅ ΡƒΠ΄Π°Π»ΠΎΡΡŒ воспроизвСсти ΠΎΡˆΠΈΠ±ΠΊΡƒ. Но ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ это Π² stackblitz ΠΈ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ сбиты с Ρ‚ΠΎΠ»ΠΊΡƒ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ это происходит. Π‘ Π½Π΅Ρ‚Π΅Ρ€ΠΏΠ΅Π½ΠΈΠ΅ΠΌ ΠΆΠ΄Ρƒ нашСго Π·Π²ΠΎΠ½ΠΊΠ° @areknow. ΠœΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ, Ссли ΠΌΡ‹ собСрСмся вмСстС, ΠΌΡ‹ смоТСм ΠΏΠΎΠ½ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ здСсь происходит.

@tomheller Π·Π²ΡƒΡ‡ΠΈΡ‚ Ρ…ΠΎΡ€ΠΎΡˆΠΎ!

@tomheller МнС ΡƒΠ΄Π°Π»ΠΎΡΡŒ воспроизвСсти ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ Π² Π½ΠΎΠ²ΠΎΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅: https://github.com/areknow/barista-quick-filter-bug

ВсС Π΅Ρ‰Π΅ Ρ€Π°Π΄Ρ‹ встрСчС Π² Π·Π°ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ врСмя πŸ‘

Благодаря @areknow ΠΌΡ‹ смогли ΠΎΡ‚ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ источник ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π² прСдоставлСнной ΠΈΠΌ настройкС. К соТалСнию, ΠΌΡ‹ всС Π΅Ρ‰Π΅ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ воспроизвСсти Π΅Π³ΠΎ Π½ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· Π½Π°ΡˆΠΈΡ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ, Ρ‡Ρ‚ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ бСспокойство.

Π‘Ρ‹Π»Π° Π»ΠΈ эта страница ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ?
0 / 5 - 0 Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ΠΈ