ΠΠΎΠΌΠΏΠ°Π½ΠΈΡ Varnish Software, ΠΊΠΎΡΡΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π° ΡΠΈΡΡΠ΅ΠΌΠΈ Π·Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Π½Π° ΠΌΡΠ΅ΠΆΠΈ Π·Π° Π΄ΠΎΡΡΠ°Π²ΠΊΠ° ΠΈ ΠΊΠ΅ΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅, ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈ ΠΎΡΠΊΡΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡ TinyKVM, ΠΊΠΎΠΉΡΠΎ ΡΠ°Π·Π²ΠΈΠ²Π° ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ Π·Π° ΠΈΠ·ΠΎΠ»Π°ΡΠΈΡ Π½Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΎΡΠ΄Π΅Π»Π½ΠΈ ΠΏΡΠΎΡΠ΅ΡΠΈ ΡΡΠ΅Π· Ρ ΠΈΠΏΠ΅ΡΠ²ΠΈΠ·ΠΎΡ KVM. Π¦Π΅Π»ΡΠ° Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° Π΅ ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° Π½Π°ΠΉ-Π±ΡΡΠ·Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° Π·Π° sandbox-ΠΈΠ·ΠΎΠ»Π°ΡΠΈΡ Π½Π° ΠΎΡΠ΄Π΅Π»Π½ΠΈ ΠΏΡΠΎΡΠ΅ΡΠΈ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ° Ρ Π°ΡΠ΄ΡΠ΅ΡΠ½Π° Π²ΠΈΡΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ. ΠΠΎΠ΄ΡΡ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° Π΅ Π½Π°ΠΏΠΈΡΠ°Π½ Π½Π° Π΅Π·ΠΈΡΠΈΡΠ΅ C ΠΈ C++ ΠΈ ΡΠ΅ ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½ΡΠ²Π° ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·ΠΈΡ GPLv3 (Π·Π° ΡΠ΅Π·ΠΈ, ΠΊΠΎΠΈΡΠΎ Π½Π΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΠΈΠ·ΠΏΡΠ»Π½ΡΡ ΠΈΠ·ΠΈΡΠΊΠ²Π°Π½ΠΈΡΡΠ° Π½Π° GPLv3, ΡΠ΅ ΠΏΡΠ΅Π΄Π»Π°Π³Π° ΡΡΡΠ³ΠΎΠ²ΡΠΊΠ° Π»ΠΈΡΠ΅Π½Π·ΠΈΡ).
TinyKVM Π΅ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π·Π° ΠΈΠ·ΠΎΠ»ΠΈΡΠ°Π½ΠΎ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° Π²ΡΡΠΊΠ°ΠΊΠ²ΠΈ ΠΊΠΎΠ½ΡΠΎΠ»Π½ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈ Π·Π° Linux Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡ, Π±Π»ΠΈΠ·ΠΊΠ° Π΄ΠΎ ΠΎΠ±ΠΈΡΠ½ΠΎΡΠΎ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅. Π Π°Π·Ρ ΠΎΠ΄ΠΈΡΠ΅ Π·Π° Π²ΡΠ΅ΠΊΠΈ ΡΠΈΡΡΠ΅ΠΌΠ΅Π½ ΠΏΠΎΠ²ΠΈΠΊ Π²ΡΠ·Π»ΠΈΠ·Π°Ρ Π½Π° ΠΎΠΊΠΎΠ»ΠΎ 2 ΠΌΠΈΠΊΡΠΎΡΠ΅ΠΊΡΠ½Π΄ΠΈ. ΠΠ°ΡΠΎ ΠΏΡΠΈΠΌΠ΅Ρ Π·Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° ΡΠ΅ ΡΠΏΠΎΠΌΠ΅Π½Π°Π²Π° Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½Π° ΠΈΠ·ΠΎΠ»Π°ΡΠΈΡ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΈΡΠ΅ Π² ΡΠΈΡΡΠ΅ΠΌΠΈΡΠ΅ Π·Π° ΠΊΠ΅ΡΠΈΡΠ°Π½Π΅ ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° web-Π·Π°ΠΏΠΈΡΠ²Π°Π½ΠΈΡ. TinyKVM Π΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ΅Π½ Π·Π° Π·Π°ΠΌΡΠ½Π° Π½Π° Π΅ΠΌΡΠ»Π°ΡΠΈΡΡΠ° Π½Π° libriscv, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π° Π·Π° ΠΈΠ·ΠΎΠ»Π°ΡΠΈΡ Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° Π²ΡΡΠΊΠΎ web-Π·Π°ΠΏΠΈΡΠ²Π°Π½Π΅ Π² ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° Varnish. ΠΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΎ Π΅ ΡΡΠ·Π΄Π°Π΄Π΅Π½ Π²Π°ΡΠΈΠ°Π½Ρ Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° libvmod, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°Ρ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΌΠΎΠ΄ΡΠ»ΠΈ ΠΊΡΠΌ Varnish Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° TinyKVM.


ΠΡΠΈ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ ΡΡΠ΅Π· TinyKVM ΠΌΠ°ΡΠΈΠ½Π½ΠΈΡΡ ΠΊΠΎΠ΄ Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ΅ ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π° Π±Π΅Π· Π΅ΠΌΡΠ»ΠΈΡΠ°ΡΠΈ ΡΠ»ΠΎΠ΅Π²Π΅ Π½Π° CPU ΠΈ ΡΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ°Π²Π° ΡΡΠ΅Π· API Π½Π° Ρ ΠΈΠΏΠ΅ΡΠ²ΠΈΠ·ΠΎΡΠ° KVM, ΠΊΠΎΠ΅ΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΡΠ΅ ΠΈΠ·ΠΊΠ»ΡΡΠ°Ρ ΡΠ°Π·Ρ ΠΎΠ΄ΠΈΡΠ΅ ΠΈ Π΄Π° ΡΠ΅ ΠΏΠΎΡΡΠΈΠ³Π½Π΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡ, Π±Π»ΠΈΠ·ΠΊΠ° Π΄ΠΎ ΡΠ°Π·ΠΈ Π½Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π±Π΅Π· Π²ΠΈΡΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ. ΠΡΠ½ΠΎΠ²Π½ΠΈΡΠ΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π½Π° TinyKVM ΡΠ°:
- ΠΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ Π½Π° ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»Π½ΠΎΡΠΎ Π²ΡΠ΅ΠΌΠ΅ Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅. ΠΡΠΎΠ³ΡΠ°ΠΌΠ°ΡΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΠΏΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅Π»Π½ΠΎ ΡΠΏΡΡΠ½Π° ΡΠ»Π΅Π΄ ΠΈΠ·ΡΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° Π²ΡΠ΅ΠΌΠ΅ΡΠΎ, Π±Π΅Π· Π΄Π° ΡΠ΅ Π·Π°Π΄Π΅ΠΉΡΡΠ²Π°Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΡΠΈ Π½Π° ΡΠΈΠ³Π½Π°Π»ΠΈ ΠΈ ΠΏΠΎΡΠΎΡΠΈ.
- ΠΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ Π½Π° ΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ.
- ΠΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΡΠ°Π·ΠΊΠ»ΠΎΠ½ΡΠ²Π°Π½Π΅ (fork) Π½Π° Π½Π΅ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ Π΅ΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΈ Π²ΠΈΡΡΡΠ°Π»Π½ΠΈ ΠΌΠ°ΡΠΈΠ½ΠΈ ΠΎΡ Π΅Π΄ΠΈΠ½ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ Π΅ΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ Π½Π° ΠΈΠ·ΠΎΠ»ΠΈΡΠ°Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ°. ΠΠΎΠΏΠΈΡΡΠ° Π½Π° Π²ΠΈΡΡΡΠ°Π»Π½ΠΈΡΠ΅ ΠΌΠ°ΡΠΈΠ½ΠΈ ΡΠ΅ ΡΡΠ·Π΄Π°Π²Π°Ρ Π² ΡΠ΅ΠΆΠΈΠΌ copy-on-write, ΠΊΠΎΠ΅ΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π·Π½Π°ΡΠΈΡΠ΅Π»Π½Π° ΠΈΠΊΠΎΠ½ΠΎΠΌΠΈΡ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ, ΠΊΠ°ΡΠΎ ΡΠ΅ Π·Π°ΠΏΠ°Π·Π²Π° ΡΠ°ΠΌΠΎ Π΅Π΄ΠΈΠ½ Π΅ΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ Π½Π° ΠΎΠ±ΡΠΈΡΠ΅ Π΄Π°Π½Π½ΠΈ.
- Π Π°Π·ΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΠΈ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ Π²ΡΡΡΠ°Ρ Π² ΠΏΡΠ΅Π΄Ρ ΠΎΠ΄Π½ΠΎ ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ°Π·ΠΊΠ»ΠΎΠ½Π΅Π½ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ Π½Π° http-Π·Π°ΡΠ²ΠΊΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π²ΡΡΠ½Π΅ Π² ΠΏΡΡΠ²ΠΎΠ½Π°ΡΠ°Π»Π½ΠΎΡΠΎ ΡΠΈ ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ ΡΠ»Π΅Π΄ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° Π²ΡΡΠΊΠ° Π·Π°ΡΠ²ΠΊΠ°, Π±Π΅Π· Π΄Π° Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ΅ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅). ΠΠ½ΠΎΠ²Π°ΡΠΈΠ²Π½ΠΈΡΡ ΠΏΡΠΎΡΠ΅Ρ ΠΌΠΎΠΆΠ΅ ΡΡΡΠΎ Π΄Π° Π±ΡΠ΄Π΅ Π²ΡΠ·ΡΡΠ°Π½ΠΎΠ²Π΅Π½ Π΄ΠΎ ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ Π½Π° Π΄ΡΡΠ³Π° Π²ΠΈΡΡΡΠ°Π»Π½Π° ΠΌΠ°ΡΠΈΠ½Π°, Π° Π½Π΅ Π½Π° ΡΠ°Π·ΠΈ, ΠΎΡ ΠΊΠΎΡΡΠΎ Π΅ Π±ΠΈΠ» ΡΠ°Π·ΠΊΠ»ΠΎΠ½Π΅Π½, Π½ΠΎ Π² ΡΠΎΠ·ΠΈ ΡΠ»ΡΡΠ°ΠΉ ΡΠ°Π·Ρ ΠΎΠ΄ΠΈΡΠ΅ ΡΠ΅ Π±ΡΠ΄Π°Ρ ΠΏΠΎ-Π²ΠΈΡΠΎΠΊΠΈ, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΡΠ΅ Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π½Π° ΡΠ°Π±Π»ΠΈΡΠ°ΡΠ° ΡΡΡ ΡΡΡΠ°Π½ΠΈΡΠΈΡΠ΅ Π² ΠΏΠ°ΠΌΠ΅ΡΡΠ°.
- ΠΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° ΡΡΠ°ΡΠΈΡΠ½ΠΈ ΡΡΡΠ°Π½ΠΈΡΠΈ Π·Π° ΠΏΠ°ΠΌΠ΅Ρ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ, ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΈ Π΄ΠΎΡΠΈ Π·Π° ΡΠ»ΠΎΠΆΠ½ΠΈ runtime ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠ°ΠΊΡΠΎ Π΅ Π² Π΅Π·ΠΈΠΊΠ° Go. Π ΡΠΎΠ·ΠΈ ΡΠ»ΡΡΠ°ΠΉ ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ ΡΠ° ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈ ΡΠ°ΠΌΠΎ Π·Π° ΡΡΡΠ°Π½ΠΈΡΠΈΡΠ΅, ΠΊΠΎΠΈΡΠΎ ΡΠ° Π² ΡΠ΅ΠΆΠΈΠΌ copy-on-write.
- ΠΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΠΎΡΠ΄Π°Π»Π΅ΡΠ΅Π½ΠΎ ΠΎΡΡΡΡΠ°Π½ΡΠ²Π°Π½Π΅ Π½Π° Π³ΡΠ΅ΡΠΊΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° GDB. ΠΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΅ ΠΎΡΡΡΡΠ°Π½ΡΠ²Π°Π½Π΅ Π½Π° Π³ΡΠ΅ΡΠΊΠΈ Π² ΡΠ΅Π°Π»Π½ΠΎ Π²ΡΠ΅ΠΌΠ΅ Ρ Π²ΡΠ·ΠΎΠ±Π½ΠΎΠ²ΡΠ²Π°Π½Π΅ Π½Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ.
ΠΠΎΡΡΠΎΠ²ΠΎΡΠΎ ΠΎΠ±ΠΊΡΡΠΆΠ΅Π½ΠΈΠ΅ TinyKVM ΠΎΠ±ΡΠ°Π·ΡΠ²Π° Π½Π°ΠΌΠ°Π»Π΅Π½ΠΎ ΡΠ΄ΡΠΎ, Π·Π°ΡΠΈΡΠ΅Π½ΠΎ ΠΎΡ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ, ΡΡΠ±ΡΠ°Π½ΠΎ Ρ Π²Π³ΡΠ°Π΄Π΅Π½Π° Π·Π°ΡΠΈΡΠ° Π½Π° ΡΡΡΠ°Π½ΠΈΡΠΈΡΠ΅ Π² ΠΏΠ°ΠΌΠ΅ΡΡΠ° ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠΎ SMAP (ΠΡΠ΅Π²Π΅Π½ΡΠΈΡ Π½Π° Π΄ΠΎΡΡΡΠΏΠ° Π² ΡΠ΅ΠΆΠΈΠΌ Π½Π° Π½Π°Π΄Π·ΠΎΡ) ΠΈ SMEP (ΠΡΠ΅Π²Π΅Π½ΡΠΈΡ Π½Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π² ΡΠ΅ΠΆΠΈΠΌ Π½Π° Π½Π°Π΄Π·ΠΎΡ) Π·Π° Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½Π° ΠΈΠ·ΠΎΠ»Π°ΡΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ΄ΡΠΎΡΠΎ ΠΈ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠΎΡΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ. TinyKVM ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π³ΠΎΠ»Π΅ΠΌΠΈ ΡΡΡΠ°Π½ΠΈΡΠΈ Π² ΠΏΠ°ΠΌΠ΅ΡΡΠ° (hugepage) Π·Π° ΠΏΠΎΠ²ΠΈΡΠ°Π²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ°. Π‘ΠΈΡΡΠ΅ΠΌΠ½ΠΈΡΠ΅ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½ΠΈΡ, ΠΈΠ·Π²ΡΡΡΠ²Π°Π½ΠΈ ΠΎΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ΅, ΡΠ΅ ΠΏΡΠΈΡ Π²Π°ΡΠ°Ρ ΠΎΡ Π΅ΠΌΡΠ»ΡΡΠΎΡΠ° ΠΈ ΡΠ΅ ΠΏΡΠ΅Π½Π°ΡΠΎΡΠ²Π°Ρ ΠΊΡΠΌ Ρ ΠΎΡΡ-ΠΎΠ±ΠΊΡΡΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ (Π·Π°Π±Π°Π²ΡΠ½Π΅ΡΠΎ Π·Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΈ ΡΡΠ°Π½ΡΠ»Π°ΡΠΈΡ Π½Π° Π΅ΠΌΡΠ»ΠΈΡΠ°Π½ΠΎΡΠΎ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π΅ ΠΎΠΊΠΎΠ»ΠΎ 2 ΠΌΠΈΠΊΡΠΎΡΠ΅ΠΊΡΠ½Π΄ΠΈ). Π ΡΠ°ΠΌΠΎΡΠΎ Π²ΠΈΡΡΡΠ°Π»Π½Π° ΠΌΠ°ΡΠΈΠ½Π° Π½Π΅ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π½ΠΈΠΊΠ°ΠΊΠ²ΠΈ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠΈ, Π²Ρ ΠΎΠ΄/ΠΈΠ·Ρ ΠΎΠ΄ ΠΈ Π²ΠΈΡΡΡΠ°Π»Π½ΠΈ ΡΡΡΡΠΎΠΉΡΡΠ²Π°.

ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
